"""Broadworks OCI-P Interface Request Classes"""
# Autogenerated from the Broadworks XML Schemas.
# Do not edit as changes will be overwritten.
# Generated on 2022-03-12T10:21:34.210441
from typing import List
from typing import Tuple

import broadworks_ocip.types as OCI
from .base import ElementInfo as E
from .base import OCIRequest


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


    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class AuthenticationVerifyRequest(OCIRequest):
    """
    `AuthenticationVerifyRequest()` is used to authenticate a user using the user Id and
    password.

    The response is a `AuthenticationVerifyResponse()` or an `ErrorResponse()`

    Replaced By: `AuthenticationVerifyRequest14sp8()`

    Attributes:
        user_id (str): userId
        password (str): password
    """

    __slots__: List[str] = [
        "user_id",
        "password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("password", "password", str, is_required=True),
        )


class AuthenticationVerifyRequest14sp8(OCIRequest):
    """
    `AuthenticationVerifyRequest14sp8()` is used to authenticate a user either by
    userId/password, userId/sip username/sip password, dn/passcode or a token previously
    authorized with the `ExternalAuthenticationAuthorizeTokenRequest()`.

    The phone number may be any DN associated with a user.

    The response is a `AuthenticationVerifyResponse14sp8()` or an `ErrorResponse()`
    Replaced by `AuthenticationVerifyRequest22()`.

    Attributes:
        user_id (str): userId *Optional*
        password (str): password *Optional*
        phone_number (str): phoneNumber *Optional*
        passcode (str): passcode *Optional*
        login_token (str): loginToken *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "password",
        "phone_number",
        "passcode",
        "login_token",
        "sip_authentication_user_name",
        "sip_authentication_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("password", "password", str),
            E("phone_number", "phoneNumber", str),
            E("passcode", "passcode", str),
            E("login_token", "loginToken", str),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
        )


class AuthenticationVerifyRequest21sp1(OCIRequest):
    """
    `AuthenticationVerifyRequest21sp1()` 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 `AuthenticationVerifyResponse21sp1()` or an `ErrorResponse()`
    Replaced by `AuthenticationVerifyRequest22V2()`.

    Attributes:
        user_id (str): userId *Optional*
        password (str): password *Optional*
        phone_number (str): phoneNumber *Optional*
        passcode (str): passcode *Optional*
        line_port (str): linePort *Optional*
        login_token (str): loginToken *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "password",
        "phone_number",
        "passcode",
        "line_port",
        "login_token",
        "sip_authentication_user_name",
        "sip_authentication_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("password", "password", str),
            E("phone_number", "phoneNumber", str),
            E("passcode", "passcode", str),
            E("line_port", "linePort", str),
            E("login_token", "loginToken", str),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
        )


class AuthenticationVerifyRequest22(OCIRequest):
    """
    `AuthenticationVerifyRequest22()` 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 `AuthenticationVerifyResponse22()` or an `ErrorResponse()` Replaced
    by `AuthenticationVerifyRequest22V2()`.

    Attributes:
        user_id (str): userId *Optional*
        password (str): password *Optional*
        phone_number (str): phoneNumber *Optional*
        passcode (str): passcode *Optional*
        line_port (str): linePort *Optional*
        login_token (str): loginToken *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "password",
        "phone_number",
        "passcode",
        "line_port",
        "login_token",
        "sip_authentication_user_name",
        "sip_authentication_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("password", "password", str),
            E("phone_number", "phoneNumber", str),
            E("passcode", "passcode", str),
            E("line_port", "linePort", str),
            E("login_token", "loginToken", str),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
        )


class AuthenticationVerifyRequest22V2(OCIRequest):
    """
    `AuthenticationVerifyRequest22V2()` 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 `AuthenticationVerifyResponse22V2()` or an `ErrorResponse()`
    Replaced by `AuthenticationVerifyRequest22V3()`

    Attributes:
        user_id (str): userId *Optional*
        password (str): password *Optional*
        phone_number (str): phoneNumber *Optional*
        passcode (str): passcode *Optional*
        line_port (str): linePort *Optional*
        login_token (str): loginToken *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "password",
        "phone_number",
        "passcode",
        "line_port",
        "login_token",
        "sip_authentication_user_name",
        "sip_authentication_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("password", "password", str),
            E("phone_number", "phoneNumber", str),
            E("passcode", "passcode", str),
            E("line_port", "linePort", str),
            E("login_token", "loginToken", str),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
        )


class AuthenticationVerifyRequest22V3(OCIRequest):
    """
    `AuthenticationVerifyRequest22V3()` 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 `AuthenticationVerifyResponse22V3()` or an `ErrorResponse()`
    Replaced by `AuthenticationVerifyRequest22V4()`.

    Attributes:
        user_id (str): userId *Optional*
        password (str): password *Optional*
        phone_number (str): phoneNumber *Optional*
        passcode (str): passcode *Optional*
        line_port (str): linePort *Optional*
        login_token (str): loginToken *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "password",
        "phone_number",
        "passcode",
        "line_port",
        "login_token",
        "sip_authentication_user_name",
        "sip_authentication_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("password", "password", str),
            E("phone_number", "phoneNumber", str),
            E("passcode", "passcode", str),
            E("line_port", "linePort", str),
            E("login_token", "loginToken", str),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
        )


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 (str): userId *Optional*
        password (str): password *Optional*
        phone_number (str): phoneNumber *Optional*
        passcode (str): passcode *Optional*
        line_port (str): linePort *Optional*
        login_token (str): loginToken *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "password",
        "phone_number",
        "passcode",
        "line_port",
        "login_token",
        "sip_authentication_user_name",
        "sip_authentication_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("password", "password", str),
            E("phone_number", "phoneNumber", str),
            E("passcode", "passcode", str),
            E("line_port", "linePort", str),
            E("login_token", "loginToken", str),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
        )


class AvailabilityTestRequest(OCIRequest):
    """
    `AvailabilityTestRequest()` is for high-availability support.

    Response is either `SuccessResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class DeviceManagementFileAuthLocationGetRequest(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 a `DeviceManagementFileAuthLocationGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        device_access_protocol (str): deviceAccessProtocol
        device_access_method (str): deviceAccessMethod
        device_access_uri (str): deviceAccessURI
        access_device_user_name (str): accessDeviceUserName *Optional*
        access_device_user_password (str): accessDeviceUserPassword *Optional*
        signed_password (str): signedPassword *Optional*
        mac_address (str): macAddress *Optional*
        realm_name (str): realmName *Optional*
        digest_ha1_complement (str): digestHa1Complement *Optional*
        digest_response (str): digestResponse *Optional*
    """

    __slots__: List[str] = [
        "device_access_protocol",
        "device_access_method",
        "device_access_uri",
        "access_device_user_name",
        "access_device_user_password",
        "signed_password",
        "mac_address",
        "realm_name",
        "digest_ha1_complement",
        "digest_response",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_access_protocol", "deviceAccessProtocol", str, is_required=True),
            E("device_access_method", "deviceAccessMethod", str, is_required=True),
            E("device_access_uri", "deviceAccessURI", str, is_required=True),
            E("access_device_user_name", "accessDeviceUserName", str),
            E("access_device_user_password", "accessDeviceUserPassword", str),
            E("signed_password", "signedPassword", str),
            E("mac_address", "macAddress", str),
            E("realm_name", "realmName", str),
            E("digest_ha1_complement", "digestHa1Complement", str),
            E("digest_response", "digestResponse", str),
        )


class DeviceManagementFileAuthLocationGetRequest17(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 a `DeviceManagementFileAuthLocationGetResponse17()` or an
    `ErrorResponse()`. Replaced by: `DeviceManagementFileAuthLocationGetRequest18()`

    Attributes:
        device_access_protocol (str): deviceAccessProtocol
        device_access_method (str): deviceAccessMethod
        device_access_uri (str): deviceAccessURI
        access_device_user_name (str): accessDeviceUserName *Optional*
        access_device_user_password (str): accessDeviceUserPassword *Optional*
        signed_password (str): signedPassword *Optional*
        mac_address (str): macAddress *Optional*
        realm_name (str): realmName *Optional*
        digest_ha1_complement (str): digestHa1Complement *Optional*
        digest_response (str): digestResponse *Optional*
    """

    __slots__: List[str] = [
        "device_access_protocol",
        "device_access_method",
        "device_access_uri",
        "access_device_user_name",
        "access_device_user_password",
        "signed_password",
        "mac_address",
        "realm_name",
        "digest_ha1_complement",
        "digest_response",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_access_protocol", "deviceAccessProtocol", str, is_required=True),
            E("device_access_method", "deviceAccessMethod", str, is_required=True),
            E("device_access_uri", "deviceAccessURI", str, is_required=True),
            E("access_device_user_name", "accessDeviceUserName", str),
            E("access_device_user_password", "accessDeviceUserPassword", str),
            E("signed_password", "signedPassword", str),
            E("mac_address", "macAddress", str),
            E("realm_name", "realmName", str),
            E("digest_ha1_complement", "digestHa1Complement", str),
            E("digest_response", "digestResponse", str),
        )


class DeviceManagementFileAuthLocationGetRequest18(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 a `DeviceManagementFileAuthLocationGetResponse18()` or an
    `ErrorResponse()`. Replaced by: `DeviceManagementFileAuthLocationGetRequest21()`.

    Attributes:
        device_access_protocol (str): deviceAccessProtocol
        device_access_method (str): deviceAccessMethod
        device_access_uri (str): deviceAccessURI
        access_device_user_name (str): accessDeviceUserName *Optional*
        access_device_user_password (str): accessDeviceUserPassword *Optional*
        signed_password (str): signedPassword *Optional*
        mac_address (str): macAddress *Optional*
        realm_name (str): realmName *Optional*
        digest_ha1_complement (str): digestHa1Complement *Optional*
        digest_response (str): digestResponse *Optional*
    """

    __slots__: List[str] = [
        "device_access_protocol",
        "device_access_method",
        "device_access_uri",
        "access_device_user_name",
        "access_device_user_password",
        "signed_password",
        "mac_address",
        "realm_name",
        "digest_ha1_complement",
        "digest_response",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_access_protocol", "deviceAccessProtocol", str, is_required=True),
            E("device_access_method", "deviceAccessMethod", str, is_required=True),
            E("device_access_uri", "deviceAccessURI", str, is_required=True),
            E("access_device_user_name", "accessDeviceUserName", str),
            E("access_device_user_password", "accessDeviceUserPassword", str),
            E("signed_password", "signedPassword", str),
            E("mac_address", "macAddress", str),
            E("realm_name", "realmName", str),
            E("digest_ha1_complement", "digestHa1Complement", str),
            E("digest_response", "digestResponse", str),
        )


class DeviceManagementFileAuthLocationGetRequest20sp1(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 a `DeviceManagementFileAuthLocationGetResponse20sp1()` or an
    `ErrorResponse()`. Replaced by: `DeviceManagementFileAuthLocationGetRequest21sp1()`.

    Attributes:
        device_access_protocol (str): deviceAccessProtocol
        device_access_method (str): deviceAccessMethod
        device_access_uri (str): deviceAccessURI
        access_device_user_name (str): accessDeviceUserName *Optional*
        access_device_user_password (str): accessDeviceUserPassword *Optional*
        signed_password (str): signedPassword *Optional*
        mac_address (str): macAddress *Optional*
        realm_name (str): realmName *Optional*
        digest_ha1_complement (str): digestHa1Complement *Optional*
        digest_response (str): digestResponse *Optional*
    """

    __slots__: List[str] = [
        "device_access_protocol",
        "device_access_method",
        "device_access_uri",
        "access_device_user_name",
        "access_device_user_password",
        "signed_password",
        "mac_address",
        "realm_name",
        "digest_ha1_complement",
        "digest_response",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_access_protocol", "deviceAccessProtocol", str, is_required=True),
            E("device_access_method", "deviceAccessMethod", str, is_required=True),
            E("device_access_uri", "deviceAccessURI", str, is_required=True),
            E("access_device_user_name", "accessDeviceUserName", str),
            E("access_device_user_password", "accessDeviceUserPassword", str),
            E("signed_password", "signedPassword", str),
            E("mac_address", "macAddress", str),
            E("realm_name", "realmName", str),
            E("digest_ha1_complement", "digestHa1Complement", str),
            E("digest_response", "digestResponse", str),
        )


class DeviceManagementFileAuthLocationGetRequest21(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 `DeviceManagementFileAuthLocationGetResponse21()` or
    `ErrorResponse()`. The following elements are only used in AS data mode and will fail
    in XS data mode: deviceToken Replaced by:
    `DeviceManagementFileAuthLocationGetRequest21sp1()`.

    Attributes:
        device_access_protocol (str): deviceAccessProtocol
        device_access_method (str): deviceAccessMethod
        device_access_uri (str): deviceAccessURI
        access_device_user_name (str): accessDeviceUserName *Optional*
        access_device_user_password (str): accessDeviceUserPassword *Optional*
        device_token (str): deviceToken *Optional*
        signed_password (str): signedPassword *Optional*
        mac_address (str): macAddress *Optional*
        realm_name (str): realmName *Optional*
        digest_ha1_complement (str): digestHa1Complement *Optional*
        digest_response (str): digestResponse *Optional*
    """

    __slots__: List[str] = [
        "device_access_protocol",
        "device_access_method",
        "device_access_uri",
        "access_device_user_name",
        "access_device_user_password",
        "device_token",
        "signed_password",
        "mac_address",
        "realm_name",
        "digest_ha1_complement",
        "digest_response",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_access_protocol", "deviceAccessProtocol", str, is_required=True),
            E("device_access_method", "deviceAccessMethod", str, is_required=True),
            E("device_access_uri", "deviceAccessURI", str, is_required=True),
            E("access_device_user_name", "accessDeviceUserName", str),
            E("access_device_user_password", "accessDeviceUserPassword", str),
            E("device_token", "deviceToken", str),
            E("signed_password", "signedPassword", str),
            E("mac_address", "macAddress", str),
            E("realm_name", "realmName", str),
            E("digest_ha1_complement", "digestHa1Complement", str),
            E("digest_response", "digestResponse", str),
        )


class DeviceManagementFileAuthLocationGetRequest21sp1(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 `DeviceManagementFileAuthLocationGetResponse21sp1()` or
    `ErrorResponse()`. The following elements are only used in AS data mode and will fail
    in XS data mode: deviceToken Replaced by
    `DeviceManagementFileAuthLocationGetRequest22()`

    Attributes:
        device_access_protocol (str): deviceAccessProtocol
        device_access_method (str): deviceAccessMethod
        device_access_uri (str): deviceAccessURI
        access_device_user_name (str): accessDeviceUserName *Optional*
        access_device_user_password (str): accessDeviceUserPassword *Optional*
        device_token (str): deviceToken *Optional*
        signed_password (str): signedPassword *Optional*
        mac_address (str): macAddress *Optional*
        realm_name (str): realmName *Optional*
        digest_ha1_complement (str): digestHa1Complement *Optional*
        digest_response (str): digestResponse *Optional*
    """

    __slots__: List[str] = [
        "device_access_protocol",
        "device_access_method",
        "device_access_uri",
        "access_device_user_name",
        "access_device_user_password",
        "device_token",
        "signed_password",
        "mac_address",
        "realm_name",
        "digest_ha1_complement",
        "digest_response",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_access_protocol", "deviceAccessProtocol", str, is_required=True),
            E("device_access_method", "deviceAccessMethod", str, is_required=True),
            E("device_access_uri", "deviceAccessURI", str, is_required=True),
            E("access_device_user_name", "accessDeviceUserName", str),
            E("access_device_user_password", "accessDeviceUserPassword", str),
            E("device_token", "deviceToken", str),
            E("signed_password", "signedPassword", str),
            E("mac_address", "macAddress", str),
            E("realm_name", "realmName", str),
            E("digest_ha1_complement", "digestHa1Complement", str),
            E("digest_response", "digestResponse", str),
        )


class DeviceManagementFileAuthLocationGetRequest22(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 `DeviceManagementFileAuthLocationGetResponse22()` or
    `ErrorResponse()`. The following elements are only used in AS data mode and will fail
    in XS data mode: deviceToken

    Attributes:
        device_access_protocol (str): deviceAccessProtocol
        device_access_method (str): deviceAccessMethod
        device_access_uri (str): deviceAccessURI
        access_device_user_name (str): accessDeviceUserName *Optional*
        access_device_user_password (str): accessDeviceUserPassword *Optional*
        device_token (str): deviceToken *Optional*
        signed_password (str): signedPassword *Optional*
        mac_address (str): macAddress *Optional*
        realm_name (str): realmName *Optional*
        digest_ha1_complement (str): digestHa1Complement *Optional*
        digest_response (str): digestResponse *Optional*
    """

    __slots__: List[str] = [
        "device_access_protocol",
        "device_access_method",
        "device_access_uri",
        "access_device_user_name",
        "access_device_user_password",
        "device_token",
        "signed_password",
        "mac_address",
        "realm_name",
        "digest_ha1_complement",
        "digest_response",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_access_protocol", "deviceAccessProtocol", str, is_required=True),
            E("device_access_method", "deviceAccessMethod", str, is_required=True),
            E("device_access_uri", "deviceAccessURI", str, is_required=True),
            E("access_device_user_name", "accessDeviceUserName", str),
            E("access_device_user_password", "accessDeviceUserPassword", str),
            E("device_token", "deviceToken", str),
            E("signed_password", "signedPassword", str),
            E("mac_address", "macAddress", str),
            E("realm_name", "realmName", str),
            E("digest_ha1_complement", "digestHa1Complement", str),
            E("digest_response", "digestResponse", str),
        )


class DeviceManagementFileAuthLocationGetRequest22V2(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 `DeviceManagementFileAuthLocationGetResponse22V2()` 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): deviceAccessProtocol
        device_access_method (str): deviceAccessMethod
        device_access_uri (str): deviceAccessURI
        access_device_user_name (str): accessDeviceUserName *Optional*
        access_device_user_password (str): accessDeviceUserPassword *Optional*
        device_token (str): deviceToken *Optional*
        signed_password (str): signedPassword *Optional*
        mac_address (str): macAddress *Optional*
        realm_name (str): realmName *Optional*
        digest_ha1_complement (str): digestHa1Complement *Optional*
        digest_response (str): digestResponse *Optional*
        file_name_lookup (bool): fileNameLookup *Optional*
        file_name_on_disk (str): fileNameOnDisk *Optional*
    """

    __slots__: List[str] = [
        "device_access_protocol",
        "device_access_method",
        "device_access_uri",
        "access_device_user_name",
        "access_device_user_password",
        "device_token",
        "signed_password",
        "mac_address",
        "realm_name",
        "digest_ha1_complement",
        "digest_response",
        "file_name_lookup",
        "file_name_on_disk",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_access_protocol", "deviceAccessProtocol", str, is_required=True),
            E("device_access_method", "deviceAccessMethod", str, is_required=True),
            E("device_access_uri", "deviceAccessURI", str, is_required=True),
            E("access_device_user_name", "accessDeviceUserName", str),
            E("access_device_user_password", "accessDeviceUserPassword", str),
            E("device_token", "deviceToken", str),
            E("signed_password", "signedPassword", str),
            E("mac_address", "macAddress", str),
            E("realm_name", "realmName", str),
            E("digest_ha1_complement", "digestHa1Complement", str),
            E("digest_response", "digestResponse", str),
            E("file_name_lookup", "fileNameLookup", bool),
            E("file_name_on_disk", "fileNameOnDisk", str),
        )


class DeviceManagementFileAuthLocationGetRequest22V3(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 `DeviceManagementFileAuthLocationGetResponse22V3()` 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): deviceAccessProtocol
        device_access_method (str): deviceAccessMethod
        device_access_uri (str): deviceAccessURI
        access_device_user_name (str): accessDeviceUserName *Optional*
        access_device_user_password (str): accessDeviceUserPassword *Optional*
        device_token (str): deviceToken *Optional*
        signed_password (str): signedPassword *Optional*
        mac_address (str): macAddress *Optional*
        realm_name (str): realmName *Optional*
        digest_ha1_complement (str): digestHa1Complement *Optional*
        digest_response (str): digestResponse *Optional*
        file_name_lookup (bool): fileNameLookup *Optional*
        file_name_on_disk (str): fileNameOnDisk *Optional*
    """

    __slots__: List[str] = [
        "device_access_protocol",
        "device_access_method",
        "device_access_uri",
        "access_device_user_name",
        "access_device_user_password",
        "device_token",
        "signed_password",
        "mac_address",
        "realm_name",
        "digest_ha1_complement",
        "digest_response",
        "file_name_lookup",
        "file_name_on_disk",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_access_protocol", "deviceAccessProtocol", str, is_required=True),
            E("device_access_method", "deviceAccessMethod", str, is_required=True),
            E("device_access_uri", "deviceAccessURI", str, is_required=True),
            E("access_device_user_name", "accessDeviceUserName", str),
            E("access_device_user_password", "accessDeviceUserPassword", str),
            E("device_token", "deviceToken", str),
            E("signed_password", "signedPassword", str),
            E("mac_address", "macAddress", str),
            E("realm_name", "realmName", str),
            E("digest_ha1_complement", "digestHa1Complement", str),
            E("digest_response", "digestResponse", str),
            E("file_name_lookup", "fileNameLookup", bool),
            E("file_name_on_disk", "fileNameOnDisk", str),
        )


class DeviceManagementPutFileRequest(OCIRequest):
    """
    Informs BroadWorks that a file was uploaded to the repository.

    The response is always a `SuccessResponse()`.

    Attributes:
        device_access_uri (str): deviceAccessURI
        ip_address (str): ipAddress
    """

    __slots__: List[str] = [
        "device_access_uri",
        "ip_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_access_uri", "deviceAccessURI", str, is_required=True),
            E("ip_address", "ipAddress", str, is_required=True),
        )


class EnterpriseBroadWorksMobileManagerActivationRequest(OCIRequest):
    """
    Activates or Deactivates the BroadWorks Mobile Manager.

    The deactivationReason is required when isActive is set to false.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        is_active (bool): isActive
        deactivation_reason (str): deactivationReason *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "is_active",
        "deactivation_reason",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("is_active", "isActive", bool, is_required=True),
            E("deactivation_reason", "deactivationReason", str),
        )


class EnterpriseBroadWorksMobileManagerAddHomeZoneRequest(OCIRequest):
    """
    Add a home zone to the BroadWorks Mobile Manager.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        home_zone_domain_name (str): homeZoneDomainName
        mobile_country_code (str): mobileCountryCode
        mobile_network_code (str): mobileNetworkCode
        location_area_code (str): locationAreaCode
        cell_identity (str): cellIdentity
    """

    __slots__: List[str] = [
        "service_provider_id",
        "home_zone_domain_name",
        "mobile_country_code",
        "mobile_network_code",
        "location_area_code",
        "cell_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("home_zone_domain_name", "homeZoneDomainName", str, is_required=True),
            E("mobile_country_code", "mobileCountryCode", str, is_required=True),
            E("mobile_network_code", "mobileNetworkCode", str, is_required=True),
            E("location_area_code", "locationAreaCode", str, is_required=True),
            E("cell_identity", "cellIdentity", str, is_required=True),
        )


class EnterpriseBroadWorksMobileManagerAddRequest(OCIRequest):
    """
    Add the BroadWorks Mobile Manager.

    Only one BroadWorks Mobile Manager can be added per enterprise.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        information_file (str): informationFile
        certificate_file (str): certificateFile
        is_active (bool): isActive
        local_to_carrier (bool): localToCarrier
        max_tx_per_second_enabled (bool): maxTxPerSecondEnabled
        max_tx_per_second (int): maxTxPerSecond *Optional*
        tldn_enabled (bool): tldnEnabled
        generic_number_enabled (bool): genericNumberEnabled
        mobile_state_check_enabled (bool): mobileStateCheckEnabled
        location_based_services_enabled (bool): locationBasedServicesEnabled
    """

    __slots__: List[str] = [
        "service_provider_id",
        "information_file",
        "certificate_file",
        "is_active",
        "local_to_carrier",
        "max_tx_per_second_enabled",
        "max_tx_per_second",
        "tldn_enabled",
        "generic_number_enabled",
        "mobile_state_check_enabled",
        "location_based_services_enabled",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("information_file", "informationFile", str, is_required=True),
            E("certificate_file", "certificateFile", str, is_required=True),
            E("is_active", "isActive", bool, is_required=True),
            E("local_to_carrier", "localToCarrier", bool, is_required=True),
            E(
                "max_tx_per_second_enabled",
                "maxTxPerSecondEnabled",
                bool,
                is_required=True,
            ),
            E("max_tx_per_second", "maxTxPerSecond", int),
            E("tldn_enabled", "tldnEnabled", bool, is_required=True),
            E("generic_number_enabled", "genericNumberEnabled", bool, is_required=True),
            E(
                "mobile_state_check_enabled",
                "mobileStateCheckEnabled",
                bool,
                is_required=True,
            ),
            E(
                "location_based_services_enabled",
                "locationBasedServicesEnabled",
                bool,
                is_required=True,
            ),
        )


class EnterpriseBroadWorksMobileManagerDeleteHomeZoneListRequest(OCIRequest):
    """
    Delete a list of home zones from the BroadWorks Mobile Manager.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        home_zone_id (List[str]): homeZoneId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "home_zone_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("home_zone_id", "homeZoneId", str, is_required=True, is_array=True),
        )


class EnterpriseBroadWorksMobileManagerDeleteHomeZoneRequest(OCIRequest):
    """
    Delete a home zone from the BroadWorks Mobile Manager.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        home_zone_id (str): homeZoneId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "home_zone_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("home_zone_id", "homeZoneId", str, is_required=True),
        )


class EnterpriseBroadWorksMobileManagerDeleteRequest(OCIRequest):
    """
    Delete the BroadWorks Mobile Manager.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class EnterpriseBroadWorksMobileManagerGetDomainListRequest(OCIRequest):
    """
    Get the list of domains of the BroadWorks Mobile Manager.

    The response is either `EnterpriseBroadWorksMobileManagerGetDomainListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class EnterpriseBroadWorksMobileManagerGetHomeZoneListRequest(OCIRequest):
    """
    Get the list of home zones of the BroadWorks Mobile Manager.

    The response is either `EnterpriseBroadWorksMobileManagerGetHomeZoneListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class EnterpriseBroadWorksMobileManagerGetHomeZoneRequest(OCIRequest):
    """
    Get a home zone from the BroadWorks Mobile Manager.

    The response is either `EnterpriseBroadWorksMobileManagerGetHomeZoneResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        home_zone_id (str): homeZoneId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "home_zone_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("home_zone_id", "homeZoneId", str, is_required=True),
        )


class EnterpriseBroadWorksMobileManagerGetRequest(OCIRequest):
    """
    Get the BroadWorks Mobile Manager.

    The response is either `EnterpriseBroadWorksMobileManagerGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class EnterpriseBroadWorksMobileManagerModifyHomeZoneRequest(OCIRequest):
    """
    Modify an existing home zone in the BroadWorks Mobile Manager.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        home_zone_id (str): homeZoneId
        home_zone_domain_name (str): homeZoneDomainName *Optional*
        mobile_country_code (str): mobileCountryCode *Optional*
        mobile_network_code (str): mobileNetworkCode *Optional*
        location_area_code (str): locationAreaCode *Optional*
        cell_identity (str): cellIdentity *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "home_zone_id",
        "home_zone_domain_name",
        "mobile_country_code",
        "mobile_network_code",
        "location_area_code",
        "cell_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("home_zone_id", "homeZoneId", str, is_required=True),
            E("home_zone_domain_name", "homeZoneDomainName", str),
            E("mobile_country_code", "mobileCountryCode", str),
            E("mobile_network_code", "mobileNetworkCode", str),
            E("location_area_code", "locationAreaCode", str),
            E("cell_identity", "cellIdentity", str),
        )


class EnterpriseBroadWorksMobileManagerModifyRequest(OCIRequest):
    """
    Modify the BroadWorks Mobile Manager settings.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        information_file (str): informationFile *Optional*
        certificate_file (str): certificateFile *Optional*
        local_to_carrier (bool): localToCarrier *Optional*
        max_tx_per_second_enabled (bool): maxTxPerSecondEnabled *Optional*
        max_tx_per_second (int): maxTxPerSecond *Optional*
        tldn_enabled (bool): tldnEnabled *Optional*
        generic_number_enabled (bool): genericNumberEnabled *Optional*
        mobile_state_check_enabled (bool): mobileStateCheckEnabled *Optional*
        location_based_services_enabled (bool): locationBasedServicesEnabled *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "information_file",
        "certificate_file",
        "local_to_carrier",
        "max_tx_per_second_enabled",
        "max_tx_per_second",
        "tldn_enabled",
        "generic_number_enabled",
        "mobile_state_check_enabled",
        "location_based_services_enabled",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("information_file", "informationFile", str),
            E("certificate_file", "certificateFile", str),
            E("local_to_carrier", "localToCarrier", bool),
            E("max_tx_per_second_enabled", "maxTxPerSecondEnabled", bool),
            E("max_tx_per_second", "maxTxPerSecond", int),
            E("tldn_enabled", "tldnEnabled", bool),
            E("generic_number_enabled", "genericNumberEnabled", bool),
            E("mobile_state_check_enabled", "mobileStateCheckEnabled", bool),
            E("location_based_services_enabled", "locationBasedServicesEnabled", bool),
        )


class EnterpriseBroadWorksMobileManagerSendCarrierFilesRequest(OCIRequest):
    """
    Sends an email with the carrier information and certificate files.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        email_to (str): emailTo
    """

    __slots__: List[str] = [
        "service_provider_id",
        "email_to",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("email_to", "emailTo", str, is_required=True),
        )


class EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListRequest(
    OCIRequest,
):
    """
    Request a list of available Mobile Subscriber Directory Numbers not yet assigned to
    any user.

    The response is either
    `EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListResponse()`
    or `ErrorResponse()`. Replaced by:
    `EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListRequest22()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        profile_name (str): profileName
        agent_user_id (List[str]): agentUserId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "profile_name",
        "agent_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=True),
            E("agent_user_id", "agentUserId", str, is_required=True, is_array=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): serviceProviderId
        profile_name (str): profileName
        profile_description (str): profileDescription *Optional*
        threshold_current_call_state_idle_time_yellow (int):
            thresholdCurrentCallStateIdleTimeYellow *Optional*
        threshold_current_call_state_idle_time_red (int):
            thresholdCurrentCallStateIdleTimeRed *Optional*
        threshold_current_call_state_on_call_time_yellow (int):
            thresholdCurrentCallStateOnCallTimeYellow *Optional*
        threshold_current_call_state_on_call_time_red (int):
            thresholdCurrentCallStateOnCallTimeRed *Optional*
        threshold_current_agent_state_unavailable_time_yellow (int):
            thresholdCurrentAgentStateUnavailableTimeYellow *Optional*
        threshold_current_agent_state_unavailable_time_red (int):
            thresholdCurrentAgentStateUnavailableTimeRed *Optional*
        threshold_average_busy_in_time_yellow (int): thresholdAverageBusyInTimeYellow
            *Optional*
        threshold_average_busy_in_time_red (int): thresholdAverageBusyInTimeRed *Optional*
        threshold_average_busy_out_time_yellow (int): thresholdAverageBusyOutTimeYellow
            *Optional*
        threshold_average_busy_out_time_red (int): thresholdAverageBusyOutTimeRed
            *Optional*
        threshold_average_wrap_up_time_yellow (int): thresholdAverageWrapUpTimeYellow
            *Optional*
        threshold_average_wrap_up_time_red (int): thresholdAverageWrapUpTimeRed *Optional*
        enable_notification_email (bool): enableNotificationEmail
        notification_email_address (List[str]): notificationEmailAddress *Optional*
        agent_user_id (List[str]): agentUserId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "profile_name",
        "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",
        "enable_notification_email",
        "notification_email_address",
        "agent_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=True),
            E("profile_description", "profileDescription", str),
            E(
                "threshold_current_call_state_idle_time_yellow",
                "thresholdCurrentCallStateIdleTimeYellow",
                int,
            ),
            E(
                "threshold_current_call_state_idle_time_red",
                "thresholdCurrentCallStateIdleTimeRed",
                int,
            ),
            E(
                "threshold_current_call_state_on_call_time_yellow",
                "thresholdCurrentCallStateOnCallTimeYellow",
                int,
            ),
            E(
                "threshold_current_call_state_on_call_time_red",
                "thresholdCurrentCallStateOnCallTimeRed",
                int,
            ),
            E(
                "threshold_current_agent_state_unavailable_time_yellow",
                "thresholdCurrentAgentStateUnavailableTimeYellow",
                int,
            ),
            E(
                "threshold_current_agent_state_unavailable_time_red",
                "thresholdCurrentAgentStateUnavailableTimeRed",
                int,
            ),
            E(
                "threshold_average_busy_in_time_yellow",
                "thresholdAverageBusyInTimeYellow",
                int,
            ),
            E(
                "threshold_average_busy_in_time_red",
                "thresholdAverageBusyInTimeRed",
                int,
            ),
            E(
                "threshold_average_busy_out_time_yellow",
                "thresholdAverageBusyOutTimeYellow",
                int,
            ),
            E(
                "threshold_average_busy_out_time_red",
                "thresholdAverageBusyOutTimeRed",
                int,
            ),
            E(
                "threshold_average_wrap_up_time_yellow",
                "thresholdAverageWrapUpTimeYellow",
                int,
            ),
            E(
                "threshold_average_wrap_up_time_red",
                "thresholdAverageWrapUpTimeRed",
                int,
            ),
            E(
                "enable_notification_email",
                "enableNotificationEmail",
                bool,
                is_required=True,
            ),
            E(
                "notification_email_address",
                "notificationEmailAddress",
                str,
                is_array=True,
            ),
            E("agent_user_id", "agentUserId", str, is_array=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): serviceProviderId
        profile_name (str): profileName
        agent_user_id (List[str]): agentUserId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "profile_name",
        "agent_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=True),
            E("agent_user_id", "agentUserId", str, is_required=True, is_array=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): serviceProviderId
        profile_name (str): profileName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        profile_name (str): profileName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=True),
        )


class EnterpriseCallCenterAgentUnavailableCodeAddRequest(OCIRequest):
    """
    Add a Call Center Agent Unavailable Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        is_active (bool): isActive
        code (str): code
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "is_active",
        "code",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("is_active", "isActive", bool, is_required=True),
            E("code", "code", str, is_required=True),
            E("description", "description", str),
        )


class EnterpriseCallCenterAgentUnavailableCodeDeleteRequest(OCIRequest):
    """
    Delete a Call Center Agent Unavailable Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        code (str): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("code", "code", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class EnterpriseCallCenterAgentUnavailableCodeGetRequest(OCIRequest):
    """
    Get a Call Center Agent Unavailable Code.

    The response is either `EnterpriseCallCenterAgentUnavailableCodeGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        code (str): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("code", "code", str, is_required=True),
        )


class EnterpriseCallCenterAgentUnavailableCodeModifyRequest(OCIRequest):
    """
    Modify a Call Center Agent Unavailable Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        code (str): code
        is_active (bool): isActive *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "code",
        "is_active",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("code", "code", str, is_required=True),
            E("is_active", "isActive", bool),
            E("description", "description", str),
        )


class EnterpriseCallCenterAgentUnavailableCodeSettingsGetRequest(OCIRequest):
    """
    Request the enterprise level data associated with Call Center Agents Unavailable Code
    Settings.

    The response is either an
    `EnterpriseCallCenterAgentUnavailableCodeSettingsGetResponse()` or an
    `ErrorResponse()`. Replaced by
    `EnterpriseCallCenterAgentUnavailableCodeSettingsGetRequest17sp4()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class EnterpriseCallCenterCallDispositionCodeAddRequest(OCIRequest):
    """
    Add a Call Center Call Disposition Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        code (str): code
        is_active (bool): isActive
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "code",
        "is_active",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("code", "code", str, is_required=True),
            E("is_active", "isActive", bool, is_required=True),
            E("description", "description", str),
        )


class EnterpriseCallCenterCallDispositionCodeDeleteRequest(OCIRequest):
    """
    Delete a Call Center Call Disposition Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        code (str): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("code", "code", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class EnterpriseCallCenterCallDispositionCodeGetRequest(OCIRequest):
    """
    Get a Call Center Call Disposition Code.

    The response is either `EnterpriseCallCenterCallDispositionCodeGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        code (str): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("code", "code", str, is_required=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): serviceProviderId
        code (str): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("code", "code", str, is_required=True),
        )


class EnterpriseCallCenterCallDispositionCodeModifyRequest(OCIRequest):
    """
    Modify a Call Center Call Disposition Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        code (str): code
        is_active (bool): isActive *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "code",
        "is_active",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("code", "code", str, is_required=True),
            E("is_active", "isActive", bool),
            E("description", "description", str),
        )


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): serviceProviderId
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
        )


class EnterpriseCallCenterEnhancedReportingBrandingGetRequest(OCIRequest):
    """
    Request to get the enterprise branding information.

    The response is either `EnterpriseCallCenterEnhancedReportingBrandingGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class EnterpriseCallCenterEnhancedReportingGetRequest(OCIRequest):
    """
    Request to get an enterprise level call center enhanced reporting setting.

    The response is either an `EnterpriseCallCenterEnhancedReportingGetResponse()` or an
    `ErrorResponse()`. Replaced by `EnterpriseCallCenterEnhancedReportingGetRequest19()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class EnterpriseCallCenterEnhancedReportingModifyRequest(OCIRequest):
    """
    Request to modify enterprise level call center enhanced reporting settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by
    `EnterpriseCallCenterEnhancedReportingModifyRequest19()`

    Attributes:
        service_provider_id (str): serviceProviderId
        reporting_server (str): reportingServer *Optional*
        web_statistic_source (str): webStatisticSource *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "reporting_server",
        "web_statistic_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("reporting_server", "reportingServer", str),
            E("web_statistic_source", "webStatisticSource", str),
        )


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): serviceProviderId
        reporting_server (str): reportingServer *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "reporting_server",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("reporting_server", "reportingServer", str),
        )


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): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class EnterpriseCallCenterGetRequest(OCIRequest):
    """
    Request the enterprise level data associated with Call Center.

    The response is either an `EnterpriseCallCenterGetResponse()` or an `ErrorResponse()`.
    Replaced by `EnterpriseCallCenterGetRequest17sp4()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class EnterpriseCallCenterGetRequest17sp4(OCIRequest):
    """
    Request the enterprise level data associated with Call Center.

    The response is either an `EnterpriseCallCenterGetResponse17sp4()` or an
    `ErrorResponse()`. Replaced by: `EnterpriseCallCenterGetResponse23()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        use_system_default_guard_timer (bool): useSystemDefaultGuardTimer *Optional*
        enable_guard_timer (bool): enableGuardTimer *Optional*
        guard_timer_seconds (int): guardTimerSeconds *Optional*
        use_system_default_unavailable_settings (bool):
            useSystemDefaultUnavailableSettings *Optional*
        force_agent_unavailable_on_dnd_activation (bool):
            forceAgentUnavailableOnDNDActivation *Optional*
        force_agent_unavailable_on_personal_calls (bool):
            forceAgentUnavailableOnPersonalCalls *Optional*
        force_agent_unavailable_on_bounced_call_limit (bool):
            forceAgentUnavailableOnBouncedCallLimit *Optional*
        number_consecutive_bounced_calls_to_force_agent_unavailable (int):
            numberConsecutiveBouncedCallsToForceAgentUnavailable *Optional*
        force_agent_unavailable_on_not_reachable (bool):
            forceAgentUnavailableOnNotReachable *Optional*
        wrap_up_destination (str): wrapUpDestination *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_system_default_guard_timer",
        "enable_guard_timer",
        "guard_timer_seconds",
        "use_system_default_unavailable_settings",
        "force_agent_unavailable_on_dnd_activation",
        "force_agent_unavailable_on_personal_calls",
        "force_agent_unavailable_on_bounced_call_limit",
        "number_consecutive_bounced_calls_to_force_agent_unavailable",
        "force_agent_unavailable_on_not_reachable",
        "wrap_up_destination",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("use_system_default_guard_timer", "useSystemDefaultGuardTimer", bool),
            E("enable_guard_timer", "enableGuardTimer", bool),
            E("guard_timer_seconds", "guardTimerSeconds", int),
            E(
                "use_system_default_unavailable_settings",
                "useSystemDefaultUnavailableSettings",
                bool,
            ),
            E(
                "force_agent_unavailable_on_dnd_activation",
                "forceAgentUnavailableOnDNDActivation",
                bool,
            ),
            E(
                "force_agent_unavailable_on_personal_calls",
                "forceAgentUnavailableOnPersonalCalls",
                bool,
            ),
            E(
                "force_agent_unavailable_on_bounced_call_limit",
                "forceAgentUnavailableOnBouncedCallLimit",
                bool,
            ),
            E(
                "number_consecutive_bounced_calls_to_force_agent_unavailable",
                "numberConsecutiveBouncedCallsToForceAgentUnavailable",
                int,
            ),
            E(
                "force_agent_unavailable_on_not_reachable",
                "forceAgentUnavailableOnNotReachable",
                bool,
            ),
            E("wrap_up_destination", "wrapUpDestination", str),
        )


class EnterpriseCallCenterMonitoringGetRequest(OCIRequest):
    """
    Request the enterprise level data associated with Call Center Monitoring.

    The response is either an `EnterpriseCallCenterMonitoringGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        enable_supervisor_coaching (bool): enableSupervisorCoaching *Optional*
        bypass_enforcement_of_supervisor_agent_relationship (bool):
            bypassEnforcementOfSupervisorAgentRelationship *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enable_supervisor_coaching",
        "bypass_enforcement_of_supervisor_agent_relationship",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enable_supervisor_coaching", "enableSupervisorCoaching", bool),
            E(
                "bypass_enforcement_of_supervisor_agent_relationship",
                "bypassEnforcementOfSupervisorAgentRelationship",
                bool,
            ),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        use_cloud_pbx (bool): useCloudPBX *Optional*
        use_enterprise_setting (bool): useEnterpriseSetting *Optional*
        fqdn (str): FQDN *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_cloud_pbx",
        "use_enterprise_setting",
        "fqdn",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("use_cloud_pbx", "useCloudPBX", bool),
            E("use_enterprise_setting", "useEnterpriseSetting", bool),
            E("fqdn", "FQDN", str),
        )


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): serviceProviderId
        entry_name (List[str]): entryName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "entry_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("entry_name", "entryName", str, is_required=True, is_array=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): serviceProviderId
        entry_name (str): entryName
        new_entry_name (str): newEntryName *Optional*
        phone_number (str): phoneNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "entry_name",
        "new_entry_name",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("entry_name", "entryName", str, is_required=True),
            E("new_entry_name", "newEntryName", str),
            E("phone_number", "phoneNumber", str),
        )


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): serviceProviderId
        code (List[str]): code *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("code", "code", str, is_array=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): serviceProviderId
        code (str): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("code", "code", str, is_required=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): serviceProviderId
        code (str): code
        description (str): description *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "code",
        "description",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("code", "code", str, is_required=True),
            E("description", "description", str),
            E("network_class_of_service", "networkClassOfService", str),
        )


class EnterpriseDepartmentDeleteRequest(OCIRequest):
    """
    Delete a department from an enterprise.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        enterprise_id (str): enterpriseId
        department_name (str): departmentName
    """

    __slots__: List[str] = [
        "enterprise_id",
        "department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enterprise_id", "enterpriseId", str, is_required=True),
            E("department_name", "departmentName", str, is_required=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): enterpriseId
        department_name (str): departmentName
    """

    __slots__: List[str] = [
        "enterprise_id",
        "department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enterprise_id", "enterpriseId", str, is_required=True),
            E("department_name", "departmentName", str, is_required=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): enterpriseId
        include_group_departments (bool): includeGroupDepartments
    """

    __slots__: List[str] = [
        "enterprise_id",
        "include_group_departments",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enterprise_id", "enterpriseId", str, is_required=True),
            E(
                "include_group_departments",
                "includeGroupDepartments",
                bool,
                is_required=True,
            ),
        )


class EnterpriseEnterpriseTrunkAddRequest(OCIRequest):
    """
    Request to add an enterprise trunk in an enterprise.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `EnterpriseEnterpriseTrunkAddRequest21()`

    Attributes:
        service_provider_id (str): serviceProviderId
        enterprise_trunk_name (str): enterpriseTrunkName
        maximum_reroute_attempts (int): maximumRerouteAttempts
        route_exhaustion_action (str): routeExhaustionAction
        route_exhaustion_forward_address (str): routeExhaustionForwardAddress *Optional*
        ordered_routing (OCI.orderedRouting): orderedRouting *Optional*
        priority_weighted_routing (OCI.priorityWeightedRouting): priorityWeightedRouting
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enterprise_trunk_name",
        "maximum_reroute_attempts",
        "route_exhaustion_action",
        "route_exhaustion_forward_address",
        "ordered_routing",
        "priority_weighted_routing",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E(
                "maximum_reroute_attempts",
                "maximumRerouteAttempts",
                int,
                is_required=True,
            ),
            E(
                "route_exhaustion_action",
                "routeExhaustionAction",
                str,
                is_required=True,
            ),
            E("route_exhaustion_forward_address", "routeExhaustionForwardAddress", str),
            E("ordered_routing", "orderedRouting", str, is_complex=True),  # unknown
            E(
                "priority_weighted_routing",
                "priorityWeightedRouting",
                str,
                is_complex=True,
            ),  # unknown
        )


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): serviceProviderId
        enterprise_trunk_name (str): enterpriseTrunkName
        maximum_reroute_attempts (int): maximumRerouteAttempts
        route_exhaustion_action (str): routeExhaustionAction
        route_exhaustion_forward_address (str): routeExhaustionForwardAddress *Optional*
        ordered_routing (OCI.orderedRouting): orderedRouting *Optional*
        priority_weighted_routing (OCI.priorityWeightedRouting): priorityWeightedRouting
            *Optional*
        enable_capacity_management (bool): enableCapacityManagement
        max_active_calls (int): maxActiveCalls *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
            *Optional*
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
            *Optional*
        maximum_active_incoming_calls_allowed (int): maximumActiveIncomingCallsAllowed
            *Optional*
        maximum_active_outgoing_calls_allowed (int): maximumActiveOutgoingCallsAllowed
            *Optional*
        minimum_active_calls_reserved (int): minimumActiveCallsReserved *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enterprise_trunk_name",
        "maximum_reroute_attempts",
        "route_exhaustion_action",
        "route_exhaustion_forward_address",
        "ordered_routing",
        "priority_weighted_routing",
        "enable_capacity_management",
        "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",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E(
                "maximum_reroute_attempts",
                "maximumRerouteAttempts",
                int,
                is_required=True,
            ),
            E(
                "route_exhaustion_action",
                "routeExhaustionAction",
                str,
                is_required=True,
            ),
            E("route_exhaustion_forward_address", "routeExhaustionForwardAddress", str),
            E("ordered_routing", "orderedRouting", str, is_complex=True),  # unknown
            E(
                "priority_weighted_routing",
                "priorityWeightedRouting",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "enable_capacity_management",
                "enableCapacityManagement",
                bool,
                is_required=True,
            ),
            E("max_active_calls", "maxActiveCalls", int),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
            ),
            E(
                "maximum_active_incoming_calls_allowed",
                "maximumActiveIncomingCallsAllowed",
                int,
            ),
            E(
                "maximum_active_outgoing_calls_allowed",
                "maximumActiveOutgoingCallsAllowed",
                int,
            ),
            E("minimum_active_calls_reserved", "minimumActiveCallsReserved", int),
        )


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): serviceProviderId
        enterprise_trunk_name (str): enterpriseTrunkName
        user_id (List[str]): userId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enterprise_trunk_name",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E("user_id", "userId", str, is_required=True, is_array=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): serviceProviderId
        enterprise_trunk_name (str): enterpriseTrunkName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enterprise_trunk_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=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): serviceProviderId
        enterprise_trunk_name (str): enterpriseTrunkName
        user_id (List[str]): userId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enterprise_trunk_name",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E("user_id", "userId", str, is_required=True, is_array=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): serviceProviderId
        enterprise_trunk_name (str): enterpriseTrunkName
        user_id (List[str]): userId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enterprise_trunk_name",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E("user_id", "userId", str, is_required=True, is_array=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class EnterpriseEnterpriseTrunkGetRequest(OCIRequest):
    """
    Request to get an enterprise trunk The response is either an
    `EnterpriseEnterpriseTrunkGetResponse()` or an `ErrorResponse()`.

    Replaced by: `EnterpriseEnterpriseTrunkGetRequest21()`

    Attributes:
        service_provider_id (str): serviceProviderId
        enterprise_trunk_name (str): enterpriseTrunkName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enterprise_trunk_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
        )


class EnterpriseEnterpriseTrunkGetRequest21(OCIRequest):
    """
    Request to get an enterprise trunk The response is either an
    `EnterpriseEnterpriseTrunkGetResponse21()` or an `ErrorResponse()`.


    Attributes:
        service_provider_id (str): serviceProviderId
        enterprise_trunk_name (str): enterpriseTrunkName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enterprise_trunk_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
        )


class EnterpriseEnterpriseTrunkGetRequest22(OCIRequest):
    """
    Request to get an enterprise trunk The response is either an
    `EnterpriseEnterpriseTrunkGetResponse21()` or an `ErrorResponse()`.


    Attributes:
        service_provider_id (str): serviceProviderId
        enterprise_trunk_name (str): enterpriseTrunkName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enterprise_trunk_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=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): serviceProviderId
        enterprise_trunk_name (str): enterpriseTrunkName
        new_enterprise_trunk_name (str): newEnterpriseTrunkName *Optional*
        maximum_reroute_attempts (int): maximumRerouteAttempts *Optional*
        route_exhaustion_action (str): routeExhaustionAction *Optional*
        route_exhaustion_forward_address (str): routeExhaustionForwardAddress *Optional*
        ordered_routing (OCI.orderedRouting): orderedRouting *Optional*
        priority_weighted_routing (OCI.priorityWeightedRouting): priorityWeightedRouting
            *Optional*
        enable_capacity_management (bool): enableCapacityManagement *Optional*
        max_active_calls (int): maxActiveCalls *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
            *Optional*
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
            *Optional*
        maximum_active_incoming_calls_allowed (int): maximumActiveIncomingCallsAllowed
            *Optional*
        maximum_active_outgoing_calls_allowed (int): maximumActiveOutgoingCallsAllowed
            *Optional*
        minimum_active_calls_reserved (int): minimumActiveCallsReserved *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enterprise_trunk_name",
        "new_enterprise_trunk_name",
        "maximum_reroute_attempts",
        "route_exhaustion_action",
        "route_exhaustion_forward_address",
        "ordered_routing",
        "priority_weighted_routing",
        "enable_capacity_management",
        "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",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E("new_enterprise_trunk_name", "newEnterpriseTrunkName", str),
            E("maximum_reroute_attempts", "maximumRerouteAttempts", int),
            E("route_exhaustion_action", "routeExhaustionAction", str),
            E("route_exhaustion_forward_address", "routeExhaustionForwardAddress", str),
            E("ordered_routing", "orderedRouting", str, is_complex=True),  # unknown
            E(
                "priority_weighted_routing",
                "priorityWeightedRouting",
                str,
                is_complex=True,
            ),  # unknown
            E("enable_capacity_management", "enableCapacityManagement", bool),
            E("max_active_calls", "maxActiveCalls", int),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
            ),
            E(
                "maximum_active_incoming_calls_allowed",
                "maximumActiveIncomingCallsAllowed",
                int,
            ),
            E(
                "maximum_active_outgoing_calls_allowed",
                "maximumActiveOutgoingCallsAllowed",
                int,
            ),
            E("minimum_active_calls_reserved", "minimumActiveCallsReserved", int),
        )


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): serviceProviderId
        trunk_group_name (str): trunkGroupName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "trunk_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("trunk_group_name", "trunkGroupName", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        name (List[str]): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True, is_array=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class EnterpriseSessionAdmissionControlGroupGetRequest(OCIRequest):
    """
    Request to get a session admission control group for the enterprise.

    The response is either an `EnterpriseSessionAdmissionControlGroupGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class EnterpriseSessionAdmissionControlGroupGetRequest19sp1(OCIRequest):
    """
    Request to get a session admission control group for the enterprise.

    The response is either an `EnterpriseSessionAdmissionControlGroupGetResponse19sp1()`
    or an `ErrorResponse()`. Replaced by:
    `EnterpriseSessionAdmissionControlGroupGetRequest21sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class EnterpriseSessionAdmissionControlGroupGetRequest21sp1(OCIRequest):
    """
    Request to get a session admission control group for the enterprise.

    The response is either an `EnterpriseSessionAdmissionControlGroupGetResponse21sp1()`
    or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class EnterpriseVoiceVPNDeletePolicyRequest(OCIRequest):
    """
    Delete a enterprise voice VPN location.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        location_dialing_code (str): locationDialingCode
    """

    __slots__: List[str] = [
        "service_provider_id",
        "location_dialing_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("location_dialing_code", "locationDialingCode", str, is_required=True),
        )


class EnterpriseVoiceVPNGetDefaultRequest(OCIRequest):
    """
    Request the Voice VPN default settings for the enterprise.

    The response is `EnterpriseVoiceVPNGetDefaultResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        location_dialing_code (str): locationDialingCode
    """

    __slots__: List[str] = [
        "service_provider_id",
        "location_dialing_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("location_dialing_code", "locationDialingCode", str, is_required=True),
        )


class EnterpriseVoiceVPNGetRequest(OCIRequest):
    """
    Request the enterprise level data associated with Voice VPN.

    The response is either a `EnterpriseVoiceVPNGetResponse()` or an `ErrorResponse()`.

    Replaced By: `EnterpriseVoiceVPNGetRequest14sp3()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        is_active (bool): isActive *Optional*
        default_selection (str): defaultSelection *Optional*
        e164_selection (str): e164Selection *Optional*
        use_phone_context (bool): usePhoneContext *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "is_active",
        "default_selection",
        "e164_selection",
        "use_phone_context",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("default_selection", "defaultSelection", str),
            E("e164_selection", "e164Selection", str),
            E("use_phone_context", "usePhoneContext", bool),
        )


class ExternalAuthenticationAuthorizeTokenRequest(OCIRequest):
    """
    This command is part of the Portal API.

    Sent when a Web or CLI user logs in using external authentication.  The password must
    be hashed.  The password hashing algorithm is: 1) The message digest of the user's
    plain password is calculated using the SHA algorithm.  2) For every four bits in the
    160-bit digest, starting from the first bit, it is converted into a character in ASCII
    Hex format (0 through 9, a through f). The result is a 40-character string, for
    example, f7a9e24777ec23212c54d7a350bc5bea5477fdbb.  3) The above string then is used
    to populate the password field in the request.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        password (str): password *Optional*
        login_token (str): loginToken
    """

    __slots__: List[str] = [
        "user_id",
        "password",
        "login_token",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("password", "password", str),
            E("login_token", "loginToken", str, is_required=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): userId
        password (str): password *Optional*
        is_password_hashed (bool): isPasswordHashed *Optional*
        login_token (str): loginToken
    """

    __slots__: List[str] = [
        "user_id",
        "password",
        "is_password_hashed",
        "login_token",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("password", "password", str),
            E("is_password_hashed", "isPasswordHashed", bool),
            E("login_token", "loginToken", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        tag_name (str): tagName
        tag_value (str): tagValue *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "tag_name",
        "tag_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True),
            E("tag_value", "tagValue", str),
        )


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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        tag_name (List[str]): tagName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "tag_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        tag_name (str): tagName
        tag_value (str): tagValue *Optional*
        tag_value_to_encrypt (str): tagValueToEncrypt *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "tag_name",
        "tag_value",
        "tag_value_to_encrypt",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True),
            E("tag_value", "tagValue", str),
            E("tag_value_to_encrypt", "tagValueToEncrypt", str),
        )


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 (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        activate_device (bool): activateDevice
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "activate_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("activate_device", "activateDevice", bool, is_required=True),
        )


class GroupAccessDeviceFileGetListRequest(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 `GroupAccessDeviceFileGetListResponse()` or `ErrorResponse()`.

    Replaced By: `GroupAccessDeviceFileGetListRequest14sp8()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class GroupAccessDeviceFileGetRequest(OCIRequest):
    """
    Request to get a group device profile file.

    The response is either `GroupAccessDeviceFileGetResponse()` or `ErrorResponse()`.

    Replaced By: `GroupAccessDeviceFileGetRequest14sp8()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        file_type (str): fileType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "file_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("file_type", "fileType", str, is_required=True),
        )


class GroupAccessDeviceFileGetRequest14sp8(OCIRequest):
    """
    Request to get a group device profile file.

    The response is either `GroupAccessDeviceFileGetResponse14sp8()` or `ErrorResponse()`.
    Replaced by: `GroupAccessDeviceFileGetRequest16sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class GroupAccessDeviceFileGetRequest16sp1(OCIRequest):
    """
    Request to get a group device profile file.

    The response is either `GroupAccessDeviceFileGetResponse16sp1()` or `ErrorResponse()`.
    Replaced by: `GroupAccessDeviceFileGetRequest20()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class GroupAccessDeviceFileGetRequest20(OCIRequest):
    """
    Request to get a group device profile file.

    The response is either `GroupAccessDeviceFileGetResponse20()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        tag_set_name (str): tagSetName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("tag_set_name", "tagSetName", str),
        )


class GroupAccessDeviceGetAvailableDetailListRequest14(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 response is either `GroupAccessDeviceGetAvailableDetailListResponse14()` or
    `ErrorResponse()`. Replaced by: `GroupAccessDeviceGetAvailableDetailListRequest19()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_music_on_hold (bool): isMusicOnHold
        only_video_capable (bool): onlyVideoCapable
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_music_on_hold",
        "only_video_capable",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("is_music_on_hold", "isMusicOnHold", bool, is_required=True),
            E("only_video_capable", "onlyVideoCapable", bool, is_required=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 response is either `GroupAccessDeviceGetAvailableDetailListResponse19()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_music_on_hold (bool): isMusicOnHold
        only_video_capable (bool): onlyVideoCapable
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_music_on_hold",
        "only_video_capable",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("is_music_on_hold", "isMusicOnHold", bool, is_required=True),
            E("only_video_capable", "onlyVideoCapable", bool, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
        )


class GroupAccessDeviceGetLinkedLeafDeviceListRequest(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". It can be linked to only one tree
    device.  The list includes devices created at the system, service provider, and group
    levels.

    The response is either `GroupAccessDeviceGetLinkedLeafDeviceListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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". It can be linked to only one tree
    device.

    The response is either `GroupAccessDeviceGetLinkedTreeDeviceResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class GroupAccessDeviceGetRequest14(OCIRequest):
    """
    Requests the configuration of a specified group access device.

    The response is either `GroupAccessDeviceGetResponse14()` or `ErrorResponse()`.

    Replaced By: `GroupAccessDeviceGetRequest14sp3()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class GroupAccessDeviceGetRequest14sp3(OCIRequest):
    """
    Requests the configuration of a specified group access device.

    The response is either `GroupAccessDeviceGetResponse14sp3()` or `ErrorResponse()`.

    Replaced By: `GroupAccessDeviceGetRequest14sp6()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class GroupAccessDeviceGetRequest14sp6(OCIRequest):
    """
    Requests the configuration of a specified group access device.

    The response is either `GroupAccessDeviceGetResponse14sp6()` or `ErrorResponse()`.
    Replaced by: `GroupAccessDeviceGetRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class GroupAccessDeviceGetRequest16(OCIRequest):
    """
    Requests the configuration of a specified group access device.

    The response is either `GroupAccessDeviceGetResponse16()` or `ErrorResponse()`.
    Replaced by: `GroupAccessDeviceGetRequest18sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class GroupAccessDeviceGetRequest18sp1(OCIRequest):
    """
    Requests the configuration of a specified group access device.

    The response is either `GroupAccessDeviceGetResponse18sp1()` or `ErrorResponse()`.
    Replaced by: `GroupAccessDeviceGetRequest22()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class GroupAccessDeviceGetRequest22(OCIRequest):
    """
    Requests the configuration of a specified group access device.

    The response is either `GroupAccessDeviceGetResponse22()` or `ErrorResponse()`.
    Replaced by: `GroupAccessDeviceGetRequest24()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class GroupAccessDeviceGetRequest22V2(OCIRequest):
    """
    Requests the configuration of a specified group access device.

    The response is either `GroupAccessDeviceGetResponse22V2()` or `ErrorResponse()`. The
    following elements are only used in AS data mode and ignored in XS data mode:
    deviceExternalId Replaced by: `GroupAccessDeviceGetRequest24()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


class GroupAccessDeviceGetRequest22V3(OCIRequest):
    """
    Requests the configuration of a specified group access device.

    The response is either `GroupAccessDeviceGetResponse22V3()` or `ErrorResponse()`.
    Replaced by: `GroupAccessDeviceGetRequest24()`

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


class GroupAccessDeviceGetRequest24(OCIRequest):
    """
    Requests the configuration of a specified group access device.

    The response is either `GroupAccessDeviceGetResponse24()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        line_port (str): linePort
        private_identity (str): privateIdentity *Optional*
        is_primary_line_port (bool): isPrimaryLinePort *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "line_port",
        "private_identity",
        "is_primary_line_port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("line_port", "linePort", str, is_required=True),
            E("private_identity", "privateIdentity", str),
            E("is_primary_line_port", "isPrimaryLinePort", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        tag_set_name (str): tagSetName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("tag_set_name", "tagSetName", str),
        )


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): serviceProviderId
        group_id (str): groupId
        code (List[str]): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code", "code", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupAdminAddRequest(OCIRequest):
    """
    Add a group administrator.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        user_id (str): userId
        first_name (str): firstName *Optional*
        last_name (str): lastName *Optional*
        password (str): password *Optional*
        language (str): language *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "user_id",
        "first_name",
        "last_name",
        "password",
        "language",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("user_id", "userId", str, is_required=True),
            E("first_name", "firstName", str),
            E("last_name", "lastName", str),
            E("password", "password", str),
            E("language", "language", str),
        )


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): userId
        alternate_user_id (str): alternateUserId
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "alternate_user_id",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("alternate_user_id", "alternateUserId", str, is_required=True),
            E("description", "description", str),
        )


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): userId
        alternate_user_id (str): alternateUserId
    """

    __slots__: List[str] = [
        "user_id",
        "alternate_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("alternate_user_id", "alternateUserId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        alternate_user_id (str): alternateUserId
        new_alternate_user_id (str): newAlternateUserId *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "alternate_user_id",
        "new_alternate_user_id",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("alternate_user_id", "alternateUserId", str, is_required=True),
            E("new_alternate_user_id", "newAlternateUserId", str),
            E("description", "description", str),
        )


class GroupAdminDeleteRequest(OCIRequest):
    """
    Delete a group administrator.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupAdminGetPolicyRequest(OCIRequest):
    """
    Requests the Group administrator's policy settings.

    The response is either `GroupAdminGetPolicyResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class GroupAdminGetPolicyRequest14sp1(OCIRequest):
    """
    Requests the Group administrator's policy settings.

    The response is either `GroupAdminGetPolicyResponse14sp1()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class GroupAdminGetPolicyRequest16sp1(OCIRequest):
    """
    Requests the Group administrator's policy settings.

    The response is either `GroupAdminGetPolicyResponse16sp1()` or `ErrorResponse()`.
    Replaced by: `GroupAdminGetPolicyRequest17()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class GroupAdminGetPolicyRequest16sp2(OCIRequest):
    """
    Requests the Group administrator's policy settings.

    The response is either `GroupAdminGetPolicyResponse16sp2()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class GroupAdminGetPolicyRequest17(OCIRequest):
    """
    Requests the Group administrator's policy settings.

    The response is either `GroupAdminGetPolicyResponse17()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class GroupAdminGetPolicyRequest17sp3(OCIRequest):
    """
    Requests the Group administrator's policy settings.

    The response is either `GroupAdminGetPolicyResponse17sp3()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class GroupAdminGetPolicyRequest18(OCIRequest):
    """
    Requests the Group administrator's policy settings.

    The response is either `GroupAdminGetPolicyResponse18()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class GroupAdminGetPolicyRequest19sp1(OCIRequest):
    """
    Requests the Group administrator's policy settings.

    The response is either `GroupAdminGetPolicyResponse19sp1()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class GroupAdminGetPolicyRequest20(OCIRequest):
    """
    Requests the Group administrator's policy settings.

    The response is either `GroupAdminGetPolicyResponse20()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class GroupAdminGetRequest(OCIRequest):
    """
    Get a group administrators profile.

    The response is either a `GroupAdminGetResponse()` or an `ErrorResponse()`. Replaced
    by `GroupAdminGetRequest21sp1()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class GroupAdminGetRequest21sp1(OCIRequest):
    """
    Get a group administrators profile.

    The response is either a `GroupAdminGetResponse21sp1()` or an `ErrorResponse()`.
    Replaced by: `GroupAdminGetRequest22()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class GroupAdminGetRequest22(OCIRequest):
    """
    Get a group administrators profile.

    The response is either a `GroupAdminGetResponse22()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        profile_access (str): profileAccess *Optional*
        user_access (str): userAccess *Optional*
        admin_access (str): adminAccess *Optional*
        department_access (str): departmentAccess *Optional*
        access_device_access (str): accessDeviceAccess *Optional*
        enhanced_service_instance_access (str): enhancedServiceInstanceAccess *Optional*
        feature_access_code_access (str): featureAccessCodeAccess *Optional*
        phone_number_extension_access (str): phoneNumberExtensionAccess *Optional*
        calling_line_id_number_access (str): callingLineIdNumberAccess *Optional*
        service_access (str): serviceAccess *Optional*
        trunk_group_access (str): trunkGroupAccess *Optional*
        session_admission_control_access (str): sessionAdmissionControlAccess *Optional*
        office_zone_access (str): officeZoneAccess *Optional*
        dialable_caller_id_access (str): dialableCallerIDAccess *Optional*
        number_activation_access (str): numberActivationAccess *Optional*
        verify_translation_and_routing_access (str): verifyTranslationAndRoutingAccess
            *Optional*
        communication_barring_user_profile_access (str):
            communicationBarringUserProfileAccess *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "profile_access",
        "user_access",
        "admin_access",
        "department_access",
        "access_device_access",
        "enhanced_service_instance_access",
        "feature_access_code_access",
        "phone_number_extension_access",
        "calling_line_id_number_access",
        "service_access",
        "trunk_group_access",
        "session_admission_control_access",
        "office_zone_access",
        "dialable_caller_id_access",
        "number_activation_access",
        "verify_translation_and_routing_access",
        "communication_barring_user_profile_access",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("profile_access", "profileAccess", str),
            E("user_access", "userAccess", str),
            E("admin_access", "adminAccess", str),
            E("department_access", "departmentAccess", str),
            E("access_device_access", "accessDeviceAccess", str),
            E("enhanced_service_instance_access", "enhancedServiceInstanceAccess", str),
            E("feature_access_code_access", "featureAccessCodeAccess", str),
            E("phone_number_extension_access", "phoneNumberExtensionAccess", str),
            E("calling_line_id_number_access", "callingLineIdNumberAccess", str),
            E("service_access", "serviceAccess", str),
            E("trunk_group_access", "trunkGroupAccess", str),
            E("session_admission_control_access", "sessionAdmissionControlAccess", str),
            E("office_zone_access", "officeZoneAccess", str),
            E("dialable_caller_id_access", "dialableCallerIDAccess", str),
            E("number_activation_access", "numberActivationAccess", str),
            E(
                "verify_translation_and_routing_access",
                "verifyTranslationAndRoutingAccess",
                str,
            ),
            E(
                "communication_barring_user_profile_access",
                "communicationBarringUserProfileAccess",
                str,
            ),
        )


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()`.

    Attributes:
        user_id (str): userId
        first_name (str): firstName *Optional*
        last_name (str): lastName *Optional*
        password (str): password *Optional*
        language (str): language *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "first_name",
        "last_name",
        "password",
        "language",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("first_name", "firstName", str),
            E("last_name", "lastName", str),
            E("password", "password", str),
            E("language", "language", str),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        use_group_level_ao_c_settings (bool): useGroupLevelAoCSettings *Optional*
        delay_between_notification_seconds (int): delayBetweenNotificationSeconds
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_group_level_ao_c_settings",
        "delay_between_notification_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_group_level_ao_c_settings", "useGroupLevelAoCSettings", bool),
            E(
                "delay_between_notification_seconds",
                "delayBetweenNotificationSeconds",
                int,
            ),
        )


class GroupAnnouncementRepositoryGetSettingsRequest(OCIRequest):
    """
    Return the disk space being used.


    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        application_server_set_name (str): applicationServerSetName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "application_server_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("application_server_set_name", "applicationServerSetName", str),
        )


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): serviceUserId
        unassign_phone_numbers (str): unassignPhoneNumbers *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "unassign_phone_numbers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("unassign_phone_numbers", "unassignPhoneNumbers", str),
        )


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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
        )


class GroupAutoAttendantGetInstanceRequest14(OCIRequest):
    """
    Request to get all the information of a Auto Attendant instance.

    The response is either `GroupAutoAttendantGetInstanceResponse()` or `ErrorResponse()`.

    Replaced By: `GroupAutoAttendantGetInstanceRequest16()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupAutoAttendantGetInstanceRequest16(OCIRequest):
    """
    Request to get all the information of a Auto Attendant instance.

    The response is either `GroupAutoAttendantGetInstanceResponse16()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupAutoAttendantGetInstanceRequest17(OCIRequest):
    """
    Request to get all the information of a Auto Attendant instance.

    The response is either `GroupAutoAttendantGetInstanceResponse17()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupAutoAttendantGetInstanceRequest17sp1(OCIRequest):
    """
    Request to get all the information of a Auto Attendant instance.

    The response is either `GroupAutoAttendantGetInstanceResponse17sp1()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupAutoAttendantGetInstanceRequest19(OCIRequest):
    """
    Request to get all the information of a Auto Attendant instance.

    The response is either `GroupAutoAttendantGetInstanceResponse19()` or
    `ErrorResponse()`. Replaced by: `GroupAutoAttendantGetInstanceRequest19sp1()` in AS
    data mode

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupAutoAttendantGetInstanceRequest19sp1(OCIRequest):
    """
    Request to get all the information of a Auto Attendant instance.

    The response is either `GroupAutoAttendantGetInstanceResponse19sp1()` or
    `ErrorResponse()`. Replaced by: `GroupAutoAttendantGetInstanceRequest20()` in AS data
    mode

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupAutoAttendantGetInstanceRequest20(OCIRequest):
    """
    Request to get all the information of a Auto Attendant instance.

    The response is either `GroupAutoAttendantGetInstanceResponse20()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        submenu_id (List[str]): submenuId
    """

    __slots__: List[str] = [
        "service_user_id",
        "submenu_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("submenu_id", "submenuId", str, is_required=True, is_array=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupAutoAttendantSubmenuGetRequest(OCIRequest):
    """
    Request to get an Auto Attendant submenu instance.

    The response is either `GroupAutoAttendantSubmenuGetResponse()` or `ErrorResponse()`.
    This request is only valid for Standard auto attendants.  Replaced by:
    `GroupAutoAttendantSubmenuGetRequest20()` in AS data mode

    Attributes:
        service_user_id (str): serviceUserId
        submenu_id (str): submenuId
    """

    __slots__: List[str] = [
        "service_user_id",
        "submenu_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("submenu_id", "submenuId", str, is_required=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): serviceUserId
        submenu_id (str): submenuId
    """

    __slots__: List[str] = [
        "service_user_id",
        "submenu_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("submenu_id", "submenuId", str, is_required=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): serviceUserId
        submenu_id (str): submenuId
    """

    __slots__: List[str] = [
        "service_user_id",
        "submenu_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("submenu_id", "submenuId", str, is_required=True),
        )


class GroupBroadWorksAnywhereDeleteInstanceRequest(OCIRequest):
    """
    Delete a BroadWorks Anywhere instance from a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
        )


class GroupBroadWorksAnywhereGetInstanceRequest(OCIRequest):
    """
    Request to get all the information of a BroadWorks Anywhere instance.

    The response is either `GroupBroadWorksAnywhereGetInstanceResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupBroadWorksAnywhereGetInstanceRequest17(OCIRequest):
    """
    Request to get all the information of a BroadWorks Anywhere instance.

    The response is either `GroupBroadWorksAnywhereGetInstanceResponse17()` or
    `ErrorResponse()`. Replaced by: `GroupBroadWorksAnywhereGetInstanceRequest19sp1()` in
    AS data mode

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupBroadWorksMobileManagerActivationRequest(OCIRequest):
    """
    Activates or Deactivates the BroadWorks Mobile Manager.

    The deactivationReason is required when isActive is set to false.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_active (bool): isActive
        deactivation_reason (str): deactivationReason *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_active",
        "deactivation_reason",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("is_active", "isActive", bool, is_required=True),
            E("deactivation_reason", "deactivationReason", str),
        )


class GroupBroadWorksMobileManagerAddHomeZoneRequest(OCIRequest):
    """
    Add a home zone to the BroadWorks Mobile Manager.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        home_zone_domain_name (str): homeZoneDomainName
        mobile_country_code (str): mobileCountryCode
        mobile_network_code (str): mobileNetworkCode
        location_area_code (str): locationAreaCode
        cell_identity (str): cellIdentity
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "home_zone_domain_name",
        "mobile_country_code",
        "mobile_network_code",
        "location_area_code",
        "cell_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("home_zone_domain_name", "homeZoneDomainName", str, is_required=True),
            E("mobile_country_code", "mobileCountryCode", str, is_required=True),
            E("mobile_network_code", "mobileNetworkCode", str, is_required=True),
            E("location_area_code", "locationAreaCode", str, is_required=True),
            E("cell_identity", "cellIdentity", str, is_required=True),
        )


class GroupBroadWorksMobileManagerAddRequest(OCIRequest):
    """
    Add the BroadWorks Mobile Manager.

    Only one BroadWorks Mobile Manager can be added per group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        information_file (str): informationFile
        certificate_file (str): certificateFile
        is_active (bool): isActive
        local_to_carrier (bool): localToCarrier
        max_tx_per_second_enabled (bool): maxTxPerSecondEnabled
        max_tx_per_second (int): maxTxPerSecond *Optional*
        tldn_enabled (bool): tldnEnabled
        generic_number_enabled (bool): genericNumberEnabled
        mobile_state_check_enabled (bool): mobileStateCheckEnabled
        location_based_services_enabled (bool): locationBasedServicesEnabled
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "information_file",
        "certificate_file",
        "is_active",
        "local_to_carrier",
        "max_tx_per_second_enabled",
        "max_tx_per_second",
        "tldn_enabled",
        "generic_number_enabled",
        "mobile_state_check_enabled",
        "location_based_services_enabled",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("information_file", "informationFile", str, is_required=True),
            E("certificate_file", "certificateFile", str, is_required=True),
            E("is_active", "isActive", bool, is_required=True),
            E("local_to_carrier", "localToCarrier", bool, is_required=True),
            E(
                "max_tx_per_second_enabled",
                "maxTxPerSecondEnabled",
                bool,
                is_required=True,
            ),
            E("max_tx_per_second", "maxTxPerSecond", int),
            E("tldn_enabled", "tldnEnabled", bool, is_required=True),
            E("generic_number_enabled", "genericNumberEnabled", bool, is_required=True),
            E(
                "mobile_state_check_enabled",
                "mobileStateCheckEnabled",
                bool,
                is_required=True,
            ),
            E(
                "location_based_services_enabled",
                "locationBasedServicesEnabled",
                bool,
                is_required=True,
            ),
        )


class GroupBroadWorksMobileManagerDeleteHomeZoneListRequest(OCIRequest):
    """
    Delete a list of home zones from the BroadWorks Mobile Manager.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        home_zone_id (List[str]): homeZoneId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "home_zone_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("home_zone_id", "homeZoneId", str, is_required=True, is_array=True),
        )


class GroupBroadWorksMobileManagerDeleteHomeZoneRequest(OCIRequest):
    """
    Delete a home zone from the BroadWorks Mobile Manager.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        home_zone_id (str): homeZoneId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "home_zone_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("home_zone_id", "homeZoneId", str, is_required=True),
        )


class GroupBroadWorksMobileManagerDeleteRequest(OCIRequest):
    """
    Delete the BroadWorks Mobile Manager.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupBroadWorksMobileManagerGetDomainListRequest(OCIRequest):
    """
    Get the list of domains of the BroadWorks Mobile Manager.

    The response is either `GroupBroadWorksMobileManagerGetDomainListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupBroadWorksMobileManagerGetHomeZoneListRequest(OCIRequest):
    """
    Get the list of home zones of the BroadWorks Mobile Manager.

    The response is either `GroupBroadWorksMobileManagerGetHomeZoneListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupBroadWorksMobileManagerGetHomeZoneRequest(OCIRequest):
    """
    Get a home zone from the BroadWorks Mobile Manager.

    The response is either `GroupBroadWorksMobileManagerGetHomeZoneResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        home_zone_id (str): homeZoneId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "home_zone_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("home_zone_id", "homeZoneId", str, is_required=True),
        )


class GroupBroadWorksMobileManagerGetRequest(OCIRequest):
    """
    Get the BroadWorks Mobile Manager.

    The response is either `GroupBroadWorksMobileManagerGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupBroadWorksMobileManagerModifyHomeZoneRequest(OCIRequest):
    """
    Modify an existing home zone in the BroadWorks Mobile Manager.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        home_zone_id (str): homeZoneId
        home_zone_domain_name (str): homeZoneDomainName *Optional*
        mobile_country_code (str): mobileCountryCode *Optional*
        mobile_network_code (str): mobileNetworkCode *Optional*
        location_area_code (str): locationAreaCode *Optional*
        cell_identity (str): cellIdentity *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "home_zone_id",
        "home_zone_domain_name",
        "mobile_country_code",
        "mobile_network_code",
        "location_area_code",
        "cell_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("home_zone_id", "homeZoneId", str, is_required=True),
            E("home_zone_domain_name", "homeZoneDomainName", str),
            E("mobile_country_code", "mobileCountryCode", str),
            E("mobile_network_code", "mobileNetworkCode", str),
            E("location_area_code", "locationAreaCode", str),
            E("cell_identity", "cellIdentity", str),
        )


class GroupBroadWorksMobileManagerModifyRequest(OCIRequest):
    """
    Modify the BroadWorks Mobile Manager settings.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        information_file (str): informationFile *Optional*
        certificate_file (str): certificateFile *Optional*
        local_to_carrier (bool): localToCarrier *Optional*
        max_tx_per_second_enabled (bool): maxTxPerSecondEnabled *Optional*
        max_tx_per_second (int): maxTxPerSecond *Optional*
        tldn_enabled (bool): tldnEnabled *Optional*
        generic_number_enabled (bool): genericNumberEnabled *Optional*
        mobile_state_check_enabled (bool): mobileStateCheckEnabled *Optional*
        location_based_services_enabled (bool): locationBasedServicesEnabled *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "information_file",
        "certificate_file",
        "local_to_carrier",
        "max_tx_per_second_enabled",
        "max_tx_per_second",
        "tldn_enabled",
        "generic_number_enabled",
        "mobile_state_check_enabled",
        "location_based_services_enabled",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("information_file", "informationFile", str),
            E("certificate_file", "certificateFile", str),
            E("local_to_carrier", "localToCarrier", bool),
            E("max_tx_per_second_enabled", "maxTxPerSecondEnabled", bool),
            E("max_tx_per_second", "maxTxPerSecond", int),
            E("tldn_enabled", "tldnEnabled", bool),
            E("generic_number_enabled", "genericNumberEnabled", bool),
            E("mobile_state_check_enabled", "mobileStateCheckEnabled", bool),
            E("location_based_services_enabled", "locationBasedServicesEnabled", bool),
        )


class GroupBroadWorksMobileManagerSendCarrierFilesRequest(OCIRequest):
    """
    Sends an email with the carrier information and certificate files.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        email_to (str): emailTo
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "email_to",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("email_to", "emailTo", str, is_required=True),
        )


class GroupBroadWorksMobilityGetRequest(OCIRequest):
    """
    Get the groups BroadWorks Mobility settings.

    The response is either a `GroupBroadWorksMobilityGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupBroadWorksMobilityGetRequest19sp1(OCIRequest):
    """
    Get the group's BroadWorks Mobility settings.

    The response is either a `GroupBroadWorksMobilityGetResponse19sp1()` or an
    `ErrorResponse()`. Replaced by: `GroupBroadWorksMobilityGetRequest22()` in AS data
    mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupBroadWorksMobilityGetRequest21sp1(OCIRequest):
    """
    Get the group's BroadWorks Mobility settings.

    The response is either a `GroupBroadWorksMobilityGetResponse21sp1()` or an
    `ErrorResponse()`. Replaced by `GroupBroadWorksMobilityGetRequest22V2()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupBroadWorksMobilityGetRequest22(OCIRequest):
    """
    Get the group's BroadWorks Mobility settings.

    The response is either a `GroupBroadWorksMobilityGetResponse22()` or an
    `ErrorResponse()`. Replaced by `GroupBroadWorksMobilityGetRequest22V2()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupBroadWorksMobilityGetRequest22V2(OCIRequest):
    """
    Get the group's BroadWorks Mobility settings.

    The response is either a `GroupBroadWorksMobilityGetResponse22V2()` or an
    `ErrorResponse()`. Replaced by `GroupBroadWorksMobilityGetRequest22V3()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupBroadWorksMobilityGetRequest22V3(OCIRequest):
    """
    Get the group's BroadWorks Mobility settings.

    The response is either a `GroupBroadWorksMobilityGetResponse22V3()` or an
    `ErrorResponse()`. Replaced by `GroupBroadWorksMobilityGetRequest22V4()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        mobile_subscriber_directory_number (List[str]): mobileSubscriberDirectoryNumber
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "mobile_subscriber_directory_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "mobile_subscriber_directory_number",
                "mobileSubscriberDirectoryNumber",
                str,
                is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        mobile_subscriber_directory_number (List[str]): mobileSubscriberDirectoryNumber
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "mobile_subscriber_directory_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "mobile_subscriber_directory_number",
                "mobileSubscriberDirectoryNumber",
                str,
                is_array=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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
        force (bool): force *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
        "force",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("force", "force", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        force (bool): force *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "force",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("force", "force", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        ordered_line_port_list (List[str]): orderedLinePortList
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "ordered_line_port_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E(
                "ordered_line_port_list",
                "orderedLinePortList",
                str,
                is_required=True,
                is_array=True,
            ),
        )


class GroupCPEConfigResetDeviceRequest(OCIRequest):
    """
    Reset a specific group device.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
        )


class GroupCallCapacityManagementAddInstanceRequest(OCIRequest):
    """
    Adds a Call Capacity Management group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        max_active_calls_allowed (int): maxActiveCallsAllowed
        max_incoming_active_calls_allowed (int): maxIncomingActiveCallsAllowed *Optional*
        max_outgoing_active_calls_allowed (int): maxOutgoingActiveCallsAllowed *Optional*
        become_default_group_for_new_users (bool): becomeDefaultGroupForNewUsers
        user_id (List[str]): userId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "max_active_calls_allowed",
        "max_incoming_active_calls_allowed",
        "max_outgoing_active_calls_allowed",
        "become_default_group_for_new_users",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "max_active_calls_allowed",
                "maxActiveCallsAllowed",
                int,
                is_required=True,
            ),
            E(
                "max_incoming_active_calls_allowed",
                "maxIncomingActiveCallsAllowed",
                int,
            ),
            E(
                "max_outgoing_active_calls_allowed",
                "maxOutgoingActiveCallsAllowed",
                int,
            ),
            E(
                "become_default_group_for_new_users",
                "becomeDefaultGroupForNewUsers",
                bool,
                is_required=True,
            ),
            E("user_id", "userId", str, is_array=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        user_id (List[str]): userId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("user_id", "userId", str, is_required=True, is_array=True),
        )


class GroupCallCapacityManagementDeleteInstanceListRequest(OCIRequest):
    """
    Deletes one or more Call Capacity Management groups.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (List[str]): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        user_id (List[str]): userId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("user_id", "userId", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallCapacityManagementGetInstanceRequest(OCIRequest):
    """
    Gets a Call Capacity Management group.

    The response is either `GroupCallCapacityManagementGetInstanceResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class GroupCallCenterAddSupervisorListRequest(OCIRequest):
    """
    Add supervisor(s) to a call center.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        supervisor_user_id (List[str]): supervisorUserId
    """

    __slots__: List[str] = [
        "service_user_id",
        "supervisor_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "supervisor_user_id",
                "supervisorUserId",
                str,
                is_required=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        profile_name (str): profileName
        agent_user_id (List[str]): agentUserId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "profile_name",
        "agent_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=True),
            E("agent_user_id", "agentUserId", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
        profile_name (str): profileName
        profile_description (str): profileDescription *Optional*
        threshold_current_call_state_idle_time_yellow (int):
            thresholdCurrentCallStateIdleTimeYellow *Optional*
        threshold_current_call_state_idle_time_red (int):
            thresholdCurrentCallStateIdleTimeRed *Optional*
        threshold_current_call_state_on_call_time_yellow (int):
            thresholdCurrentCallStateOnCallTimeYellow *Optional*
        threshold_current_call_state_on_call_time_red (int):
            thresholdCurrentCallStateOnCallTimeRed *Optional*
        threshold_current_agent_state_unavailable_time_yellow (int):
            thresholdCurrentAgentStateUnavailableTimeYellow *Optional*
        threshold_current_agent_state_unavailable_time_red (int):
            thresholdCurrentAgentStateUnavailableTimeRed *Optional*
        threshold_average_busy_in_time_yellow (int): thresholdAverageBusyInTimeYellow
            *Optional*
        threshold_average_busy_in_time_red (int): thresholdAverageBusyInTimeRed *Optional*
        threshold_average_busy_out_time_yellow (int): thresholdAverageBusyOutTimeYellow
            *Optional*
        threshold_average_busy_out_time_red (int): thresholdAverageBusyOutTimeRed
            *Optional*
        threshold_average_wrap_up_time_yellow (int): thresholdAverageWrapUpTimeYellow
            *Optional*
        threshold_average_wrap_up_time_red (int): thresholdAverageWrapUpTimeRed *Optional*
        enable_notification_email (bool): enableNotificationEmail
        notification_email_address (List[str]): notificationEmailAddress *Optional*
        agent_user_id (List[str]): agentUserId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "profile_name",
        "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",
        "enable_notification_email",
        "notification_email_address",
        "agent_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=True),
            E("profile_description", "profileDescription", str),
            E(
                "threshold_current_call_state_idle_time_yellow",
                "thresholdCurrentCallStateIdleTimeYellow",
                int,
            ),
            E(
                "threshold_current_call_state_idle_time_red",
                "thresholdCurrentCallStateIdleTimeRed",
                int,
            ),
            E(
                "threshold_current_call_state_on_call_time_yellow",
                "thresholdCurrentCallStateOnCallTimeYellow",
                int,
            ),
            E(
                "threshold_current_call_state_on_call_time_red",
                "thresholdCurrentCallStateOnCallTimeRed",
                int,
            ),
            E(
                "threshold_current_agent_state_unavailable_time_yellow",
                "thresholdCurrentAgentStateUnavailableTimeYellow",
                int,
            ),
            E(
                "threshold_current_agent_state_unavailable_time_red",
                "thresholdCurrentAgentStateUnavailableTimeRed",
                int,
            ),
            E(
                "threshold_average_busy_in_time_yellow",
                "thresholdAverageBusyInTimeYellow",
                int,
            ),
            E(
                "threshold_average_busy_in_time_red",
                "thresholdAverageBusyInTimeRed",
                int,
            ),
            E(
                "threshold_average_busy_out_time_yellow",
                "thresholdAverageBusyOutTimeYellow",
                int,
            ),
            E(
                "threshold_average_busy_out_time_red",
                "thresholdAverageBusyOutTimeRed",
                int,
            ),
            E(
                "threshold_average_wrap_up_time_yellow",
                "thresholdAverageWrapUpTimeYellow",
                int,
            ),
            E(
                "threshold_average_wrap_up_time_red",
                "thresholdAverageWrapUpTimeRed",
                int,
            ),
            E(
                "enable_notification_email",
                "enableNotificationEmail",
                bool,
                is_required=True,
            ),
            E(
                "notification_email_address",
                "notificationEmailAddress",
                str,
                is_array=True,
            ),
            E("agent_user_id", "agentUserId", str, is_array=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): serviceProviderId
        group_id (str): groupId
        profile_name (str): profileName
        agent_user_id (List[str]): agentUserId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "profile_name",
        "agent_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=True),
            E("agent_user_id", "agentUserId", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
        profile_name (str): profileName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        profile_name (str): profileName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=True),
        )


class GroupCallCenterAgentUnavailableCodeAddRequest(OCIRequest):
    """
    Add a Call Center Agent Unavailable Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_active (bool): isActive
        code (str): code
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_active",
        "code",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("is_active", "isActive", bool, is_required=True),
            E("code", "code", str, is_required=True),
            E("description", "description", str),
        )


class GroupCallCenterAgentUnavailableCodeDeleteRequest(OCIRequest):
    """
    Delete a Call Center Agent Unavailable Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        code (str): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code", "code", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallCenterAgentUnavailableCodeGetRequest(OCIRequest):
    """
    Get a Call Center Agent Unavailable Code.

    The response is either `GroupCallCenterAgentUnavailableCodeGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        code (str): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code", "code", str, is_required=True),
        )


class GroupCallCenterAgentUnavailableCodeModifyRequest(OCIRequest):
    """
    Modify a Call Center Agent Unavailable Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        code (str): code
        is_active (bool): isActive *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
        "is_active",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code", "code", str, is_required=True),
            E("is_active", "isActive", bool),
            E("description", "description", str),
        )


class GroupCallCenterAgentUnavailableCodeSettingsGetRequest(OCIRequest):
    """
    Request the group level data associated with Call Center Agents Unavailable Code
    Settings.

    The response is either an `GroupCallCenterAgentUnavailableCodeSettingsGetResponse()`
    or an `ErrorResponse()`. Replaced by
    `GroupCallCenterAgentUnavailableCodeSettingsGetRequest17sp4()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallCenterBouncedCallGetRequest(OCIRequest):
    """
    Get a call center's bounced call settings.

    The response is either a `GroupCallCenterBouncedCallGetResponse()` or an
    `ErrorResponse()`. Replaced by: `GroupCallCenterBouncedCallGetRequest17()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        is_active (bool): isActive *Optional*
        number_of_rings_before_bouncing_call (int): numberOfRingsBeforeBouncingCall
            *Optional*
        enable_transfer (bool): enableTransfer *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        bounce_call_when_agent_unavailable (bool): bounceCallWhenAgentUnavailable
            *Optional*
        alert_call_center_call_on_hold (bool): alertCallCenterCallOnHold *Optional*
        alert_call_center_call_on_hold_seconds (int): alertCallCenterCallOnHoldSeconds
            *Optional*
        bounce_call_center_call_on_hold (bool): bounceCallCenterCallOnHold *Optional*
        bounce_call_center_call_on_hold_seconds (int): bounceCallCenterCallOnHoldSeconds
            *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "is_active",
        "number_of_rings_before_bouncing_call",
        "enable_transfer",
        "transfer_phone_number",
        "bounce_call_when_agent_unavailable",
        "alert_call_center_call_on_hold",
        "alert_call_center_call_on_hold_seconds",
        "bounce_call_center_call_on_hold",
        "bounce_call_center_call_on_hold_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("is_active", "isActive", bool),
            E(
                "number_of_rings_before_bouncing_call",
                "numberOfRingsBeforeBouncingCall",
                int,
            ),
            E("enable_transfer", "enableTransfer", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E(
                "bounce_call_when_agent_unavailable",
                "bounceCallWhenAgentUnavailable",
                bool,
            ),
            E("alert_call_center_call_on_hold", "alertCallCenterCallOnHold", bool),
            E(
                "alert_call_center_call_on_hold_seconds",
                "alertCallCenterCallOnHoldSeconds",
                int,
            ),
            E("bounce_call_center_call_on_hold", "bounceCallCenterCallOnHold", bool),
            E(
                "bounce_call_center_call_on_hold_seconds",
                "bounceCallCenterCallOnHoldSeconds",
                int,
            ),
        )


class GroupCallCenterCallDispositionCodeAddRequest(OCIRequest):
    """
    Add a Call Center Call Disposition Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        code (str): code
        is_active (bool): isActive
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
        "is_active",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code", "code", str, is_required=True),
            E("is_active", "isActive", bool, is_required=True),
            E("description", "description", str),
        )


class GroupCallCenterCallDispositionCodeDeleteRequest(OCIRequest):
    """
    Delete a Call Center Call Disposition Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        code (str): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code", "code", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallCenterCallDispositionCodeGetRequest(OCIRequest):
    """
    Get a Call Center Call Disposition Code.

    The response is either `GroupCallCenterCallDispositionCodeGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        code (str): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code", "code", str, is_required=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): serviceProviderId
        group_id (str): groupId
        code (str): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code", "code", str, is_required=True),
        )


class GroupCallCenterCallDispositionCodeModifyRequest(OCIRequest):
    """
    Modify a Call Center Call Disposition Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        code (str): code
        is_active (bool): isActive *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
        "is_active",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code", "code", str, is_required=True),
            E("is_active", "isActive", bool),
            E("description", "description", str),
        )


class GroupCallCenterComfortMessageBypassGetRequest(OCIRequest):
    """
    Get a call center's comfort message bypass settings.

    The response is either a `GroupCallCenterComfortMessageBypassGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterComfortMessageBypassGetRequest17(OCIRequest):
    """
    Get a call center's comfort message bypass settings.

    The response is either a `GroupCallCenterComfortMessageBypassGetResponse17()` or an
    `ErrorResponse()`. Replaced by: `GroupCallCenterComfortMessageBypassGetRequest20()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
        )


class GroupCallCenterDeleteAgentListRequest(OCIRequest):
    """
    Delete agent(s) from a call center.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        agent_user_id (List[str]): agentUserId
    """

    __slots__: List[str] = [
        "service_user_id",
        "agent_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("agent_user_id", "agentUserId", str, is_required=True, is_array=True),
        )


class GroupCallCenterDeleteInstanceRequest(OCIRequest):
    """
    Delete a Call Center instance from a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterDeleteSupervisorListRequest(OCIRequest):
    """
    Delete supervisor(s) from a call center.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        supervisor_user_id (List[str]): supervisorUserId
    """

    __slots__: List[str] = [
        "service_user_id",
        "supervisor_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "supervisor_user_id",
                "supervisorUserId",
                str,
                is_required=True,
                is_array=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        distinctive_ringing_call_center_calls (bool): distinctiveRingingCallCenterCalls
            *Optional*
        distinctive_ringing_ring_pattern_for_call_center (str):
            distinctiveRingingRingPatternForCallCenter *Optional*
        distinctive_ringing_force_delivery_ring_pattern (str):
            distinctiveRingingForceDeliveryRingPattern *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "distinctive_ringing_call_center_calls",
        "distinctive_ringing_ring_pattern_for_call_center",
        "distinctive_ringing_force_delivery_ring_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "distinctive_ringing_call_center_calls",
                "distinctiveRingingCallCenterCalls",
                bool,
            ),
            E(
                "distinctive_ringing_ring_pattern_for_call_center",
                "distinctiveRingingRingPatternForCallCenter",
                str,
            ),
            E(
                "distinctive_ringing_force_delivery_ring_pattern",
                "distinctiveRingingForceDeliveryRingPattern",
                str,
            ),
        )


class GroupCallCenterEnhancedGetRequest(OCIRequest):
    """
    Request to get the Call Center Enhanced configuration data for a Call Center.

    The response is either `GroupCallCenterEnhancedGetResponse()` or `ErrorResponse()`.

    Replaced By: `GroupCallCenterGetInstanceResponse16()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterEnhancedModifyRequest(OCIRequest):
    """
    Modify the Call Center Enhanced configuration data for a Call Center.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `GroupCallCenterModifyInstanceRequest16()`

    Attributes:
        service_user_id (str): serviceUserId
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
        )


class GroupCallCenterEnhancedReportingBrandingGetRequest(OCIRequest):
    """
    Request to get the group branding information.

    The response is either `GroupCallCenterEnhancedReportingBrandingGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallCenterEnhancedReportingGetRequest(OCIRequest):
    """
    Request to get a group level call center enhanced reporting setting.

    The response is either a `GroupCallCenterEnhancedReportingGetResponse()` or an
    `ErrorResponse()`. Replaced by `GroupCallCenterEnhancedReportingGetRequest19()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallCenterEnhancedReportingModifyRequest(OCIRequest):
    """
    Request to modify group level call center enhanced reporting settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by
    `GroupCallCenterEnhancedReportingModifyRequest19()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        reporting_server (str): reportingServer *Optional*
        web_statistic_source (str): webStatisticSource *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "reporting_server",
        "web_statistic_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("reporting_server", "reportingServer", str),
            E("web_statistic_source", "webStatisticSource", str),
        )


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): serviceProviderId
        group_id (str): groupId
        reporting_server (str): reportingServer *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "reporting_server",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("reporting_server", "reportingServer", str),
        )


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): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class GroupCallCenterForcedForwardingGetRequest(OCIRequest):
    """
    Get a call center's forced forwarding settings.

    The response is either a `GroupCallCenterForcedForwardingGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterForcedForwardingGetRequest17(OCIRequest):
    """
    Get a call center's forced forwarding settings.

    The response is either a `GroupCallCenterForcedForwardingGetResponse17()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetAnnouncementRequest(OCIRequest):
    """
    Get a call center's announcement settings.

    The response is either a `GroupCallCenterGetAnnouncementResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetAnnouncementRequest14sp6(OCIRequest):
    """
    Get a call center's announcement settings.

    The response is either a `GroupCallCenterGetAnnouncementResponse14sp6()` or an
    `ErrorResponse()`.

    Replaced By: `GroupCallCenterGetAnnouncementRequest16()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetAnnouncementRequest16(OCIRequest):
    """
    Get a call center's announcement settings.

    The response is either a `GroupCallCenterGetAnnouncementResponse16()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetAnnouncementRequest17(OCIRequest):
    """
    Get a call center's announcement settings.

    The response is either a `GroupCallCenterGetAnnouncementResponse17()` or an
    `ErrorResponse()`. Replaced by `GroupCallCenterGetAnnouncementRequest17sp4()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetAnnouncementRequest17sp4(OCIRequest):
    """
    Get a call center's announcement settings.

    The response is either a `GroupCallCenterGetAnnouncementResponse17sp4()` or an
    `ErrorResponse()`. Replaced by: `GroupCallCenterGetAnnouncementRequest19()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetAnnouncementRequest19(OCIRequest):
    """
    Get a call center's announcement settings.

    The response is either a `GroupCallCenterGetAnnouncementResponse19()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetAnnouncementRequest20(OCIRequest):
    """
    Get a call center's announcement settings.

    The response is either a `GroupCallCenterGetAnnouncementResponse20()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
        )


class GroupCallCenterGetInstanceQueueStatusRequest(OCIRequest):
    """
    Get Call Center queue status.

    The response is either `GroupCallCenterGetInstanceQueueStatusResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetInstanceRequest14(OCIRequest):
    """
    Request to get all the information of a Call Center instance.

    The response is either `GroupCallCenterGetInstanceResponse14()` or `ErrorResponse()`.

    Replaced By: `GroupCallCenterGetInstanceRequest14sp3()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetInstanceRequest14sp3(OCIRequest):
    """
    Request to get all the information of a Call Center instance.

    The response is either `GroupCallCenterGetInstanceResponse14sp3()` or
    `ErrorResponse()`.

    Replaced By: `GroupCallCenterGetInstanceRequest14sp9()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetInstanceRequest14sp9(OCIRequest):
    """
    Request to get all the information of a Call Center instance.

    The response is either `GroupCallCenterGetInstanceResponse14sp9()` or
    `ErrorResponse()`.

    Replaced By: `GroupCallCenterGetInstanceRequest16()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetInstanceRequest16(OCIRequest):
    """
    Request to get all the information of a Call Center instance.

    The response is either `GroupCallCenterGetInstanceResponse16()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetInstanceRequest17(OCIRequest):
    """
    Request to get all the information of a Call Center instance.

    The response is either `GroupCallCenterGetInstanceResponse17()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetInstanceRequest17sp1(OCIRequest):
    """
    Request to get all the information of a Call Center instance.

    The response is either `GroupCallCenterGetInstanceResponse17sp1()` or
    `ErrorResponse()`. Replaced by: `GroupCallCenterGetInstanceRequest17sp3()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetInstanceRequest17sp3(OCIRequest):
    """
    Request to get all the information of a Call Center instance.

    The response is either `GroupCallCenterGetInstanceResponse17sp3()` or
    `ErrorResponse()`. Replaced by `GroupCallCenterGetInstanceRequest19()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetInstanceRequest19(OCIRequest):
    """
    Request to get all the information of a Call Center instance.

    The response is either `GroupCallCenterGetInstanceResponse19()` or `ErrorResponse()`.
    Replaced by: `GroupCallCenterGetInstanceRequest19sp1()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetInstanceRequest19sp1(OCIRequest):
    """
    Request to get all the information of a Call Center instance.

    The response is either `GroupCallCenterGetInstanceResponse19sp1()` or
    `ErrorResponse()`. Replaced by `GroupCallCenterGetInstanceRequest22()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetInstanceStatisticsReportingRequest(OCIRequest):
    """
    Request to get the call center statistics reporting settings.

    The response is either `GroupCallCenterGetInstanceStatisticsReportingResponse()` or
    `ErrorResponse()`.

    Replaced By: `GroupCallCenterGetInstanceStatisticsReportingRequest16()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetInstanceStatisticsReportingRequest16(OCIRequest):
    """
    Request to get the call center statistics reporting settings.

    The response is either `GroupCallCenterGetInstanceStatisticsReportingResponse16()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetInstanceStatisticsRequest13mp8(OCIRequest):
    """
    Get Call Center queue and agent statistics.

    The response is either `GroupCallCenterGetInstanceStatisticsResponse13mp8()` or
    `ErrorResponse()`.

    Replaced By: `GroupCallCenterGetInstanceStatisticsRequest14sp9()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterGetRequest(OCIRequest):
    """
    Request the Group level data associated with Call Center.

    The response is either a `GroupCallCenterGetResponse()` or an `ErrorResponse()`.
    Replaced by `GroupCallCenterGetRequest17sp4()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallCenterGetRequest17sp4(OCIRequest):
    """
    Request the Group level data associated with Call Center.

    The response is either a `GroupCallCenterGetResponse17sp4()` or an `ErrorResponse()`.
    Replaced by: `GroupCallCenterGetRequest23()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallCenterGetSupervisorListRequest(OCIRequest):
    """
    Get a list of supervisors assigned to a call center.

    Only users in the same group or enterprise as this call center can successfully
    execute this request.

    The response is either a `GroupCallCenterGetSupervisorListResponse()` or an
    `ErrorResponse()`.

    Replaced By: `GroupCallCenterSupervisorReportingGetRequest()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        call_center_type (str): callCenterType
    """

    __slots__: List[str] = [
        "service_user_id",
        "call_center_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("call_center_type", "callCenterType", str, is_required=True),
        )


class GroupCallCenterHolidayServiceGetRequest(OCIRequest):
    """
    Get a call center's holiday service settings.

    The response is either a `GroupCallCenterHolidayServiceGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterHolidayServiceGetRequest17(OCIRequest):
    """
    Get a call center's holiday service settings.

    The response is either a `GroupCallCenterHolidayServiceGetResponse17()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterHolidayServiceGetRequest17sp1(OCIRequest):
    """
    Get a call center's holiday service settings.

    The response is either a `GroupCallCenterHolidayServiceGetResponse17sp1()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        display_dnis_number (bool): displayDNISNumber *Optional*
        display_dnis_name (bool): displayDNISName *Optional*
        promote_calls_from_priority1to0 (bool): promoteCallsFromPriority1to0 *Optional*
        promote_calls_from_priority2to1 (bool): promoteCallsFromPriority2to1 *Optional*
        promote_calls_from_priority3to2 (bool): promoteCallsFromPriority3to2 *Optional*
        promote_calls_from_priority1to0_seconds (int): promoteCallsFromPriority1to0Seconds
            *Optional*
        promote_calls_from_priority2to1_seconds (int): promoteCallsFromPriority2to1Seconds
            *Optional*
        promote_calls_from_priority3to2_seconds (int): promoteCallsFromPriority3to2Seconds
            *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "display_dnis_number",
        "display_dnis_name",
        "promote_calls_from_priority1to0",
        "promote_calls_from_priority2to1",
        "promote_calls_from_priority3to2",
        "promote_calls_from_priority1to0_seconds",
        "promote_calls_from_priority2to1_seconds",
        "promote_calls_from_priority3to2_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("display_dnis_number", "displayDNISNumber", bool),
            E("display_dnis_name", "displayDNISName", bool),
            E("promote_calls_from_priority1to0", "promoteCallsFromPriority1to0", bool),
            E("promote_calls_from_priority2to1", "promoteCallsFromPriority2to1", bool),
            E("promote_calls_from_priority3to2", "promoteCallsFromPriority3to2", bool),
            E(
                "promote_calls_from_priority1to0_seconds",
                "promoteCallsFromPriority1to0Seconds",
                int,
            ),
            E(
                "promote_calls_from_priority2to1_seconds",
                "promoteCallsFromPriority2to1Seconds",
                int,
            ),
            E(
                "promote_calls_from_priority3to2_seconds",
                "promoteCallsFromPriority3to2Seconds",
                int,
            ),
        )


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): serviceUserId
        distinctive_ringing_call_center_calls (bool): distinctiveRingingCallCenterCalls
            *Optional*
        distinctive_ringing_ring_pattern_for_call_center (str):
            distinctiveRingingRingPatternForCallCenter *Optional*
        distinctive_ringing_force_delivery_ring_pattern (str):
            distinctiveRingingForceDeliveryRingPattern *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "distinctive_ringing_call_center_calls",
        "distinctive_ringing_ring_pattern_for_call_center",
        "distinctive_ringing_force_delivery_ring_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "distinctive_ringing_call_center_calls",
                "distinctiveRingingCallCenterCalls",
                bool,
            ),
            E(
                "distinctive_ringing_ring_pattern_for_call_center",
                "distinctiveRingingRingPatternForCallCenter",
                str,
            ),
            E(
                "distinctive_ringing_force_delivery_ring_pattern",
                "distinctiveRingingForceDeliveryRingPattern",
                str,
            ),
        )


class GroupCallCenterModifyInstanceStatisticsReportingRequest(OCIRequest):
    """
    Modify the Call Center statistics reporting frequency and destination.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `GroupCallCenterModifyInstanceStatisticsReportingRequest14sp9()`

    Attributes:
        service_user_id (str): serviceUserId
        clear_today_statistics (bool): clearTodayStatistics *Optional*
        generate_daily_report (bool): generateDailyReport *Optional*
        collection_period_minutes (int): collectionPeriodMinutes *Optional*
        reporting_email_address1 (str): reportingEmailAddress1 *Optional*
        reporting_email_address2 (str): reportingEmailAddress2 *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "clear_today_statistics",
        "generate_daily_report",
        "collection_period_minutes",
        "reporting_email_address1",
        "reporting_email_address2",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("clear_today_statistics", "clearTodayStatistics", bool),
            E("generate_daily_report", "generateDailyReport", bool),
            E("collection_period_minutes", "collectionPeriodMinutes", int),
            E("reporting_email_address1", "reportingEmailAddress1", str),
            E("reporting_email_address2", "reportingEmailAddress2", str),
        )


class GroupCallCenterModifyInstanceStatisticsReportingRequest14sp9(OCIRequest):
    """
    Modify the Call Center statistics reporting frequency and destination.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        generate_daily_report (bool): generateDailyReport *Optional*
        collection_period_minutes (int): collectionPeriodMinutes *Optional*
        reporting_email_address1 (str): reportingEmailAddress1 *Optional*
        reporting_email_address2 (str): reportingEmailAddress2 *Optional*
        statistics_source (str): statisticsSource *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "generate_daily_report",
        "collection_period_minutes",
        "reporting_email_address1",
        "reporting_email_address2",
        "statistics_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("generate_daily_report", "generateDailyReport", bool),
            E("collection_period_minutes", "collectionPeriodMinutes", int),
            E("reporting_email_address1", "reportingEmailAddress1", str),
            E("reporting_email_address2", "reportingEmailAddress2", str),
            E("statistics_source", "statisticsSource", str),
        )


class GroupCallCenterModifyInstanceStatisticsReportingRequest17sp1(OCIRequest):
    """
    Modify the Call Center statistics reporting frequency and destination.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        generate_daily_report (bool): generateDailyReport *Optional*
        collection_period_minutes (int): collectionPeriodMinutes *Optional*
        reporting_email_address1 (str): reportingEmailAddress1 *Optional*
        reporting_email_address2 (str): reportingEmailAddress2 *Optional*
        statistics_source (str): statisticsSource *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "generate_daily_report",
        "collection_period_minutes",
        "reporting_email_address1",
        "reporting_email_address2",
        "statistics_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("generate_daily_report", "generateDailyReport", bool),
            E("collection_period_minutes", "collectionPeriodMinutes", int),
            E("reporting_email_address1", "reportingEmailAddress1", str),
            E("reporting_email_address2", "reportingEmailAddress2", str),
            E("statistics_source", "statisticsSource", str),
        )


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): serviceProviderId
        group_id (str): groupId
        use_system_default_guard_timer (bool): useSystemDefaultGuardTimer *Optional*
        enable_guard_timer (bool): enableGuardTimer *Optional*
        guard_timer_seconds (int): guardTimerSeconds *Optional*
        use_system_default_unavailable_settings (bool):
            useSystemDefaultUnavailableSettings *Optional*
        force_agent_unavailable_on_dnd_activation (bool):
            forceAgentUnavailableOnDNDActivation *Optional*
        force_agent_unavailable_on_personal_calls (bool):
            forceAgentUnavailableOnPersonalCalls *Optional*
        force_agent_unavailable_on_bounced_call_limit (bool):
            forceAgentUnavailableOnBouncedCallLimit *Optional*
        number_consecutive_bounced_calls_to_force_agent_unavailable (int):
            numberConsecutiveBouncedCallsToForceAgentUnavailable *Optional*
        force_agent_unavailable_on_not_reachable (bool):
            forceAgentUnavailableOnNotReachable *Optional*
        wrap_up_destination (str): wrapUpDestination *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_system_default_guard_timer",
        "enable_guard_timer",
        "guard_timer_seconds",
        "use_system_default_unavailable_settings",
        "force_agent_unavailable_on_dnd_activation",
        "force_agent_unavailable_on_personal_calls",
        "force_agent_unavailable_on_bounced_call_limit",
        "number_consecutive_bounced_calls_to_force_agent_unavailable",
        "force_agent_unavailable_on_not_reachable",
        "wrap_up_destination",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_system_default_guard_timer", "useSystemDefaultGuardTimer", bool),
            E("enable_guard_timer", "enableGuardTimer", bool),
            E("guard_timer_seconds", "guardTimerSeconds", int),
            E(
                "use_system_default_unavailable_settings",
                "useSystemDefaultUnavailableSettings",
                bool,
            ),
            E(
                "force_agent_unavailable_on_dnd_activation",
                "forceAgentUnavailableOnDNDActivation",
                bool,
            ),
            E(
                "force_agent_unavailable_on_personal_calls",
                "forceAgentUnavailableOnPersonalCalls",
                bool,
            ),
            E(
                "force_agent_unavailable_on_bounced_call_limit",
                "forceAgentUnavailableOnBouncedCallLimit",
                bool,
            ),
            E(
                "number_consecutive_bounced_calls_to_force_agent_unavailable",
                "numberConsecutiveBouncedCallsToForceAgentUnavailable",
                int,
            ),
            E(
                "force_agent_unavailable_on_not_reachable",
                "forceAgentUnavailableOnNotReachable",
                bool,
            ),
            E("wrap_up_destination", "wrapUpDestination", str),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        enable_supervisor_coaching (bool): enableSupervisorCoaching *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enable_supervisor_coaching",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enable_supervisor_coaching", "enableSupervisorCoaching", bool),
        )


class GroupCallCenterNightServiceGetRequest(OCIRequest):
    """
    Get a call center's night service settings.

    The response is either a `GroupCallCenterNightServiceGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterNightServiceGetRequest17(OCIRequest):
    """
    Get a call center's night service settings.

    The response is either a `GroupCallCenterNightServiceGetResponse17()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterNightServiceGetRequest17sp1(OCIRequest):
    """
    Get a call center's night service settings.

    The response is either a `GroupCallCenterNightServiceGetResponse17sp1()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterOverflowGetRequest(OCIRequest):
    """
    Get a call center's overflow settings.

    The response is either a `GroupCallCenterOverflowGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterOverflowGetRequest17(OCIRequest):
    """
    Get a call center's overflow settings.

    The response is either a `GroupCallCenterOverflowGetResponse17()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterQueueCallDispositionCodeAddRequest(OCIRequest):
    """
    Add a Call Center Call Disposition Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        code (str): code
        is_active (bool): isActive
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "code",
        "is_active",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("code", "code", str, is_required=True),
            E("is_active", "isActive", bool, is_required=True),
            E("description", "description", str),
        )


class GroupCallCenterQueueCallDispositionCodeDeleteRequest(OCIRequest):
    """
    Delete a Call Center Call Disposition Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        code (str): code
    """

    __slots__: List[str] = [
        "service_user_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("code", "code", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterQueueCallDispositionCodeGetRequest(OCIRequest):
    """
    Get a Call Center Call Disposition Code.

    The response is either `GroupCallCenterQueueCallDispositionCodeGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        code (str): code
    """

    __slots__: List[str] = [
        "service_user_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("code", "code", str, is_required=True),
        )


class GroupCallCenterQueueCallDispositionCodeModifyRequest(OCIRequest):
    """
    Modify a Call Center Call Disposition Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        code (str): code
        is_active (bool): isActive *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "code",
        "is_active",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("code", "code", str, is_required=True),
            E("is_active", "isActive", bool),
            E("description", "description", str),
        )


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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        enable_queue_status_notification (bool): enableQueueStatusNotification *Optional*
        enable_queue_depth_threshold (bool): enableQueueDepthThreshold *Optional*
        enable_waiting_time_threshold (bool): enableWaitingTimeThreshold *Optional*
        number_of_calls_threshold (int): numberOfCallsThreshold *Optional*
        waiting_time_of_calls_threshold (int): waitingTimeOfCallsThreshold *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "enable_queue_status_notification",
        "enable_queue_depth_threshold",
        "enable_waiting_time_threshold",
        "number_of_calls_threshold",
        "waiting_time_of_calls_threshold",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "enable_queue_status_notification",
                "enableQueueStatusNotification",
                bool,
            ),
            E("enable_queue_depth_threshold", "enableQueueDepthThreshold", bool),
            E("enable_waiting_time_threshold", "enableWaitingTimeThreshold", bool),
            E("number_of_calls_threshold", "numberOfCallsThreshold", int),
            E("waiting_time_of_calls_threshold", "waitingTimeOfCallsThreshold", int),
        )


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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterStrandedCallGetRequest(OCIRequest):
    """
    Get a call center's stranded call settings.

    The response is either a `GroupCallCenterStrandedCallGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterStrandedCallGetRequest17(OCIRequest):
    """
    Get a call center's stranded call settings.

    The response is either a `GroupCallCenterStrandedCallGetResponse17()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterStrandedCallUnavailableGetRequest(OCIRequest):
    """
    Get a call center's stranded calls - unavailable settings.

    The response is either a `GroupCallCenterStrandedCallUnavailableGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallCenterSupervisorReportingGetRequest(OCIRequest):
    """
    Get a list of supervisors assigned to a call center.

    Only users in the same group or enterprise as this call center can successfully
    execute this request.

    The response is either a `GroupCallCenterSupervisorReportingGetResponse()` or an
    `ErrorResponse()`.

    Replaced By: `GroupCallCenterGetSupervisorListRequest16()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupCallParkAddInstanceRequest(OCIRequest):
    """
    Adds a Call Park group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        user_id (List[str]): userId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("user_id", "userId", str, is_array=True),
        )


class GroupCallParkAddInstanceRequest16sp2(OCIRequest):
    """
    Adds a Call Park group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        user_id (List[str]): userId *Optional*
        recall_alternate_user_id (str): recallAlternateUserId *Optional*
        recall_to (str): recallTo
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "user_id",
        "recall_alternate_user_id",
        "recall_to",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("user_id", "userId", str, is_array=True),
            E("recall_alternate_user_id", "recallAlternateUserId", str),
            E("recall_to", "recallTo", str, is_required=True),
        )


class GroupCallParkDeleteInstanceRequest(OCIRequest):
    """
    Deletes a Call Park group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallParkGetInstanceRequest(OCIRequest):
    """
    Gets a Call Park group.

    The response is either `GroupCallParkGetInstanceResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class GroupCallParkGetInstanceRequest16sp2(OCIRequest):
    """
    Gets a Call Park group.

    The response is either `GroupCallParkGetInstanceResponse16sp2()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class GroupCallParkGetRequest(OCIRequest):
    """
    Gets the Call Park Group settings.

    The response is either `GroupCallParkGetResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallParkGetRequest16sp2(OCIRequest):
    """
    Gets the Call Park Group settings.

    The response is either `GroupCallParkGetResponse16sp2()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallParkModifyRequest(OCIRequest):
    """
    Modifies the Group's Call Park settings.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        recall_timer_seconds (int): recallTimerSeconds *Optional*
        display_timer_seconds (int): displayTimerSeconds *Optional*
        enable_destination_announcement (bool): enableDestinationAnnouncement *Optional*
        recall_alternate_user_id (str): recallAlternateUserId *Optional*
        recall_ring_pattern (str): recallRingPattern *Optional*
        recall_to (str): recallTo *Optional*
        alternate_user_recall_timer_seconds (int): alternateUserRecallTimerSeconds
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "recall_timer_seconds",
        "display_timer_seconds",
        "enable_destination_announcement",
        "recall_alternate_user_id",
        "recall_ring_pattern",
        "recall_to",
        "alternate_user_recall_timer_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("recall_timer_seconds", "recallTimerSeconds", int),
            E("display_timer_seconds", "displayTimerSeconds", int),
            E("enable_destination_announcement", "enableDestinationAnnouncement", bool),
            E("recall_alternate_user_id", "recallAlternateUserId", str),
            E("recall_ring_pattern", "recallRingPattern", str),
            E("recall_to", "recallTo", str),
            E(
                "alternate_user_recall_timer_seconds",
                "alternateUserRecallTimerSeconds",
                int,
            ),
        )


class GroupCallPickupAddInstanceRequest(OCIRequest):
    """
    Adds a Call Pickup group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        user_id (List[str]): userId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("user_id", "userId", str, is_array=True),
        )


class GroupCallPickupDeleteInstanceRequest(OCIRequest):
    """
    Deletes a Call Pickup group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallPickupGetInstanceRequest(OCIRequest):
    """
    Gets a Call Pickup group.

    The response is either `GroupCallPickupGetInstanceResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest14(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse14()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest14sp1(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse14sp1()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest14sp4(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse14sp4()` or an
    `ErrorResponse()`.

    Replaced By : `GroupCallProcessingGetPolicyRequest15()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest14sp7(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse14sp7()` or an
    `ErrorResponse()`. The useGroupCLIDSetting attribute controls the CLID settings
    (clidPolicy, emergencyClidPolicy, allowAlternateNumbersForRedirectingIdentity,
    useGroupName) 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing)

    Replaced By: `GroupCallProcessingGetPolicyRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest15(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse15()` or an
    `ErrorResponse()`.

    Replaced By: `GroupCallProcessingGetPolicyRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest15sp2(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse15sp2()` or an
    `ErrorResponse()`. The useGroupCLIDSetting attribute controls the CLID settings
    (clidPolicy, emergencyClidPolicy, allowAlternateNumbersForRedirectingIdentity,
    useGroupName) 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing)

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest16(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse16()` or an
    `ErrorResponse()`. The useGroupCLIDSetting attribute controls the CLID settings
    (clidPolicy, emergencyClidPolicy, allowAlternateNumbersForRedirectingIdentity,
    useGroupName) 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing)

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest16sp2(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse16sp2()` or an
    `ErrorResponse()`. The useGroupCLIDSetting attribute controls the CLID settings
    (clidPolicy, emergencyClidPolicy, allowAlternateNumbersForRedirectingIdentity,
    useGroupName) 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing) The useGroupDCLIDSetting controls the Dialable
    Caller ID settings (enableDialableCallerID)

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest17(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse17()` or an
    `ErrorResponse()`. The useGroupCLIDSetting attribute controls the CLID settings
    (clidPolicy, emergencyClidPolicy, allowAlternateNumbersForRedirectingIdentity,
    useGroupName) 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing)

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest17sp3(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse17sp3()` or an
    `ErrorResponse()`. The useGroupCLIDSetting attribute controls the CLID settings
    (clidPolicy, emergencyClidPolicy, allowAlternateNumbersForRedirectingIdentity,
    useGroupName) 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing) The useGroupDCLIDSetting controls the Dialable
    Caller ID settings (enableDialableCallerID) The following elements are only used in AS
    data mode: useGroupDCLIDSetting enableDialableCallerID Replaced by
    `GroupCallProcessingGetPolicyRequest17sp4()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest17sp4(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse17sp4()` or an
    `ErrorResponse()`. The useGroupCLIDSetting attribute controls the CLID settings
    (clidPolicy, emergencyClidPolicy, allowAlternateNumbersForRedirectingIdentity,
    useGroupName, allowConfigurableCLIDForRedirectingIdentity) 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing) The following elements are only used in AS data
    mode: useGroupDCLIDSetting enableDialableCallerID Replaced by
    `GroupCallProcessingGetPolicyRequest18()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest18(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse18()` or an
    `ErrorResponse()`. The useGroupCLIDSetting attribute controls the CLID settings
    (clidPolicy, 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing) The following elements are only used in AS data
    mode: useGroupDCLIDSetting enableDialableCallerID allowDepartmentCLIDNameOverride

    Replaced By : `GroupCallProcessingGetPolicyRequest18sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest18sp1(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse18sp1()` 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing) Replaced by:
    `GroupCallProcessingGetPolicyRequest19sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest19sp1(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse19sp1()` 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing) Replaced by:
    `GroupCallProcessingGetPolicyRequest21sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest21sp1(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse21sp1()` 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing) Replaced by:
    `GroupCallProcessingGetPolicyRequest21sp2()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest21sp2(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse21sp2()` 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing, routeOverrideDomain, routeOverridePrefix) Replaced
    by: `GroupCallProcessingGetPolicyRequest22()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest22(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse22()` 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) Replaced by:
    `GroupCallProcessingGetPolicyRequest22V2()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingGetPolicyRequest22V2(OCIRequest):
    """
    Request the group level data associated with Call Processing Policy.

    The response is either a `GroupCallProcessingGetPolicyResponse22V2()` 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) Replaced by:
    `GroupCallProcessingGetPolicyRequest22V3()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallProcessingModifyPolicyRequest14(OCIRequest):
    """
    Modify the group level data associated with Call Processing Policy.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By : `GroupCallProcessingModifyPolicyRequest15()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        use_group_setting (bool): useGroupSetting *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        media_policy_selection (str): mediaPolicySelection *Optional*
        supported_media_set_name (str): supportedMediaSetName *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_external_calls_via_private_dialing_plan (bool):
            overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_group_setting",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "media_policy_selection",
        "supported_media_set_name",
        "network_usage_selection",
        "enforce_group_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_external_calls_via_private_dialing_plan",
        "enable_enterprise_extension_dialing",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_group_setting", "useGroupSetting", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E("media_policy_selection", "mediaPolicySelection", str),
            E("supported_media_set_name", "supportedMediaSetName", str),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_external_calls_via_private_dialing_plan",
                "overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan",
                bool,
            ),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
        )


class GroupCallProcessingModifyPolicyRequest14sp7(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,
    emergencyClidPolicy, allowAlternateNumbersForRedirectingIdentity, useGroupName) 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) The
    useGroupTranslationRoutingSetting attribute controls the routing and translation
    settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
    allowEnterpriseGroupCallTypingForPrivateDialingPlan,
    allowEnterpriseGroupCallTypingForPublicDialingPlan,
    overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan,
    enableEnterpriseExtensionDialing)

    Replaced By: `GroupCallProcessingModifyPolicyRequest15sp2()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        use_group_clid_setting (bool): useGroupCLIDSetting *Optional*
        use_group_media_setting (bool): useGroupMediaSetting *Optional*
        use_group_call_limits_setting (bool): useGroupCallLimitsSetting *Optional*
        use_group_translation_routing_setting (bool): useGroupTranslationRoutingSetting
            *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        media_policy_selection (str): mediaPolicySelection *Optional*
        supported_media_set_name (str): supportedMediaSetName *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_external_calls_via_private_dialing_plan (bool):
            overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_group_clid_setting",
        "use_group_media_setting",
        "use_group_call_limits_setting",
        "use_group_translation_routing_setting",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "media_policy_selection",
        "supported_media_set_name",
        "network_usage_selection",
        "enforce_group_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_external_calls_via_private_dialing_plan",
        "enable_enterprise_extension_dialing",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_group_clid_setting", "useGroupCLIDSetting", bool),
            E("use_group_media_setting", "useGroupMediaSetting", bool),
            E("use_group_call_limits_setting", "useGroupCallLimitsSetting", bool),
            E(
                "use_group_translation_routing_setting",
                "useGroupTranslationRoutingSetting",
                bool,
            ),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E("media_policy_selection", "mediaPolicySelection", str),
            E("supported_media_set_name", "supportedMediaSetName", str),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_external_calls_via_private_dialing_plan",
                "overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan",
                bool,
            ),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
        )


class GroupCallProcessingModifyPolicyRequest15(OCIRequest):
    """
    Modify the group level data associated with Call Processing Policy.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `GroupCallProcessingModifyPolicyRequest15sp2()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        use_group_setting (bool): useGroupSetting *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        media_policy_selection (str): mediaPolicySelection *Optional*
        supported_media_set_name (str): supportedMediaSetName *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_group_setting",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "media_policy_selection",
        "supported_media_set_name",
        "network_usage_selection",
        "enforce_group_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "enable_enterprise_extension_dialing",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_group_setting", "useGroupSetting", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E("media_policy_selection", "mediaPolicySelection", str),
            E("supported_media_set_name", "supportedMediaSetName", str),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
        )


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
    allowConfigurableCLIDForRedirectingIdentity enterpriseCallsCLIDPolicy
    groupCallsCLIDPolicy 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): serviceProviderId
        group_id (str): groupId
        use_group_clid_setting (bool): useGroupCLIDSetting *Optional*
        use_group_media_setting (bool): useGroupMediaSetting *Optional*
        use_group_call_limits_setting (bool): useGroupCallLimitsSetting *Optional*
        use_group_translation_routing_setting (bool): useGroupTranslationRoutingSetting
            *Optional*
        use_group_dclid_setting (bool): useGroupDCLIDSetting *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        media_policy_selection (str): mediaPolicySelection *Optional*
        supported_media_set_name (str): supportedMediaSetName *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        group_calls_clid_policy (str): groupCallsCLIDPolicy *Optional*
        use_group_phone_list_lookup_setting (bool): useGroupPhoneListLookupSetting
            *Optional*
        enable_phone_list_lookup (bool): enablePhoneListLookup *Optional*
        use_max_concurrent_terminating_alerting_requests (bool):
            useMaxConcurrentTerminatingAlertingRequests *Optional*
        max_concurrent_terminating_alerting_requests (int):
            maxConcurrentTerminatingAlertingRequests *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        route_override_domain (str): routeOverrideDomain *Optional*
        route_override_prefix (str): routeOverridePrefix *Optional*
        allow_mobile_dn_for_redirecting_identity (bool):
            allowMobileDNForRedirectingIdentity *Optional*
        enable_gateway_route_policy (bool): enableGatewayRoutePolicy *Optional*
        network_calls_gateway_route_identity (str): networkCallsGatewayRouteIdentity
            *Optional*
        network_url_calls_gateway_route_identity (str):
            networkURLCallsGatewayRouteIdentity *Optional*
        emergency_calls_gateway_route_identity (str): emergencyCallsGatewayRouteIdentity
            *Optional*
        repair_calls_gateway_route_identity (str): repairCallsGatewayRouteIdentity
            *Optional*
        call_typing_errors_gateway_route_identity (str):
            callTypingErrorsGatewayRouteIdentity *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_group_clid_setting",
        "use_group_media_setting",
        "use_group_call_limits_setting",
        "use_group_translation_routing_setting",
        "use_group_dclid_setting",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "media_policy_selection",
        "supported_media_set_name",
        "network_usage_selection",
        "enforce_group_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "enable_enterprise_extension_dialing",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "enable_dialable_caller_id",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "group_calls_clid_policy",
        "use_group_phone_list_lookup_setting",
        "enable_phone_list_lookup",
        "use_max_concurrent_terminating_alerting_requests",
        "max_concurrent_terminating_alerting_requests",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "route_override_domain",
        "route_override_prefix",
        "allow_mobile_dn_for_redirecting_identity",
        "enable_gateway_route_policy",
        "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",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_group_clid_setting", "useGroupCLIDSetting", bool),
            E("use_group_media_setting", "useGroupMediaSetting", bool),
            E("use_group_call_limits_setting", "useGroupCallLimitsSetting", bool),
            E(
                "use_group_translation_routing_setting",
                "useGroupTranslationRoutingSetting",
                bool,
            ),
            E("use_group_dclid_setting", "useGroupDCLIDSetting", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E("media_policy_selection", "mediaPolicySelection", str),
            E("supported_media_set_name", "supportedMediaSetName", str),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E("group_calls_clid_policy", "groupCallsCLIDPolicy", str),
            E(
                "use_group_phone_list_lookup_setting",
                "useGroupPhoneListLookupSetting",
                bool,
            ),
            E("enable_phone_list_lookup", "enablePhoneListLookup", bool),
            E(
                "use_max_concurrent_terminating_alerting_requests",
                "useMaxConcurrentTerminatingAlertingRequests",
                bool,
            ),
            E(
                "max_concurrent_terminating_alerting_requests",
                "maxConcurrentTerminatingAlertingRequests",
                int,
            ),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("route_override_domain", "routeOverrideDomain", str),
            E("route_override_prefix", "routeOverridePrefix", str),
            E(
                "allow_mobile_dn_for_redirecting_identity",
                "allowMobileDNForRedirectingIdentity",
                bool,
            ),
            E("enable_gateway_route_policy", "enableGatewayRoutePolicy", bool),
            E(
                "network_calls_gateway_route_identity",
                "networkCallsGatewayRouteIdentity",
                str,
            ),
            E(
                "network_url_calls_gateway_route_identity",
                "networkURLCallsGatewayRouteIdentity",
                str,
            ),
            E(
                "emergency_calls_gateway_route_identity",
                "emergencyCallsGatewayRouteIdentity",
                str,
            ),
            E(
                "repair_calls_gateway_route_identity",
                "repairCallsGatewayRouteIdentity",
                str,
            ),
            E(
                "call_typing_errors_gateway_route_identity",
                "callTypingErrorsGatewayRouteIdentity",
                str,
            ),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallRecordingModifyRequest(OCIRequest):
    """
    Modify the Call Recording platform assignment for a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str),
        )


class GroupCallingLineIdGetRequest(OCIRequest):
    """
    Get the calling line id settings for a group.

    The response is either a `GroupCallingLineIdGetResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCallingLineIdModifyRequest(OCIRequest):
    """
    Modify the calling line id settings for a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        use_group_number (bool): useGroupNumber *Optional*
        use_group_name (bool): useGroupName *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_group_number",
        "use_group_name",
        "calling_line_id_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_group_number", "useGroupNumber", bool),
            E("use_group_name", "useGroupName", bool),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
        )


class GroupCallingPlanAddDigitPatternRequest(OCIRequest):
    """
    Add a new calling plan digit string.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        digit_pattern (str): digitPattern
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("digit_pattern", "digitPattern", str, is_required=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): serviceProviderId
        group_id (str): groupId
        name (List[str]): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        digit_pattern (str): digitPattern *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("digit_pattern", "digitPattern", str),
        )


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): serviceUserId
        unassign_phone_numbers (str): unassignPhoneNumbers *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "unassign_phone_numbers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("unassign_phone_numbers", "unassignPhoneNumbers", str),
        )


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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        department_name (str): departmentName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department_name", "departmentName", str),
        )


class GroupCollaborateBridgeGetInstanceRequest(OCIRequest):
    """
    Request to get all the information of a collaborate bridge.

    The response is either `GroupCollaborateBridgeGetInstanceResponse()` or
    `ErrorResponse()`. Replaced by: `GroupCollaborateBridgeGetInstanceRequest20sp1()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        entry_name (List[str]): entryName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "entry_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("entry_name", "entryName", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
        entry_name (str): entryName
        new_entry_name (str): newEntryName *Optional*
        phone_number (str): phoneNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "entry_name",
        "new_entry_name",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("entry_name", "entryName", str, is_required=True),
            E("new_entry_name", "newEntryName", str),
            E("phone_number", "phoneNumber", str),
        )


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): serviceProviderId
        group_id (str): groupId
        code (List[str]): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code", "code", str, is_required=True, is_array=True),
        )


class GroupCommunicationBarringAuthorizationCodeGetListRequest(OCIRequest):
    """
    Get a list of Communication Barring Authorization Codes for a group.

    The response is either a `GroupCommunicationBarringAuthorizationCodeGetListResponse()`
    or an `ErorResponse()`. Replaced by:
    `GroupCommunicationBarringAuthorizationCodeGetListRequest21sp1()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        code (str): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code", "code", str, is_required=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): serviceProviderId
        group_id (str): groupId
        code (str): code
        description (str): description *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
        "description",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code", "code", str, is_required=True),
            E("description", "description", str),
            E("network_class_of_service", "networkClassOfService", str),
        )


class GroupCommunicationBarringGetRequest(OCIRequest):
    """
    Gets Communication Barring setting for a group.

    The response is either a `GroupCommunicationBarringGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        use_default_service_provider_profile (bool): useDefaultServiceProviderProfile
            *Optional*
        profile (str): profile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_default_service_provider_profile",
        "profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "use_default_service_provider_profile",
                "useDefaultServiceProviderProfile",
                bool,
            ),
            E("profile", "profile", str),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCustomContactDirectoryAddRequest(OCIRequest):
    """
    Adds a Custom Contact Directory to a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replace by:
    `GroupCustomContactDirectoryAddRequest17()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        user_id (List[str]): userId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("user_id", "userId", str, is_array=True),
        )


class GroupCustomContactDirectoryDeleteRequest(OCIRequest):
    """
    Deletes a Custom Contact Directory to a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCustomContactDirectoryGetRequest(OCIRequest):
    """
    Gets a Custom Contact Directory in a group.

    The response is either `GroupCustomContactDirectoryGetResponse()` or
    `ErrorResponse()`. Replace by: `GroupCustomContactDirectoryGetRequest17()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class GroupCustomRingbackGroupGetRequest(OCIRequest):
    """
    Get the group's custom ring back service settings.

    The response is either a `GroupCustomRingbackGroupGetResponse()` or an
    `ErrorResponse()`.

    Replaced By: `GroupCustomRingbackGroupGetRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupCustomRingbackGroupGetRequest16(OCIRequest):
    """
    Get the group's custom ring back service settings.

    The response is either a `GroupCustomRingbackGroupGetResponse16()` or an
    `ErrorResponse()`. Replaced by: `GroupCustomRingbackGroupGetRequest20()` in AS data
    mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupDeleteRequest(OCIRequest):
    """
    Delete a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupDepartmentAdminDeleteRequest(OCIRequest):
    """
    Delete a group department administrator.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class GroupDepartmentAdminGetRequest(OCIRequest):
    """
    Get a group department administrators profile.

    The response is either a `GroupDepartmentAdminGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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()`.

    Attributes:
        user_id (str): userId
        first_name (str): firstName *Optional*
        last_name (str): lastName *Optional*
        password (str): password *Optional*
        language (str): language *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "first_name",
        "last_name",
        "password",
        "language",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("first_name", "firstName", str),
            E("last_name", "lastName", str),
            E("password", "password", str),
            E("language", "language", str),
        )


class GroupDepartmentDeleteRequest(OCIRequest):
    """
    Delete a department from a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department_name (str): departmentName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department_name", "departmentName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        department_name (str): departmentName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department_name", "departmentName", str, is_required=True),
        )


class GroupDepartmentGetListRequest(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 `GroupDepartmentGetListResponse()` or `ErrorResponse()`.
    Replaced by: `GroupDepartmentGetListRequest18()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        include_enterprise_departments (bool): includeEnterpriseDepartments
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "include_enterprise_departments",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "include_enterprise_departments",
                "includeEnterpriseDepartments",
                bool,
                is_required=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): serviceProviderId
        group_id (str): groupId
        include_enterprise_departments (bool): includeEnterpriseDepartments
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "include_enterprise_departments",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "include_enterprise_departments",
                "includeEnterpriseDepartments",
                bool,
                is_required=True,
            ),
        )


class GroupDepartmentGetRequest(OCIRequest):
    """
    Request the attributes of a department.

    The response is either a `GroupDepartmentGetResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department_name (str): departmentName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department_name", "departmentName", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        use_group_settings (bool): useGroupSettings *Optional*
        allow_activation_code_request_by_user (bool): allowActivationCodeRequestByUser
            *Optional*
        send_activation_code_in_email (bool): sendActivationCodeInEmail *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_group_settings",
        "allow_activation_code_request_by_user",
        "send_activation_code_in_email",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_group_settings", "useGroupSettings", bool),
            E(
                "allow_activation_code_request_by_user",
                "allowActivationCodeRequestByUser",
                bool,
            ),
            E("send_activation_code_in_email", "sendActivationCodeInEmail", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
        count_only_reset_supported_device (bool): countOnlyResetSupportedDevice *Optional*
        allow_unmanaged_device_type (bool): allowUnmanagedDeviceType *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
        "count_only_reset_supported_device",
        "allow_unmanaged_device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E(
                "count_only_reset_supported_device",
                "countOnlyResetSupportedDevice",
                bool,
            ),
            E("allow_unmanaged_device_type", "allowUnmanagedDeviceType", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        event_id (List[int]): eventId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "event_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("event_id", "eventId", int, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
        tag_name (str): tagName
        tag_value (str): tagValue *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
        "tag_name",
        "tag_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True),
            E("tag_value", "tagValue", str),
        )


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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
        tag_name (List[str]): tagName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
        "tag_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
        tag_name (str): tagName
        tag_value (str): tagValue *Optional*
        tag_value_to_encrypt (str): tagValueToEncrypt *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
        "tag_name",
        "tag_value",
        "tag_value_to_encrypt",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True),
            E("tag_value", "tagValue", str),
            E("tag_value_to_encrypt", "tagValueToEncrypt", str),
        )


class GroupDeviceTypeFileGetListRequest(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 `GroupDeviceTypeFileGetListResponse()` or `ErrorResponse()`.

    Replaced By: `GroupDeviceTypeFileGetListRequest14sp8()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
        )


class GroupDeviceTypeFileGetListRequest14sp8(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 `GroupDeviceTypeFileGetListResponse14sp8()` or
    `ErrorResponse()`. Replaced by: `GroupDeviceTypeFileGetListRequest21()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
        )


class GroupDeviceTypeFileGetRequest(OCIRequest):
    """
    Request to get a group device type file.

    The response is either `GroupDeviceTypeFileGetResponse()` or `ErrorResponse()`.

    Replaced By: `GroupDeviceTypeFileGetRequest14sp8()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
        file_type (str): fileType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
        "file_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("file_type", "fileType", str, is_required=True),
        )


class GroupDeviceTypeFileGetRequest14sp8(OCIRequest):
    """
    Request to get a group device type file.

    The response is either `GroupDeviceTypeFileGetResponse14sp8()` or `ErrorResponse()`.
    Replaced by: `GroupDeviceTypeFileGetRequest16sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class GroupDeviceTypeFileGetRequest16sp1(OCIRequest):
    """
    Request to get a group device type file.

    The response is either `GroupDeviceTypeFileGetResponse16sp1()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
        tag_set_name (str): tagSetName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("tag_set_name", "tagSetName", str),
        )


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): serviceProviderId
        group_id (str): groupId
        access_code (str): accessCode
        include_code_for_network_translations_and_routing (bool):
            includeCodeForNetworkTranslationsAndRouting
        include_code_for_screening_services (bool): includeCodeForScreeningServices
        enable_secondary_dial_tone (bool): enableSecondaryDialTone
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "access_code",
        "include_code_for_network_translations_and_routing",
        "include_code_for_screening_services",
        "enable_secondary_dial_tone",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("access_code", "accessCode", str, is_required=True),
            E(
                "include_code_for_network_translations_and_routing",
                "includeCodeForNetworkTranslationsAndRouting",
                bool,
                is_required=True,
            ),
            E(
                "include_code_for_screening_services",
                "includeCodeForScreeningServices",
                bool,
                is_required=True,
            ),
            E(
                "enable_secondary_dial_tone",
                "enableSecondaryDialTone",
                bool,
                is_required=True,
            ),
            E("description", "description", str),
        )


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): serviceProviderId
        group_id (str): groupId
        access_code (str): accessCode
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("access_code", "accessCode", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        access_code (str): accessCode
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("access_code", "accessCode", str, is_required=True),
        )


class GroupDialPlanPolicyGetRequest(OCIRequest):
    """
    Request the Group level data associated with Dial Plan Policy.

    The response is either a `GroupDialPlanPolicyGetResponse()` or an `ErrorResponse()`.
    Replaced by: `GroupDialPlanPolicyGetRequest17()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupDialPlanPolicyGetRequest17(OCIRequest):
    """
    Request the Group level data associated with Dial Plan Policy.

    The response is either a `GroupDialPlanPolicyGetResponse17()` or an `ErrorResponse()`.
    Replaced by: `GroupDialPlanPolicyGetRequest22()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        access_code (str): accessCode
        include_code_for_network_translations_and_routing (bool):
            includeCodeForNetworkTranslationsAndRouting *Optional*
        include_code_for_screening_services (bool): includeCodeForScreeningServices
            *Optional*
        enable_secondary_dial_tone (bool): enableSecondaryDialTone *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "access_code",
        "include_code_for_network_translations_and_routing",
        "include_code_for_screening_services",
        "enable_secondary_dial_tone",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("access_code", "accessCode", str, is_required=True),
            E(
                "include_code_for_network_translations_and_routing",
                "includeCodeForNetworkTranslationsAndRouting",
                bool,
            ),
            E(
                "include_code_for_screening_services",
                "includeCodeForScreeningServices",
                bool,
            ),
            E("enable_secondary_dial_tone", "enableSecondaryDialTone", bool),
            E("description", "description", str),
        )


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): serviceProviderId
        group_id (str): groupId
        use_setting (str): useSetting *Optional*
        requires_access_code_for_public_calls (bool): requiresAccessCodeForPublicCalls
            *Optional*
        allow_e164_public_calls (bool): allowE164PublicCalls *Optional*
        prefer_e164_number_format_for_callback_services (bool):
            preferE164NumberFormatForCallbackServices *Optional*
        public_digit_map (str): publicDigitMap *Optional*
        private_digit_map (str): privateDigitMap *Optional*
        override_resolved_device_digit_map (bool): overrideResolvedDeviceDigitMap
            *Optional*
        device_digit_map (str): deviceDigitMap *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_setting",
        "requires_access_code_for_public_calls",
        "allow_e164_public_calls",
        "prefer_e164_number_format_for_callback_services",
        "public_digit_map",
        "private_digit_map",
        "override_resolved_device_digit_map",
        "device_digit_map",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_setting", "useSetting", str),
            E(
                "requires_access_code_for_public_calls",
                "requiresAccessCodeForPublicCalls",
                bool,
            ),
            E("allow_e164_public_calls", "allowE164PublicCalls", bool),
            E(
                "prefer_e164_number_format_for_callback_services",
                "preferE164NumberFormatForCallbackServices",
                bool,
            ),
            E("public_digit_map", "publicDigitMap", str),
            E("private_digit_map", "privateDigitMap", str),
            E(
                "override_resolved_device_digit_map",
                "overrideResolvedDeviceDigitMap",
                bool,
            ),
            E("device_digit_map", "deviceDigitMap", str),
        )


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): serviceProviderId
        group_id (str): groupId
        name (str): name
        description (str): description *Optional*
        prefix_digits (str): prefixDigits *Optional*
        match_call_type (List[str]): matchCallType *Optional*
        match_alternate_call_indicator (List[str]): matchAlternateCallIndicator *Optional*
        match_local_category (bool): matchLocalCategory
        match_national_category (bool): matchNationalCategory
        match_interlata_category (bool): matchInterlataCategory
        match_intralata_category (bool): matchIntralataCategory
        match_international_category (bool): matchInternationalCategory
        match_private_category (bool): matchPrivateCategory
        match_emergency_category (bool): matchEmergencyCategory
        match_other_category (bool): matchOtherCategory
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "description",
        "prefix_digits",
        "match_call_type",
        "match_alternate_call_indicator",
        "match_local_category",
        "match_national_category",
        "match_interlata_category",
        "match_intralata_category",
        "match_international_category",
        "match_private_category",
        "match_emergency_category",
        "match_other_category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("prefix_digits", "prefixDigits", str),
            E("match_call_type", "matchCallType", str, is_array=True),
            E(
                "match_alternate_call_indicator",
                "matchAlternateCallIndicator",
                str,
                is_array=True,
            ),
            E("match_local_category", "matchLocalCategory", bool, is_required=True),
            E(
                "match_national_category",
                "matchNationalCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_interlata_category",
                "matchInterlataCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_intralata_category",
                "matchIntralataCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_international_category",
                "matchInternationalCategory",
                bool,
                is_required=True,
            ),
            E("match_private_category", "matchPrivateCategory", bool, is_required=True),
            E(
                "match_emergency_category",
                "matchEmergencyCategory",
                bool,
                is_required=True,
            ),
            E("match_other_category", "matchOtherCategory", bool, is_required=True),
        )


class GroupDialableCallerIDCriteriaDeleteRequest(OCIRequest):
    """
    Delete a Dialable Caller ID Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        use_setting (str): useSetting *Optional*
        access_code (str): accessCode *Optional*
        public_digit_map (str): publicDigitMap *Optional*
        private_digit_map (str): privateDigitMap *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_setting",
        "access_code",
        "public_digit_map",
        "private_digit_map",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_setting", "useSetting", str),
            E("access_code", "accessCode", str),
            E("public_digit_map", "publicDigitMap", str),
            E("private_digit_map", "privateDigitMap", str),
        )


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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupDirectoryNumberHuntingGetRequest(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()`. Replaced by: `GroupDirectoryNumberHuntingGetRequest17sp1()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupDnGetStatusListRequest(OCIRequest):
    """
    Validates DNs given in the request The response is `GroupDnGetStatusListResponse()`.


    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        dn (List[str]): dn
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "dn",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("dn", "dn", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupDomainAssignListRequest(OCIRequest):
    """
    Assign a list of domains to a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        domain (List[str]): domain
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "domain",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("domain", "domain", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupDomainUnassignListRequest(OCIRequest):
    """
    Unassign a list of domains from a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        domain (List[str]): domain
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "domain",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("domain", "domain", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        send_emergency_call_notification_email (bool): sendEmergencyCallNotificationEmail
            *Optional*
        emergency_call_notify_email_address (str): emergencyCallNotifyEmailAddress
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "send_emergency_call_notification_email",
        "emergency_call_notify_email_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "send_emergency_call_notification_email",
                "sendEmergencyCallNotificationEmail",
                bool,
            ),
            E(
                "emergency_call_notify_email_address",
                "emergencyCallNotifyEmailAddress",
                str,
            ),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        home_zone_ip_address_list (List[OCI.homeZoneIpAddressList]): homeZoneIpAddressList
            *Optional*
        home_zone_ip_address_range_list (List[OCI.homeZoneIpAddressRangeList]):
            homeZoneIpAddressRangeList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "home_zone_ip_address_list",
        "home_zone_ip_address_range_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "home_zone_ip_address_list",
                "homeZoneIpAddressList",
                str,
                is_complex=True,
                is_array=True,
            ),  # unknown
            E(
                "home_zone_ip_address_range_list",
                "homeZoneIpAddressRangeList",
                str,
                is_complex=True,
                is_array=True,
            ),  # unknown
        )


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): serviceProviderId
        group_id (str): groupId
        is_active (bool): isActive *Optional*
        emergency_zones_prohibition (str): emergencyZonesProhibition *Optional*
        send_emergency_call_notify_email (bool): sendEmergencyCallNotifyEmail *Optional*
        emergency_call_notify_email_address (str): emergencyCallNotifyEmailAddress
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_active",
        "emergency_zones_prohibition",
        "send_emergency_call_notify_email",
        "emergency_call_notify_email_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("emergency_zones_prohibition", "emergencyZonesProhibition", str),
            E("send_emergency_call_notify_email", "sendEmergencyCallNotifyEmail", bool),
            E(
                "emergency_call_notify_email_address",
                "emergencyCallNotifyEmailAddress",
                str,
            ),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        name (str): name *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str),
        )


class GroupEnterpriseTrunkAddRequest(OCIRequest):
    """
    Request to add an enterprise trunk in a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `GroupEnterpriseTrunkAddRequest21()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        enterprise_trunk_name (str): enterpriseTrunkName
        maximum_reroute_attempts (int): maximumRerouteAttempts
        route_exhaustion_action (str): routeExhaustionAction
        route_exhaustion_forward_address (str): routeExhaustionForwardAddress *Optional*
        ordered_routing (OCI.orderedRouting): orderedRouting *Optional*
        priority_weighted_routing (OCI.priorityWeightedRouting): priorityWeightedRouting
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enterprise_trunk_name",
        "maximum_reroute_attempts",
        "route_exhaustion_action",
        "route_exhaustion_forward_address",
        "ordered_routing",
        "priority_weighted_routing",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E(
                "maximum_reroute_attempts",
                "maximumRerouteAttempts",
                int,
                is_required=True,
            ),
            E(
                "route_exhaustion_action",
                "routeExhaustionAction",
                str,
                is_required=True,
            ),
            E("route_exhaustion_forward_address", "routeExhaustionForwardAddress", str),
            E("ordered_routing", "orderedRouting", str, is_complex=True),  # unknown
            E(
                "priority_weighted_routing",
                "priorityWeightedRouting",
                str,
                is_complex=True,
            ),  # unknown
        )


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): serviceProviderId
        group_id (str): groupId
        enterprise_trunk_name (str): enterpriseTrunkName
        maximum_reroute_attempts (int): maximumRerouteAttempts
        route_exhaustion_action (str): routeExhaustionAction
        route_exhaustion_forward_address (str): routeExhaustionForwardAddress *Optional*
        ordered_routing (OCI.orderedRouting): orderedRouting *Optional*
        priority_weighted_routing (OCI.priorityWeightedRouting): priorityWeightedRouting
            *Optional*
        enable_capacity_management (bool): enableCapacityManagement
        max_active_calls (int): maxActiveCalls *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
            *Optional*
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
            *Optional*
        maximum_active_incoming_calls_allowed (int): maximumActiveIncomingCallsAllowed
            *Optional*
        maximum_active_outgoing_calls_allowed (int): maximumActiveOutgoingCallsAllowed
            *Optional*
        minimum_active_calls_reserved (int): minimumActiveCallsReserved *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enterprise_trunk_name",
        "maximum_reroute_attempts",
        "route_exhaustion_action",
        "route_exhaustion_forward_address",
        "ordered_routing",
        "priority_weighted_routing",
        "enable_capacity_management",
        "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",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E(
                "maximum_reroute_attempts",
                "maximumRerouteAttempts",
                int,
                is_required=True,
            ),
            E(
                "route_exhaustion_action",
                "routeExhaustionAction",
                str,
                is_required=True,
            ),
            E("route_exhaustion_forward_address", "routeExhaustionForwardAddress", str),
            E("ordered_routing", "orderedRouting", str, is_complex=True),  # unknown
            E(
                "priority_weighted_routing",
                "priorityWeightedRouting",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "enable_capacity_management",
                "enableCapacityManagement",
                bool,
                is_required=True,
            ),
            E("max_active_calls", "maxActiveCalls", int),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
            ),
            E(
                "maximum_active_incoming_calls_allowed",
                "maximumActiveIncomingCallsAllowed",
                int,
            ),
            E(
                "maximum_active_outgoing_calls_allowed",
                "maximumActiveOutgoingCallsAllowed",
                int,
            ),
            E("minimum_active_calls_reserved", "minimumActiveCallsReserved", int),
        )


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): serviceProviderId
        group_id (str): groupId
        enterprise_trunk_name (str): enterpriseTrunkName
        user_id (List[str]): userId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enterprise_trunk_name",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E("user_id", "userId", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
        enterprise_trunk_name (str): enterpriseTrunkName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enterprise_trunk_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        enterprise_trunk_name (str): enterpriseTrunkName
        user_id (List[str]): userId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enterprise_trunk_name",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E("user_id", "userId", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
        enterprise_trunk_name (str): enterpriseTrunkName
        user_id (List[str]): userId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enterprise_trunk_name",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E("user_id", "userId", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupEnterpriseTrunkGetRequest(OCIRequest):
    """
    Request to get an enterprise trunk The response is either an
    `GroupEnterpriseTrunkGetResponse()` or an `ErrorResponse()`.

    Replaced by: `GroupEnterpriseTrunkGetRequest21()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        enterprise_trunk_name (str): enterpriseTrunkName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enterprise_trunk_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
        )


class GroupEnterpriseTrunkGetRequest21(OCIRequest):
    """
    Request to get an enterprise trunk The response is either an
    `GroupEnterpriseTrunkGetResponse21()` or an `ErrorResponse()`.


    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        enterprise_trunk_name (str): enterpriseTrunkName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enterprise_trunk_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
        )


class GroupEnterpriseTrunkGetRequest22(OCIRequest):
    """
    Request to get an enterprise trunk The response is either an
    `GroupEnterpriseTrunkGetResponse22()` or an `ErrorResponse()`.


    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        enterprise_trunk_name (str): enterpriseTrunkName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enterprise_trunk_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        enterprise_trunk_name (str): enterpriseTrunkName
        new_enterprise_trunk_name (str): newEnterpriseTrunkName *Optional*
        maximum_reroute_attempts (int): maximumRerouteAttempts *Optional*
        route_exhaustion_action (str): routeExhaustionAction *Optional*
        route_exhaustion_forward_address (str): routeExhaustionForwardAddress *Optional*
        ordered_routing (OCI.orderedRouting): orderedRouting *Optional*
        priority_weighted_routing (OCI.priorityWeightedRouting): priorityWeightedRouting
            *Optional*
        enable_capacity_management (bool): enableCapacityManagement *Optional*
        max_active_calls (int): maxActiveCalls *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
            *Optional*
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
            *Optional*
        maximum_active_incoming_calls_allowed (int): maximumActiveIncomingCallsAllowed
            *Optional*
        maximum_active_outgoing_calls_allowed (int): maximumActiveOutgoingCallsAllowed
            *Optional*
        minimum_active_calls_reserved (int): minimumActiveCallsReserved *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enterprise_trunk_name",
        "new_enterprise_trunk_name",
        "maximum_reroute_attempts",
        "route_exhaustion_action",
        "route_exhaustion_forward_address",
        "ordered_routing",
        "priority_weighted_routing",
        "enable_capacity_management",
        "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",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E("new_enterprise_trunk_name", "newEnterpriseTrunkName", str),
            E("maximum_reroute_attempts", "maximumRerouteAttempts", int),
            E("route_exhaustion_action", "routeExhaustionAction", str),
            E("route_exhaustion_forward_address", "routeExhaustionForwardAddress", str),
            E("ordered_routing", "orderedRouting", str, is_complex=True),  # unknown
            E(
                "priority_weighted_routing",
                "priorityWeightedRouting",
                str,
                is_complex=True,
            ),  # unknown
            E("enable_capacity_management", "enableCapacityManagement", bool),
            E("max_active_calls", "maxActiveCalls", int),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
            ),
            E(
                "maximum_active_incoming_calls_allowed",
                "maximumActiveIncomingCallsAllowed",
                int,
            ),
            E(
                "maximum_active_outgoing_calls_allowed",
                "maximumActiveOutgoingCallsAllowed",
                int,
            ),
            E("minimum_active_calls_reserved", "minimumActiveCallsReserved", int),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        service_name (List[str]): serviceName *Optional*
        service_pack_name (List[str]): servicePackName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_name",
        "service_pack_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_name", "serviceName", str, is_array=True),
            E("service_pack_name", "servicePackName", str, is_array=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): serviceProviderId
        group_id (str): groupId
        service_name (List[str]): serviceName *Optional*
        service_pack_name (List[str]): servicePackName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_name",
        "service_pack_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_name", "serviceName", str, is_array=True),
            E("service_pack_name", "servicePackName", str, is_array=True),
        )


class GroupExtensionLengthGetRequest(OCIRequest):
    """
    Request the group's extension length.

    The response is either a `GroupExtensionLengthGetResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupExtensionLengthGetRequest17(OCIRequest):
    """
    Request the group's extension length.

    The response is either a `GroupExtensionLengthGetResponse17()` or an
    `ErrorResponse()`. Replaced by: `GroupExtensionLengthGetRequest22()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupExtensionLengthGetRequest22(OCIRequest):
    """
    Request the group's extension length.

    The response is either a `GroupExtensionLengthGetResponse22()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupExtensionLengthModifyRequest(OCIRequest):
    """
    Modify the group's extension length.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        extension_length (int): extensionLength *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "extension_length",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("extension_length", "extensionLength", int),
        )


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): serviceProviderId
        group_id (str): groupId
        min_extension_length (int): minExtensionLength *Optional*
        max_extension_length (int): maxExtensionLength *Optional*
        default_extension_length (int): defaultExtensionLength *Optional*
        use_enterprise_extension_length_setting (bool):
            useEnterpriseExtensionLengthSetting *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "min_extension_length",
        "max_extension_length",
        "default_extension_length",
        "use_enterprise_extension_length_setting",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("min_extension_length", "minExtensionLength", int),
            E("max_extension_length", "maxExtensionLength", int),
            E("default_extension_length", "defaultExtensionLength", int),
            E(
                "use_enterprise_extension_length_setting",
                "useEnterpriseExtensionLengthSetting",
                bool,
            ),
        )


class GroupFeatureAccessCodeGetListRequest(OCIRequest):
    """
    Get the list of feature access codes for a group.

    The response is either a `GroupFeatureAccessCodeGetListResponse()` or an
    `ErrorResponse()`. Replaced by: `GroupFeatureAccessCodeGetRequest()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupFeatureAccessCodeGetRequest(OCIRequest):
    """
    Get group FAC code level and the list of feature access codes for a group.

    The response is either a `GroupFeatureAccessCodeGetResponse()` or an
    `ErrorResponse()`. Returned Feature Access Codes may be group specific, or Service
    Provider Feature Access Codes, depending on FAC code level.  Replaced by:
    `GroupFeatureAccessCodeGetRequest21()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupFeatureAccessCodeGetRequest20(OCIRequest):
    """
    Get group FAC code level and the list of feature access codes for a group.

    The response is either a `GroupFeatureAccessCodeGetResponse20()` 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". Replaced by:
    `GroupFeatureAccessCodeGetRequest21()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupFileRepositoryDeviceUserAddRequest(OCIRequest):
    """
    Add a new group file repository user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        file_repository_name (str): fileRepositoryName
        user_name (str): userName
        password (str): password
        allow_put (bool): allowPut
        allow_delete (bool): allowDelete
        allow_get (bool): allowGet
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "file_repository_name",
        "user_name",
        "password",
        "allow_put",
        "allow_delete",
        "allow_get",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
            E("user_name", "userName", str, is_required=True),
            E("password", "password", str, is_required=True),
            E("allow_put", "allowPut", bool, is_required=True),
            E("allow_delete", "allowDelete", bool, is_required=True),
            E("allow_get", "allowGet", bool, is_required=True),
        )


class GroupFileRepositoryDeviceUserDeleteRequest(OCIRequest):
    """
    Delete a group file repository user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        file_repository_name (str): fileRepositoryName
        user_name (str): userName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "file_repository_name",
        "user_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
            E("user_name", "userName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        file_repository_name (str): fileRepositoryName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "file_repository_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
        )


class GroupFileRepositoryDeviceUserModifyRequest(OCIRequest):
    """
    Modify a group file repository user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        file_repository_name (str): fileRepositoryName
        user_name (str): userName
        password (str): password *Optional*
        allow_put (bool): allowPut *Optional*
        allow_delete (bool): allowDelete *Optional*
        allow_get (bool): allowGet *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "file_repository_name",
        "user_name",
        "password",
        "allow_put",
        "allow_delete",
        "allow_get",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
            E("user_name", "userName", str, is_required=True),
            E("password", "password", str),
            E("allow_put", "allowPut", bool),
            E("allow_delete", "allowDelete", bool),
            E("allow_get", "allowGet", bool),
        )


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): serviceUserId
        alerting_group_name (str): alertingGroupName
        alerting_group_description (str): alertingGroupDescription *Optional*
        use_diversion_inhibitor (bool): useDiversionInhibitor
        answer_confirmation_required (bool): answerConfirmationRequired
        number_of_rings (int): numberOfRings
        phone_number (str): phoneNumber *Optional*
        user_id (str): userId *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "alerting_group_name",
        "alerting_group_description",
        "use_diversion_inhibitor",
        "answer_confirmation_required",
        "number_of_rings",
        "phone_number",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("alerting_group_name", "alertingGroupName", str, is_required=True),
            E("alerting_group_description", "alertingGroupDescription", str),
            E(
                "use_diversion_inhibitor",
                "useDiversionInhibitor",
                bool,
                is_required=True,
            ),
            E(
                "answer_confirmation_required",
                "answerConfirmationRequired",
                bool,
                is_required=True,
            ),
            E("number_of_rings", "numberOfRings", int, is_required=True),
            E("phone_number", "phoneNumber", str),
            E("user_id", "userId", str),
        )


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): serviceUserId
        alerting_group_name (str): alertingGroupName
    """

    __slots__: List[str] = [
        "service_user_id",
        "alerting_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("alerting_group_name", "alertingGroupName", str, is_required=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): serviceUserId
        alerting_group_name (str): alertingGroupName
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "service_user_id",
        "alerting_group_name",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("alerting_group_name", "alertingGroupName", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        alerting_group_name (str): alertingGroupName
    """

    __slots__: List[str] = [
        "service_user_id",
        "alerting_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("alerting_group_name", "alertingGroupName", str, is_required=True),
        )


class GroupFindMeFollowMeGetAlertingGroupSelectiveCriteriaRequest(OCIRequest):
    """
    Request to get all the information of a specific Find-me/Follow-me alerting group
    selective criteria.

    The response is either `GroupFindMeFollowMeGetAlertingGroupResponse()` or
    `ErrorResponse()`. Replaced by:
    `GroupFindMeFollowMeGetAlertingGroupSelectiveCriteriaRequest21()`

    Attributes:
        service_user_id (str): serviceUserId
        alerting_group_name (str): alertingGroupName
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "service_user_id",
        "alerting_group_name",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("alerting_group_name", "alertingGroupName", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): serviceUserId
        alerting_group_name (str): alertingGroupName
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "service_user_id",
        "alerting_group_name",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("alerting_group_name", "alertingGroupName", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
        )


class GroupFindMeFollowMeGetInstanceRequest(OCIRequest):
    """
    Request to get all the information of a Find-me/Follow-me instance.

    The response is either `GroupFindMeFollowMeGetInstanceResponse()` or
    `ErrorResponse()`. Replaced by: `GroupFindMeFollowMeGetInstanceRequest19sp1()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        alerting_group_name (List[str]): alertingGroupName *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "alerting_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("alerting_group_name", "alertingGroupName", str, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupFlexibleSeatingHostGetInstanceRequest(OCIRequest):
    """
    Request to get all the information of a flexible seating host instance.

    The response is either `GroupFlexibleSeatingHostGetInstanceResponse()` or
    `ErrorResponse()`. Replaced by: `GroupFlexibleSeatingHostGetInstanceRequest22()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        enforce_association_limit (bool): enforceAssociationLimit *Optional*
        association_limit_hours (int): associationLimitHours *Optional*
        access_level (str): accessLevel *Optional*
        remove_guest_association (bool): removeGuestAssociation *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "enforce_association_limit",
        "association_limit_hours",
        "access_level",
        "remove_guest_association",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("enforce_association_limit", "enforceAssociationLimit", bool),
            E("association_limit_hours", "associationLimitHours", int),
            E("access_level", "accessLevel", str),
            E("remove_guest_association", "removeGuestAssociation", bool),
        )


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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        allow_emergency_calls (bool): allowEmergencyCalls *Optional*
        allow_calls_to_voice_portal (bool): allowCallsToVoicePortal *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "allow_emergency_calls",
        "allow_calls_to_voice_portal",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("allow_emergency_calls", "allowEmergencyCalls", bool),
            E("allow_calls_to_voice_portal", "allowCallsToVoicePortal", bool),
        )


class GroupGetAvailableLeafDeviceListRequest(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". It can be linked to only one tree
    device.  The list returned includes devices created at the system, service provider,
    and group levels.

    The response is either `GroupGetAvailableLeafDeviceListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class GroupGetRequest(OCIRequest):
    """
    Get the profile for a group.

    The response is either a `GroupGetResponse()` or an `ErrorResponse()`.

    Replaced By: `GroupGetRequest14sp7()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupGetRequest14sp7(OCIRequest):
    """
    Get the profile for a group.

    The response is either a `GroupGetResponse14sp7()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupGetRequest22(OCIRequest):
    """
    Get the profile for a group.

    The response is either a `GroupGetResponse22()` or an `ErrorResponse()`. Replaced by
    `GroupGetRequest22V2()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupGetRequest22V2(OCIRequest):
    """
    Get the profile for a group.

    The response is either a `GroupGetResponse22V2()` or an `ErrorResponse()`. Replaced
    by: `GroupGetRequest22V3()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupGetRequest22V3(OCIRequest):
    """
    Get the profile for a group.

    The response is either a `GroupGetResponse22V3()` or an `ErrorResponse()`. Replaced by
    `GroupGetRequest22V4()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupGetRequest22V4(OCIRequest):
    """
    Get the profile for a group.

    The response is either a `GroupGetResponse22V4()` or an `ErrorResponse()`. Replaced
    by: `GroupGetRequest22V5()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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 (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        group_external_id (str): groupExternalId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("group_external_id", "groupExternalId", str),
        )


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): serviceProviderId
        group_id (str): groupId
        service_name (str): serviceName *Optional*
        service_pack_name (str): servicePackName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_name",
        "service_pack_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_name", "serviceName", str),
            E("service_pack_name", "servicePackName", str),
        )


class GroupGroupNightForwardingGetRequest(OCIRequest):
    """
    Request to get the Group Night Forwarding group parameters.

    The response is either `GroupGroupNightForwardingGetResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupGroupPagingAddOriginatorListRequest(OCIRequest):
    """
    Add originator(s) to a paging group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        originator_user_id (List[str]): originatorUserId
    """

    __slots__: List[str] = [
        "service_user_id",
        "originator_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "originator_user_id",
                "originatorUserId",
                str,
                is_required=True,
                is_array=True,
            ),
        )


class GroupGroupPagingAddTargetListRequest(OCIRequest):
    """
    Add target(s) to a paging group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        target_user_id (List[str]): targetUserId
    """

    __slots__: List[str] = [
        "service_user_id",
        "target_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("target_user_id", "targetUserId", str, is_required=True, is_array=True),
        )


class GroupGroupPagingDeleteInstanceRequest(OCIRequest):
    """
    Delete a Group Paging instance from a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupGroupPagingDeleteOriginatorListRequest(OCIRequest):
    """
    Delete originator(s) from a paging group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        originator_user_id (List[str]): originatorUserId
    """

    __slots__: List[str] = [
        "service_user_id",
        "originator_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "originator_user_id",
                "originatorUserId",
                str,
                is_required=True,
                is_array=True,
            ),
        )


class GroupGroupPagingDeleteTargetListRequest(OCIRequest):
    """
    Delete target(s) from a paging group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        target_user_id (List[str]): targetUserId
    """

    __slots__: List[str] = [
        "service_user_id",
        "target_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("target_user_id", "targetUserId", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
        )


class GroupGroupPagingGetInstanceRequest(OCIRequest):
    """
    Replaced By `GroupGroupPagingGetInstanceRequest17sp3()` Request to get all the
    information of a Group Paging instance.

    The response is either `GroupGroupPagingGetInstanceResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupGroupPagingGetInstanceRequest17sp3(OCIRequest):
    """
    Request to get all the information of a Group Paging instance.

    The response is either `GroupGroupPagingGetInstanceResponse17sp3()` or
    `ErrorResponse()`. Replaced by: `GroupGroupPagingGetInstanceRequest19sp1()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupGroupPagingTargetsCapacityGetRequest(OCIRequest):
    """
    Request the maximum number of target users per paging group configured for a group.

    The response is either a `GroupGroupPagingTargetsCapacityGetResponse()` or an
    `ErrorResponse()`. Replaced by: `GroupGroupPagingTargetsCapacityGetRequest22()` in AS
    data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupGroupPagingTargetsCapacityModifyRequest(OCIRequest):
    """
    Modify the maximum number of target users per paging group configured for a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `GroupGroupPagingTargetsCapacityModifyRequest22()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        maximum_target_users (int): maximumTargetUsers *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "maximum_target_users",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("maximum_target_users", "maximumTargetUsers", int),
        )


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): serviceProviderId
        group_id (str): groupId
        maximum_target_users (int): maximumTargetUsers *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "maximum_target_users",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("maximum_target_users", "maximumTargetUsers", int),
        )


class GroupHolidayScheduleDeleteRequest(OCIRequest):
    """
    Delete a holiday schedule from a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        holiday_schedule_name (str): holidayScheduleName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "holiday_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("holiday_schedule_name", "holidayScheduleName", str, is_required=True),
        )


class GroupHolidayScheduleGetListRequest(OCIRequest):
    """
    Get a holiday schedule in a group.

    The response is either a `GroupHolidayScheduleGetListResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupHolidayScheduleGetRequest(OCIRequest):
    """
    Get a holiday schedule in a group.

    The response is either a `GroupHolidayScheduleGetResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        holiday_schedule_name (str): holidayScheduleName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "holiday_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("holiday_schedule_name", "holidayScheduleName", str, is_required=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): serviceUserId
        unassign_phone_numbers (str): unassignPhoneNumbers *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "unassign_phone_numbers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("unassign_phone_numbers", "unassignPhoneNumbers", str),
        )


class GroupHuntGroupDeleteInstanceRequest(OCIRequest):
    """
    Delete a Hunt Group instance from a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
        )


class GroupHuntGroupGetInstanceRequest14(OCIRequest):
    """
    Request to get all the information of a Hunt Group instance.

    The response is either `GroupHuntGroupGetInstanceResponse14()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupHuntGroupGetInstanceRequest17(OCIRequest):
    """
    Request to get all the information of a Hunt Group instance.

    The response is either `GroupHuntGroupGetInstanceResponse17()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupHuntGroupGetInstanceRequest17sp3(OCIRequest):
    """
    Request to get all the information of a Hunt Group instance.

    The response is either `GroupHuntGroupGetInstanceResponse17sp3()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupHuntGroupGetInstanceRequest17sp4(OCIRequest):
    """
    Request to get all the information of a Hunt Group instance.

    The response is either `GroupHuntGroupGetInstanceResponse17sp4()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupHuntGroupGetInstanceRequest19(OCIRequest):
    """
    Request to get all the information of a Hunt Group instance.

    The response is either `GroupHuntGroupGetInstanceResponse19()` or `ErrorResponse()`.
    Replaced by: `GroupHuntGroupGetInstanceRequest19sp1()` in AS data mode

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupHuntGroupGetInstanceRequest19sp1(OCIRequest):
    """
    Request to get all the information of a Hunt Group instance.

    The response is either `GroupHuntGroupGetInstanceResponse19sp1()` or
    `ErrorResponse()`. Replaced by: `GroupHuntGroupGetInstanceRequest20()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
        )


class GroupInstantGroupCallGetInstanceRequest14(OCIRequest):
    """
    Request to get all the information of an Instant Group Call service instance.

    The response is either `GroupInstantGroupCallGetInstanceResponse14()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupInstantGroupCallGetInstanceRequest17(OCIRequest):
    """
    Request to get all the information of an Instant Group Call service instance.

    The response is either `GroupInstantGroupCallGetInstanceResponse17()` or
    `ErrorResponse()`. Replaced by: `GroupInstantGroupCallGetInstanceRequest19sp1()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupIntegratedIMPGetRequest(OCIRequest):
    """
    Get the Integrated IMP service attributes for the group.

    The response is either `GroupIntegratedIMPGetResponse()` or `ErrorResponse()`.
    Replaced by: `GroupIntegratedIMPGetRequest21sp1()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupIntegratedIMPGetRequest21sp1(OCIRequest):
    """
    Get the Integrated IMP service attributes for the group.

    The response is either `GroupIntegratedIMPGetResponse21sp1()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupIntegratedIMPModifyRequest(OCIRequest):
    """
    Modify the Integrated IMP service attributes for the group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        use_service_provider_setting (bool): useServiceProviderSetting *Optional*
        service_domain (str): serviceDomain *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_service_provider_setting",
        "service_domain",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_service_provider_setting", "useServiceProviderSetting", bool),
            E("service_domain", "serviceDomain", str),
        )


class GroupInterceptGroupGetRequest(OCIRequest):
    """
    Get the group's intercept group service settings.

    The response is either a `GroupInterceptGroupGetResponse()` or an `ErrorResponse()`.

    Replaced By: `GroupInterceptGroupGetRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupInterceptGroupGetRequest16(OCIRequest):
    """
    Get the group's intercept group service settings.

    The response is either a `GroupInterceptGroupGetResponse16()` or an `ErrorResponse()`.

    Replaced By: `GroupInterceptGroupGetRequest16sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupInterceptGroupGetRequest16sp1(OCIRequest):
    """
    Get the group's intercept group service settings.

    The response is either a `GroupInterceptGroupGetResponse16sp1()` or an
    `ErrorResponse()`. Replaced by: `GroupInterceptGroupGetRequest21sp1()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupInventoryReportGetRequest(OCIRequest):
    """
    Request the group's inventory report.

    The response is either a `GroupInventoryReportGetResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        include_users (bool): includeUsers
        include_services (bool): includeServices
        include_dns (bool): includeDns
        include_access_devices (bool): includeAccessDevices
        include_departments (bool): includeDepartments
        report_delivery_email_address (str): reportDeliveryEmailAddress *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "include_users",
        "include_services",
        "include_dns",
        "include_access_devices",
        "include_departments",
        "report_delivery_email_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("include_users", "includeUsers", bool, is_required=True),
            E("include_services", "includeServices", bool, is_required=True),
            E("include_dns", "includeDns", bool, is_required=True),
            E("include_access_devices", "includeAccessDevices", bool, is_required=True),
            E("include_departments", "includeDepartments", bool, is_required=True),
            E("report_delivery_email_address", "reportDeliveryEmailAddress", str),
        )


class GroupMWIDeliveryToMobileEndpointCustomTemplateDeleteRequest(OCIRequest):
    """
    Delete a MWI Delivery to Mobile Endpoint Custom Template.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        language (str): language
        type (str): type
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "language",
        "type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("language", "language", str, is_required=True),
            E("type", "type", str, is_required=True),
        )


class GroupMWIDeliveryToMobileEndpointCustomTemplateGetRequest(OCIRequest):
    """
    Request a MWI Delivery to Mobile Endpoint Custom Template.

    The response is either a `GroupMWIDeliveryToMobileEndpointCustomTemplateGetResponse()`
    or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        language (str): language
        type (str): type
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "language",
        "type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("language", "language", str, is_required=True),
            E("type", "type", str, is_required=True),
        )


class GroupMWIDeliveryToMobileEndpointGetRequest(OCIRequest):
    """
    Requests group MWI custom notifications settings.

    The response is either a `GroupMWIDeliveryToMobileEndpointGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        department_name (str): departmentName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department_name", "departmentName", str),
        )


class GroupMeetMeConferencingGetInstanceRequest(OCIRequest):
    """
    Request to get all the information of a Meet-Me Conferencing bridge.

    The response is either `GroupMeetMeConferencingGetInstanceResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupMeetMeConferencingGetInstanceRequest17sp3(OCIRequest):
    """
    Request to get all the information of a Meet-Me Conferencing bridge.

    The response is either `GroupMeetMeConferencingGetInstanceResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupMeetMeConferencingGetInstanceRequest17sp4(OCIRequest):
    """
    Request to get all the information of a Meet-Me Conferencing bridge.

    The response is either `GroupMeetMeConferencingGetInstanceResponse17sp4()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupMeetMeConferencingGetInstanceRequest18(OCIRequest):
    """
    Request to get all the information of a Meet-Me Conferencing bridge.

    The response is either `GroupMeetMeConferencingGetInstanceResponse18()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupMeetMeConferencingGetInstanceRequest19(OCIRequest):
    """
    Request to get all the information of a Meet-Me Conferencing bridge.

    The response is either `GroupMeetMeConferencingGetInstanceResponse19()` or
    `ErrorResponse()`. Replaced by: `GroupMeetMeConferencingGetInstanceRequest19sp1()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
        )


class GroupNetworkClassOfServiceAssignListRequest(OCIRequest):
    """
    Assign a list of Network Classes of Service to a group.

    The Element defaultNetworkClassOfService is required only for the first assignment,
    for subsequent assignments it is optional.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        network_class_of_service (List[str]): networkClassOfService *Optional*
        default_network_class_of_service (str): defaultNetworkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "network_class_of_service",
        "default_network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("network_class_of_service", "networkClassOfService", str, is_array=True),
            E("default_network_class_of_service", "defaultNetworkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        network_class_of_service (str): networkClassOfService
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "network_class_of_service",
                "networkClassOfService",
                str,
                is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        network_class_of_service (str): networkClassOfService
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "network_class_of_service",
                "networkClassOfService",
                str,
                is_required=True,
            ),
        )


class GroupNetworkClassOfServiceUnassignListRequest(OCIRequest):
    """
    Unassign a list of Network Classes of Service from a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        network_class_of_service (List[str]): networkClassOfService *Optional*
        default_network_class_of_service (str): defaultNetworkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "network_class_of_service",
        "default_network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("network_class_of_service", "networkClassOfService", str, is_array=True),
            E("default_network_class_of_service", "defaultNetworkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        service_name (List[str]): serviceName *Optional*
        service_pack_name (List[str]): servicePackName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_name",
        "service_pack_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_name", "serviceName", str, is_array=True),
            E("service_pack_name", "servicePackName", str, is_array=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): serviceProviderId
        group_id (str): groupId
        service_name (List[str]): serviceName *Optional*
        service_pack_name (List[str]): servicePackName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_name",
        "service_pack_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_name", "serviceName", str, is_array=True),
            E("service_pack_name", "servicePackName", str, is_array=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): serviceProviderId
        group_id (str): groupId
        office_zone_name (List[str]): officeZoneName *Optional*
        default_office_zone_name (str): defaultOfficeZoneName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "office_zone_name",
        "default_office_zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("office_zone_name", "officeZoneName", str, is_array=True),
            E("default_office_zone_name", "defaultOfficeZoneName", str),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        office_zone_name (List[str]): officeZoneName *Optional*
        default_office_zone_name (str): defaultOfficeZoneName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "office_zone_name",
        "default_office_zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("office_zone_name", "officeZoneName", str, is_array=True),
            E("default_office_zone_name", "defaultOfficeZoneName", str),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        digit_pattern (str): digitPattern
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("digit_pattern", "digitPattern", str, is_required=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): serviceProviderId
        group_id (str): groupId
        name (List[str]): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        digit_pattern (str): digitPattern *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("digit_pattern", "digitPattern", str),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupPasswordRulesGetRequest(OCIRequest):
    """
    Requests the group's password rules setting that is applicable to users within the
    group.

    The response is either `GroupPasswordRulesGetResponse()` or `ErrorResponse()`.
    Replaced by: `GroupPasswordRulesGetRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupPasswordRulesGetRequest16(OCIRequest):
    """
    Requests the group's password rules setting that is applicable to users within the
    group.

    The response is either `GroupPasswordRulesGetResponse16()` or `ErrorResponse()`.
    Replaced by: `GroupPasswordRulesGetRequest22()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupPasswordRulesGetRequest22(OCIRequest):
    """
    Requests the group's password rules setting that is applicable to users within the
    group.

    The response is either `GroupPasswordRulesGetResponse22()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        disallow_user_id (bool): disallowUserId *Optional*
        disallow_old_password (bool): disallowOldPassword *Optional*
        disallow_reversed_old_password (bool): disallowReversedOldPassword *Optional*
        restrict_min_digits (bool): restrictMinDigits *Optional*
        min_digits (int): minDigits *Optional*
        restrict_min_upper_case_letters (bool): restrictMinUpperCaseLetters *Optional*
        min_upper_case_letters (int): minUpperCaseLetters *Optional*
        restrict_min_lower_case_letters (bool): restrictMinLowerCaseLetters *Optional*
        min_lower_case_letters (int): minLowerCaseLetters *Optional*
        restrict_min_non_alphanumeric_characters (bool):
            restrictMinNonAlphanumericCharacters *Optional*
        min_non_alphanumeric_characters (int): minNonAlphanumericCharacters *Optional*
        min_length (int): minLength *Optional*
        max_failed_login_attempts (int): maxFailedLoginAttempts *Optional*
        password_expires_days (int): passwordExpiresDays *Optional*
        send_login_disabled_notify_email (bool): sendLoginDisabledNotifyEmail *Optional*
        login_disabled_notify_email_address (str): loginDisabledNotifyEmailAddress
            *Optional*
        disallow_previous_passwords (bool): disallowPreviousPasswords *Optional*
        number_of_previous_passwords (int): numberOfPreviousPasswords *Optional*
        force_password_change_after_reset (bool): forcePasswordChangeAfterReset *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "disallow_user_id",
        "disallow_old_password",
        "disallow_reversed_old_password",
        "restrict_min_digits",
        "min_digits",
        "restrict_min_upper_case_letters",
        "min_upper_case_letters",
        "restrict_min_lower_case_letters",
        "min_lower_case_letters",
        "restrict_min_non_alphanumeric_characters",
        "min_non_alphanumeric_characters",
        "min_length",
        "max_failed_login_attempts",
        "password_expires_days",
        "send_login_disabled_notify_email",
        "login_disabled_notify_email_address",
        "disallow_previous_passwords",
        "number_of_previous_passwords",
        "force_password_change_after_reset",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("disallow_user_id", "disallowUserId", bool),
            E("disallow_old_password", "disallowOldPassword", bool),
            E("disallow_reversed_old_password", "disallowReversedOldPassword", bool),
            E("restrict_min_digits", "restrictMinDigits", bool),
            E("min_digits", "minDigits", int),
            E("restrict_min_upper_case_letters", "restrictMinUpperCaseLetters", bool),
            E("min_upper_case_letters", "minUpperCaseLetters", int),
            E("restrict_min_lower_case_letters", "restrictMinLowerCaseLetters", bool),
            E("min_lower_case_letters", "minLowerCaseLetters", int),
            E(
                "restrict_min_non_alphanumeric_characters",
                "restrictMinNonAlphanumericCharacters",
                bool,
            ),
            E("min_non_alphanumeric_characters", "minNonAlphanumericCharacters", int),
            E("min_length", "minLength", int),
            E("max_failed_login_attempts", "maxFailedLoginAttempts", int),
            E("password_expires_days", "passwordExpiresDays", int),
            E("send_login_disabled_notify_email", "sendLoginDisabledNotifyEmail", bool),
            E(
                "login_disabled_notify_email_address",
                "loginDisabledNotifyEmailAddress",
                str,
            ),
            E("disallow_previous_passwords", "disallowPreviousPasswords", bool),
            E("number_of_previous_passwords", "numberOfPreviousPasswords", int),
            E(
                "force_password_change_after_reset",
                "forcePasswordChangeAfterReset",
                bool,
            ),
        )


class GroupPolicyGetRequest(OCIRequest):
    """
    Requests the Group's policy settings.

    The response is either `GroupPolicyGetResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupPolicyGetRequest14sp1(OCIRequest):
    """
    Requests the Group's policy settings.

    The response is either `GroupPolicyGetResponse14sp1()` or `ErrorResponse()`.

    Replaced By : `GroupPolicyGetRequest14sp4()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupPolicyGetRequest14sp4(OCIRequest):
    """
    Requests the Group's policy settings.

    The response is either `GroupPolicyGetResponse14sp4()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupPolicyGetRequest17(OCIRequest):
    """
    Requests the Group's policy settings.

    The response is either `GroupPolicyGetResponse17()` or `ErrorResponse()`. Replaced by:
    `GroupPolicyGetRequest20()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupPolicyGetRequest20(OCIRequest):
    """
    Requests the Group's policy settings.

    The response is either `GroupPolicyGetResponse20()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupPolicyGetRequest22(OCIRequest):
    """
    Requests the Group's policy settings.

    The response is either `GroupPolicyGetResponse22()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupPolicyModifyRequest(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: userAutoAttendantNameDialingAccess Replaced
    by: `GroupPolicyModifyRequest22()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        calling_plan_access (str): callingPlanAccess *Optional*
        extension_access (str): extensionAccess *Optional*
        ldap_integration_access (str): ldapIntegrationAccess *Optional*
        voice_messaging_access (str): voiceMessagingAccess *Optional*
        department_admin_user_access (str): departmentAdminUserAccess *Optional*
        department_admin_trunk_group_access (str): departmentAdminTrunkGroupAccess
            *Optional*
        department_admin_phone_number_extension_access (str):
            departmentAdminPhoneNumberExtensionAccess *Optional*
        department_admin_calling_line_id_number_access (str):
            departmentAdminCallingLineIdNumberAccess *Optional*
        user_authentication_access (str): userAuthenticationAccess *Optional*
        user_group_directory_access (str): userGroupDirectoryAccess *Optional*
        user_profile_access (str): userProfileAccess *Optional*
        user_enhanced_call_log_access (str): userEnhancedCallLogAccess *Optional*
        user_auto_attendant_name_dialing_access (str): userAutoAttendantNameDialingAccess
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "calling_plan_access",
        "extension_access",
        "ldap_integration_access",
        "voice_messaging_access",
        "department_admin_user_access",
        "department_admin_trunk_group_access",
        "department_admin_phone_number_extension_access",
        "department_admin_calling_line_id_number_access",
        "user_authentication_access",
        "user_group_directory_access",
        "user_profile_access",
        "user_enhanced_call_log_access",
        "user_auto_attendant_name_dialing_access",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("calling_plan_access", "callingPlanAccess", str),
            E("extension_access", "extensionAccess", str),
            E("ldap_integration_access", "ldapIntegrationAccess", str),
            E("voice_messaging_access", "voiceMessagingAccess", str),
            E("department_admin_user_access", "departmentAdminUserAccess", str),
            E(
                "department_admin_trunk_group_access",
                "departmentAdminTrunkGroupAccess",
                str,
            ),
            E(
                "department_admin_phone_number_extension_access",
                "departmentAdminPhoneNumberExtensionAccess",
                str,
            ),
            E(
                "department_admin_calling_line_id_number_access",
                "departmentAdminCallingLineIdNumberAccess",
                str,
            ),
            E("user_authentication_access", "userAuthenticationAccess", str),
            E("user_group_directory_access", "userGroupDirectoryAccess", str),
            E("user_profile_access", "userProfileAccess", str),
            E("user_enhanced_call_log_access", "userEnhancedCallLogAccess", str),
            E(
                "user_auto_attendant_name_dialing_access",
                "userAutoAttendantNameDialingAccess",
                str,
            ),
        )


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: userAutoAttendantNameDialingAccess

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        calling_plan_access (str): callingPlanAccess *Optional*
        extension_access (str): extensionAccess *Optional*
        voice_messaging_access (str): voiceMessagingAccess *Optional*
        department_admin_user_access (str): departmentAdminUserAccess *Optional*
        department_admin_trunk_group_access (str): departmentAdminTrunkGroupAccess
            *Optional*
        department_admin_phone_number_extension_access (str):
            departmentAdminPhoneNumberExtensionAccess *Optional*
        department_admin_calling_line_id_number_access (str):
            departmentAdminCallingLineIdNumberAccess *Optional*
        user_authentication_access (str): userAuthenticationAccess *Optional*
        user_group_directory_access (str): userGroupDirectoryAccess *Optional*
        user_profile_access (str): userProfileAccess *Optional*
        user_enhanced_call_log_access (str): userEnhancedCallLogAccess *Optional*
        user_auto_attendant_name_dialing_access (str): userAutoAttendantNameDialingAccess
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "calling_plan_access",
        "extension_access",
        "voice_messaging_access",
        "department_admin_user_access",
        "department_admin_trunk_group_access",
        "department_admin_phone_number_extension_access",
        "department_admin_calling_line_id_number_access",
        "user_authentication_access",
        "user_group_directory_access",
        "user_profile_access",
        "user_enhanced_call_log_access",
        "user_auto_attendant_name_dialing_access",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("calling_plan_access", "callingPlanAccess", str),
            E("extension_access", "extensionAccess", str),
            E("voice_messaging_access", "voiceMessagingAccess", str),
            E("department_admin_user_access", "departmentAdminUserAccess", str),
            E(
                "department_admin_trunk_group_access",
                "departmentAdminTrunkGroupAccess",
                str,
            ),
            E(
                "department_admin_phone_number_extension_access",
                "departmentAdminPhoneNumberExtensionAccess",
                str,
            ),
            E(
                "department_admin_calling_line_id_number_access",
                "departmentAdminCallingLineIdNumberAccess",
                str,
            ),
            E("user_authentication_access", "userAuthenticationAccess", str),
            E("user_group_directory_access", "userGroupDirectoryAccess", str),
            E("user_profile_access", "userProfileAccess", str),
            E("user_enhanced_call_log_access", "userEnhancedCallLogAccess", str),
            E(
                "user_auto_attendant_name_dialing_access",
                "userAutoAttendantNameDialingAccess",
                str,
            ),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        include_group_common_phone_list_in_directory (bool):
            includeGroupCommonPhoneListInDirectory *Optional*
        include_group_custom_contact_directory_in_directory (bool):
            includeGroupCustomContactDirectoryInDirectory *Optional*
        group_custom_contact_directory (str): groupCustomContactDirectory *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "include_group_common_phone_list_in_directory",
        "include_group_custom_contact_directory_in_directory",
        "group_custom_contact_directory",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "include_group_common_phone_list_in_directory",
                "includeGroupCommonPhoneListInDirectory",
                bool,
            ),
            E(
                "include_group_custom_contact_directory_in_directory",
                "includeGroupCustomContactDirectoryInDirectory",
                bool,
            ),
            E("group_custom_contact_directory", "groupCustomContactDirectory", str),
        )


class GroupPortalPasscodeRulesGetRequest(OCIRequest):
    """
    Requests the group's passcode rules setting.

    The response is either `GroupPortalPasscodeRulesGetResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupPortalPasscodeRulesGetRequest19(OCIRequest):
    """
    Requests the group's passcode rules setting.

    The response is either `GroupPortalPasscodeRulesGetResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        use_rule_level (str): useRuleLevel *Optional*
        disallow_repeated_digits (bool): disallowRepeatedDigits *Optional*
        number_of_repeated_digits (int): numberOfRepeatedDigits *Optional*
        disallow_repeated_patterns (bool): disallowRepeatedPatterns *Optional*
        disallow_contiguous_sequences (bool): disallowContiguousSequences *Optional*
        number_of_ascending_digits (int): numberOfAscendingDigits *Optional*
        number_of_descending_digits (int): numberOfDescendingDigits *Optional*
        disallow_user_number (bool): disallowUserNumber *Optional*
        disallow_reversed_user_number (bool): disallowReversedUserNumber *Optional*
        disallow_old_passcode (bool): disallowOldPasscode *Optional*
        number_of_previous_passcodes (int): numberOfPreviousPasscodes *Optional*
        disallow_reversed_old_passcode (bool): disallowReversedOldPasscode *Optional*
        min_code_length (int): minCodeLength *Optional*
        max_code_length (int): maxCodeLength *Optional*
        disable_login_after_max_failed_login_attempts (bool):
            disableLoginAfterMaxFailedLoginAttempts *Optional*
        max_failed_login_attempts (int): maxFailedLoginAttempts *Optional*
        expire_password (bool): expirePassword *Optional*
        passcode_expires_days (int): passcodeExpiresDays *Optional*
        send_login_disabled_notify_email (bool): sendLoginDisabledNotifyEmail *Optional*
        login_disabled_notify_email_address (str): loginDisabledNotifyEmailAddress
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_rule_level",
        "disallow_repeated_digits",
        "number_of_repeated_digits",
        "disallow_repeated_patterns",
        "disallow_contiguous_sequences",
        "number_of_ascending_digits",
        "number_of_descending_digits",
        "disallow_user_number",
        "disallow_reversed_user_number",
        "disallow_old_passcode",
        "number_of_previous_passcodes",
        "disallow_reversed_old_passcode",
        "min_code_length",
        "max_code_length",
        "disable_login_after_max_failed_login_attempts",
        "max_failed_login_attempts",
        "expire_password",
        "passcode_expires_days",
        "send_login_disabled_notify_email",
        "login_disabled_notify_email_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_rule_level", "useRuleLevel", str),
            E("disallow_repeated_digits", "disallowRepeatedDigits", bool),
            E("number_of_repeated_digits", "numberOfRepeatedDigits", int),
            E("disallow_repeated_patterns", "disallowRepeatedPatterns", bool),
            E("disallow_contiguous_sequences", "disallowContiguousSequences", bool),
            E("number_of_ascending_digits", "numberOfAscendingDigits", int),
            E("number_of_descending_digits", "numberOfDescendingDigits", int),
            E("disallow_user_number", "disallowUserNumber", bool),
            E("disallow_reversed_user_number", "disallowReversedUserNumber", bool),
            E("disallow_old_passcode", "disallowOldPasscode", bool),
            E("number_of_previous_passcodes", "numberOfPreviousPasscodes", int),
            E("disallow_reversed_old_passcode", "disallowReversedOldPasscode", bool),
            E("min_code_length", "minCodeLength", int),
            E("max_code_length", "maxCodeLength", int),
            E(
                "disable_login_after_max_failed_login_attempts",
                "disableLoginAfterMaxFailedLoginAttempts",
                bool,
            ),
            E("max_failed_login_attempts", "maxFailedLoginAttempts", int),
            E("expire_password", "expirePassword", bool),
            E("passcode_expires_days", "passcodeExpiresDays", int),
            E("send_login_disabled_notify_email", "sendLoginDisabledNotifyEmail", bool),
            E(
                "login_disabled_notify_email_address",
                "loginDisabledNotifyEmailAddress",
                str,
            ),
        )


class GroupPreAlertingAnnouncementGetRequest(OCIRequest):
    """
    Get the group PreAlertingservice settings.

    The response is either a `GroupPreAlertingAnnouncementGetResponse()` or an
    `ErrorResponse()`. Replaced by: `GroupPreAlertingAnnouncementGetRequest20()` in AS
    data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupPreAlertingAnnouncementGetRequest20(OCIRequest):
    """
    Get the group’s PreAlertingservice settings.

    The response is either a `GroupPreAlertingAnnouncementGetResponse20()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        number_prefix (List[str]): numberPrefix *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "number_prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("number_prefix", "numberPrefix", str, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        number_prefix (List[str]): numberPrefix *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "number_prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("number_prefix", "numberPrefix", str, is_array=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): serviceProviderId
        group_id (str): groupId
        number_range_start (List[str]): numberRangeStart *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "number_range_start",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("number_range_start", "numberRangeStart", str, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        number_range_start (List[str]): numberRangeStart *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "number_range_start",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("number_range_start", "numberRangeStart", str, is_array=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        is_active (bool): isActive *Optional*
        number_of_rings_before_bouncing_call (int): numberOfRingsBeforeBouncingCall
            *Optional*
        enable_transfer (bool): enableTransfer *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        bounce_call_when_agent_unavailable (bool): bounceCallWhenAgentUnavailable
            *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "is_active",
        "number_of_rings_before_bouncing_call",
        "enable_transfer",
        "transfer_phone_number",
        "bounce_call_when_agent_unavailable",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("is_active", "isActive", bool),
            E(
                "number_of_rings_before_bouncing_call",
                "numberOfRingsBeforeBouncingCall",
                int,
            ),
            E("enable_transfer", "enableTransfer", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E(
                "bounce_call_when_agent_unavailable",
                "bounceCallWhenAgentUnavailable",
                bool,
            ),
        )


class GroupRoutePointDeleteInstanceRequest(OCIRequest):
    """
    Delete a Route Point instance from a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        enable_distinctive_ringing (bool): enableDistinctiveRinging *Optional*
        distinctive_ringing_ring_pattern (str): distinctiveRingingRingPattern *Optional*
        distinctive_ringing_force_delivery_ring_pattern (str):
            distinctiveRingingForceDeliveryRingPattern *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "enable_distinctive_ringing",
        "distinctive_ringing_ring_pattern",
        "distinctive_ringing_force_delivery_ring_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("enable_distinctive_ringing", "enableDistinctiveRinging", bool),
            E("distinctive_ringing_ring_pattern", "distinctiveRingingRingPattern", str),
            E(
                "distinctive_ringing_force_delivery_ring_pattern",
                "distinctiveRingingForceDeliveryRingPattern",
                str,
            ),
        )


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): serviceProviderId
        group_id (str): groupId
        route_point_external_system (List[str]): routePointExternalSystem *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "route_point_external_system",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "route_point_external_system",
                "routePointExternalSystem",
                str,
                is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        route_point_external_system (List[str]): routePointExternalSystem *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "route_point_external_system",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "route_point_external_system",
                "routePointExternalSystem",
                str,
                is_array=True,
            ),
        )


class GroupRoutePointForcedForwardingGetRequest(OCIRequest):
    """
    Get a route point's forced forwarding settings.

    The response is either a `GroupRoutePointForcedForwardingGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointGetAnnouncementRequest(OCIRequest):
    """
    Get a route point's announcement settings.

    The response is either a `GroupRoutePointGetAnnouncementResponse()` or an
    `ErrorResponse()`. Replaced by: `GroupRoutePointGetAnnouncementRequest19()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointGetAnnouncementRequest19(OCIRequest):
    """
    Get a route point's announcement settings.

    The response is either a `GroupRoutePointGetAnnouncementResponse19()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointGetAnnouncementRequest20(OCIRequest):
    """
    Get a route point's announcement settings.

    The response is either a `GroupRoutePointGetAnnouncementResponse20()` or an
    `ErrorResponse()`. Replaced by: `GroupRoutePointGetAnnouncementRequest22()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointGetFailoverPolicyRequest(OCIRequest):
    """
    Get the route point failover policy.

    The response is either a `GroupRoutePointGetFailoverPolicyResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointGetInstanceRequest(OCIRequest):
    """
    Request to get all the information of a Route Point instance.

    The response is either `GroupRoutePointGetInstanceResponse()` or `ErrorResponse()`.
    Replaced by: `GroupRoutePointGetInstanceRequest19sp1()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointGetInstanceRequest19sp1(OCIRequest):
    """
    Request to get all the information of a Route Point instance.

    The response is either `GroupRoutePointGetInstanceResponse19sp1()` or
    `ErrorResponse()`. Replace by `GroupRoutePointGetInstanceRequest22()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointGetInstanceRequest22(OCIRequest):
    """
    Request to get all the information of a Route Point instance.

    The response is either `GroupRoutePointGetInstanceResponse19sp1()` or
    `ErrorResponse()`. Replaced by `GroupRoutePointGetInstanceRequest23()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointHolidayServiceGetRequest(OCIRequest):
    """
    Get a route point's holiday service settings.

    The response is either a `GroupRoutePointHolidayServiceGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointHolidayServiceGetRequest17sp1(OCIRequest):
    """
    Get a route point's holiday service settings.

    The response is either a `GroupRoutePointHolidayServiceGetResponse17sp1()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        display_dnis_number (bool): displayDNISNumber *Optional*
        display_dnis_name (bool): displayDNISName *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "display_dnis_number",
        "display_dnis_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("display_dnis_number", "displayDNISNumber", bool),
            E("display_dnis_name", "displayDNISName", bool),
        )


class GroupRoutePointModifyFailoverPolicyRequest(OCIRequest):
    """
    Modify the route point failover policy.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        enable_failover_support (bool): enableFailoverSupport *Optional*
        external_system (str): externalSystem *Optional*
        failover_phone_number (str): failoverPhoneNumber *Optional*
        per_call_enable_failover_support (bool): perCallEnableFailoverSupport *Optional*
        per_call_call_failure_timeout_seconds (int): perCallCallFailureTimeoutSeconds
            *Optional*
        per_call_outbound_call_failure_timeout_seconds (int):
            perCallOutboundCallFailureTimeoutSeconds *Optional*
        per_call_failover_phone_number (str): perCallFailoverPhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "enable_failover_support",
        "external_system",
        "failover_phone_number",
        "per_call_enable_failover_support",
        "per_call_call_failure_timeout_seconds",
        "per_call_outbound_call_failure_timeout_seconds",
        "per_call_failover_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("enable_failover_support", "enableFailoverSupport", bool),
            E("external_system", "externalSystem", str),
            E("failover_phone_number", "failoverPhoneNumber", str),
            E("per_call_enable_failover_support", "perCallEnableFailoverSupport", bool),
            E(
                "per_call_call_failure_timeout_seconds",
                "perCallCallFailureTimeoutSeconds",
                int,
            ),
            E(
                "per_call_outbound_call_failure_timeout_seconds",
                "perCallOutboundCallFailureTimeoutSeconds",
                int,
            ),
            E("per_call_failover_phone_number", "perCallFailoverPhoneNumber", str),
        )


class GroupRoutePointNightServiceGetRequest(OCIRequest):
    """
    Get a route point's night service settings.

    The response is either a `GroupRoutePointNightServiceGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointNightServiceGetRequest17sp1(OCIRequest):
    """
    Get a route point's night service settings.

    The response is either a `GroupRoutePointNightServiceGetResponse17sp1()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointOverflowGetRequest(OCIRequest):
    """
    Get a route point's overflow settings.

    The response is either a `GroupRoutePointOverflowGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointQueueCallDispositionCodeAddRequest(OCIRequest):
    """
    Add a Route Point Call Disposition Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        code (str): code
        is_active (bool): isActive
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "code",
        "is_active",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("code", "code", str, is_required=True),
            E("is_active", "isActive", bool, is_required=True),
            E("description", "description", str),
        )


class GroupRoutePointQueueCallDispositionCodeDeleteRequest(OCIRequest):
    """
    Delete a Route Point Call Disposition Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        code (str): code
    """

    __slots__: List[str] = [
        "service_user_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("code", "code", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupRoutePointQueueCallDispositionCodeGetRequest(OCIRequest):
    """
    Get a Route Point Call Disposition Code.

    The response is either `GroupRoutePointQueueCallDispositionCodeGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        code (str): code
    """

    __slots__: List[str] = [
        "service_user_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("code", "code", str, is_required=True),
        )


class GroupRoutePointQueueCallDispositionCodeModifyRequest(OCIRequest):
    """
    Modify a Route Point Call Disposition Code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        code (str): code
        is_active (bool): isActive *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "code",
        "is_active",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("code", "code", str, is_required=True),
            E("is_active", "isActive", bool),
            E("description", "description", str),
        )


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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        routing_profile (str): routingProfile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "routing_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("routing_profile", "routingProfile", str),
        )


class GroupScheduleAddRequest(OCIRequest):
    """
    Add a group schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        schedule_name (str): scheduleName
        schedule_type (str): scheduleType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "schedule_name",
        "schedule_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("schedule_name", "scheduleName", str, is_required=True),
            E("schedule_type", "scheduleType", str, is_required=True),
        )


class GroupScheduleGetListRequest(OCIRequest):
    """
    Get the list of a group schedules.

    The list can be filtered by schedule type.

    The response is either a `GroupScheduleGetListResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        schedule_type (str): scheduleType *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "schedule_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("schedule_type", "scheduleType", str),
        )


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): serviceProviderId
        group_id (str): groupId
        schedule_type (str): scheduleType *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "schedule_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("schedule_type", "scheduleType", str),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupSeriesCompletionAddInstanceRequest(OCIRequest):
    """
    Adds a Series Completion group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        user_id (List[str]): userId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("user_id", "userId", str, is_array=True),
        )


class GroupSeriesCompletionDeleteInstanceRequest(OCIRequest):
    """
    Deletes a Series Completion group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupSeriesCompletionGetInstanceRequest(OCIRequest):
    """
    Gets a Series Completion group.

    The response is either `GroupSeriesCompletionGetInstanceResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        group_id (str): groupId
        service_name (List[str]): serviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_name", "serviceName", str, is_required=True, is_array=True),
        )


class GroupServiceGetAuthorizationListRequest(OCIRequest):
    """
    Requests the group's service authorization status.

    The response is either `GroupServiceGetAuthorizationListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        user_service_name (str): userServiceName *Optional*
        group_service_name (str): groupServiceName *Optional*
        service_pack_name (str): servicePackName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "user_service_name",
        "group_service_name",
        "service_pack_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("user_service_name", "userServiceName", str),
            E("group_service_name", "groupServiceName", str),
            E("service_pack_name", "servicePackName", str),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupServiceInstancePrivacyGetRequest(OCIRequest):
    """
    Request the data associated with Privacy for a service instance.

    The response is either a `GroupServiceInstancePrivacyGetResponse()`. Replaced by:
    `GroupServiceInstancePrivacyGetRequest17sp4()`

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceUserId
        enable_directory_privacy (bool): enableDirectoryPrivacy *Optional*
        enable_auto_attendant_extension_dialing_privacy (bool):
            enableAutoAttendantExtensionDialingPrivacy *Optional*
        enable_auto_attendant_name_dialing_privacy (bool):
            enableAutoAttendantNameDialingPrivacy *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "enable_directory_privacy",
        "enable_auto_attendant_extension_dialing_privacy",
        "enable_auto_attendant_name_dialing_privacy",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("enable_directory_privacy", "enableDirectoryPrivacy", bool),
            E(
                "enable_auto_attendant_extension_dialing_privacy",
                "enableAutoAttendantExtensionDialingPrivacy",
                bool,
            ),
            E(
                "enable_auto_attendant_name_dialing_privacy",
                "enableAutoAttendantNameDialingPrivacy",
                bool,
            ),
        )


class GroupServiceIsAssignedRequest(OCIRequest):
    """
    Request to determine if a GroupService is assigned to the group.


    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_name (str): serviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_name", "serviceName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        service_type (str): serviceType
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_type",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_type", "serviceType", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=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): serviceProviderId
        group_id (str): groupId
        service_name (List[str]): serviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_name", "serviceName", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        name (List[str]): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupSessionAdmissionControlGroupGetRequest(OCIRequest):
    """
    Request to get a session admission control group for the group.

    The response is either a `GroupSessionAdmissionControlGroupGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class GroupSessionAdmissionControlGroupGetRequest19sp1(OCIRequest):
    """
    Request to get a session admission control group for the group.

    The response is either a `GroupSessionAdmissionControlGroupGetResponse19sp1()` or an
    `ErrorResponse()`. Replaced by: `GroupSessionAdmissionControlGroupGetRequest21sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class GroupSessionAdmissionControlGroupGetRequest21sp1(OCIRequest):
    """
    Request to get a session admission control group for the group.

    The response is either a `GroupSessionAdmissionControlGroupGetResponse21sp1()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        group_id (str): groupId
        restrict_aggregate_sessions (bool): restrictAggregateSessions *Optional*
        max_sessions (int): maxSessions *Optional*
        max_user_originating_sessions (int): maxUserOriginatingSessions *Optional*
        max_user_terminating_sessions (int): maxUserTerminatingSessions *Optional*
        count_intra_group_sessions (bool): countIntraGroupSessions *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "restrict_aggregate_sessions",
        "max_sessions",
        "max_user_originating_sessions",
        "max_user_terminating_sessions",
        "count_intra_group_sessions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("restrict_aggregate_sessions", "restrictAggregateSessions", bool),
            E("max_sessions", "maxSessions", int),
            E("max_user_originating_sessions", "maxUserOriginatingSessions", int),
            E("max_user_terminating_sessions", "maxUserTerminatingSessions", int),
            E("count_intra_group_sessions", "countIntraGroupSessions", bool),
        )


class GroupShInterfaceGetUserListRequest(OCIRequest):
    """
    Returns a list of all Public User Identities and associated data in a group.

    The response is either a `GroupShInterfaceGetUserListResponse()` or an
    `ErrorResponse()`. Replaced by: `GroupShInterfaceGetUserListRequest21sp1()` in AS data
    mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupSpeedDial100GetRequest(OCIRequest):
    """
    Get the speed dial 100 service settings for a group.

    The response is either a `GroupSpeedDial100GetResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        prefix (str): prefix *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("prefix", "prefix", str),
        )


class GroupStirShakenGetRequest(OCIRequest):
    """
    Get Group Stir Shaken service settings.

    The response is either `GroupStirShakenGetResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupStirShakenModifyRequest(OCIRequest):
    """
    Modify Group Stir Shaken service settings.


    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        use_parent_level_settings (bool): useParentLevelSettings *Optional*
        signing_policy (str): signingPolicy *Optional*
        tagging_policy (str): taggingPolicy *Optional*
        signing_service_url (str): signingServiceURL *Optional*
        tag_from_or_pai (str): tagFromOrPAI *Optional*
        verstat_tag (str): verstatTag *Optional*
        use_os_value_for_orig_id (bool): useOSValueForOrigId *Optional*
        orig_uuid (str): origUUID *Optional*
        attestation_level (str): attestationLevel *Optional*
        enable_verification (bool): enableVerification *Optional*
        verification_service_url (str): verificationServiceURL *Optional*
        verification_error_handling (str): verificationErrorHandling *Optional*
        proxy_verstat_to_cnam_subscribe (bool): proxyVerstatToCNAMSubscribe *Optional*
        use_unknown_headers_from_cnam_notify (bool): useUnknownHeadersFromCNAMNotify
            *Optional*
        enable_signing_for_unscreened_trunk_group_originations (bool):
            enableSigningForUnscreenedTrunkGroupOriginations *Optional*
        enable_tagging_for_unscreened_trunk_group_originations (bool):
            enableTaggingForUnscreenedTrunkGroupOriginations *Optional*
        unscreened_trunk_group_origination_attestation_level (str):
            unscreenedTrunkGroupOriginationAttestationLevel *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_parent_level_settings",
        "signing_policy",
        "tagging_policy",
        "signing_service_url",
        "tag_from_or_pai",
        "verstat_tag",
        "use_os_value_for_orig_id",
        "orig_uuid",
        "attestation_level",
        "enable_verification",
        "verification_service_url",
        "verification_error_handling",
        "proxy_verstat_to_cnam_subscribe",
        "use_unknown_headers_from_cnam_notify",
        "enable_signing_for_unscreened_trunk_group_originations",
        "enable_tagging_for_unscreened_trunk_group_originations",
        "unscreened_trunk_group_origination_attestation_level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_parent_level_settings", "useParentLevelSettings", bool),
            E("signing_policy", "signingPolicy", str),
            E("tagging_policy", "taggingPolicy", str),
            E("signing_service_url", "signingServiceURL", str),
            E("tag_from_or_pai", "tagFromOrPAI", str),
            E("verstat_tag", "verstatTag", str),
            E("use_os_value_for_orig_id", "useOSValueForOrigId", bool),
            E("orig_uuid", "origUUID", str),
            E("attestation_level", "attestationLevel", str),
            E("enable_verification", "enableVerification", bool),
            E("verification_service_url", "verificationServiceURL", str),
            E("verification_error_handling", "verificationErrorHandling", str),
            E("proxy_verstat_to_cnam_subscribe", "proxyVerstatToCNAMSubscribe", bool),
            E(
                "use_unknown_headers_from_cnam_notify",
                "useUnknownHeadersFromCNAMNotify",
                bool,
            ),
            E(
                "enable_signing_for_unscreened_trunk_group_originations",
                "enableSigningForUnscreenedTrunkGroupOriginations",
                bool,
            ),
            E(
                "enable_tagging_for_unscreened_trunk_group_originations",
                "enableTaggingForUnscreenedTrunkGroupOriginations",
                bool,
            ),
            E(
                "unscreened_trunk_group_origination_attestation_level",
                "unscreenedTrunkGroupOriginationAttestationLevel",
                str,
            ),
        )


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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class GroupThirdPartyEmergencyCallingGetRequest(OCIRequest):
    """
    Get the third-party emergency call service settings for the Group.

    The response is either a `GroupThirdPartyEmergencyCallingGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        enable_device_management (bool): enableDeviceManagement *Optional*
        enable_routing (bool): enableRouting *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enable_device_management",
        "enable_routing",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enable_device_management", "enableDeviceManagement", bool),
            E("enable_routing", "enableRouting", bool),
        )


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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        is_active (bool): isActive *Optional*
        group_server (str): groupServer *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_active",
        "group_server",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("group_server", "groupServer", str),
        )


class GroupTimeScheduleDeleteRequest(OCIRequest):
    """
    Delete a time schedule from a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        time_schedule_name (str): timeScheduleName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "time_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("time_schedule_name", "timeScheduleName", str, is_required=True),
        )


class GroupTimeScheduleGetListRequest(OCIRequest):
    """
    Request a list of all time schedules in a group.

    The response is either a `GroupTimeScheduleGetListResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupTimeScheduleGetRequest(OCIRequest):
    """
    Request to get a group time schedule.

    The response is either a `GroupTimeScheduleGetResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        time_schedule_name (str): timeScheduleName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "time_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("time_schedule_name", "timeScheduleName", str, is_required=True),
        )


class GroupTrunkGroupDeleteInstanceRequest(OCIRequest):
    """
    Delete a Trunk Group Instance from a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupTrunkGroupGetInstanceListRequest14(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 `GroupTrunkGroupGetInstanceListResponse14()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
        include_enterprise_trunk_groups (bool): includeEnterpriseTrunkGroups *Optional*
        only_trunk_groups_with_device (bool): onlyTrunkGroupsWithDevice *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
        "include_enterprise_trunk_groups",
        "only_trunk_groups_with_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
            E("include_enterprise_trunk_groups", "includeEnterpriseTrunkGroups", bool),
            E("only_trunk_groups_with_device", "onlyTrunkGroupsWithDevice", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
        include_enterprise_trunk_groups (bool): includeEnterpriseTrunkGroups *Optional*
        only_trunk_groups_with_device (bool): onlyTrunkGroupsWithDevice *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
        "include_enterprise_trunk_groups",
        "only_trunk_groups_with_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
            E("include_enterprise_trunk_groups", "includeEnterpriseTrunkGroups", bool),
            E("only_trunk_groups_with_device", "onlyTrunkGroupsWithDevice", bool),
        )


class GroupTrunkGroupGetInstanceRequest14(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse14()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupTrunkGroupGetInstanceRequest14sp1(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse14sp1()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupTrunkGroupGetRequest(OCIRequest):
    """
    Get the maximum permissible active trunk group calls for the group.

    The response is either a `GroupTrunkGroupGetResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupTrunkGroupGetRequest14sp1(OCIRequest):
    """
    Get the maximum and bursting maximum permissible active trunk group calls for the
    group.

    The response is either a `GroupTrunkGroupGetResponse14sp1()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupTrunkGroupGetRequest14sp9(OCIRequest):
    """
    Get the maximum and bursting maximum permissible active trunk group calls for the
    group.

    The response is either a `GroupTrunkGroupGetResponse14sp9()` or an `ErrorResponse()`.
    Deprecated by `GroupTrunkGroupGetRequest23()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupTrunkGroupUserCreationTaskAddRequest(OCIRequest):
    """
    Add a user creation task for a trunk group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        task_name (str): taskName
        user_id_format (str): userIdFormat
        user_id_domain (str): userIdDomain
        populate_extension (bool): populateExtension
        line_port_format (str): linePortFormat
        line_port_domain (str): linePortDomain
        populate_contact (bool): populateContact
        contact_format (str): contactFormat *Optional*
        contact_domain (str): contactDomain *Optional*
        user_phone_numbers (OCI.userPhoneNumbers): userPhoneNumbers *Optional*
        user_extensions (OCI.userExtensions): userExtensions *Optional*
        service_pack_name (List[str]): servicePackName *Optional*
        user_service (List[str]): userService *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "task_name",
        "user_id_format",
        "user_id_domain",
        "populate_extension",
        "line_port_format",
        "line_port_domain",
        "populate_contact",
        "contact_format",
        "contact_domain",
        "user_phone_numbers",
        "user_extensions",
        "service_pack_name",
        "user_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("task_name", "taskName", str, is_required=True),
            E("user_id_format", "userIdFormat", str, is_required=True),
            E("user_id_domain", "userIdDomain", str, is_required=True),
            E("populate_extension", "populateExtension", bool, is_required=True),
            E("line_port_format", "linePortFormat", str, is_required=True),
            E("line_port_domain", "linePortDomain", str, is_required=True),
            E("populate_contact", "populateContact", bool, is_required=True),
            E("contact_format", "contactFormat", str),
            E("contact_domain", "contactDomain", str),
            E(
                "user_phone_numbers",
                "userPhoneNumbers",
                str,
                is_complex=True,
            ),  # unknown
            E("user_extensions", "userExtensions", str, is_complex=True),  # unknown
            E("service_pack_name", "servicePackName", str, is_array=True),
            E("user_service", "userService", str, is_array=True),
        )


class GroupTrunkGroupUserCreationTaskDeleteRequest(OCIRequest):
    """
    Delete a user creation task for a trunk group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        task_name (str): taskName
    """

    __slots__: List[str] = [
        "service_user_id",
        "task_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("task_name", "taskName", str, is_required=True),
        )


class GroupTrunkGroupUserCreationTaskGetListRequest(OCIRequest):
    """
    Get the list of user creation tasks for a trunk group.

    The response is either `GroupTrunkGroupUserCreationTaskGetListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupTrunkGroupUserCreationTaskGetRequest(OCIRequest):
    """
    Request the details of a specified user creation task for a trunk group.

    The response is either `GroupTrunkGroupUserCreationTaskGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        task_name (str): taskName
    """

    __slots__: List[str] = [
        "service_user_id",
        "task_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("task_name", "taskName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        language (str): language
        apply_to_users (bool): applyToUsers *Optional*
        apply_to_service_instances (bool): applyToServiceInstances *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "language",
        "apply_to_users",
        "apply_to_service_instances",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("language", "language", str, is_required=True),
            E("apply_to_users", "applyToUsers", bool),
            E("apply_to_service_instances", "applyToServiceInstances", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=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): serviceProviderId
        group_id (str): groupId
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=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): serviceProviderId
        group_id (str): groupId
        phone_number (str): phoneNumber
        extension (str): extension *Optional*
        first_name (str): firstName *Optional*
        last_name (str): lastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        virtual_on_net_call_type_name (str): virtualOnNetCallTypeName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "phone_number",
        "extension",
        "first_name",
        "last_name",
        "calling_line_id_first_name",
        "calling_line_id_last_name",
        "virtual_on_net_call_type_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E("extension", "extension", str),
            E("first_name", "firstName", str),
            E("last_name", "lastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("virtual_on_net_call_type_name", "virtualOnNetCallTypeName", str),
        )


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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class GroupVoiceMessagingGroupGetPasscodeRulesRequest(OCIRequest):
    """
    Requests the group's voice portal passcode rules setting.

    The response is either `GroupVoiceMessagingGroupGetPasscodeRulesResponse()` or
    `ErrorResponse()`.

    Replaced By: `GroupPortalPasscodeRulesGetRequest()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupVoiceMessagingGroupGetRequest(OCIRequest):
    """
    Requests the group's Voice Messaging settings.

    The response is either `GroupVoiceMessagingGroupGetResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupVoiceMessagingGroupGetVoicePortalBrandingRequest(OCIRequest):
    """
    Get the group's voice portal branding settings.

    The response is either a `GroupVoiceMessagingGroupGetVoicePortalBrandingResponse()` or
    an `ErrorResponse()`.

    Replaced By: `GroupVoiceMessagingGroupGetVoicePortalBrandingRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupVoiceMessagingGroupGetVoicePortalBrandingRequest16(OCIRequest):
    """
    Get the group's voice portal branding settings.

    The response is either a `GroupVoiceMessagingGroupGetVoicePortalBrandingResponse16()`
    or an `ErrorResponse()`. Replaced by:
    `GroupVoiceMessagingGroupGetVoicePortalBrandingRequest20()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupVoiceMessagingGroupGetVoicePortalRequest14(OCIRequest):
    """
    Requests the group's voice messaging settings The response is either
    `GroupVoiceMessagingGroupGetVoicePortalResponse14()` or `ErrorResponse()`.

    Replaced by `GroupVoiceMessagingGroupGetVoicePortalRequest15()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupVoiceMessagingGroupGetVoicePortalRequest15(OCIRequest):
    """
    Request to get the group voice portal information for a voice messaging group.

    The response is either `GroupVoiceMessagingGroupGetVoicePortalResponse15()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupVoiceMessagingGroupGetVoicePortalRequest17(OCIRequest):
    """
    Request to get the group voice portal information for a voice messaging group.

    The response is either `GroupVoiceMessagingGroupGetVoicePortalResponse17()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupVoiceMessagingGroupGetVoicePortalRequest17sp4(OCIRequest):
    """
    Request to get the group voice portal information for a voice messaging group.

    The response is either `GroupVoiceMessagingGroupGetVoicePortalResponse17sp4()` or
    `ErrorResponse()`. Replaced by: `GroupVoiceMessagingGroupGetVoicePortalRequest19sp1()`
    in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupVoiceMessagingGroupGetVoicePortalRequest19sp1(OCIRequest):
    """
    Request to get the group voice portal information for a voice messaging group.

    The response is either `GroupVoiceMessagingGroupGetVoicePortalResponse19sp1()` or
    `ErrorResponse()`. Replaced by: `GroupVoiceMessagingGroupGetVoicePortalRequest21sp1()`
    in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=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): serviceProviderId
        group_id (str): groupId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
        )


class GroupVoiceMessagingGroupModifyPasscodeRulesRequest(OCIRequest):
    """
    Request to modify the group's voice portal passcode rules setting.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `GroupPortalPasscodeRulesModifyRequest()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        use_rule_level (str): useRuleLevel *Optional*
        disallow_repeated_digits (bool): disallowRepeatedDigits *Optional*
        disallow_user_number (bool): disallowUserNumber *Optional*
        disallow_reversed_user_number (bool): disallowReversedUserNumber *Optional*
        disallow_old_passcode (bool): disallowOldPasscode *Optional*
        disallow_reversed_old_passcode (bool): disallowReversedOldPasscode *Optional*
        min_code_length (int): minCodeLength *Optional*
        max_code_length (int): maxCodeLength *Optional*
        disable_login_after_max_failed_login_attempts (bool):
            disableLoginAfterMaxFailedLoginAttempts *Optional*
        max_failed_login_attempts (int): maxFailedLoginAttempts *Optional*
        expire_password (bool): expirePassword *Optional*
        passcode_expires_days (int): passcodeExpiresDays *Optional*
        send_login_disabled_notify_email (bool): sendLoginDisabledNotifyEmail *Optional*
        login_disabled_notify_email_address (str): loginDisabledNotifyEmailAddress
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_rule_level",
        "disallow_repeated_digits",
        "disallow_user_number",
        "disallow_reversed_user_number",
        "disallow_old_passcode",
        "disallow_reversed_old_passcode",
        "min_code_length",
        "max_code_length",
        "disable_login_after_max_failed_login_attempts",
        "max_failed_login_attempts",
        "expire_password",
        "passcode_expires_days",
        "send_login_disabled_notify_email",
        "login_disabled_notify_email_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_rule_level", "useRuleLevel", str),
            E("disallow_repeated_digits", "disallowRepeatedDigits", bool),
            E("disallow_user_number", "disallowUserNumber", bool),
            E("disallow_reversed_user_number", "disallowReversedUserNumber", bool),
            E("disallow_old_passcode", "disallowOldPasscode", bool),
            E("disallow_reversed_old_passcode", "disallowReversedOldPasscode", bool),
            E("min_code_length", "minCodeLength", int),
            E("max_code_length", "maxCodeLength", int),
            E(
                "disable_login_after_max_failed_login_attempts",
                "disableLoginAfterMaxFailedLoginAttempts",
                bool,
            ),
            E("max_failed_login_attempts", "maxFailedLoginAttempts", int),
            E("expire_password", "expirePassword", bool),
            E("passcode_expires_days", "passcodeExpiresDays", int),
            E("send_login_disabled_notify_email", "sendLoginDisabledNotifyEmail", bool),
            E(
                "login_disabled_notify_email_address",
                "loginDisabledNotifyEmailAddress",
                str,
            ),
        )


class GroupVoiceMessagingGroupModifyRequest(OCIRequest):
    """
    Request to modify the group's voice messaging settings.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        use_mail_server_setting (str): useMailServerSetting *Optional*
        warn_caller_before_recording_voice_message (bool):
            warnCallerBeforeRecordingVoiceMessage *Optional*
        allow_users_configuring_advanced_settings (bool):
            allowUsersConfiguringAdvancedSettings *Optional*
        allow_compose_or_forward_message_to_entire_group (bool):
            allowComposeOrForwardMessageToEntireGroup *Optional*
        mail_server_net_address (str): mailServerNetAddress *Optional*
        mail_server_protocol (str): mailServerProtocol *Optional*
        real_delete_for_imap (bool): realDeleteForImap *Optional*
        max_mailbox_length_minutes (int): maxMailboxLengthMinutes *Optional*
        does_message_age (bool): doesMessageAge *Optional*
        hold_period_days (int): holdPeriodDays *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_mail_server_setting",
        "warn_caller_before_recording_voice_message",
        "allow_users_configuring_advanced_settings",
        "allow_compose_or_forward_message_to_entire_group",
        "mail_server_net_address",
        "mail_server_protocol",
        "real_delete_for_imap",
        "max_mailbox_length_minutes",
        "does_message_age",
        "hold_period_days",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_mail_server_setting", "useMailServerSetting", str),
            E(
                "warn_caller_before_recording_voice_message",
                "warnCallerBeforeRecordingVoiceMessage",
                bool,
            ),
            E(
                "allow_users_configuring_advanced_settings",
                "allowUsersConfiguringAdvancedSettings",
                bool,
            ),
            E(
                "allow_compose_or_forward_message_to_entire_group",
                "allowComposeOrForwardMessageToEntireGroup",
                bool,
            ),
            E("mail_server_net_address", "mailServerNetAddress", str),
            E("mail_server_protocol", "mailServerProtocol", str),
            E("real_delete_for_imap", "realDeleteForImap", bool),
            E("max_mailbox_length_minutes", "maxMailboxLengthMinutes", int),
            E("does_message_age", "doesMessageAge", bool),
            E("hold_period_days", "holdPeriodDays", int),
        )


class GroupVoiceXmlDeleteInstanceRequest(OCIRequest):
    """
    Delete a VoiceXML instance from a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
        )


class GroupVoiceXmlGetInstanceRequest(OCIRequest):
    """
    Request to get all the information of a VoiceXML instance.

    The response is either `GroupVoiceXmlGetInstanceResponse()` or `ErrorResponse()`.
    Replaced by: `GroupVoiceXmlGetInstanceRequest19sp1()` in AS data mode

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupVoiceXmlGetInstanceRequest19sp1(OCIRequest):
    """
    Request to get all the information of a VoiceXML instance.

    The response is either `GroupVoiceXmlGetInstanceResponse19sp1()` or `ErrorResponse()`.
    Replaced by: `GroupVoiceXmlGetInstanceRequest22()` in AS mode

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=True),)


class GroupVoiceXmlGetInstanceRequest22(OCIRequest):
    """
    Request to get all the information of a VoiceXML instance.

    The response is either `GroupVoiceXmlGetInstanceResponse22()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): serviceProviderId
        group_id (str): groupId
        level (str): level *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("level", "level", str),
        )


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): serviceProviderId
        group_id (str): groupId
        user_default_xsi_policy_profile (str): userDefaultXsiPolicyProfile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "user_default_xsi_policy_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("user_default_xsi_policy_profile", "userDefaultXsiPolicyProfile", str),
        )


class LoginRequest13mp10(OCIRequest):
    """
    `LoginRequest13mp10()` 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*
    """

    __slots__: List[str] = [
        "user_id",
        "signed_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("signed_password", "signedPassword", str),
        )


class LoginRequest14sp4(OCIRequest):
    """
    `LoginRequest14sp4()` 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*
    """

    __slots__: List[str] = [
        "user_id",
        "signed_password",
        "plain_text_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("signed_password", "signedPassword", str),
            E("plain_text_password", "plainTextPassword", str),
        )


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

    The signedPassword is not required for external authentication login from a trusted
    host (ACL). Replaced by `LoginRequest22V3()` in AS data mode.

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

    __slots__: List[str] = [
        "user_id",
        "signed_password",
        "plain_text_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("signed_password", "signedPassword", str),
            E("plain_text_password", "plainTextPassword", str),
        )


class LoginRequest22(OCIRequest):
    """
    Request to login to OCI.

    password is not required for external authentication login from a trusted host (ACL).
    Replaced by `LoginRequest22V2()` in AS data mode.

    Attributes:
        user_id (str): userId
        password (str): password *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("password", "password", str),
        )


class LoginRequest22V2(OCIRequest):
    """
    Request to login to OCI.

    password is not required for external authentication login from a trusted host (ACL).
    Replaced by `LoginRequest22V3()` in AS data mode.

    Attributes:
        user_id (str): userId
        password (str): password *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("password", "password", str),
        )


class LoginRequest22V3(OCIRequest):
    """
    Request to login to OCI.

    password is not required for external authentication login from a trusted host (ACL).
    Replaced by `LoginRequest22V4()` in AS data mode.

    Attributes:
        user_id (str): userId
        password (str): password *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("password", "password", str),
        )


class LoginRequest22V4(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 Replaced by: `LoginRequest22V5()`.

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

    __slots__: List[str] = [
        "user_id",
        "password",
        "signed_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("password", "password", str),
            E("signed_password", "signedPassword", str),
        )


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

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

    __slots__: List[str] = [
        "user_id",
        "password",
        "signed_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("password", "password", str),
            E("signed_password", "signedPassword", str),
        )


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): userId
        reason (str): reason *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "reason",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("reason", "reason", str),
        )


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 (str): userId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str),)


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): userId
        old_password (str): oldPassword *Optional*
        new_password (str): newPassword
    """

    __slots__: List[str] = [
        "user_id",
        "old_password",
        "new_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("old_password", "oldPassword", str),
            E("new_password", "newPassword", str, is_required=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): placeUserId
        web_ex_sip_address (str): webExSIPAddress *Optional*
    """

    __slots__: List[str] = [
        "place_user_id",
        "web_ex_sip_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("place_user_id", "placeUserId", str, is_required=True),
            E("web_ex_sip_address", "webExSIPAddress", str),
        )


class PrimaryInfoGetRequest(OCIRequest):
    """
    Requests information about the primary server for high-availability support.


    Attributes:
        is_private (bool): isPrivate
        is_address_info_requested (bool): isAddressInfoRequested
    """

    __slots__: List[str] = [
        "is_private",
        "is_address_info_requested",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("is_private", "isPrivate", bool, is_required=True),
            E(
                "is_address_info_requested",
                "isAddressInfoRequested",
                bool,
                is_required=True,
            ),
        )


class PublicClusterGetFullyQualifiedDomainNameRequest(OCIRequest):
    """
    Get the public cluster fully qualified domain name (FQDN).

    The response is either a `PublicClusterGetFullyQualifiedDomainNameResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class ResellerAddRequest(OCIRequest):
    """
    Add a reseller.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
        reseller_name (str): resellerName *Optional*
        reseller_external_id (str): resellerExternalId *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "reseller_name",
        "reseller_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("reseller_name", "resellerName", str),
            E("reseller_external_id", "resellerExternalId", str),
        )


class ResellerAdminAddRequest(OCIRequest):
    """
    Add a reseller administrator.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
        user_id (str): userId
        first_name (str): firstName *Optional*
        last_name (str): lastName *Optional*
        password (str): password *Optional*
        language (str): language *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "user_id",
        "first_name",
        "last_name",
        "password",
        "language",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("user_id", "userId", str, is_required=True),
            E("first_name", "firstName", str),
            E("last_name", "lastName", str),
            E("password", "password", str),
            E("language", "language", str),
        )


class ResellerAdminAlternateIdAddRequest(OCIRequest):
    """
    Request to add an alternate Id to a reseller admin.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        alternate_user_id (str): alternateUserId
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "alternate_user_id",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("alternate_user_id", "alternateUserId", str, is_required=True),
            E("description", "description", str),
        )


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): userId
        alternate_user_id (str): alternateUserId
    """

    __slots__: List[str] = [
        "user_id",
        "alternate_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("alternate_user_id", "alternateUserId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        alternate_user_id (str): alternateUserId
        new_alternate_user_id (str): newAlternateUserId *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "alternate_user_id",
        "new_alternate_user_id",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("alternate_user_id", "alternateUserId", str, is_required=True),
            E("new_alternate_user_id", "newAlternateUserId", str),
            E("description", "description", str),
        )


class ResellerAdminDeleteRequest(OCIRequest):
    """
    Delete a reseller administrator.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class ResellerAdminGetListRequest(OCIRequest):
    """
    Get a list of reseller administrators.

    The response is either a `ResellerAdminGetListResponse()` or an `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=True),)


class ResellerAdminGetRequest(OCIRequest):
    """
    Get a reseller administrators profile.

    The response is either a `ResellerAdminGetResponse()` or an `ErrorResponse()`.
    Replaced by `ResellerAdminGetRequest22()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class ResellerAdminGetRequest22(OCIRequest):
    """
    Get a reseller administrators profile.

    The response is either a `ResellerAdminGetResponse22()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        first_name (str): firstName *Optional*
        last_name (str): lastName *Optional*
        password (str): password *Optional*
        language (str): language *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "first_name",
        "last_name",
        "password",
        "language",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("first_name", "firstName", str),
            E("last_name", "lastName", str),
            E("password", "password", str),
            E("language", "language", str),
        )


class ResellerCallAdmissionControlPoliciesGetRequest(OCIRequest):
    """
    Get a reseller call admission control policies.

    The response is either a `ResellerCallAdmissionControlPoliciesGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=True),)


class ResellerCallAdmissionControlPoliciesModifyRequest(OCIRequest):
    """
    Modify the reseller call admission control policies.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
        enable_call_admission_control (bool): enableCallAdmissionControl *Optional*
        max_concurrent_network_sessions (int): maxConcurrentNetworkSessions *Optional*
        max_concurrent_network_sessions_threshold (int):
            maxConcurrentNetworkSessionsThreshold *Optional*
        max_network_calls_per_second (int): maxNetworkCallsPerSecond *Optional*
        max_network_calls_per_second_threshold (int): maxNetworkCallsPerSecondThreshold
            *Optional*
        max_concurrent_external_siprec_sessions (int): maxConcurrentExternalSIPRECSessions
            *Optional*
        max_concurrent_external_siprec_sessions_threshold (int):
            maxConcurrentExternalSIPRECSessionsThreshold *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "enable_call_admission_control",
        "max_concurrent_network_sessions",
        "max_concurrent_network_sessions_threshold",
        "max_network_calls_per_second",
        "max_network_calls_per_second_threshold",
        "max_concurrent_external_siprec_sessions",
        "max_concurrent_external_siprec_sessions_threshold",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("enable_call_admission_control", "enableCallAdmissionControl", bool),
            E("max_concurrent_network_sessions", "maxConcurrentNetworkSessions", int),
            E(
                "max_concurrent_network_sessions_threshold",
                "maxConcurrentNetworkSessionsThreshold",
                int,
            ),
            E("max_network_calls_per_second", "maxNetworkCallsPerSecond", int),
            E(
                "max_network_calls_per_second_threshold",
                "maxNetworkCallsPerSecondThreshold",
                int,
            ),
            E(
                "max_concurrent_external_siprec_sessions",
                "maxConcurrentExternalSIPRECSessions",
                int,
            ),
            E(
                "max_concurrent_external_siprec_sessions_threshold",
                "maxConcurrentExternalSIPRECSessionsThreshold",
                int,
            ),
        )


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): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        default_from_address (str): defaultFromAddress *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "default_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("default_from_address", "defaultFromAddress", str),
        )


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): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        default_from_address (str): defaultFromAddress *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "default_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("default_from_address", "defaultFromAddress", str),
        )


class ResellerCallPoliciesGetRequest(OCIRequest):
    """
    Request the reseller level data associated with Call Policies.

    The response is either a `ResellerCallPoliciesGetResponse()` or an `ErrorResponse()`.
    Replaced by: `ResellerCallPoliciesGetRequest22()` in AS data mode.

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        force_redirecting_user_identity_for_redirected_calls (bool):
            forceRedirectingUserIdentityForRedirectedCalls *Optional*
        apply_redirecting_user_identity_to_network_locations (bool):
            applyRedirectingUserIdentityToNetworkLocations *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "force_redirecting_user_identity_for_redirected_calls",
        "apply_redirecting_user_identity_to_network_locations",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E(
                "force_redirecting_user_identity_for_redirected_calls",
                "forceRedirectingUserIdentityForRedirectedCalls",
                bool,
            ),
            E(
                "apply_redirecting_user_identity_to_network_locations",
                "applyRedirectingUserIdentityToNetworkLocations",
                bool,
            ),
        )


class ResellerCallRecordingGetRequest(OCIRequest):
    """
    Get the Call Recording attribute for a reseller.

    The response is either a `ResellerCallRecordingGetResponse()` or an `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        fqdn (str): FQDN *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "fqdn",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("fqdn", "FQDN", str),
        )


class ResellerCollaborateGetRequest(OCIRequest):
    """
    Request the reseller level data associated with Collaborate.

    The response is either a `ResellerCollaborateGetResponse()` or an `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        collaborate_from_address (str): collaborateFromAddress *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "collaborate_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("collaborate_from_address", "collaborateFromAddress", str),
        )


class ResellerDeleteRequest(OCIRequest):
    """
    Delete a reseller.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId *Optional*
        reseller_external_id (str): resellerExternalId *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "reseller_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str),
            E("reseller_external_id", "resellerExternalId", str),
        )


class ResellerDeviceActivationPolicyGetRequest(OCIRequest):
    """
    Request the Device Activation policy of a reseller.

    The response is either a `ResellerDeviceActivationPolicyGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        use_reseller_settings (bool): useResellerSettings *Optional*
        allow_activation_code_request_by_user (bool): allowActivationCodeRequestByUser
            *Optional*
        send_activation_code_in_email (bool): sendActivationCodeInEmail *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "use_reseller_settings",
        "allow_activation_code_request_by_user",
        "send_activation_code_in_email",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("use_reseller_settings", "useResellerSettings", bool),
            E(
                "allow_activation_code_request_by_user",
                "allowActivationCodeRequestByUser",
                bool,
            ),
            E("send_activation_code_in_email", "sendActivationCodeInEmail", bool),
        )


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): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        default_from_address (str): defaultFromAddress *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "default_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("default_from_address", "defaultFromAddress", str),
        )


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): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        default_from_address (str): defaultFromAddress *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "default_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("default_from_address", "defaultFromAddress", str),
        )


class ResellerGetRequest(OCIRequest):
    """
    Get the profile for a reseller.

    The response is either `ResellerGetResponse()` or `ErrorResponse()`. Replaced by:
    `ResellerGetRequest22()`

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=True),)


class ResellerGetRequest22(OCIRequest):
    """
    Get the profile for a reseller.

    The response is either `ResellerGetResponse22()` or `ErrorResponse()`. Replaced by:
    `ResellerGetRequest22V2()`

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=True),)


class ResellerGetRequest22V2(OCIRequest):
    """
    Get the profile for a reseller.

    The response is either `ResellerGetResponse22V2()` or `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId *Optional*
        reseller_external_id (str): resellerExternalId *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "reseller_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str),
            E("reseller_external_id", "resellerExternalId", str),
        )


class ResellerIntegratedIMPGetRequest(OCIRequest):
    """
    Get the Integrated IMP service attributes for the reseller.

    The response is either `ResellerIntegratedIMPGetResponse()` or `ErrorResponse()`.
    Replaced by: `ResellerIntegratedIMPGetRequest22()` in AS data mode

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=True),)


class ResellerIntegratedIMPGetRequest22(OCIRequest):
    """
    Get the Integrated IMP service attributes for the reseller.

    The response is either `ResellerIntegratedIMPGetResponse22()` or `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        use_system_service_domain (bool): useSystemServiceDomain *Optional*
        service_domain (str): serviceDomain *Optional*
        service_port (int): servicePort *Optional*
        use_system_messaging_server (bool): useSystemMessagingServer *Optional*
        provisioning_url (str): provisioningUrl *Optional*
        provisioning_user_id (str): provisioningUserId *Optional*
        provisioning_password (str): provisioningPassword *Optional*
        bosh_url (str): boshURL *Optional*
        default_imp_id_type (str): defaultImpIdType *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "use_system_service_domain",
        "service_domain",
        "service_port",
        "use_system_messaging_server",
        "provisioning_url",
        "provisioning_user_id",
        "provisioning_password",
        "bosh_url",
        "default_imp_id_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("use_system_service_domain", "useSystemServiceDomain", bool),
            E("service_domain", "serviceDomain", str),
            E("service_port", "servicePort", int),
            E("use_system_messaging_server", "useSystemMessagingServer", bool),
            E("provisioning_url", "provisioningUrl", str),
            E("provisioning_user_id", "provisioningUserId", str),
            E("provisioning_password", "provisioningPassword", str),
            E("bosh_url", "boshURL", str),
            E("default_imp_id_type", "defaultImpIdType", str),
        )


class ResellerMailParametersGetRequest(OCIRequest):
    """
    Request the reseller Mail parameters.

    The response is either a `ResellerMailParametersGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=True),)


class ResellerMailParametersModifyRequest(OCIRequest):
    """
    Request to modify the reseller Mail parameters.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
        default_from_address (str): defaultFromAddress *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "default_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("default_from_address", "defaultFromAddress", str),
        )


class ResellerMeetMeConferencingGetRequest(OCIRequest):
    """
    Request the reseller level data associated with Meet-Me Conferencing functions.

    The response is either a `ResellerMeetMeConferencingGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        conference_from_address (str): conferenceFromAddress *Optional*
        max_allocated_ports (int): maxAllocatedPorts *Optional*
        disable_unlimited_meet_me_ports (bool): disableUnlimitedMeetMePorts *Optional*
        enable_max_allocated_ports (bool): enableMaxAllocatedPorts *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "conference_from_address",
        "max_allocated_ports",
        "disable_unlimited_meet_me_ports",
        "enable_max_allocated_ports",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("conference_from_address", "conferenceFromAddress", str),
            E("max_allocated_ports", "maxAllocatedPorts", int),
            E("disable_unlimited_meet_me_ports", "disableUnlimitedMeetMePorts", bool),
            E("enable_max_allocated_ports", "enableMaxAllocatedPorts", bool),
        )


class ResellerModifyRequest(OCIRequest):
    """
    Modify the reseller profile.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId *Optional*
        reseller_external_id (str): resellerExternalId *Optional*
        reseller_name (str): resellerName *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "reseller_external_id",
        "reseller_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str),
            E("reseller_external_id", "resellerExternalId", str),
            E("reseller_name", "resellerName", str),
        )


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): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("network_class_of_service", "networkClassOfService", str),
        )


class ResellerResourcePriorityGetRequest(OCIRequest):
    """
    Get the Resource Priority service attributes for the reseller.

    The response is either `ResellerResourcePriorityGetResponse()` or `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        use_system_settings (bool): useSystemSettings *Optional*
        send_resource_priority_to_network (bool): sendResourcePriorityToNetwork *Optional*
        resource_priority (str): resourcePriority *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "use_system_settings",
        "send_resource_priority_to_network",
        "resource_priority",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("use_system_settings", "useSystemSettings", bool),
            E(
                "send_resource_priority_to_network",
                "sendResourcePriorityToNetwork",
                bool,
            ),
            E("resource_priority", "resourcePriority", str),
        )


class ResellerServiceAuthorizationGetRequest(OCIRequest):
    """
    Get the reseller service authorization The response is either
    `ResellerServiceAuthorizationGetResponse()` or `ErrorResponse()`.


    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=True),)


class ResellerStirShakenGetRequest(OCIRequest):
    """
    Get Reseller Stir Shaken service settings.

    The response is either `ResellerStirShakenGetResponse()` or `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=True),)


class ResellerStirShakenModifyRequest(OCIRequest):
    """
    Modify reseller Stir Shaken service settings.


    Attributes:
        reseller_id (str): resellerId
        use_parent_level_settings (bool): useParentLevelSettings *Optional*
        signing_policy (str): signingPolicy *Optional*
        tagging_policy (str): taggingPolicy *Optional*
        sign_emergency_calls (bool): signEmergencyCalls *Optional*
        tag_emergency_calls (bool): tagEmergencyCalls *Optional*
        signing_service_url (str): signingServiceURL *Optional*
        tag_from_or_pai (str): tagFromOrPAI *Optional*
        verstat_tag (str): verstatTag *Optional*
        use_os_value_for_orig_id (bool): useOSValueForOrigId *Optional*
        orig_uuid (str): origUUID *Optional*
        attestation_level (str): attestationLevel *Optional*
        enable_verification (bool): enableVerification *Optional*
        verification_service_url (str): verificationServiceURL *Optional*
        verification_error_handling (str): verificationErrorHandling *Optional*
        proxy_verstat_to_cnam_subscribe (bool): proxyVerstatToCNAMSubscribe *Optional*
        use_unknown_headers_from_cnam_notify (bool): useUnknownHeadersFromCNAMNotify
            *Optional*
        enable_signing_for_unscreened_trunk_group_originations (bool):
            enableSigningForUnscreenedTrunkGroupOriginations *Optional*
        enable_tagging_for_unscreened_trunk_group_originations (bool):
            enableTaggingForUnscreenedTrunkGroupOriginations *Optional*
        unscreened_trunk_group_origination_attestation_level (str):
            unscreenedTrunkGroupOriginationAttestationLevel *Optional*
        verify_gets_calls (bool): verifyGETSCalls *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "use_parent_level_settings",
        "signing_policy",
        "tagging_policy",
        "sign_emergency_calls",
        "tag_emergency_calls",
        "signing_service_url",
        "tag_from_or_pai",
        "verstat_tag",
        "use_os_value_for_orig_id",
        "orig_uuid",
        "attestation_level",
        "enable_verification",
        "verification_service_url",
        "verification_error_handling",
        "proxy_verstat_to_cnam_subscribe",
        "use_unknown_headers_from_cnam_notify",
        "enable_signing_for_unscreened_trunk_group_originations",
        "enable_tagging_for_unscreened_trunk_group_originations",
        "unscreened_trunk_group_origination_attestation_level",
        "verify_gets_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("use_parent_level_settings", "useParentLevelSettings", bool),
            E("signing_policy", "signingPolicy", str),
            E("tagging_policy", "taggingPolicy", str),
            E("sign_emergency_calls", "signEmergencyCalls", bool),
            E("tag_emergency_calls", "tagEmergencyCalls", bool),
            E("signing_service_url", "signingServiceURL", str),
            E("tag_from_or_pai", "tagFromOrPAI", str),
            E("verstat_tag", "verstatTag", str),
            E("use_os_value_for_orig_id", "useOSValueForOrigId", bool),
            E("orig_uuid", "origUUID", str),
            E("attestation_level", "attestationLevel", str),
            E("enable_verification", "enableVerification", bool),
            E("verification_service_url", "verificationServiceURL", str),
            E("verification_error_handling", "verificationErrorHandling", str),
            E("proxy_verstat_to_cnam_subscribe", "proxyVerstatToCNAMSubscribe", bool),
            E(
                "use_unknown_headers_from_cnam_notify",
                "useUnknownHeadersFromCNAMNotify",
                bool,
            ),
            E(
                "enable_signing_for_unscreened_trunk_group_originations",
                "enableSigningForUnscreenedTrunkGroupOriginations",
                bool,
            ),
            E(
                "enable_tagging_for_unscreened_trunk_group_originations",
                "enableTaggingForUnscreenedTrunkGroupOriginations",
                bool,
            ),
            E(
                "unscreened_trunk_group_origination_attestation_level",
                "unscreenedTrunkGroupOriginationAttestationLevel",
                str,
            ),
            E("verify_gets_calls", "verifyGETSCalls", bool),
        )


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): resellerId
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str, is_required=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): resellerId
        delivery_from_address (str): deliveryFromAddress *Optional*
        notification_from_address (str): notificationFromAddress *Optional*
        voice_portal_lockout_from_address (str): voicePortalLockoutFromAddress *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "delivery_from_address",
        "notification_from_address",
        "voice_portal_lockout_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("delivery_from_address", "deliveryFromAddress", str),
            E("notification_from_address", "notificationFromAddress", str),
            E(
                "voice_portal_lockout_from_address",
                "voicePortalLockoutFromAddress",
                str,
            ),
        )


class ResellerXsiPolicyProfileGetAssignedListRequest(OCIRequest):
    """
    Get a list of Xsi policy profile assigned.

    The response is either a `XsiPolicyProfileGetAssignedListResponse()` or an
    `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
        level (str): level *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("level", "level", str),
        )


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): resellerId
        sp_default_xsi_policy_profile (str): spDefaultXsiPolicyProfile *Optional*
        group_default_xsi_policy_profile (str): groupDefaultXsiPolicyProfile *Optional*
        user_default_xsi_policy_profile (str): userDefaultXsiPolicyProfile *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "sp_default_xsi_policy_profile",
        "group_default_xsi_policy_profile",
        "user_default_xsi_policy_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("sp_default_xsi_policy_profile", "spDefaultXsiPolicyProfile", str),
            E("group_default_xsi_policy_profile", "groupDefaultXsiPolicyProfile", str),
            E("user_default_xsi_policy_profile", "userDefaultXsiPolicyProfile", str),
        )


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): serviceProviderId
        device_name (str): deviceName
        tag_name (str): tagName
        tag_value (str): tagValue *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "tag_name",
        "tag_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True),
            E("tag_value", "tagValue", str),
        )


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): serviceProviderId
        device_name (str): deviceName
        tag_name (List[str]): tagName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "tag_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True, is_array=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): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        device_name (str): deviceName
        tag_name (str): tagName
        tag_value (str): tagValue *Optional*
        tag_value_to_encrypt (str): tagValueToEncrypt *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "tag_name",
        "tag_value",
        "tag_value_to_encrypt",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True),
            E("tag_value", "tagValue", str),
            E("tag_value_to_encrypt", "tagValueToEncrypt", str),
        )


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 (str): serviceProviderId *Optional*
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


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): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        device_name (str): deviceName
        activate_device (bool): activateDevice
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "activate_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("activate_device", "activateDevice", bool, is_required=True),
        )


class ServiceProviderAccessDeviceFileGetListRequest(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 `ServiceProviderAccessDeviceFileGetListResponse()` or
    `ErrorResponse()`.

    Replaced By: `ServiceProviderAccessDeviceFileGetListRequest14sp8()`

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class ServiceProviderAccessDeviceFileGetRequest(OCIRequest):
    """
    Request to get a service provider device profile file.

    The response is either `ServiceProviderAccessDeviceFileGetResponse()` or
    `ErrorResponse()`.

    Replaced By: `ServiceProviderAccessDeviceFileGetRequest14sp8()`

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
        file_type (str): fileType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "file_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("file_type", "fileType", str, is_required=True),
        )


class ServiceProviderAccessDeviceFileGetRequest14sp8(OCIRequest):
    """
    Request to get a service provider device profile file.

    The response is either `ServiceProviderAccessDeviceFileGetResponse14sp8()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderAccessDeviceFileGetRequest16sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class ServiceProviderAccessDeviceFileGetRequest16sp1(OCIRequest):
    """
    Request to get a service provider device profile file.

    The response is either `ServiceProviderAccessDeviceFileGetResponse16sp1()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderAccessDeviceFileGetRequest20()`

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=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): serviceProviderId
        device_name (str): deviceName
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=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): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        device_name (str): deviceName
        tag_set_name (str): tagSetName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("tag_set_name", "tagSetName", str),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
        )


class ServiceProviderAccessDeviceGetLinkedLeafDeviceListRequest(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". It can be linked to only one tree
    device.  The list includes devices created at the system, service provider, and group
    levels.

    The response is either `ServiceProviderAccessDeviceGetLinkedLeafDeviceListResponse()`
    or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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". It can be linked to only one tree
    device.

    The response is either `ServiceProviderAccessDeviceGetLinkedTreeDeviceResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class ServiceProviderAccessDeviceGetRequest14(OCIRequest):
    """
    Requests the configuration of a specified service provider access device.

    The response is either `ServiceProviderAccessDeviceGetResponse14()` or
    `ErrorResponse()`.

    Replaced By: `ServiceProviderAccessDeviceGetRequest14sp3()`

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class ServiceProviderAccessDeviceGetRequest14sp3(OCIRequest):
    """
    Requests the configuration of a specified service provider access device.

    The response is either `ServiceProviderAccessDeviceGetResponse14sp3()` or
    `ErrorResponse()`.

    Replaced By: `ServiceProviderAccessDeviceGetRequest14sp6()`

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class ServiceProviderAccessDeviceGetRequest14sp6(OCIRequest):
    """
    Requests the configuration of a specified service provider access device.

    The response is either `ServiceProviderAccessDeviceGetResponse14sp6()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderAccessDeviceGetRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class ServiceProviderAccessDeviceGetRequest16(OCIRequest):
    """
    Requests the configuration of a specified service provider access device.

    The response is either `ServiceProviderAccessDeviceGetResponse16()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderAccessDeviceGetRequest19()`

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class ServiceProviderAccessDeviceGetRequest18sp1(OCIRequest):
    """
    Requests the configuration of a specified service provider access device.

    The response is either `ServiceProviderAccessDeviceGetResponse18sp1()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderAccessDeviceGetRequest22()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class ServiceProviderAccessDeviceGetRequest22(OCIRequest):
    """
    Requests the configuration of a specified service provider access device.

    The response is either `ServiceProviderAccessDeviceGetResponse22()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderAccessDeviceGetRequest24()`

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class ServiceProviderAccessDeviceGetRequest22V2(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 `ServiceProviderAccessDeviceGetResponse22V2()` or
    `ErrorResponse()`.

    Replaced By: `ServiceProviderAccessDeviceGetRequest24()`

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


class ServiceProviderAccessDeviceGetRequest22V3(OCIRequest):
    """
    Requests the configuration of a specified service provider access device.

    The response is either `ServiceProviderAccessDeviceGetResponse22V3()` or
    `ErrorResponse()`. The following elements are only used in AS data mode and ignored in
    XS data mode: deviceExternalId Replaced by:
    `ServiceProviderAccessDeviceGetRequest24()`

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


class ServiceProviderAccessDeviceGetRequest24(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 `ServiceProviderAccessDeviceGetResponse24()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


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): serviceProviderId
        device_name (str): deviceName
        line_port (str): linePort
        private_identity (str): privateIdentity *Optional*
        is_primary_line_port (bool): isPrimaryLinePort *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "line_port",
        "private_identity",
        "is_primary_line_port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("line_port", "linePort", str, is_required=True),
            E("private_identity", "privateIdentity", str),
            E("is_primary_line_port", "isPrimaryLinePort", bool),
        )


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): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): serviceProviderId
        device_name (str): deviceName
        tag_set_name (str): tagSetName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("tag_set_name", "tagSetName", str),
        )


class ServiceProviderAdminAddRequest14(OCIRequest):
    """
    Add a service provider administrator.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        user_id (str): userId
        first_name (str): firstName *Optional*
        last_name (str): lastName *Optional*
        password (str): password *Optional*
        language (str): language *Optional*
        administrator_type (str): administratorType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "user_id",
        "first_name",
        "last_name",
        "password",
        "language",
        "administrator_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("user_id", "userId", str, is_required=True),
            E("first_name", "firstName", str),
            E("last_name", "lastName", str),
            E("password", "password", str),
            E("language", "language", str),
            E("administrator_type", "administratorType", str, is_required=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): userId
        alternate_user_id (str): alternateUserId
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "alternate_user_id",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("alternate_user_id", "alternateUserId", str, is_required=True),
            E("description", "description", str),
        )


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): userId
        alternate_user_id (str): alternateUserId
    """

    __slots__: List[str] = [
        "user_id",
        "alternate_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("alternate_user_id", "alternateUserId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        alternate_user_id (str): alternateUserId
        new_alternate_user_id (str): newAlternateUserId *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "alternate_user_id",
        "new_alternate_user_id",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("alternate_user_id", "alternateUserId", str, is_required=True),
            E("new_alternate_user_id", "newAlternateUserId", str),
            E("description", "description", str),
        )


class ServiceProviderAdminDeleteRequest(OCIRequest):
    """
    Delete a service provider administrator.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderAdminGetPolicyRequest14(OCIRequest):
    """
    Requests the service provider administrator's policy settings.

    The response is either `ServiceProviderAdminGetPolicyResponse14()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class ServiceProviderAdminGetPolicyRequest16sp1(OCIRequest):
    """
    Requests the service provider administrator's policy settings.

    The response is either `ServiceProviderAdminGetPolicyResponse16sp1()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderAdminGetPolicyRequest17()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class ServiceProviderAdminGetPolicyRequest16sp2(OCIRequest):
    """
    Requests the service provider administrator's policy settings.

    The response is either `ServiceProviderAdminGetPolicyResponse16sp2()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class ServiceProviderAdminGetPolicyRequest17(OCIRequest):
    """
    Requests the service provider administrator's policy settings.

    The response is either `ServiceProviderAdminGetPolicyResponse17()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class ServiceProviderAdminGetPolicyRequest17sp1(OCIRequest):
    """
    Requests the service provider administrator's policy settings.

    The response is either `ServiceProviderAdminGetPolicyResponse17sp1()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class ServiceProviderAdminGetPolicyRequest17sp3(OCIRequest):
    """
    Requests the service provider administrator's policy settings.

    The response is either `ServiceProviderAdminGetPolicyResponse17sp3()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class ServiceProviderAdminGetPolicyRequest18(OCIRequest):
    """
    Requests the service provider administrator's policy settings.

    The response is either `ServiceProviderAdminGetPolicyResponse18()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderAdminGetPolicyRequest20()` in AS data
    mode

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class ServiceProviderAdminGetPolicyRequest20(OCIRequest):
    """
    Requests the service provider administrator's policy settings.

    The response is either `ServiceProviderAdminGetPolicyResponse20()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class ServiceProviderAdminGetRequest14(OCIRequest):
    """
    Get a service provider administrators profile.

    The response is either a `ServiceProviderAdminGetResponse14()` or an
    `ErrorResponse()`. Replaced by `ServiceProviderAdminGetRequest21sp1()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class ServiceProviderAdminGetRequest21sp1(OCIRequest):
    """
    Get a service provider administrators profile.

    The response is either a `ServiceProviderAdminGetResponse21sp1()` or an
    `ErrorResponse()`. Replaced by: `ServiceProviderAdminGetRequest22()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class ServiceProviderAdminGetRequest22(OCIRequest):
    """
    Get a service provider administrators profile.

    The response is either a `ServiceProviderAdminGetResponse22()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        profile_access (str): profileAccess *Optional*
        group_access (str): groupAccess *Optional*
        user_access (str): userAccess *Optional*
        admin_access (str): adminAccess *Optional*
        department_access (str): departmentAccess *Optional*
        access_device_access (str): accessDeviceAccess *Optional*
        phone_number_extension_access (str): phoneNumberExtensionAccess *Optional*
        calling_line_id_number_access (str): callingLineIdNumberAccess *Optional*
        service_access (str): serviceAccess *Optional*
        service_pack_access (str): servicePackAccess *Optional*
        session_admission_control_access (str): sessionAdmissionControlAccess *Optional*
        web_branding_access (str): webBrandingAccess *Optional*
        office_zone_access (str): officeZoneAccess *Optional*
        communication_barring_access (str): communicationBarringAccess *Optional*
        network_policy_access (str): networkPolicyAccess *Optional*
        number_activation_access (str): numberActivationAccess *Optional*
        dialable_caller_id_access (str): dialableCallerIDAccess *Optional*
        verify_translation_and_routing_access (str): verifyTranslationAndRoutingAccess
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "profile_access",
        "group_access",
        "user_access",
        "admin_access",
        "department_access",
        "access_device_access",
        "phone_number_extension_access",
        "calling_line_id_number_access",
        "service_access",
        "service_pack_access",
        "session_admission_control_access",
        "web_branding_access",
        "office_zone_access",
        "communication_barring_access",
        "network_policy_access",
        "number_activation_access",
        "dialable_caller_id_access",
        "verify_translation_and_routing_access",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("profile_access", "profileAccess", str),
            E("group_access", "groupAccess", str),
            E("user_access", "userAccess", str),
            E("admin_access", "adminAccess", str),
            E("department_access", "departmentAccess", str),
            E("access_device_access", "accessDeviceAccess", str),
            E("phone_number_extension_access", "phoneNumberExtensionAccess", str),
            E("calling_line_id_number_access", "callingLineIdNumberAccess", str),
            E("service_access", "serviceAccess", str),
            E("service_pack_access", "servicePackAccess", str),
            E("session_admission_control_access", "sessionAdmissionControlAccess", str),
            E("web_branding_access", "webBrandingAccess", str),
            E("office_zone_access", "officeZoneAccess", str),
            E("communication_barring_access", "communicationBarringAccess", str),
            E("network_policy_access", "networkPolicyAccess", str),
            E("number_activation_access", "numberActivationAccess", str),
            E("dialable_caller_id_access", "dialableCallerIDAccess", str),
            E(
                "verify_translation_and_routing_access",
                "verifyTranslationAndRoutingAccess",
                str,
            ),
        )


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()`.

    Attributes:
        user_id (str): userId
        first_name (str): firstName *Optional*
        last_name (str): lastName *Optional*
        password (str): password *Optional*
        language (str): language *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "first_name",
        "last_name",
        "password",
        "language",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("first_name", "firstName", str),
            E("last_name", "lastName", str),
            E("password", "password", str),
            E("language", "language", str),
        )


class ServiceProviderAdministratorPasswordRulesGetRequest(OCIRequest):
    """
    Requests the effective password rules setting for a service provider administrator The
    response is either `ServiceProviderAdministratorPasswordRulesGetResponse()` or
    `ErrorResponse()`.


    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        use_sp_level_ao_c_settings (bool): useSPLevelAoCSettings *Optional*
        delay_between_notification_seconds (int): delayBetweenNotificationSeconds
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_sp_level_ao_c_settings",
        "delay_between_notification_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("use_sp_level_ao_c_settings", "useSPLevelAoCSettings", bool),
            E(
                "delay_between_notification_seconds",
                "delayBetweenNotificationSeconds",
                int,
            ),
        )


class ServiceProviderAnswerConfirmationGetRequest(OCIRequest):
    """
    Get a service provider or enterprise's answer confirmation settings.

    The response is either a `ServiceProviderAnswerConfirmationGetResponse()` or an
    `ErrorResponse()`.

    Replaced By: `ServiceProviderAnswerConfirmationGetRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        application_server_set_name (str): applicationServerSetName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "application_server_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("application_server_set_name", "applicationServerSetName", str),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderBroadWorksCommunicatorModifyRequest(OCIRequest):
    """
    Request to modify the Configuration URL.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        configuration_server_url (str): configurationServerURL *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "configuration_server_url",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("configuration_server_url", "configurationServerURL", str),
        )


class ServiceProviderBroadWorksMobilityGetRequest(OCIRequest):
    """
    Get the service provider BroadWorks Mobility service settings.

    The response is either a `ServiceProviderBroadWorksMobilityGetResponse()` or an
    `ErrorResponse()`. Replaced by: `ServiceProviderBroadWorksMobilityGetRequest19sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderBroadWorksMobilityGetRequest19sp1(OCIRequest):
    """
    Get the service provider BroadWorks Mobility service settings.

    The response is either a `ServiceProviderBroadWorksMobilityGetResponse19sp1()` or an
    `ErrorResponse()`. Replaced by: `ServiceProviderBroadWorksMobilityGetRequest22()` in
    AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderBroadWorksMobilityGetRequest21sp1(OCIRequest):
    """
    Get the service provider BroadWorks Mobility service settings.

    The response is either a `ServiceProviderBroadWorksMobilityGetResponse21sp1()` or an
    `ErrorResponse()`. Replaced by `ServiceProviderBroadWorksMobilityGetRequest22V2()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderBroadWorksMobilityGetRequest22(OCIRequest):
    """
    Get the service provider BroadWorks Mobility service settings.

    The response is either a `ServiceProviderBroadWorksMobilityGetResponse22()` or an
    `ErrorResponse()`. Replaced by `ServiceProviderBroadWorksMobilityGetRequest22V2()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderBroadWorksMobilityGetRequest22V2(OCIRequest):
    """
    Get the service provider BroadWorks Mobility service settings.

    The response is either a `ServiceProviderBroadWorksMobilityGetResponse22V2()` or an
    `ErrorResponse()`. Replaced by `ServiceProviderBroadWorksMobilityGetRequest22V3()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderBroadWorksMobilityMobileSubscriberDirectoryNumberAddListRequest(
    OCIRequest,
):
    """
    Adds Mobile Subscriber Directory Numbers to a service provider.

    It is possible to add a single DN, or a list of DNs.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by
    `ServiceProviderBroadWorksMobilityMobileSubscriberDirectoryNumberAddListRequest21()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        mobile_subscriber_directory_number (List[str]): mobileSubscriberDirectoryNumber
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "mobile_subscriber_directory_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "mobile_subscriber_directory_number",
                "mobileSubscriberDirectoryNumber",
                str,
                is_array=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): serviceProviderId
        mobile_network_name (str): mobileNetworkName
        mobile_subscriber_directory_number (List[str]): mobileSubscriberDirectoryNumber
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "mobile_network_name",
        "mobile_subscriber_directory_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("mobile_network_name", "mobileNetworkName", str, is_required=True),
            E(
                "mobile_subscriber_directory_number",
                "mobileSubscriberDirectoryNumber",
                str,
                is_array=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): serviceProviderId
        mobile_subscriber_directory_number (List[str]): mobileSubscriberDirectoryNumber
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "mobile_subscriber_directory_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "mobile_subscriber_directory_number",
                "mobileSubscriberDirectoryNumber",
                str,
                is_array=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        use_setting_level (str): useSettingLevel *Optional*
        enable_location_services (bool): enableLocationServices *Optional*
        enable_msrn_lookup (bool): enableMSRNLookup *Optional*
        enable_mobile_state_checking (bool): enableMobileStateChecking *Optional*
        deny_call_originations (bool): denyCallOriginations *Optional*
        deny_call_terminations (bool): denyCallTerminations *Optional*
        enable_announcement_suppression (bool): enableAnnouncementSuppression *Optional*
        enable_internal_clid_delivery (bool): enableInternalCLIDDelivery *Optional*
        enable_internal_clid_delivery_access_locations (bool):
            enableInternalCLIDDeliveryAccessLocations *Optional*
        enable_enhanced_unreachable_state_checking (bool):
            enableEnhancedUnreachableStateChecking *Optional*
        enable_network_call_barring_status_check (bool):
            enableNetworkCallBarringStatusCheck *Optional*
        network_translation_index (str): networkTranslationIndex *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_setting_level",
        "enable_location_services",
        "enable_msrn_lookup",
        "enable_mobile_state_checking",
        "deny_call_originations",
        "deny_call_terminations",
        "enable_announcement_suppression",
        "enable_internal_clid_delivery",
        "enable_internal_clid_delivery_access_locations",
        "enable_enhanced_unreachable_state_checking",
        "enable_network_call_barring_status_check",
        "network_translation_index",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("use_setting_level", "useSettingLevel", str),
            E("enable_location_services", "enableLocationServices", bool),
            E("enable_msrn_lookup", "enableMSRNLookup", bool),
            E("enable_mobile_state_checking", "enableMobileStateChecking", bool),
            E("deny_call_originations", "denyCallOriginations", bool),
            E("deny_call_terminations", "denyCallTerminations", bool),
            E("enable_announcement_suppression", "enableAnnouncementSuppression", bool),
            E("enable_internal_clid_delivery", "enableInternalCLIDDelivery", bool),
            E(
                "enable_internal_clid_delivery_access_locations",
                "enableInternalCLIDDeliveryAccessLocations",
                bool,
            ),
            E(
                "enable_enhanced_unreachable_state_checking",
                "enableEnhancedUnreachableStateChecking",
                bool,
            ),
            E(
                "enable_network_call_barring_status_check",
                "enableNetworkCallBarringStatusCheck",
                bool,
            ),
            E("network_translation_index", "networkTranslationIndex", str),
        )


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): serviceProviderId
        device_type (str): deviceType
        force (bool): force *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
        "force",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("force", "force", bool),
        )


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): serviceProviderId
        device_name (str): deviceName
        force (bool): force *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "force",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("force", "force", bool),
        )


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): serviceProviderId
        device_name (str): deviceName
        ordered_line_port_list (List[str]): orderedLinePortList
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "ordered_line_port_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E(
                "ordered_line_port_list",
                "orderedLinePortList",
                str,
                is_required=True,
                is_array=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): serviceProviderId
        device_name (str): deviceName
        force (bool): force *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "force",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("force", "force", bool),
        )


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): serviceProviderId
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
        )


class ServiceProviderCallProcessingGetPolicyRequest14(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse14()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest14sp1(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse14sp1()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest14sp4(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse14sp4()` or an
    `ErrorResponse()`.

    Replaced By : `ServiceProviderCallProcessingGetPolicyRequest15()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest14sp7(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse14sp7()` or an
    `ErrorResponse()`.

    Replaced By: `ServiceProviderCallProcessingGetPolicyRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest15(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse15()` or an
    `ErrorResponse()`.

    Replaced By: `ServiceProviderCallProcessingGetPolicyRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest15sp2(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse15sp2()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest16(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse16()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest16sp2(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse16sp2()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest17(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse17()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest17sp3(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse17sp3()` or an
    `ErrorResponse()`. Replaced by `ServiceProviderCallProcessingGetPolicyResponse17sp4()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest17sp4(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse17sp4()` or an
    `ErrorResponse()`.

    Replaced By : `ServiceProviderCallProcessingGetPolicyRequest18sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest18sp1(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse18sp1()` or an
    `ErrorResponse()`. Replaced by: `ServiceProviderCallProcessingGetPolicyRequest19sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest19sp1(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse19sp1()` or an
    `ErrorResponse()`. Replaced by: `ServiceProviderCallProcessingGetPolicyRequest21sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest21sp1(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse21sp1()` or an
    `ErrorResponse()`. Replaced by: `ServiceProviderCallProcessingGetPolicyRequest21sp2()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest21sp2(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse21sp2()` or an
    `ErrorResponse()`. Replaced by: `ServiceProviderCallProcessingGetPolicyRequest22()` in
    AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest22(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse22()` or an
    `ErrorResponse()`. Replaced by: `ServiceProviderCallProcessingGetPolicyRequest22V2()`
    in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingGetPolicyRequest22V2(OCIRequest):
    """
    Request the service provider level data associated with Call Processing Policy.

    The response is either a `ServiceProviderCallProcessingGetPolicyResponse22V2()` or an
    `ErrorResponse()`. Replaced by: `ServiceProviderCallProcessingGetPolicyRequest22V3()`
    in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCallProcessingModifyPolicyRequest14(OCIRequest):
    """
    Modify the service provider level data associated with Call Processing Policy.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        media_policy_selection (str): mediaPolicySelection *Optional*
        supported_media_set_name (str): supportedMediaSetName *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_external_calls_via_private_dialing_plan (bool):
            overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        use_setting_level (str): useSettingLevel *Optional*
        conference_uri (str): conferenceURI *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "media_policy_selection",
        "supported_media_set_name",
        "network_usage_selection",
        "enforce_group_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_external_calls_via_private_dialing_plan",
        "enable_enterprise_extension_dialing",
        "enforce_enterprise_calling_line_identity_restriction",
        "use_setting_level",
        "conference_uri",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E("media_policy_selection", "mediaPolicySelection", str),
            E("supported_media_set_name", "supportedMediaSetName", str),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_external_calls_via_private_dialing_plan",
                "overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan",
                bool,
            ),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E("use_setting_level", "useSettingLevel", str),
            E("conference_uri", "conferenceURI", str),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
        )


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
    enterpriseCallsCLIDPolicy groupCallsCLIDPolicy 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): serviceProviderId
        use_service_provider_dclid_setting (bool): useServiceProviderDCLIDSetting
            *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        media_policy_selection (str): mediaPolicySelection *Optional*
        supported_media_set_name (str): supportedMediaSetName *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        use_setting_level (str): useSettingLevel *Optional*
        conference_uri (str): conferenceURI *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        group_calls_clid_policy (str): groupCallsCLIDPolicy *Optional*
        enable_phone_list_lookup (bool): enablePhoneListLookup *Optional*
        use_max_concurrent_terminating_alerting_requests (bool):
            useMaxConcurrentTerminatingAlertingRequests *Optional*
        max_concurrent_terminating_alerting_requests (int):
            maxConcurrentTerminatingAlertingRequests *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        route_override_domain (str): routeOverrideDomain *Optional*
        route_override_prefix (str): routeOverridePrefix *Optional*
        allow_mobile_dn_for_redirecting_identity (bool):
            allowMobileDNForRedirectingIdentity *Optional*
        enable_gateway_route_policy (bool): enableGatewayRoutePolicy *Optional*
        network_calls_gateway_route_identity (str): networkCallsGatewayRouteIdentity
            *Optional*
        network_url_calls_gateway_route_identity (str):
            networkURLCallsGatewayRouteIdentity *Optional*
        emergency_calls_gateway_route_identity (str): emergencyCallsGatewayRouteIdentity
            *Optional*
        repair_calls_gateway_route_identity (str): repairCallsGatewayRouteIdentity
            *Optional*
        call_typing_errors_gateway_route_identity (str):
            callTypingErrorsGatewayRouteIdentity *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_service_provider_dclid_setting",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "media_policy_selection",
        "supported_media_set_name",
        "network_usage_selection",
        "enforce_group_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "enable_enterprise_extension_dialing",
        "enforce_enterprise_calling_line_identity_restriction",
        "use_setting_level",
        "conference_uri",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "enable_dialable_caller_id",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "enterprise_calls_clid_policy",
        "group_calls_clid_policy",
        "enable_phone_list_lookup",
        "use_max_concurrent_terminating_alerting_requests",
        "max_concurrent_terminating_alerting_requests",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "route_override_domain",
        "route_override_prefix",
        "allow_mobile_dn_for_redirecting_identity",
        "enable_gateway_route_policy",
        "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",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "use_service_provider_dclid_setting",
                "useServiceProviderDCLIDSetting",
                bool,
            ),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E("media_policy_selection", "mediaPolicySelection", str),
            E("supported_media_set_name", "supportedMediaSetName", str),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E("use_setting_level", "useSettingLevel", str),
            E("conference_uri", "conferenceURI", str),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E("group_calls_clid_policy", "groupCallsCLIDPolicy", str),
            E("enable_phone_list_lookup", "enablePhoneListLookup", bool),
            E(
                "use_max_concurrent_terminating_alerting_requests",
                "useMaxConcurrentTerminatingAlertingRequests",
                bool,
            ),
            E(
                "max_concurrent_terminating_alerting_requests",
                "maxConcurrentTerminatingAlertingRequests",
                int,
            ),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("route_override_domain", "routeOverrideDomain", str),
            E("route_override_prefix", "routeOverridePrefix", str),
            E(
                "allow_mobile_dn_for_redirecting_identity",
                "allowMobileDNForRedirectingIdentity",
                bool,
            ),
            E("enable_gateway_route_policy", "enableGatewayRoutePolicy", bool),
            E(
                "network_calls_gateway_route_identity",
                "networkCallsGatewayRouteIdentity",
                str,
            ),
            E(
                "network_url_calls_gateway_route_identity",
                "networkURLCallsGatewayRouteIdentity",
                str,
            ),
            E(
                "emergency_calls_gateway_route_identity",
                "emergencyCallsGatewayRouteIdentity",
                str,
            ),
            E(
                "repair_calls_gateway_route_identity",
                "repairCallsGatewayRouteIdentity",
                str,
            ),
            E(
                "call_typing_errors_gateway_route_identity",
                "callTypingErrorsGatewayRouteIdentity",
                str,
            ),
        )


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): serviceProviderId
        criteria_name (List[str]): criteriaName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_array=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        criteria_name (List[str]): criteriaName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_array=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): serviceProviderId
        name (str): name
        description (str): description *Optional*
        match_digit_pattern (List[str]): matchDigitPattern *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "description",
        "match_digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("match_digit_pattern", "matchDigitPattern", str, is_array=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): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCommunicationBarringDigitPatternCriteriaGetRequest(OCIRequest):
    """
    Get an existing Digit Pattern Criteria.

    The response is either a
    `ServiceProviderCommunicationBarringDigitPatternCriteriaGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        add_match_digit_pattern (List[str]): addMatchDigitPattern *Optional*
        delete_match_digit_pattern (List[str]): deleteMatchDigitPattern *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "new_name",
        "description",
        "add_match_digit_pattern",
        "delete_match_digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E("add_match_digit_pattern", "addMatchDigitPattern", str, is_array=True),
            E(
                "delete_match_digit_pattern",
                "deleteMatchDigitPattern",
                str,
                is_array=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): serviceProviderId
        criteria_name (List[str]): criteriaName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True, is_array=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        criteria_name (List[str]): criteriaName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True, is_array=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): serviceProviderId
        name (str): name
        default_profile (str): defaultProfile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "default_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("default_profile", "defaultProfile", str),
        )


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): serviceProviderId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderCommunicationBarringProfileGetRequest(OCIRequest):
    """
    Get an existing Communication Barring Profile.

    The response is either a `ServiceProviderCommunicationBarringProfileGetResponse()` or
    an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class ServiceProviderCommunicationBarringProfileGetRequest17sp3(OCIRequest):
    """
    Get an existing Communication Barring Profile.

    The response is either a
    `ServiceProviderCommunicationBarringProfileGetResponse17sp3()` or an
    `ErrorResponse()`.

    Replaced By : ServiceProviderCommunicationBarringProfileGetRequest19sp1V2 in AS data
    mode

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class ServiceProviderCommunicationBarringProfileGetRequest19sp1(OCIRequest):
    """
    Get an existing Communication Barring Profile.

    The response is either a
    `ServiceProviderCommunicationBarringProfileGetResponse19sp1()` or an
    `ErrorResponse()`.

    Replaced By : ServiceProviderCommunicationBarringProfileGetRequest19sp1V2 in AS data
    mode

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
        )


class ServiceProviderDeleteRequest(OCIRequest):
    """
    Delete a service provider or enterprise.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        use_service_provider_settings (bool): useServiceProviderSettings *Optional*
        allow_activation_code_request_by_user (bool): allowActivationCodeRequestByUser
            *Optional*
        send_activation_code_in_email (bool): sendActivationCodeInEmail *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_service_provider_settings",
        "allow_activation_code_request_by_user",
        "send_activation_code_in_email",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("use_service_provider_settings", "useServiceProviderSettings", bool),
            E(
                "allow_activation_code_request_by_user",
                "allowActivationCodeRequestByUser",
                bool,
            ),
            E("send_activation_code_in_email", "sendActivationCodeInEmail", bool),
        )


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): serviceProviderId
        device_type (str): deviceType
        count_only_reset_supported_device (bool): countOnlyResetSupportedDevice *Optional*
        allow_unmanaged_device_type (bool): allowUnmanagedDeviceType *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
        "count_only_reset_supported_device",
        "allow_unmanaged_device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E(
                "count_only_reset_supported_device",
                "countOnlyResetSupportedDevice",
                bool,
            ),
            E("allow_unmanaged_device_type", "allowUnmanagedDeviceType", bool),
        )


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): serviceProviderId
        event_id (List[int]): eventId
    """

    __slots__: List[str] = [
        "service_provider_id",
        "event_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("event_id", "eventId", int, is_required=True, is_array=True),
        )


class ServiceProviderDeviceProfileAuthenticationPasswordRulesGetRequest(OCIRequest):
    """
    Request to get the service provider level device profile authentication password rule
    settings.

    The response is either a
    `ServiceProviderDeviceProfileAuthenticationPasswordRulesGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        use_service_provider_settings (bool): useServiceProviderSettings *Optional*
        disallow_authentication_name (bool): disallowAuthenticationName *Optional*
        disallow_old_password (bool): disallowOldPassword *Optional*
        disallow_reversed_old_password (bool): disallowReversedOldPassword *Optional*
        restrict_min_digits (bool): restrictMinDigits *Optional*
        min_digits (int): minDigits *Optional*
        restrict_min_upper_case_letters (bool): restrictMinUpperCaseLetters *Optional*
        min_upper_case_letters (int): minUpperCaseLetters *Optional*
        restrict_min_lower_case_letters (bool): restrictMinLowerCaseLetters *Optional*
        min_lower_case_letters (int): minLowerCaseLetters *Optional*
        restrict_min_non_alphanumeric_characters (bool):
            restrictMinNonAlphanumericCharacters *Optional*
        min_non_alphanumeric_characters (int): minNonAlphanumericCharacters *Optional*
        min_length (int): minLength *Optional*
        send_permanent_lockout_notification (bool): sendPermanentLockoutNotification
            *Optional*
        permanent_lockout_notify_email_address (str): permanentLockoutNotifyEmailAddress
            *Optional*
        device_profile_authentication_lockout_type (str):
            deviceProfileAuthenticationLockoutType *Optional*
        device_profile_temporary_lockout_threshold (int):
            deviceProfileTemporaryLockoutThreshold *Optional*
        device_profile_wait_algorithm (str): deviceProfileWaitAlgorithm *Optional*
        device_profile_lockout_fixed_minutes (str): deviceProfileLockoutFixedMinutes
            *Optional*
        device_profile_permanent_lockout_threshold (int):
            deviceProfilePermanentLockoutThreshold *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_service_provider_settings",
        "disallow_authentication_name",
        "disallow_old_password",
        "disallow_reversed_old_password",
        "restrict_min_digits",
        "min_digits",
        "restrict_min_upper_case_letters",
        "min_upper_case_letters",
        "restrict_min_lower_case_letters",
        "min_lower_case_letters",
        "restrict_min_non_alphanumeric_characters",
        "min_non_alphanumeric_characters",
        "min_length",
        "send_permanent_lockout_notification",
        "permanent_lockout_notify_email_address",
        "device_profile_authentication_lockout_type",
        "device_profile_temporary_lockout_threshold",
        "device_profile_wait_algorithm",
        "device_profile_lockout_fixed_minutes",
        "device_profile_permanent_lockout_threshold",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("use_service_provider_settings", "useServiceProviderSettings", bool),
            E("disallow_authentication_name", "disallowAuthenticationName", bool),
            E("disallow_old_password", "disallowOldPassword", bool),
            E("disallow_reversed_old_password", "disallowReversedOldPassword", bool),
            E("restrict_min_digits", "restrictMinDigits", bool),
            E("min_digits", "minDigits", int),
            E("restrict_min_upper_case_letters", "restrictMinUpperCaseLetters", bool),
            E("min_upper_case_letters", "minUpperCaseLetters", int),
            E("restrict_min_lower_case_letters", "restrictMinLowerCaseLetters", bool),
            E("min_lower_case_letters", "minLowerCaseLetters", int),
            E(
                "restrict_min_non_alphanumeric_characters",
                "restrictMinNonAlphanumericCharacters",
                bool,
            ),
            E("min_non_alphanumeric_characters", "minNonAlphanumericCharacters", int),
            E("min_length", "minLength", int),
            E(
                "send_permanent_lockout_notification",
                "sendPermanentLockoutNotification",
                bool,
            ),
            E(
                "permanent_lockout_notify_email_address",
                "permanentLockoutNotifyEmailAddress",
                str,
            ),
            E(
                "device_profile_authentication_lockout_type",
                "deviceProfileAuthenticationLockoutType",
                str,
            ),
            E(
                "device_profile_temporary_lockout_threshold",
                "deviceProfileTemporaryLockoutThreshold",
                int,
            ),
            E("device_profile_wait_algorithm", "deviceProfileWaitAlgorithm", str),
            E(
                "device_profile_lockout_fixed_minutes",
                "deviceProfileLockoutFixedMinutes",
                str,
            ),
            E(
                "device_profile_permanent_lockout_threshold",
                "deviceProfilePermanentLockoutThreshold",
                int,
            ),
        )


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): serviceProviderId
        device_type (str): deviceType
        tag_name (str): tagName
        is_tag_value_encrypted (bool): isTagValueEncrypted
        tag_value (str): tagValue *Optional*
        tag_value_to_encrypt (str): tagValueToEncrypt *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
        "tag_name",
        "is_tag_value_encrypted",
        "tag_value",
        "tag_value_to_encrypt",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True),
            E("is_tag_value_encrypted", "isTagValueEncrypted", bool, is_required=True),
            E("tag_value", "tagValue", str),
            E("tag_value_to_encrypt", "tagValueToEncrypt", str),
        )


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): serviceProviderId
        device_type (str): deviceType
        tag_name (List[str]): tagName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
        "tag_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True, is_array=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): serviceProviderId
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=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): serviceProviderId
        device_type (str): deviceType
        tag_name (str): tagName
        tag_value (str): tagValue *Optional*
        tag_value_to_encrypt (str): tagValueToEncrypt *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
        "tag_name",
        "tag_value",
        "tag_value_to_encrypt",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True),
            E("tag_value", "tagValue", str),
            E("tag_value_to_encrypt", "tagValueToEncrypt", str),
        )


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): serviceProviderId
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=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): serviceProviderId
        device_type (str): deviceType
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=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): serviceProviderId
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=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): serviceProviderId
        device_type (str): deviceType
        tag_set_name (str): tagSetName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("tag_set_name", "tagSetName", str),
        )


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): serviceProviderId
        access_code (str): accessCode
        include_code_for_network_translations_and_routing (bool):
            includeCodeForNetworkTranslationsAndRouting
        include_code_for_screening_services (bool): includeCodeForScreeningServices
        enable_secondary_dial_tone (bool): enableSecondaryDialTone
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "access_code",
        "include_code_for_network_translations_and_routing",
        "include_code_for_screening_services",
        "enable_secondary_dial_tone",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("access_code", "accessCode", str, is_required=True),
            E(
                "include_code_for_network_translations_and_routing",
                "includeCodeForNetworkTranslationsAndRouting",
                bool,
                is_required=True,
            ),
            E(
                "include_code_for_screening_services",
                "includeCodeForScreeningServices",
                bool,
                is_required=True,
            ),
            E(
                "enable_secondary_dial_tone",
                "enableSecondaryDialTone",
                bool,
                is_required=True,
            ),
            E("description", "description", str),
        )


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): serviceProviderId
        access_code (str): accessCode
    """

    __slots__: List[str] = [
        "service_provider_id",
        "access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("access_code", "accessCode", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        access_code (str): accessCode
    """

    __slots__: List[str] = [
        "service_provider_id",
        "access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("access_code", "accessCode", str, is_required=True),
        )


class ServiceProviderDialPlanPolicyGetRequest(OCIRequest):
    """
    Request the Service Provider level data associated with Dial Plan Policy.

    The response is either a `ServiceProviderDialPlanPolicyGetResponse()` or an
    `ErrorResponse()`. Replaced by: `ServiceProviderDialPlanPolicyGetRequest17()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderDialPlanPolicyGetRequest17(OCIRequest):
    """
    Request the Service Provider level data associated with Dial Plan Policy.

    The response is either a `ServiceProviderDialPlanPolicyGetResponse17()` or an
    `ErrorResponse()`. Replaced by: `ServiceProviderDialPlanPolicyGetRequest22()` in AS
    data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        access_code (str): accessCode
        include_code_for_network_translations_and_routing (bool):
            includeCodeForNetworkTranslationsAndRouting *Optional*
        include_code_for_screening_services (bool): includeCodeForScreeningServices
            *Optional*
        enable_secondary_dial_tone (bool): enableSecondaryDialTone *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "access_code",
        "include_code_for_network_translations_and_routing",
        "include_code_for_screening_services",
        "enable_secondary_dial_tone",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("access_code", "accessCode", str, is_required=True),
            E(
                "include_code_for_network_translations_and_routing",
                "includeCodeForNetworkTranslationsAndRouting",
                bool,
            ),
            E(
                "include_code_for_screening_services",
                "includeCodeForScreeningServices",
                bool,
            ),
            E("enable_secondary_dial_tone", "enableSecondaryDialTone", bool),
            E("description", "description", str),
        )


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): serviceProviderId
        requires_access_code_for_public_calls (bool): requiresAccessCodeForPublicCalls
            *Optional*
        allow_e164_public_calls (bool): allowE164PublicCalls *Optional*
        prefer_e164_number_format_for_callback_services (bool):
            preferE164NumberFormatForCallbackServices *Optional*
        public_digit_map (str): publicDigitMap *Optional*
        private_digit_map (str): privateDigitMap *Optional*
        override_resolved_device_digit_map (bool): overrideResolvedDeviceDigitMap
            *Optional*
        device_digit_map (str): deviceDigitMap *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "requires_access_code_for_public_calls",
        "allow_e164_public_calls",
        "prefer_e164_number_format_for_callback_services",
        "public_digit_map",
        "private_digit_map",
        "override_resolved_device_digit_map",
        "device_digit_map",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "requires_access_code_for_public_calls",
                "requiresAccessCodeForPublicCalls",
                bool,
            ),
            E("allow_e164_public_calls", "allowE164PublicCalls", bool),
            E(
                "prefer_e164_number_format_for_callback_services",
                "preferE164NumberFormatForCallbackServices",
                bool,
            ),
            E("public_digit_map", "publicDigitMap", str),
            E("private_digit_map", "privateDigitMap", str),
            E(
                "override_resolved_device_digit_map",
                "overrideResolvedDeviceDigitMap",
                bool,
            ),
            E("device_digit_map", "deviceDigitMap", str),
        )


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): serviceProviderId
        name (str): name
        description (str): description *Optional*
        prefix_digits (str): prefixDigits *Optional*
        match_call_type (List[str]): matchCallType *Optional*
        match_alternate_call_indicator (List[str]): matchAlternateCallIndicator *Optional*
        match_local_category (bool): matchLocalCategory
        match_national_category (bool): matchNationalCategory
        match_interlata_category (bool): matchInterlataCategory
        match_intralata_category (bool): matchIntralataCategory
        match_international_category (bool): matchInternationalCategory
        match_private_category (bool): matchPrivateCategory
        match_emergency_category (bool): matchEmergencyCategory
        match_other_category (bool): matchOtherCategory
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "description",
        "prefix_digits",
        "match_call_type",
        "match_alternate_call_indicator",
        "match_local_category",
        "match_national_category",
        "match_interlata_category",
        "match_intralata_category",
        "match_international_category",
        "match_private_category",
        "match_emergency_category",
        "match_other_category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("prefix_digits", "prefixDigits", str),
            E("match_call_type", "matchCallType", str, is_array=True),
            E(
                "match_alternate_call_indicator",
                "matchAlternateCallIndicator",
                str,
                is_array=True,
            ),
            E("match_local_category", "matchLocalCategory", bool, is_required=True),
            E(
                "match_national_category",
                "matchNationalCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_interlata_category",
                "matchInterlataCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_intralata_category",
                "matchIntralataCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_international_category",
                "matchInternationalCategory",
                bool,
                is_required=True,
            ),
            E("match_private_category", "matchPrivateCategory", bool, is_required=True),
            E(
                "match_emergency_category",
                "matchEmergencyCategory",
                bool,
                is_required=True,
            ),
            E("match_other_category", "matchOtherCategory", bool, is_required=True),
        )


class ServiceProviderDialableCallerIDCriteriaDeleteRequest(OCIRequest):
    """
    Delete a Dialable Caller ID Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
        name (str): name
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        access_code (str): accessCode *Optional*
        public_digit_map (str): publicDigitMap *Optional*
        private_digit_map (str): privateDigitMap *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "access_code",
        "public_digit_map",
        "private_digit_map",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("access_code", "accessCode", str),
            E("public_digit_map", "publicDigitMap", str),
            E("private_digit_map", "privateDigitMap", str),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderDnGetStatusListRequest(OCIRequest):
    """
    Validates DNs given in the request The response is
    `ServiceProviderDnGetStatusListResponse()`.


    Attributes:
        service_provider_id (str): serviceProviderId
        dn (List[str]): dn
    """

    __slots__: List[str] = [
        "service_provider_id",
        "dn",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("dn", "dn", str, is_required=True, is_array=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): serviceProviderId
        domain (List[str]): domain
    """

    __slots__: List[str] = [
        "service_provider_id",
        "domain",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("domain", "domain", str, is_required=True, is_array=True),
        )


class ServiceProviderDomainGetAssignedListRequest(OCIRequest):
    """
    Requests the list of all matching domains assigned to a service provider .

    The response is either `ServiceProviderDomainGetAssignedListResponse()` or
    `ErrorResponse()`. Replaced by `ServiceProviderDomainGetAssignedListRequest22()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        domain (List[str]): domain
    """

    __slots__: List[str] = [
        "service_provider_id",
        "domain",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("domain", "domain", str, is_required=True, is_array=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        send_emergency_call_notification_email (bool): sendEmergencyCallNotificationEmail
            *Optional*
        emergency_call_notify_email_address (str): emergencyCallNotifyEmailAddress
            *Optional*
        allow_group_override (bool): allowGroupOverride *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "send_emergency_call_notification_email",
        "emergency_call_notify_email_address",
        "allow_group_override",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "send_emergency_call_notification_email",
                "sendEmergencyCallNotificationEmail",
                bool,
            ),
            E(
                "emergency_call_notify_email_address",
                "emergencyCallNotifyEmailAddress",
                str,
            ),
            E("allow_group_override", "allowGroupOverride", bool),
        )


class ServiceProviderEnhancedCallLogsGetRequest(OCIRequest):
    """
    Get the service provider's enhanced call log settings.

    The response is either a `ServiceProviderEnhancedCallLogsGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        max_logged_calls (int): maxLoggedCalls *Optional*
        call_expiration_days (int): callExpirationDays *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "max_logged_calls",
        "call_expiration_days",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("max_logged_calls", "maxLoggedCalls", int),
            E("call_expiration_days", "callExpirationDays", int),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        name (str): name *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str),
        )


class ServiceProviderExtensionLengthGetRequest(OCIRequest):
    """
    Request the service provider's extension length.

    The response is either a `ServiceProviderExtensionLengthGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        default_extension_length (int): defaultExtensionLength *Optional*
        location_routing_prefix_digit (int): locationRoutingPrefixDigit *Optional*
        location_code_length (int): locationCodeLength *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "default_extension_length",
        "location_routing_prefix_digit",
        "location_code_length",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("default_extension_length", "defaultExtensionLength", int),
            E("location_routing_prefix_digit", "locationRoutingPrefixDigit", int),
            E("location_code_length", "locationCodeLength", int),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        prefix_digits (str): prefixDigits *Optional*
        server_net_address (str): serverNetAddress *Optional*
        server_port (int): serverPort *Optional*
        timeout_seconds (int): timeoutSeconds *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "prefix_digits",
        "server_net_address",
        "server_port",
        "timeout_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("prefix_digits", "prefixDigits", str),
            E("server_net_address", "serverNetAddress", str),
            E("server_port", "serverPort", int),
            E("timeout_seconds", "timeoutSeconds", int),
        )


class ServiceProviderFeatureAccessCodeGetListRequest(OCIRequest):
    """
    Get the list of feature access codes for a service provider or enterprise.

    The response is either a `ServiceProviderFeatureAccessCodeGetListResponse()` or an
    `ErrorResponse()`.

    Replaced By : `ServiceProviderFeatureAccessCodeGetListRequest20()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderFeatureAccessCodeGetListRequest20(OCIRequest):
    """
    Get the list of feature access codes for a service provider or enterprise.

    The response is either a `ServiceProviderFeatureAccessCodeGetListResponse20()` or an
    `ErrorResponse()`. In release 20 the "Call Recording" FAC name is changed to "Call
    Recording - Start". Replaced by: `ServiceProviderFeatureAccessCodeGetListRequest21()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderFileRepositoryDeviceUserAddRequest(OCIRequest):
    """
    Add a new service provider file repository user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        file_repository_name (str): fileRepositoryName
        user_name (str): userName
        password (str): password
        allow_put (bool): allowPut
        allow_delete (bool): allowDelete
        allow_get (bool): allowGet
    """

    __slots__: List[str] = [
        "service_provider_id",
        "file_repository_name",
        "user_name",
        "password",
        "allow_put",
        "allow_delete",
        "allow_get",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
            E("user_name", "userName", str, is_required=True),
            E("password", "password", str, is_required=True),
            E("allow_put", "allowPut", bool, is_required=True),
            E("allow_delete", "allowDelete", bool, is_required=True),
            E("allow_get", "allowGet", bool, is_required=True),
        )


class ServiceProviderFileRepositoryDeviceUserDeleteRequest(OCIRequest):
    """
    Delete a service provider file repository user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        file_repository_name (str): fileRepositoryName
        user_name (str): userName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "file_repository_name",
        "user_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
            E("user_name", "userName", str, is_required=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): serviceProviderId
        file_repository_name (str): fileRepositoryName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "file_repository_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
        )


class ServiceProviderFileRepositoryDeviceUserModifyRequest(OCIRequest):
    """
    Modify a service provider file repository user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        file_repository_name (str): fileRepositoryName
        user_name (str): userName
        password (str): password *Optional*
        allow_put (bool): allowPut *Optional*
        allow_delete (bool): allowDelete *Optional*
        allow_get (bool): allowGet *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "file_repository_name",
        "user_name",
        "password",
        "allow_put",
        "allow_delete",
        "allow_get",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
            E("user_name", "userName", str, is_required=True),
            E("password", "password", str),
            E("allow_put", "allowPut", bool),
            E("allow_delete", "allowDelete", bool),
            E("allow_get", "allowGet", bool),
        )


class ServiceProviderGetAvailableLeafDeviceListRequest(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". It can be linked to only one tree
    device.  The list returned includes devices created at the system, service provider,
    and group levels.

    The response is either `ServiceProviderGetAvailableLeafDeviceListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderGetDefaultRequest(OCIRequest):
    """
    Request the default profile for a service provider or enterprise.

    The response is either a `ServiceProviderGetDefaultResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class ServiceProviderGetRequest13mp2(OCIRequest):
    """
    Get the profile for a service provider or enterprise.

    The response is either a `ServiceProviderGetResponse13mp2()` or an `ErrorResponse()`.
    Replaced by: `ServiceProviderGetRequest17sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderGetRequest17sp1(OCIRequest):
    """
    Get the profile for a service provider or enterprise.

    The response is either a `ServiceProviderGetResponse17sp1()` or an `ErrorResponse()`.
    Replaced by: `ServiceProviderGetRequest22()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderGetRequest22(OCIRequest):
    """
    Get the profile for a service provider or enterprise.

    The response is either a `ServiceProviderGetResponse22()` or an `ErrorResponse()`.
    Replaced by `ServiceProviderGetRequest22V2()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderGetRequest22V2(OCIRequest):
    """
    Get the profile for a service provider or enterprise.

    The response is either a `ServiceProviderGetResponse22V2()` or an `ErrorResponse()`.
    Replaced by `ServiceProviderGetRequest22V3()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderGetRequest22V3(OCIRequest):
    """
    Get the profile for a service provider or enterprise.

    The response is either a `ServiceProviderGetResponse22V3()` or an `ErrorResponse()`.
    Replaced by: `ServiceProviderGetRequest22V4()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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 (str): serviceProviderId *Optional*
        service_provider_external_id (str): serviceProviderExternalId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_provider_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("service_provider_external_id", "serviceProviderExternalId", str),
        )


class ServiceProviderGroupPagingTargetsCapacityGetRequest(OCIRequest):
    """
    Request the maximum number of target users per paging group configured for a service
    provider.

    The response is either a `ServiceProviderGroupPagingTargetsCapacityGetResponse()` or
    an `ErrorResponse()`. Replaced by:
    `ServiceProviderGroupPagingTargetsCapacityGetRequest22()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderGroupPagingTargetsCapacityModifyRequest(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()`. Replaced by:
    `ServiceProviderGroupPagingTargetsCapacityModifyRequest22()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        maximum_target_users (int): maximumTargetUsers *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "maximum_target_users",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("maximum_target_users", "maximumTargetUsers", int),
        )


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): serviceProviderId
        maximum_target_users (int): maximumTargetUsers *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "maximum_target_users",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("maximum_target_users", "maximumTargetUsers", int),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        process_cbc_carrier_selection (bool): processCbcCarrierSelection *Optional*
        preselected_local_carrier (str): preselectedLocalCarrier *Optional*
        preselected_distant_carrier (str): preselectedDistantCarrier *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "process_cbc_carrier_selection",
        "preselected_local_carrier",
        "preselected_distant_carrier",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("process_cbc_carrier_selection", "processCbcCarrierSelection", bool),
            E("preselected_local_carrier", "preselectedLocalCarrier", str),
            E("preselected_distant_carrier", "preselectedDistantCarrier", str),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderInCallServiceActivationGetRequest(OCIRequest):
    """
    Request the service provider's DTMF based in-call service activation trigger
    attributes.

    The response is either a `ServiceProviderInCallServiceActivationGetResponse()` or an
    `ErrorResponse()`. Replaced by: `ServiceProviderInCallServiceActivationGetRequest17()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderInCallServiceActivationModifyRequest(OCIRequest):
    """
    Modifies the service provider's DTMF based in-call service activation trigger
    attributes.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `ServiceProviderInCallServiceActivationModifyRequest17()`

    Attributes:
        service_provider_id (str): serviceProviderId
        activation_digits (str): activationDigits *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "activation_digits",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("activation_digits", "activationDigits", str),
        )


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): serviceProviderId
        flash_activation_digits (str): flashActivationDigits *Optional*
        call_transfer_activation_digits (str): callTransferActivationDigits *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "flash_activation_digits",
        "call_transfer_activation_digits",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("flash_activation_digits", "flashActivationDigits", str),
            E("call_transfer_activation_digits", "callTransferActivationDigits", str),
        )


class ServiceProviderIntegratedIMPGetRequest(OCIRequest):
    """
    Get the Integrated IMP service attributes for the service provider.

    The response is either `ServiceProviderIntegratedIMPGetResponse()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderIntegratedIMPGetRequest21()` in AS
    data mode

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderIntegratedIMPGetRequest21(OCIRequest):
    """
    Get the Integrated IMP service attributes for the service provider.

    The response is either `ServiceProviderIntegratedIMPGetResponse21()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderIntegratedIMPGetRequest21sp1()` in AS
    data mode

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderIntegratedIMPGetRequest21sp1(OCIRequest):
    """
    Get the Integrated IMP service attributes for the service provider.

    The response is either `ServiceProviderIntegratedIMPGetResponse21sp1()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderIntegratedIMPGetRequest22()` in AS
    data mode

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        use_system_service_domain (bool): useSystemServiceDomain *Optional*
        service_domain (str): serviceDomain *Optional*
        service_port (int): servicePort *Optional*
        use_system_messaging_server (bool): useSystemMessagingServer *Optional*
        provisioning_url (str): provisioningUrl *Optional*
        provisioning_user_id (str): provisioningUserId *Optional*
        provisioning_password (str): provisioningPassword *Optional*
        bosh_url (str): boshURL *Optional*
        default_imp_id_type (str): defaultImpIdType *Optional*
        use_reseller_imp_id_setting (bool): useResellerIMPIdSetting *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_system_service_domain",
        "service_domain",
        "service_port",
        "use_system_messaging_server",
        "provisioning_url",
        "provisioning_user_id",
        "provisioning_password",
        "bosh_url",
        "default_imp_id_type",
        "use_reseller_imp_id_setting",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("use_system_service_domain", "useSystemServiceDomain", bool),
            E("service_domain", "serviceDomain", str),
            E("service_port", "servicePort", int),
            E("use_system_messaging_server", "useSystemMessagingServer", bool),
            E("provisioning_url", "provisioningUrl", str),
            E("provisioning_user_id", "provisioningUserId", str),
            E("provisioning_password", "provisioningPassword", str),
            E("bosh_url", "boshURL", str),
            E("default_imp_id_type", "defaultImpIdType", str),
            E("use_reseller_imp_id_setting", "useResellerIMPIdSetting", bool),
        )


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): serviceProviderId
        language (str): language
    """

    __slots__: List[str] = [
        "service_provider_id",
        "language",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("language", "language", str, is_required=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): serviceProviderId
        language (str): language
    """

    __slots__: List[str] = [
        "service_provider_id",
        "language",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("language", "language", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        language (str): language
        become_default_language (bool): becomeDefaultLanguage *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "language",
        "become_default_language",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("language", "language", str, is_required=True),
            E("become_default_language", "becomeDefaultLanguage", bool),
        )


class ServiceProviderMWIDeliveryToMobileEndpointCustomTemplateDeleteRequest(OCIRequest):
    """
    Delete a MWI Delivery to Mobile Endpoint Custom Template.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        language (str): language
        type (str): type
    """

    __slots__: List[str] = [
        "service_provider_id",
        "language",
        "type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("language", "language", str, is_required=True),
            E("type", "type", str, is_required=True),
        )


class ServiceProviderMWIDeliveryToMobileEndpointCustomTemplateGetRequest(OCIRequest):
    """
    Request a MWI Delivery to Mobile Endpoint Custom Template.

    The response is either a
    `ServiceProviderMWIDeliveryToMobileEndpointCustomTemplateGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        language (str): language
        type (str): type
    """

    __slots__: List[str] = [
        "service_provider_id",
        "language",
        "type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("language", "language", str, is_required=True),
            E("type", "type", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        use_system_play_mct_warning_announcement (bool):
            useSystemPlayMCTWarningAnnouncement *Optional*
        play_mct_warning_announcement (bool): playMCTWarningAnnouncement *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_system_play_mct_warning_announcement",
        "play_mct_warning_announcement",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "use_system_play_mct_warning_announcement",
                "useSystemPlayMCTWarningAnnouncement",
                bool,
            ),
            E("play_mct_warning_announcement", "playMCTWarningAnnouncement", bool),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderNetworkClassOfServiceAssignListRequest(OCIRequest):
    """
    Assign a list of Network Classes of Service to a service provider.

    The Element defaultNetworkClassOfService is required only for the first assignment,
    for subsequent assignments it is optional.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By : `ServiceProviderNetworkClassOfServiceAssignListRequest21()` in AS data
    mode

    Attributes:
        service_provider_id (str): serviceProviderId
        network_class_of_service (List[str]): networkClassOfService *Optional*
        default_network_class_of_service (str): defaultNetworkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "network_class_of_service",
        "default_network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("network_class_of_service", "networkClassOfService", str, is_array=True),
            E("default_network_class_of_service", "defaultNetworkClassOfService", str),
        )


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): serviceProviderId
        network_class_of_service (List[str]): networkClassOfService
    """

    __slots__: List[str] = [
        "service_provider_id",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "network_class_of_service",
                "networkClassOfService",
                str,
                is_required=True,
                is_array=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): serviceProviderId
        network_class_of_service (str): networkClassOfService
    """

    __slots__: List[str] = [
        "service_provider_id",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "network_class_of_service",
                "networkClassOfService",
                str,
                is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        network_class_of_service (str): networkClassOfService
    """

    __slots__: List[str] = [
        "service_provider_id",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "network_class_of_service",
                "networkClassOfService",
                str,
                is_required=True,
            ),
        )


class ServiceProviderNetworkClassOfServiceUnassignListRequest(OCIRequest):
    """
    Unassign a list of Network Classes of Service from a service provider.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By : `ServiceProviderNetworkClassOfServiceUnassignListRequest21()` in AS data
    mode

    Attributes:
        service_provider_id (str): serviceProviderId
        network_class_of_service (List[str]): networkClassOfService *Optional*
        default_network_class_of_service (str): defaultNetworkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "network_class_of_service",
        "default_network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("network_class_of_service", "networkClassOfService", str, is_array=True),
            E("default_network_class_of_service", "defaultNetworkClassOfService", str),
        )


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): serviceProviderId
        digit_pattern (List[str]): digitPattern
    """

    __slots__: List[str] = [
        "service_provider_id",
        "digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("digit_pattern", "digitPattern", str, is_required=True, is_array=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): serviceProviderId
        enable_number_portability_query_for_outgoing_calls (bool):
            enableNumberPortabilityQueryForOutgoingCalls *Optional*
        enable_number_portability_query_for_incoming_calls (bool):
            enableNumberPortabilityQueryForIncomingCalls *Optional*
        enable_number_portability_query_for_network_calls_only (bool):
            enableNumberPortabilityQueryForNetworkCallsOnly *Optional*
        delete_digit_pattern (List[str]): deleteDigitPattern *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enable_number_portability_query_for_outgoing_calls",
        "enable_number_portability_query_for_incoming_calls",
        "enable_number_portability_query_for_network_calls_only",
        "delete_digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "enable_number_portability_query_for_outgoing_calls",
                "enableNumberPortabilityQueryForOutgoingCalls",
                bool,
            ),
            E(
                "enable_number_portability_query_for_incoming_calls",
                "enableNumberPortabilityQueryForIncomingCalls",
                bool,
            ),
            E(
                "enable_number_portability_query_for_network_calls_only",
                "enableNumberPortabilityQueryForNetworkCallsOnly",
                bool,
            ),
            E("delete_digit_pattern", "deleteDigitPattern", str, is_array=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): serviceProviderId
        office_zone_name (List[str]): officeZoneName *Optional*
        default_office_zone_name (str): defaultOfficeZoneName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "office_zone_name",
        "default_office_zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("office_zone_name", "officeZoneName", str, is_array=True),
            E("default_office_zone_name", "defaultOfficeZoneName", str),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        office_zone_name (List[str]): officeZoneName *Optional*
        default_office_zone_name (str): defaultOfficeZoneName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "office_zone_name",
        "default_office_zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("office_zone_name", "officeZoneName", str, is_array=True),
            E("default_office_zone_name", "defaultOfficeZoneName", str),
        )


class ServiceProviderPasswordRulesGetRequest13mp2(OCIRequest):
    """
    Requests the service provider's password rules setting applicable to Administrators
    (Group and Department) and Users.

    The response is either `ServiceProviderPasswordRulesGetResponse13mp2()` or
    `ErrorResponse()`.

    Replaced By: `ServiceProviderPasswordRulesGetRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderPasswordRulesGetRequest16(OCIRequest):
    """
    Requests the service provider's password rules setting applicable to Administrators
    (Group and Department) and Users.

    The response is either `ServiceProviderPasswordRulesGetResponse16()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderPasswordRulesGetRequest22()` in AS
    data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderPasswordRulesGetRequest22(OCIRequest):
    """
    Requests the service provider's password rules setting applicable to Administrators
    (Group and Department) and Users.

    The response is either `ServiceProviderPasswordRulesGetResponse22()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderPasswordRulesModifyRequest(OCIRequest):
    """
    Request to modify the service provider's password rules settings setting applicable to
    Administrators (Group and Department) and Users.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `ServiceProviderPasswordRulesModifyRequest14sp3()`

    Attributes:
        service_provider_id (str): serviceProviderId
        rules_apply_to (str): rulesApplyTo *Optional*
        allow_web_add_external_authentication_users (bool):
            allowWebAddExternalAuthenticationUsers *Optional*
        disallow_user_id (bool): disallowUserId *Optional*
        disallow_old_password (bool): disallowOldPassword *Optional*
        disallow_reversed_old_password (bool): disallowReversedOldPassword *Optional*
        restrict_min_digits (bool): restrictMinDigits *Optional*
        min_digits (int): minDigits *Optional*
        restrict_min_upper_case_letters (bool): restrictMinUpperCaseLetters *Optional*
        min_upper_case_letters (int): minUpperCaseLetters *Optional*
        restrict_min_lower_case_letters (bool): restrictMinLowerCaseLetters *Optional*
        min_lower_case_letters (int): minLowerCaseLetters *Optional*
        restrict_min_non_alphanumeric_characters (bool):
            restrictMinNonAlphanumericCharacters *Optional*
        min_non_alphanumeric_characters (int): minNonAlphanumericCharacters *Optional*
        min_length (int): minLength *Optional*
        max_failed_login_attempts (int): maxFailedLoginAttempts *Optional*
        password_expires_days (int): passwordExpiresDays *Optional*
        send_login_disabled_notify_email (bool): sendLoginDisabledNotifyEmail *Optional*
        login_disabled_notify_email_address (str): loginDisabledNotifyEmailAddress
            *Optional*
        disallow_rules_modification (bool): disallowRulesModification *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "rules_apply_to",
        "allow_web_add_external_authentication_users",
        "disallow_user_id",
        "disallow_old_password",
        "disallow_reversed_old_password",
        "restrict_min_digits",
        "min_digits",
        "restrict_min_upper_case_letters",
        "min_upper_case_letters",
        "restrict_min_lower_case_letters",
        "min_lower_case_letters",
        "restrict_min_non_alphanumeric_characters",
        "min_non_alphanumeric_characters",
        "min_length",
        "max_failed_login_attempts",
        "password_expires_days",
        "send_login_disabled_notify_email",
        "login_disabled_notify_email_address",
        "disallow_rules_modification",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("rules_apply_to", "rulesApplyTo", str),
            E(
                "allow_web_add_external_authentication_users",
                "allowWebAddExternalAuthenticationUsers",
                bool,
            ),
            E("disallow_user_id", "disallowUserId", bool),
            E("disallow_old_password", "disallowOldPassword", bool),
            E("disallow_reversed_old_password", "disallowReversedOldPassword", bool),
            E("restrict_min_digits", "restrictMinDigits", bool),
            E("min_digits", "minDigits", int),
            E("restrict_min_upper_case_letters", "restrictMinUpperCaseLetters", bool),
            E("min_upper_case_letters", "minUpperCaseLetters", int),
            E("restrict_min_lower_case_letters", "restrictMinLowerCaseLetters", bool),
            E("min_lower_case_letters", "minLowerCaseLetters", int),
            E(
                "restrict_min_non_alphanumeric_characters",
                "restrictMinNonAlphanumericCharacters",
                bool,
            ),
            E("min_non_alphanumeric_characters", "minNonAlphanumericCharacters", int),
            E("min_length", "minLength", int),
            E("max_failed_login_attempts", "maxFailedLoginAttempts", int),
            E("password_expires_days", "passwordExpiresDays", int),
            E("send_login_disabled_notify_email", "sendLoginDisabledNotifyEmail", bool),
            E(
                "login_disabled_notify_email_address",
                "loginDisabledNotifyEmailAddress",
                str,
            ),
            E("disallow_rules_modification", "disallowRulesModification", bool),
        )


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

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        rules_apply_to (str): rulesApplyTo *Optional*
        allow_web_add_external_authentication_users (bool):
            allowWebAddExternalAuthenticationUsers *Optional*
        disallow_user_id (bool): disallowUserId *Optional*
        disallow_old_password (bool): disallowOldPassword *Optional*
        disallow_reversed_old_password (bool): disallowReversedOldPassword *Optional*
        restrict_min_digits (bool): restrictMinDigits *Optional*
        min_digits (int): minDigits *Optional*
        restrict_min_upper_case_letters (bool): restrictMinUpperCaseLetters *Optional*
        min_upper_case_letters (int): minUpperCaseLetters *Optional*
        restrict_min_lower_case_letters (bool): restrictMinLowerCaseLetters *Optional*
        min_lower_case_letters (int): minLowerCaseLetters *Optional*
        restrict_min_non_alphanumeric_characters (bool):
            restrictMinNonAlphanumericCharacters *Optional*
        min_non_alphanumeric_characters (int): minNonAlphanumericCharacters *Optional*
        min_length (int): minLength *Optional*
        max_failed_login_attempts (int): maxFailedLoginAttempts *Optional*
        password_expires_days (int): passwordExpiresDays *Optional*
        send_login_disabled_notify_email (bool): sendLoginDisabledNotifyEmail *Optional*
        login_disabled_notify_email_address (str): loginDisabledNotifyEmailAddress
            *Optional*
        disallow_previous_passwords (bool): disallowPreviousPasswords *Optional*
        number_of_previous_passwords (int): numberOfPreviousPasswords *Optional*
        force_password_change_after_reset (bool): forcePasswordChangeAfterReset *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "rules_apply_to",
        "allow_web_add_external_authentication_users",
        "disallow_user_id",
        "disallow_old_password",
        "disallow_reversed_old_password",
        "restrict_min_digits",
        "min_digits",
        "restrict_min_upper_case_letters",
        "min_upper_case_letters",
        "restrict_min_lower_case_letters",
        "min_lower_case_letters",
        "restrict_min_non_alphanumeric_characters",
        "min_non_alphanumeric_characters",
        "min_length",
        "max_failed_login_attempts",
        "password_expires_days",
        "send_login_disabled_notify_email",
        "login_disabled_notify_email_address",
        "disallow_previous_passwords",
        "number_of_previous_passwords",
        "force_password_change_after_reset",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("rules_apply_to", "rulesApplyTo", str),
            E(
                "allow_web_add_external_authentication_users",
                "allowWebAddExternalAuthenticationUsers",
                bool,
            ),
            E("disallow_user_id", "disallowUserId", bool),
            E("disallow_old_password", "disallowOldPassword", bool),
            E("disallow_reversed_old_password", "disallowReversedOldPassword", bool),
            E("restrict_min_digits", "restrictMinDigits", bool),
            E("min_digits", "minDigits", int),
            E("restrict_min_upper_case_letters", "restrictMinUpperCaseLetters", bool),
            E("min_upper_case_letters", "minUpperCaseLetters", int),
            E("restrict_min_lower_case_letters", "restrictMinLowerCaseLetters", bool),
            E("min_lower_case_letters", "minLowerCaseLetters", int),
            E(
                "restrict_min_non_alphanumeric_characters",
                "restrictMinNonAlphanumericCharacters",
                bool,
            ),
            E("min_non_alphanumeric_characters", "minNonAlphanumericCharacters", int),
            E("min_length", "minLength", int),
            E("max_failed_login_attempts", "maxFailedLoginAttempts", int),
            E("password_expires_days", "passwordExpiresDays", int),
            E("send_login_disabled_notify_email", "sendLoginDisabledNotifyEmail", bool),
            E(
                "login_disabled_notify_email_address",
                "loginDisabledNotifyEmailAddress",
                str,
            ),
            E("disallow_previous_passwords", "disallowPreviousPasswords", bool),
            E("number_of_previous_passwords", "numberOfPreviousPasswords", int),
            E(
                "force_password_change_after_reset",
                "forcePasswordChangeAfterReset",
                bool,
            ),
        )


class ServiceProviderPortalPasscodeRulesGetRequest(OCIRequest):
    """
    Requests the service provider's passcode rules setting.

    The response is either `ServiceProviderPortalPasscodeRulesGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderPortalPasscodeRulesGetRequest19(OCIRequest):
    """
    Requests the service provider's passcode rules setting.

    The response is either `ServiceProviderPortalPasscodeRulesGetResponse19()` or
    `ErrorResponse()`. Replaced by: `ServiceProviderPortalPasscodeRulesGetRequest22()` in
    AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderPortalPasscodeRulesGetRequest22(OCIRequest):
    """
    Requests the service provider's passcode rules setting.

    The response is either `ServiceProviderPortalPasscodeRulesGetResponse22()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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 The following elements are only
    used in AS data mode and ignored in XS data mode: enableDefaultPasscode
    defaultPasscode

    Attributes:
        service_provider_id (str): serviceProviderId
        disallow_repeated_digits (bool): disallowRepeatedDigits *Optional*
        number_of_repeated_digits (int): numberOfRepeatedDigits *Optional*
        disallow_repeated_patterns (bool): disallowRepeatedPatterns *Optional*
        disallow_contiguous_sequences (bool): disallowContiguousSequences *Optional*
        number_of_ascending_digits (int): numberOfAscendingDigits *Optional*
        number_of_descending_digits (int): numberOfDescendingDigits *Optional*
        disallow_user_number (bool): disallowUserNumber *Optional*
        disallow_reversed_user_number (bool): disallowReversedUserNumber *Optional*
        disallow_old_passcode (bool): disallowOldPasscode *Optional*
        number_of_previous_passcodes (int): numberOfPreviousPasscodes *Optional*
        disallow_reversed_old_passcode (bool): disallowReversedOldPasscode *Optional*
        min_code_length (int): minCodeLength *Optional*
        max_code_length (int): maxCodeLength *Optional*
        disable_login_after_max_failed_login_attempts (bool):
            disableLoginAfterMaxFailedLoginAttempts *Optional*
        max_failed_login_attempts (int): maxFailedLoginAttempts *Optional*
        expire_password (bool): expirePassword *Optional*
        passcode_expires_days (int): passcodeExpiresDays *Optional*
        send_login_disabled_notify_email (bool): sendLoginDisabledNotifyEmail *Optional*
        login_disabled_notify_email_address (str): loginDisabledNotifyEmailAddress
            *Optional*
        enable_default_passcode (bool): enableDefaultPasscode *Optional*
        default_passcode (str): defaultPasscode *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "disallow_repeated_digits",
        "number_of_repeated_digits",
        "disallow_repeated_patterns",
        "disallow_contiguous_sequences",
        "number_of_ascending_digits",
        "number_of_descending_digits",
        "disallow_user_number",
        "disallow_reversed_user_number",
        "disallow_old_passcode",
        "number_of_previous_passcodes",
        "disallow_reversed_old_passcode",
        "min_code_length",
        "max_code_length",
        "disable_login_after_max_failed_login_attempts",
        "max_failed_login_attempts",
        "expire_password",
        "passcode_expires_days",
        "send_login_disabled_notify_email",
        "login_disabled_notify_email_address",
        "enable_default_passcode",
        "default_passcode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("disallow_repeated_digits", "disallowRepeatedDigits", bool),
            E("number_of_repeated_digits", "numberOfRepeatedDigits", int),
            E("disallow_repeated_patterns", "disallowRepeatedPatterns", bool),
            E("disallow_contiguous_sequences", "disallowContiguousSequences", bool),
            E("number_of_ascending_digits", "numberOfAscendingDigits", int),
            E("number_of_descending_digits", "numberOfDescendingDigits", int),
            E("disallow_user_number", "disallowUserNumber", bool),
            E("disallow_reversed_user_number", "disallowReversedUserNumber", bool),
            E("disallow_old_passcode", "disallowOldPasscode", bool),
            E("number_of_previous_passcodes", "numberOfPreviousPasscodes", int),
            E("disallow_reversed_old_passcode", "disallowReversedOldPasscode", bool),
            E("min_code_length", "minCodeLength", int),
            E("max_code_length", "maxCodeLength", int),
            E(
                "disable_login_after_max_failed_login_attempts",
                "disableLoginAfterMaxFailedLoginAttempts",
                bool,
            ),
            E("max_failed_login_attempts", "maxFailedLoginAttempts", int),
            E("expire_password", "expirePassword", bool),
            E("passcode_expires_days", "passcodeExpiresDays", int),
            E("send_login_disabled_notify_email", "sendLoginDisabledNotifyEmail", bool),
            E(
                "login_disabled_notify_email_address",
                "loginDisabledNotifyEmailAddress",
                str,
            ),
            E("enable_default_passcode", "enableDefaultPasscode", bool),
            E("default_passcode", "defaultPasscode", str),
        )


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): serviceProviderId
        country_code (str): countryCode
        intra_lata_carrier (str): intraLataCarrier *Optional*
        inter_lata_carrier (str): interLataCarrier *Optional*
        international_carrier (str): internationalCarrier *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "country_code",
        "intra_lata_carrier",
        "inter_lata_carrier",
        "international_carrier",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("country_code", "countryCode", str, is_required=True),
            E("intra_lata_carrier", "intraLataCarrier", str),
            E("inter_lata_carrier", "interLataCarrier", str),
            E("international_carrier", "internationalCarrier", str),
        )


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): serviceProviderId
        country_code (str): countryCode
    """

    __slots__: List[str] = [
        "service_provider_id",
        "country_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("country_code", "countryCode", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        country_code (str): countryCode
    """

    __slots__: List[str] = [
        "service_provider_id",
        "country_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("country_code", "countryCode", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        country_code (str): countryCode
    """

    __slots__: List[str] = [
        "service_provider_id",
        "country_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("country_code", "countryCode", str, is_required=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): serviceProviderId
        country_code (str): countryCode
        intra_lata_carrier (str): intraLataCarrier *Optional*
        inter_lata_carrier (str): interLataCarrier *Optional*
        international_carrier (str): internationalCarrier *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "country_code",
        "intra_lata_carrier",
        "inter_lata_carrier",
        "international_carrier",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("country_code", "countryCode", str, is_required=True),
            E("intra_lata_carrier", "intraLataCarrier", str),
            E("inter_lata_carrier", "interLataCarrier", str),
            E("international_carrier", "internationalCarrier", str),
        )


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): serviceProviderId
        number_prefix (List[str]): numberPrefix
    """

    __slots__: List[str] = [
        "service_provider_id",
        "number_prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("number_prefix", "numberPrefix", str, is_required=True, is_array=True),
        )


class ServiceProviderRouteListEnterpriseTrunkNumberPrefixAddListRequest(OCIRequest):
    """
    Add number prefixes to a service provider.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        prefix (List[str]): prefix
    """

    __slots__: List[str] = [
        "service_provider_id",
        "prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("prefix", "prefix", str, is_required=True, is_array=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): serviceProviderId
        number_prefix (List[str]): numberPrefix
    """

    __slots__: List[str] = [
        "service_provider_id",
        "number_prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("number_prefix", "numberPrefix", str, is_required=True, is_array=True),
        )


class ServiceProviderRouteListEnterpriseTrunkNumberPrefixDeleteListRequest(OCIRequest):
    """
    Delete number prefixes from a service provider.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        number_prefix (List[str]): numberPrefix
    """

    __slots__: List[str] = [
        "service_provider_id",
        "number_prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("number_prefix", "numberPrefix", str, is_required=True, is_array=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        number_range_start (List[str]): numberRangeStart *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "number_range_start",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("number_range_start", "numberRangeStart", str, is_array=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): serviceProviderId
        number_range_start (List[str]): numberRangeStart *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "number_range_start",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("number_range_start", "numberRangeStart", str, is_array=True),
        )


class ServiceProviderRouteListEnterpriseTrunkNumberRangeDeleteListRequest(OCIRequest):
    """
    Delete number ranges from a service provider.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        number_range_start (List[str]): numberRangeStart *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "number_range_start",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("number_range_start", "numberRangeStart", str, is_array=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        route_point_external_system (List[str]): routePointExternalSystem *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "route_point_external_system",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "route_point_external_system",
                "routePointExternalSystem",
                str,
                is_array=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        route_point_external_system (List[str]): routePointExternalSystem *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "route_point_external_system",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "route_point_external_system",
                "routePointExternalSystem",
                str,
                is_array=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        routing_profile (str): routingProfile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "routing_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("routing_profile", "routingProfile", str),
        )


class ServiceProviderSIPAuthenticationPasswordRulesGetRequest(OCIRequest):
    """
    Request to get the service provider level SIP authentication password rule settings.

    The response is either a `ServiceProviderSIPAuthenticationPasswordRulesGetResponse()`
    or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        use_service_provider_settings (bool): useServiceProviderSettings *Optional*
        disallow_authentication_name (bool): disallowAuthenticationName *Optional*
        disallow_old_password (bool): disallowOldPassword *Optional*
        disallow_reversed_old_password (bool): disallowReversedOldPassword *Optional*
        restrict_min_digits (bool): restrictMinDigits *Optional*
        min_digits (int): minDigits *Optional*
        restrict_min_upper_case_letters (bool): restrictMinUpperCaseLetters *Optional*
        min_upper_case_letters (int): minUpperCaseLetters *Optional*
        restrict_min_lower_case_letters (bool): restrictMinLowerCaseLetters *Optional*
        min_lower_case_letters (int): minLowerCaseLetters *Optional*
        restrict_min_non_alphanumeric_characters (bool):
            restrictMinNonAlphanumericCharacters *Optional*
        min_non_alphanumeric_characters (int): minNonAlphanumericCharacters *Optional*
        min_length (int): minLength *Optional*
        send_permanent_lockout_notification (bool): sendPermanentLockoutNotification
            *Optional*
        permanent_lockout_notify_email_address (str): permanentLockoutNotifyEmailAddress
            *Optional*
        endpoint_authentication_lockout_type (str): endpointAuthenticationLockoutType
            *Optional*
        endpoint_temporary_lockout_threshold (int): endpointTemporaryLockoutThreshold
            *Optional*
        endpoint_wait_algorithm (str): endpointWaitAlgorithm *Optional*
        endpoint_lockout_fixed_minutes (str): endpointLockoutFixedMinutes *Optional*
        endpoint_permanent_lockout_threshold (int): endpointPermanentLockoutThreshold
            *Optional*
        trunk_group_authentication_lockout_type (str): trunkGroupAuthenticationLockoutType
            *Optional*
        trunk_group_temporary_lockout_threshold (int): trunkGroupTemporaryLockoutThreshold
            *Optional*
        trunk_group_wait_algorithm (str): trunkGroupWaitAlgorithm *Optional*
        trunk_group_lockout_fixed_minutes (str): trunkGroupLockoutFixedMinutes *Optional*
        trunk_group_permanent_lockout_threshold (int): trunkGroupPermanentLockoutThreshold
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_service_provider_settings",
        "disallow_authentication_name",
        "disallow_old_password",
        "disallow_reversed_old_password",
        "restrict_min_digits",
        "min_digits",
        "restrict_min_upper_case_letters",
        "min_upper_case_letters",
        "restrict_min_lower_case_letters",
        "min_lower_case_letters",
        "restrict_min_non_alphanumeric_characters",
        "min_non_alphanumeric_characters",
        "min_length",
        "send_permanent_lockout_notification",
        "permanent_lockout_notify_email_address",
        "endpoint_authentication_lockout_type",
        "endpoint_temporary_lockout_threshold",
        "endpoint_wait_algorithm",
        "endpoint_lockout_fixed_minutes",
        "endpoint_permanent_lockout_threshold",
        "trunk_group_authentication_lockout_type",
        "trunk_group_temporary_lockout_threshold",
        "trunk_group_wait_algorithm",
        "trunk_group_lockout_fixed_minutes",
        "trunk_group_permanent_lockout_threshold",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("use_service_provider_settings", "useServiceProviderSettings", bool),
            E("disallow_authentication_name", "disallowAuthenticationName", bool),
            E("disallow_old_password", "disallowOldPassword", bool),
            E("disallow_reversed_old_password", "disallowReversedOldPassword", bool),
            E("restrict_min_digits", "restrictMinDigits", bool),
            E("min_digits", "minDigits", int),
            E("restrict_min_upper_case_letters", "restrictMinUpperCaseLetters", bool),
            E("min_upper_case_letters", "minUpperCaseLetters", int),
            E("restrict_min_lower_case_letters", "restrictMinLowerCaseLetters", bool),
            E("min_lower_case_letters", "minLowerCaseLetters", int),
            E(
                "restrict_min_non_alphanumeric_characters",
                "restrictMinNonAlphanumericCharacters",
                bool,
            ),
            E("min_non_alphanumeric_characters", "minNonAlphanumericCharacters", int),
            E("min_length", "minLength", int),
            E(
                "send_permanent_lockout_notification",
                "sendPermanentLockoutNotification",
                bool,
            ),
            E(
                "permanent_lockout_notify_email_address",
                "permanentLockoutNotifyEmailAddress",
                str,
            ),
            E(
                "endpoint_authentication_lockout_type",
                "endpointAuthenticationLockoutType",
                str,
            ),
            E(
                "endpoint_temporary_lockout_threshold",
                "endpointTemporaryLockoutThreshold",
                int,
            ),
            E("endpoint_wait_algorithm", "endpointWaitAlgorithm", str),
            E("endpoint_lockout_fixed_minutes", "endpointLockoutFixedMinutes", str),
            E(
                "endpoint_permanent_lockout_threshold",
                "endpointPermanentLockoutThreshold",
                int,
            ),
            E(
                "trunk_group_authentication_lockout_type",
                "trunkGroupAuthenticationLockoutType",
                str,
            ),
            E(
                "trunk_group_temporary_lockout_threshold",
                "trunkGroupTemporaryLockoutThreshold",
                int,
            ),
            E("trunk_group_wait_algorithm", "trunkGroupWaitAlgorithm", str),
            E(
                "trunk_group_lockout_fixed_minutes",
                "trunkGroupLockoutFixedMinutes",
                str,
            ),
            E(
                "trunk_group_permanent_lockout_threshold",
                "trunkGroupPermanentLockoutThreshold",
                int,
            ),
        )


class ServiceProviderScheduleAddRequest(OCIRequest):
    """
    Add a service provider schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        schedule_name (str): scheduleName
        schedule_type (str): scheduleType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "schedule_name",
        "schedule_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("schedule_name", "scheduleName", str, is_required=True),
            E("schedule_type", "scheduleType", str, is_required=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): serviceProviderId
        schedule_type (str): scheduleType *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "schedule_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("schedule_type", "scheduleType", str),
        )


class ServiceProviderServiceGetAuthorizationListRequest(OCIRequest):
    """
    Requests the service provider's service authorization status.

    The response is either `ServiceProviderServiceGetAuthorizationListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        user_service_name (str): userServiceName *Optional*
        group_service_name (str): groupServiceName *Optional*
        service_pack_name (str): servicePackName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "user_service_name",
        "group_service_name",
        "service_pack_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("user_service_name", "userServiceName", str),
            E("group_service_name", "groupServiceName", str),
            E("service_pack_name", "servicePackName", str),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        service_pack_name (str): servicePackName
        service_name (List[str]): serviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_pack_name",
        "service_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("service_pack_name", "servicePackName", str, is_required=True),
            E("service_name", "serviceName", str, is_required=True, is_array=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): serviceProviderId
        service_pack_name (str): servicePackName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_pack_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("service_pack_name", "servicePackName", str, is_required=True),
        )


class ServiceProviderServicePackGetDetailListRequest(OCIRequest):
    """
    Request to get a service pack details.

    The response is either `ServiceProviderServicePackGetDetailListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        service_pack_name (str): servicePackName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_pack_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("service_pack_name", "servicePackName", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        service_name (str): serviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("service_name", "serviceName", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderServicePackMigrationTaskAddRequest(OCIRequest):
    """
    Create a service pack migration task.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `ServiceProviderServicePackMigrationTaskAddRequest21()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        task_name (str): taskName
        start_timestamp (str): startTimestamp
        max_duration_hours (int): maxDurationHours
        send_report_email (bool): sendReportEmail
        report_delivery_email_address (str): reportDeliveryEmailAddress *Optional*
        abort_on_error (bool): abortOnError
        abort_error_threshold (int): abortErrorThreshold *Optional*
        report_all_users (bool): reportAllUsers
        automatically_increment_service_quantity (bool):
            automaticallyIncrementServiceQuantity
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
        "start_timestamp",
        "max_duration_hours",
        "send_report_email",
        "report_delivery_email_address",
        "abort_on_error",
        "abort_error_threshold",
        "report_all_users",
        "automatically_increment_service_quantity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=True),
            E("start_timestamp", "startTimestamp", str, is_required=True),
            E("max_duration_hours", "maxDurationHours", int, is_required=True),
            E("send_report_email", "sendReportEmail", bool, is_required=True),
            E("report_delivery_email_address", "reportDeliveryEmailAddress", str),
            E("abort_on_error", "abortOnError", bool, is_required=True),
            E("abort_error_threshold", "abortErrorThreshold", int),
            E("report_all_users", "reportAllUsers", bool, is_required=True),
            E(
                "automatically_increment_service_quantity",
                "automaticallyIncrementServiceQuantity",
                bool,
                is_required=True,
            ),
        )


class ServiceProviderServicePackMigrationTaskAddRequest21(OCIRequest):
    """
    Create a service pack migration task.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        task_name (str): taskName
        start_timestamp (str): startTimestamp
        expire_after_num_hours (int): expireAfterNumHours
        max_duration_hours (int): maxDurationHours
        send_report_email (bool): sendReportEmail
        report_delivery_email_address (str): reportDeliveryEmailAddress *Optional*
        abort_on_error (bool): abortOnError
        abort_error_threshold (int): abortErrorThreshold *Optional*
        report_all_users (bool): reportAllUsers
        automatically_increment_service_quantity (bool):
            automaticallyIncrementServiceQuantity
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
        "start_timestamp",
        "expire_after_num_hours",
        "max_duration_hours",
        "send_report_email",
        "report_delivery_email_address",
        "abort_on_error",
        "abort_error_threshold",
        "report_all_users",
        "automatically_increment_service_quantity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=True),
            E("start_timestamp", "startTimestamp", str, is_required=True),
            E("expire_after_num_hours", "expireAfterNumHours", int, is_required=True),
            E("max_duration_hours", "maxDurationHours", int, is_required=True),
            E("send_report_email", "sendReportEmail", bool, is_required=True),
            E("report_delivery_email_address", "reportDeliveryEmailAddress", str),
            E("abort_on_error", "abortOnError", bool, is_required=True),
            E("abort_error_threshold", "abortErrorThreshold", int),
            E("report_all_users", "reportAllUsers", bool, is_required=True),
            E(
                "automatically_increment_service_quantity",
                "automaticallyIncrementServiceQuantity",
                bool,
                is_required=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): serviceProviderId
        task_name (List[str]): taskName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=True, is_array=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): serviceProviderId
        task_name (str): taskName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=True),
        )


class ServiceProviderServicePackMigrationTaskGetListRequest(OCIRequest):
    """
    Requests a list of all service pack migration task for a service provider.

    The response is either `ServiceProviderServicePackMigrationTaskGetListResponse()` or
    `ErrorResponse()`.

    Replaced By: `ServiceProviderServicePackMigrationTaskGetListRequest21()` in AS data
    mode

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderServicePackMigrationTaskGetRequest(OCIRequest):
    """
    Requests the details of a specified service pack migration task.

    The response is either `ServiceProviderServicePackMigrationTaskGetResponse()` or
    `ErrorResponse()`.

    Replaced By: `ServiceProviderServicePackMigrationTaskGetRequest14sp4()`

    Attributes:
        service_provider_id (str): serviceProviderId
        task_name (str): taskName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=True),
        )


class ServiceProviderServicePackMigrationTaskGetRequest14sp4(OCIRequest):
    """
    Requests the details of a specified service pack migration task.

    The response is either `ServiceProviderServicePackMigrationTaskGetResponse14sp4()` or
    `ErrorResponse()`.

    Replaced By: `ServiceProviderServicePackMigrationTaskGetRequest21()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        task_name (str): taskName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=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): serviceProviderId
        task_name (str): taskName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=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): serviceProviderId
        task_name (str): taskName
        migrate_all_groups (bool): migrateAllGroups *Optional*
        group_id_list (OCI.groupIdList): groupIdList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
        "migrate_all_groups",
        "group_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=True),
            E("migrate_all_groups", "migrateAllGroups", bool),
            E("group_id_list", "groupIdList", str, is_complex=True),  # unknown
        )


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): serviceProviderId
        task_name (str): taskName
        new_task_name (str): newTaskName *Optional*
        start_timestamp (str): startTimestamp *Optional*
        expire_after_num_hours (int): expireAfterNumHours *Optional*
        max_duration_hours (int): maxDurationHours *Optional*
        send_report_email (bool): sendReportEmail *Optional*
        report_delivery_email_address (str): reportDeliveryEmailAddress *Optional*
        abort_on_error (bool): abortOnError *Optional*
        abort_error_threshold (int): abortErrorThreshold *Optional*
        report_all_users (bool): reportAllUsers *Optional*
        automatically_increment_service_quantity (bool):
            automaticallyIncrementServiceQuantity *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
        "new_task_name",
        "start_timestamp",
        "expire_after_num_hours",
        "max_duration_hours",
        "send_report_email",
        "report_delivery_email_address",
        "abort_on_error",
        "abort_error_threshold",
        "report_all_users",
        "automatically_increment_service_quantity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=True),
            E("new_task_name", "newTaskName", str),
            E("start_timestamp", "startTimestamp", str),
            E("expire_after_num_hours", "expireAfterNumHours", int),
            E("max_duration_hours", "maxDurationHours", int),
            E("send_report_email", "sendReportEmail", bool),
            E("report_delivery_email_address", "reportDeliveryEmailAddress", str),
            E("abort_on_error", "abortOnError", bool),
            E("abort_error_threshold", "abortErrorThreshold", int),
            E("report_all_users", "reportAllUsers", bool),
            E(
                "automatically_increment_service_quantity",
                "automaticallyIncrementServiceQuantity",
                bool,
            ),
        )


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): serviceProviderId
        task_name (str): taskName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=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): serviceProviderId
        service_type (str): serviceType
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_type",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("service_type", "serviceType", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        restrict_aggregate_sessions (bool): restrictAggregateSessions *Optional*
        max_sessions (int): maxSessions *Optional*
        max_user_originating_sessions (int): maxUserOriginatingSessions *Optional*
        max_user_terminating_sessions (int): maxUserTerminatingSessions *Optional*
        count_intra_service_provider_sessions (bool): countIntraServiceProviderSessions
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "restrict_aggregate_sessions",
        "max_sessions",
        "max_user_originating_sessions",
        "max_user_terminating_sessions",
        "count_intra_service_provider_sessions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("restrict_aggregate_sessions", "restrictAggregateSessions", bool),
            E("max_sessions", "maxSessions", int),
            E("max_user_originating_sessions", "maxUserOriginatingSessions", int),
            E("max_user_terminating_sessions", "maxUserTerminatingSessions", int),
            E(
                "count_intra_service_provider_sessions",
                "countIntraServiceProviderSessions",
                bool,
            ),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        add_match_digit_pattern (List[str]): addMatchDigitPattern *Optional*
        delete_match_digit_pattern (List[str]): deleteMatchDigitPattern *Optional*
        enable_white_list (bool): enableWhiteList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "add_match_digit_pattern",
        "delete_match_digit_pattern",
        "enable_white_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("add_match_digit_pattern", "addMatchDigitPattern", str, is_array=True),
            E(
                "delete_match_digit_pattern",
                "deleteMatchDigitPattern",
                str,
                is_array=True,
            ),
            E("enable_white_list", "enableWhiteList", bool),
        )


class ServiceProviderStirShakenGetRequest(OCIRequest):
    """
    Get service provider Stir Shaken service settings.

    The response is either `ServiceProviderStirShakenGetResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderStirShakenModifyRequest(OCIRequest):
    """
    Modify service provider Stir Shaken service settings.


    Attributes:
        service_provider_id (str): serviceProviderId
        use_parent_level_settings (bool): useParentLevelSettings *Optional*
        signing_policy (str): signingPolicy *Optional*
        tagging_policy (str): taggingPolicy *Optional*
        signing_service_url (str): signingServiceURL *Optional*
        tag_from_or_pai (str): tagFromOrPAI *Optional*
        verstat_tag (str): verstatTag *Optional*
        use_os_value_for_orig_id (bool): useOSValueForOrigId *Optional*
        orig_uuid (str): origUUID *Optional*
        attestation_level (str): attestationLevel *Optional*
        enable_verification (bool): enableVerification *Optional*
        verification_service_url (str): verificationServiceURL *Optional*
        verification_error_handling (str): verificationErrorHandling *Optional*
        proxy_verstat_to_cnam_subscribe (bool): proxyVerstatToCNAMSubscribe *Optional*
        use_unknown_headers_from_cnam_notify (bool): useUnknownHeadersFromCNAMNotify
            *Optional*
        enable_signing_for_unscreened_trunk_group_originations (bool):
            enableSigningForUnscreenedTrunkGroupOriginations *Optional*
        enable_tagging_for_unscreened_trunk_group_originations (bool):
            enableTaggingForUnscreenedTrunkGroupOriginations *Optional*
        unscreened_trunk_group_origination_attestation_level (str):
            unscreenedTrunkGroupOriginationAttestationLevel *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_parent_level_settings",
        "signing_policy",
        "tagging_policy",
        "signing_service_url",
        "tag_from_or_pai",
        "verstat_tag",
        "use_os_value_for_orig_id",
        "orig_uuid",
        "attestation_level",
        "enable_verification",
        "verification_service_url",
        "verification_error_handling",
        "proxy_verstat_to_cnam_subscribe",
        "use_unknown_headers_from_cnam_notify",
        "enable_signing_for_unscreened_trunk_group_originations",
        "enable_tagging_for_unscreened_trunk_group_originations",
        "unscreened_trunk_group_origination_attestation_level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("use_parent_level_settings", "useParentLevelSettings", bool),
            E("signing_policy", "signingPolicy", str),
            E("tagging_policy", "taggingPolicy", str),
            E("signing_service_url", "signingServiceURL", str),
            E("tag_from_or_pai", "tagFromOrPAI", str),
            E("verstat_tag", "verstatTag", str),
            E("use_os_value_for_orig_id", "useOSValueForOrigId", bool),
            E("orig_uuid", "origUUID", str),
            E("attestation_level", "attestationLevel", str),
            E("enable_verification", "enableVerification", bool),
            E("verification_service_url", "verificationServiceURL", str),
            E("verification_error_handling", "verificationErrorHandling", str),
            E("proxy_verstat_to_cnam_subscribe", "proxyVerstatToCNAMSubscribe", bool),
            E(
                "use_unknown_headers_from_cnam_notify",
                "useUnknownHeadersFromCNAMNotify",
                bool,
            ),
            E(
                "enable_signing_for_unscreened_trunk_group_originations",
                "enableSigningForUnscreenedTrunkGroupOriginations",
                bool,
            ),
            E(
                "enable_tagging_for_unscreened_trunk_group_originations",
                "enableTaggingForUnscreenedTrunkGroupOriginations",
                bool,
            ),
            E(
                "unscreened_trunk_group_origination_attestation_level",
                "unscreenedTrunkGroupOriginationAttestationLevel",
                str,
            ),
        )


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): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class ServiceProviderThirdPartyEmergencyCallingGetRequest(OCIRequest):
    """
    Get the third-party emergency call service settings for the service provider.

    The response is either a `ServiceProviderThirdPartyEmergencyCallingGetResponse()` or
    an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        allow_activation (bool): allowActivation *Optional*
        customer_id (str): customerId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "allow_activation",
        "customer_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("allow_activation", "allowActivation", bool),
            E("customer_id", "customerId", str),
        )


class ServiceProviderTrunkGroupGetRequest(OCIRequest):
    """
    Get the maximum permissible active Trunk Group calls for the service provider.

    The response is either a `ServiceProviderTrunkGroupGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderTrunkGroupGetRequest14sp1(OCIRequest):
    """
    Get the maximum and bursting maximum permissible active Trunk Group calls for the
    service provider.

    The response is either a `ServiceProviderTrunkGroupGetResponse14sp1()` or an
    `ErrorResponse()`. Deprecated by `ServiceProviderTrunkGroupGetRequest23()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
        )


class ServiceProviderVoiceMessagingGroupGetPasscodeRulesRequest(OCIRequest):
    """
    Requests the service provider's voice portal passcode rules setting.

    The response is either `ServiceProviderVoiceMessagingGroupGetPasscodeRulesResponse()`
    or `ErrorResponse()`.

    Replaced By: `ServiceProviderPortalPasscodeRulesGetRequest()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderVoiceMessagingGroupGetVoicePortalBrandingRequest(OCIRequest):
    """
    Get the service provider's voice portal branding settings.

    The response is either a
    `ServiceProviderVoiceMessagingGroupGetVoicePortalBrandingResponse()` or an
    `ErrorResponse()`.

    Replaced By: `ServiceProviderVoiceMessagingGroupGetVoicePortalBrandingRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=True),)


class ServiceProviderVoiceMessagingGroupModifyPasscodeRulesRequest(OCIRequest):
    """
    Request to modify the service provider's voice portal passcode rules setting.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `ServiceProviderPortalPasscodeRulesModifyRequest()`

    Attributes:
        service_provider_id (str): serviceProviderId
        disallow_repeated_digits (bool): disallowRepeatedDigits *Optional*
        disallow_user_number (bool): disallowUserNumber *Optional*
        disallow_reversed_user_number (bool): disallowReversedUserNumber *Optional*
        disallow_old_passcode (bool): disallowOldPasscode *Optional*
        disallow_reversed_old_passcode (bool): disallowReversedOldPasscode *Optional*
        min_code_length (int): minCodeLength *Optional*
        max_code_length (int): maxCodeLength *Optional*
        disable_login_after_max_failed_login_attempts (bool):
            disableLoginAfterMaxFailedLoginAttempts *Optional*
        max_failed_login_attempts (int): maxFailedLoginAttempts *Optional*
        expire_password (bool): expirePassword *Optional*
        passcode_expires_days (int): passcodeExpiresDays *Optional*
        send_login_disabled_notify_email (bool): sendLoginDisabledNotifyEmail *Optional*
        login_disabled_notify_email_address (str): loginDisabledNotifyEmailAddress
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "disallow_repeated_digits",
        "disallow_user_number",
        "disallow_reversed_user_number",
        "disallow_old_passcode",
        "disallow_reversed_old_passcode",
        "min_code_length",
        "max_code_length",
        "disable_login_after_max_failed_login_attempts",
        "max_failed_login_attempts",
        "expire_password",
        "passcode_expires_days",
        "send_login_disabled_notify_email",
        "login_disabled_notify_email_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("disallow_repeated_digits", "disallowRepeatedDigits", bool),
            E("disallow_user_number", "disallowUserNumber", bool),
            E("disallow_reversed_user_number", "disallowReversedUserNumber", bool),
            E("disallow_old_passcode", "disallowOldPasscode", bool),
            E("disallow_reversed_old_passcode", "disallowReversedOldPasscode", bool),
            E("min_code_length", "minCodeLength", int),
            E("max_code_length", "maxCodeLength", int),
            E(
                "disable_login_after_max_failed_login_attempts",
                "disableLoginAfterMaxFailedLoginAttempts",
                bool,
            ),
            E("max_failed_login_attempts", "maxFailedLoginAttempts", int),
            E("expire_password", "expirePassword", bool),
            E("passcode_expires_days", "passcodeExpiresDays", int),
            E("send_login_disabled_notify_email", "sendLoginDisabledNotifyEmail", bool),
            E(
                "login_disabled_notify_email_address",
                "loginDisabledNotifyEmailAddress",
                str,
            ),
        )


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): serviceProviderId
        delivery_from_address (str): deliveryFromAddress *Optional*
        notification_from_address (str): notificationFromAddress *Optional*
        voice_portal_lockout_from_address (str): voicePortalLockoutFromAddress *Optional*
        use_system_default_delivery_from_address (bool):
            useSystemDefaultDeliveryFromAddress *Optional*
        use_system_default_notification_from_address (bool):
            useSystemDefaultNotificationFromAddress *Optional*
        use_system_default_voice_portal_lockout_from_address (bool):
            useSystemDefaultVoicePortalLockoutFromAddress *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "delivery_from_address",
        "notification_from_address",
        "voice_portal_lockout_from_address",
        "use_system_default_delivery_from_address",
        "use_system_default_notification_from_address",
        "use_system_default_voice_portal_lockout_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("delivery_from_address", "deliveryFromAddress", str),
            E("notification_from_address", "notificationFromAddress", str),
            E(
                "voice_portal_lockout_from_address",
                "voicePortalLockoutFromAddress",
                str,
            ),
            E(
                "use_system_default_delivery_from_address",
                "useSystemDefaultDeliveryFromAddress",
                bool,
            ),
            E(
                "use_system_default_notification_from_address",
                "useSystemDefaultNotificationFromAddress",
                bool,
            ),
            E(
                "use_system_default_voice_portal_lockout_from_address",
                "useSystemDefaultVoicePortalLockoutFromAddress",
                bool,
            ),
        )


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): serviceProviderId
        voice_portal_scope (str): voicePortalScope *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "voice_portal_scope",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("voice_portal_scope", "voicePortalScope", str),
        )


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): serviceProviderId
        level (str): level *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("level", "level", str),
        )


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): serviceProviderId
        group_default_xsi_policy_profile (str): groupDefaultXsiPolicyProfile *Optional*
        user_default_xsi_policy_profile (str): userDefaultXsiPolicyProfile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_default_xsi_policy_profile",
        "user_default_xsi_policy_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_default_xsi_policy_profile", "groupDefaultXsiPolicyProfile", str),
            E("user_default_xsi_policy_profile", "userDefaultXsiPolicyProfile", str),
        )


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): serviceProviderId
    """

    __slots__: List[str] = [
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_provider_id", "serviceProviderId", str, is_required=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): serviceProviderId
        enable_zone_calling_restrictions (bool): enableZoneCallingRestrictions *Optional*
        enable_origination_roaming_restrictions (bool):
            enableOriginationRoamingRestrictions *Optional*
        enable_emergency_origination_roaming_restrictions (bool):
            enableEmergencyOriginationRoamingRestrictions *Optional*
        enable_termination_roaming_restrictions (bool):
            enableTerminationRoamingRestrictions *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enable_zone_calling_restrictions",
        "enable_origination_roaming_restrictions",
        "enable_emergency_origination_roaming_restrictions",
        "enable_termination_roaming_restrictions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "enable_zone_calling_restrictions",
                "enableZoneCallingRestrictions",
                bool,
            ),
            E(
                "enable_origination_roaming_restrictions",
                "enableOriginationRoamingRestrictions",
                bool,
            ),
            E(
                "enable_emergency_origination_roaming_restrictions",
                "enableEmergencyOriginationRoamingRestrictions",
                bool,
            ),
            E(
                "enable_termination_roaming_restrictions",
                "enableTerminationRoamingRestrictions",
                bool,
            ),
        )


class SystemASRParametersGetRequest(OCIRequest):
    """
    Request to get the list of Application Server Registration system parameters.

    The response is either `SystemASRParametersGetResponse()` or `ErrorResponse()`.

    Replaced By: `SystemASRParametersGetRequest14sp5()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemASRParametersGetRequest14sp5(OCIRequest):
    """
    Request to get the list of Application Server Registration system parameters.

    The response is either `SystemASRParametersGetResponse14sp5()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemASRParametersGetRequest14sp7(OCIRequest):
    """
    Request to get the list of Application Server Registration system parameters.

    The response is either `SystemASRParametersGetResponse14sp7()` or `ErrorResponse()`.
    Replaced by: `SystemASRParametersGetRequest23()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemASRParametersGetRequest23(OCIRequest):
    """
    Request to get the list of Application Server Registration system parameters.

    The response is either `SystemASRParametersGetResponse23()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemASRParametersModifyRequest(OCIRequest):
    """
    Request to modify Application Server Registration system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        max_transmissions (int): maxTransmissions *Optional*
        retransmission_delay_milli_seconds (int): retransmissionDelayMilliSeconds
            *Optional*
        listening_port (int): listeningPort *Optional*
        source_address (str): sourceAddress *Optional*
    """

    __slots__: List[str] = [
        "max_transmissions",
        "retransmission_delay_milli_seconds",
        "listening_port",
        "source_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("max_transmissions", "maxTransmissions", int),
            E(
                "retransmission_delay_milli_seconds",
                "retransmissionDelayMilliSeconds",
                int,
            ),
            E("listening_port", "listeningPort", int),
            E("source_address", "sourceAddress", str),
        )


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 (int): maxTransmissions *Optional*
        retransmission_delay_milli_seconds (int): retransmissionDelayMilliSeconds
            *Optional*
        listening_port (int): listeningPort *Optional*
        enable_custom_message_control (bool): enableCustomMessageControl *Optional*
        custom_number_of_users_per_message (int): customNumberOfUsersPerMessage *Optional*
        custom_message_interval_milliseconds (int): customMessageIntervalMilliseconds
            *Optional*
    """

    __slots__: List[str] = [
        "max_transmissions",
        "retransmission_delay_milli_seconds",
        "listening_port",
        "enable_custom_message_control",
        "custom_number_of_users_per_message",
        "custom_message_interval_milliseconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("max_transmissions", "maxTransmissions", int),
            E(
                "retransmission_delay_milli_seconds",
                "retransmissionDelayMilliSeconds",
                int,
            ),
            E("listening_port", "listeningPort", int),
            E("enable_custom_message_control", "enableCustomMessageControl", bool),
            E(
                "custom_number_of_users_per_message",
                "customNumberOfUsersPerMessage",
                int,
            ),
            E(
                "custom_message_interval_milliseconds",
                "customMessageIntervalMilliseconds",
                int,
            ),
        )


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): deviceName
        tag_name (str): tagName
        tag_value (str): tagValue *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "tag_name",
        "tag_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True),
            E("tag_value", "tagValue", str),
        )


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): deviceName
        tag_name (List[str]): tagName
    """

    __slots__: List[str] = [
        "device_name",
        "tag_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True, is_array=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): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=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): deviceName
        tag_name (str): tagName
        tag_value (str): tagValue *Optional*
        tag_value_to_encrypt (str): tagValueToEncrypt *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "tag_name",
        "tag_value",
        "tag_value_to_encrypt",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True),
            E("tag_value", "tagValue", str),
            E("tag_value_to_encrypt", "tagValueToEncrypt", str),
        )


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 (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


class SystemAccessDeviceDeviceActivationGetRequest(OCIRequest):
    """
    Requests the activation information for a device configured at System level.

    Returns a `SystemAccessDeviceDeviceActivationGetResponse()` or `ErrorResponse()`.

    Attributes:
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=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): deviceName
        activate_device (bool): activateDevice
    """

    __slots__: List[str] = [
        "device_name",
        "activate_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("activate_device", "activateDevice", bool, is_required=True),
        )


class SystemAccessDeviceFileGetListRequest(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 `SystemAccessDeviceFileGetListResponse()` or `ErrorResponse()`.

    Replaced By: `SystemAccessDeviceFileGetListRequest14sp8()`

    Attributes:
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=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): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=True),)


class SystemAccessDeviceFileGetRequest(OCIRequest):
    """
    Request to get a device profile file.

    The response is either `SystemAccessDeviceFileGetResponse()` or `ErrorResponse()`.

    Replaced By: `SystemAccessDeviceFileGetRequest14sp8()`

    Attributes:
        device_name (str): deviceName
        file_type (str): fileType
    """

    __slots__: List[str] = [
        "device_name",
        "file_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("file_type", "fileType", str, is_required=True),
        )


class SystemAccessDeviceFileGetRequest14sp8(OCIRequest):
    """
    Request to get a device profile file.

    The response is either `SystemAccessDeviceFileGetResponse14sp8()` or
    `ErrorResponse()`. Replaced by: `SystemAccessDeviceFileGetRequest16sp1()`

    Attributes:
        device_name (str): deviceName
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "device_name",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class SystemAccessDeviceFileGetRequest16sp1(OCIRequest):
    """
    Request to get a device profile file.

    The response is either `SystemAccessDeviceFileGetResponse16sp1()` or
    `ErrorResponse()`. Replaced by: `SystemAccessDeviceFileGetRequest20()`

    Attributes:
        device_name (str): deviceName
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "device_name",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class SystemAccessDeviceFileGetRequest20(OCIRequest):
    """
    Request to get a device profile file.

    The response is either `SystemAccessDeviceFileGetResponse20()` or `ErrorResponse()`.

    Attributes:
        device_name (str): deviceName
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "device_name",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=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): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=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): deviceName
        tag_set_name (str): tagSetName *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("tag_set_name", "tagSetName", str),
        )


class SystemAccessDeviceGetLinkedLeafDeviceListRequest(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". It can be linked to only one tree
    device.  The list includes devices created at the system, service provider, and group
    levels.

    The response is either `SystemAccessDeviceGetLinkedLeafDeviceListResponse()` or
    `ErrorResponse()`.

    Attributes:
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=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". It can be linked to only one tree
    device.

    The response is either `SystemAccessDeviceGetLinkedTreeDeviceResponse()` or
    `ErrorResponse()`.

    Attributes:
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=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): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=True),)


class SystemAccessDeviceGetRequest(OCIRequest):
    """
    Requests the configuration of a specified system access device.

    The response is either `SystemAccessDeviceGetResponse()` or `ErrorResponse()`.

    Replaced By: `SystemAccessDeviceGetRequest14sp3()`

    Attributes:
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=True),)


class SystemAccessDeviceGetRequest14sp3(OCIRequest):
    """
    Requests the configuration of a specified system access device.

    The response is either `SystemAccessDeviceGetResponse14sp3()` or `ErrorResponse()`.

    Replaced By: `SystemAccessDeviceGetRequest14sp6()`

    Attributes:
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=True),)


class SystemAccessDeviceGetRequest14sp6(OCIRequest):
    """
    Requests the configuration of a specified system access device.

    The response is either `SystemAccessDeviceGetResponse14sp6()` or `ErrorResponse()`.
    Replaced by: `SystemAccessDeviceGetRequest16()`

    Attributes:
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=True),)


class SystemAccessDeviceGetRequest16(OCIRequest):
    """
    Requests the configuration of a specified system access device.

    The response is either `SystemAccessDeviceGetResponse16()` or `ErrorResponse()`.
    Replaced by: `SystemAccessDeviceGetRequest19()`

    Attributes:
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=True),)


class SystemAccessDeviceGetRequest18sp1(OCIRequest):
    """
    Requests the configuration of a specified system access device.

    The response is either `SystemAccessDeviceGetResponse18sp1()` or `ErrorResponse()`.
    Replaced by: `SystemAccessDeviceGetRequest22()`

    Attributes:
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=True),)


class SystemAccessDeviceGetRequest22(OCIRequest):
    """
    Requests the configuration of a specified system access device.

    The response is either `SystemAccessDeviceGetResponse22()` or `ErrorResponse()`.
    Replaced by: `SystemAccessDeviceGetRequest24()`

    Attributes:
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=True),)


class SystemAccessDeviceGetRequest22V2(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 `SystemAccessDeviceGetResponse22V2()` or `ErrorResponse()`.

    Replaced By: `SystemAccessDeviceGetRequest24()`

    Attributes:
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


class SystemAccessDeviceGetRequest22V3(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 `SystemAccessDeviceGetResponse22V3()` or `ErrorResponse()`.

    Replaced By: `SystemAccessDeviceGetRequest24()`

    Attributes:
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


class SystemAccessDeviceGetRequest22V4(OCIRequest):
    """
    Requests the configuration of a specified system access device.

    The response is either `SystemAccessDeviceGetResponse22V4()` or `ErrorResponse()`. The
    following elements are only used in AS data mode and ignored in XS data mode:
    deviceExternalId Replaced by: `SystemAccessDeviceGetRequest24()`

    Attributes:
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


class SystemAccessDeviceGetRequest24(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 `SystemAccessDeviceGetResponse24()` or `ErrorResponse()`.

    Attributes:
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "device_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
        )


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): deviceName
        line_port (str): linePort
        private_identity (str): privateIdentity *Optional*
        is_primary_line_port (bool): isPrimaryLinePort *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "line_port",
        "private_identity",
        "is_primary_line_port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("line_port", "linePort", str, is_required=True),
            E("private_identity", "privateIdentity", str),
            E("is_primary_line_port", "isPrimaryLinePort", bool),
        )


class SystemAccessDeviceMonitorAddDeviceTypeRequest(OCIRequest):
    """
    Add a device type to be monitored.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        add_all_device_types (bool): addAllDeviceTypes *Optional*
        device_type (str): deviceType *Optional*
    """

    __slots__: List[str] = [
        "add_all_device_types",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("add_all_device_types", "addAllDeviceTypes", bool),
            E("device_type", "deviceType", str),
        )


class SystemAccessDeviceMonitorDeleteDeviceTypeRequest(OCIRequest):
    """
    Remove a device type to be monitored.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        delete_all_device_types (bool): deleteAllDeviceTypes *Optional*
        device_type (str): deviceType *Optional*
    """

    __slots__: List[str] = [
        "delete_all_device_types",
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("delete_all_device_types", "deleteAllDeviceTypes", bool),
            E("device_type", "deviceType", str),
        )


class SystemAccessDeviceMonitorGetDeviceTypeListRequest(OCIRequest):
    """
    Get a list of monitored device types.

    The response is either a `SystemAccessDeviceMonitorGetDeviceTypeListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAccessDeviceMonitorParametersGetRequest(OCIRequest):
    """
    Request to get the list of Access Device Monitor system parameters.

    The response is either `SystemAccessDeviceMonitorParametersGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAccessDeviceMonitorParametersModifyRequest(OCIRequest):
    """
    Request to modify Access Device Monitor system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        polling_interval_minutes (int): pollingIntervalMinutes *Optional*
    """

    __slots__: List[str] = [
        "polling_interval_minutes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("polling_interval_minutes", "pollingIntervalMinutes", int),)


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): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=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): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=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): deviceName
        tag_set_name (str): tagSetName *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("tag_set_name", "tagSetName", str),
        )


class SystemAccessDeviceTypeGetEnhancedConfigurableListRequest(OCIRequest):
    """
    Requests the list of device types supporting enhanced configuration.

    The response is either `SystemAccessDeviceTypeGetEnhancedConfigurableListResponse()`
    or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAccessDeviceTypeGetListRequest(OCIRequest):
    """
    Requests the list of access device types.

    The response is either `SystemAccessDeviceTypeGetListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAccountingAddChargingFunctionElementServerRequest(OCIRequest):
    """
    Request to add a ChargingFunctionElement Server to the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        address (str): address
        is_net_address_extended (bool): isNetAddressExtended
        type (str): type
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "address",
        "is_net_address_extended",
        "type",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("address", "address", str, is_required=True),
            E(
                "is_net_address_extended",
                "isNetAddressExtended",
                bool,
                is_required=True,
            ),
            E("type", "type", str, is_required=True),
            E("description", "description", str),
        )


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): netAddress
        port (int): port
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int, is_required=True),
            E("description", "description", str),
        )


class SystemAccountingDeleteChargingFunctionElementServerRequest(OCIRequest):
    """
    Request to delete a ChargingFunctionElementServer from the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        address (str): address
    """

    __slots__: List[str] = [
        "address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("address", "address", str, is_required=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): netAddress
        port (int): port
    """

    __slots__: List[str] = [
        "net_address",
        "port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int, is_required=True),
        )


class SystemAccountingGetChargingFunctionElementServerListRequest(OCIRequest):
    """
    Request to get a list of ChargingFunctionElementServers defined in the system.

    The response is either a
    `SystemAccountingGetChargingFunctionElementServerListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAccountingGetRadiusServerListRequest(OCIRequest):
    """
    Request to get a list of Radius Servers defined in the system.

    The response is either a `SystemAccountingGetRadiusServerListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): attributeValuePairCode
        vendor_id (int): vendorId
    """

    __slots__: List[str] = [
        "attribute_value_pair_code",
        "vendor_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "attribute_value_pair_code",
                "attributeValuePairCode",
                int,
                is_required=True,
            ),
            E("vendor_id", "vendorId", int, is_required=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): attributeValuePairCode
        vendor_id (int): vendorId
    """

    __slots__: List[str] = [
        "attribute_value_pair_code",
        "vendor_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "attribute_value_pair_code",
                "attributeValuePairCode",
                int,
                is_required=True,
            ),
            E("vendor_id", "vendorId", int, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAccountingModifyChargingFunctionElementServerRequest(OCIRequest):
    """
    Request to modify a ChargingFunctionElementServer in the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        address (str): address
        type (str): type *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "address",
        "type",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("address", "address", str, is_required=True),
            E("type", "type", str),
            E("description", "description", str),
        )


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): netAddress
        port (int): port
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int, is_required=True),
            E("description", "description", str),
        )


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]): orderedAddressList
    """

    __slots__: List[str] = [
        "ordered_address_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "ordered_address_list",
                "orderedAddressList",
                str,
                is_required=True,
                is_array=True,
            ),
        )


class SystemAdminAddRequest(OCIRequest):
    """
    Add a system or provisioning administrator.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        first_name (str): firstName *Optional*
        last_name (str): lastName *Optional*
        password (str): password
        language (str): language *Optional*
        admin_type (str): adminType
        read_only (bool): readOnly
    """

    __slots__: List[str] = [
        "user_id",
        "first_name",
        "last_name",
        "password",
        "language",
        "admin_type",
        "read_only",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("first_name", "firstName", str),
            E("last_name", "lastName", str),
            E("password", "password", str, is_required=True),
            E("language", "language", str),
            E("admin_type", "adminType", str, is_required=True),
            E("read_only", "readOnly", bool, is_required=True),
        )


class SystemAdminDeleteRequest(OCIRequest):
    """
    Delete a system or provisioning administrator.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class SystemAdminGetListRequest(OCIRequest):
    """
    Get a list of system administrators.

    The response is either a `SystemAdminGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAdminGetRequest(OCIRequest):
    """
    Get a system or provisioning administrators profile.

    The response is either a `SystemAdminGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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()`.

    Attributes:
        user_id (str): userId
        first_name (str): firstName *Optional*
        last_name (str): lastName *Optional*
        password (str): password *Optional*
        language (str): language *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "first_name",
        "last_name",
        "password",
        "language",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("first_name", "firstName", str),
            E("last_name", "lastName", str),
            E("password", "password", str),
            E("language", "language", str),
        )


class SystemAdviceOfChargeCostInformationSourceAddRequest(OCIRequest):
    """
    Add a cost information source.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        peer_identity (str): peerIdentity
        priority (int): priority
    """

    __slots__: List[str] = [
        "peer_identity",
        "priority",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("peer_identity", "peerIdentity", str, is_required=True),
            E("priority", "priority", int, is_required=True),
        )


class SystemAdviceOfChargeCostInformationSourceDeleteRequest(OCIRequest):
    """
    Delete a cost information source.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        peer_identity (str): peerIdentity
    """

    __slots__: List[str] = [
        "peer_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("peer_identity", "peerIdentity", str, is_required=True),)


class SystemAdviceOfChargeCostInformationSourceGetListRequest(OCIRequest):
    """
    Get a list of cost information sources.

    The response is either `SystemAdviceOfChargeCostInformationSourceGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAdviceOfChargeCostInformationSourceModifyRequest(OCIRequest):
    """
    Modify a cost information source.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        peer_identity (str): peerIdentity
        priority (int): priority
    """

    __slots__: List[str] = [
        "peer_identity",
        "priority",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("peer_identity", "peerIdentity", str, is_required=True),
            E("priority", "priority", int, is_required=True),
        )


class SystemAdviceOfChargeGetRequest(OCIRequest):
    """
    Request to get the list of Advice of Charge system parameters.

    The response is either `SystemAdviceOfChargeGetResponse()` or `ErrorResponse()`.
    Replaced by: `SystemAdviceOfChargeGetRequest19sp1()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAdviceOfChargeGetRequest19sp1(OCIRequest):
    """
    Request to get the list of Advice of Charge system parameters.

    The response is either `SystemAdviceOfChargeGetResponse19sp1()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAdviceOfChargeModifyRequest(OCIRequest):
    """
    Request to modify Advice of Charge system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemAdviceOfChargeModifyRequest19sp1()`

    Attributes:
        delay_between_notification_seconds (int): delayBetweenNotificationSeconds
            *Optional*
        incoming_aoc_handling (str): incomingAocHandling *Optional*
        cost_information_source (str): costInformationSource *Optional*
    """

    __slots__: List[str] = [
        "delay_between_notification_seconds",
        "incoming_aoc_handling",
        "cost_information_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "delay_between_notification_seconds",
                "delayBetweenNotificationSeconds",
                int,
            ),
            E("incoming_aoc_handling", "incomingAocHandling", str),
            E("cost_information_source", "costInformationSource", str),
        )


class SystemAdviceOfChargeModifyRequest19sp1(OCIRequest):
    """
    Request to modify Advice of Charge system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        delay_between_notification_seconds (int): delayBetweenNotificationSeconds
            *Optional*
        incoming_aoc_handling (str): incomingAocHandling *Optional*
        use_ocs_enquiry (bool): useOCSEnquiry *Optional*
        ocs_enquiry_type (str): OCSEnquiryType *Optional*
    """

    __slots__: List[str] = [
        "delay_between_notification_seconds",
        "incoming_aoc_handling",
        "use_ocs_enquiry",
        "ocs_enquiry_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "delay_between_notification_seconds",
                "delayBetweenNotificationSeconds",
                int,
            ),
            E("incoming_aoc_handling", "incomingAocHandling", str),
            E("use_ocs_enquiry", "useOCSEnquiry", bool),
            E("ocs_enquiry_type", "OCSEnquiryType", str),
        )


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): aliasNetAddress
    """

    __slots__: List[str] = [
        "alias_net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("alias_net_address", "aliasNetAddress", str, is_required=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): aliasNetAddress
    """

    __slots__: List[str] = [
        "alias_net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("alias_net_address", "aliasNetAddress", str, is_required=True),)


class SystemAliasGetListRequest(OCIRequest):
    """
    Requests the list of all system-level Application Server aliases.

    The response is either `SystemAliasGetListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAnonymousCallRejectionGetRequest(OCIRequest):
    """
    Get Anonymous Call Rejection system parameters.

    The response is either a `SystemAnonymousCallRejectionGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAnonymousCallRejectionModifyRequest(OCIRequest):
    """
    Modify a system Anonymous Call Rejection parameter.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        pai_required (bool): paiRequired *Optional*
        screen_only_local_calls (bool): screenOnlyLocalCalls *Optional*
    """

    __slots__: List[str] = [
        "pai_required",
        "screen_only_local_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("pai_required", "paiRequired", bool),
            E("screen_only_local_calls", "screenOnlyLocalCalls", bool),
        )


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): name
        subscriber_id (str): subscriberId
        channel_set_id (str): channelSetId
    """

    __slots__: List[str] = [
        "name",
        "subscriber_id",
        "channel_set_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("subscriber_id", "subscriberId", str, is_required=True),
            E("channel_set_id", "channelSetId", str, is_required=True),
        )


class SystemApplicationControllerDeleteRequest(OCIRequest):
    """
    Delete an application controller.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemApplicationControllerGetListRequest(OCIRequest):
    """
    Get a list of application controllers that are configured for the system.

    The response is either `SystemApplicationControllerGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): fileName
    """

    __slots__: List[str] = [
        "file_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("file_name", "fileName", str, is_required=True),)


class SystemAuthenticationLockoutSettingsGetRequest(OCIRequest):
    """
    Request to get the authentication lockout settings in the system.

    The response is either a `SystemAuthenticationLockoutSettingsResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (int): counterResetIntervalDays *Optional*
        counter_reset_hour (int): counterResetHour *Optional*
        counter_reset_minute (int): counterResetMinute *Optional*
        emergency_sip_bypass_allowed (bool): emergencySIPBypassAllowed *Optional*
    """

    __slots__: List[str] = [
        "counter_reset_interval_days",
        "counter_reset_hour",
        "counter_reset_minute",
        "emergency_sip_bypass_allowed",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("counter_reset_interval_days", "counterResetIntervalDays", int),
            E("counter_reset_hour", "counterResetHour", int),
            E("counter_reset_minute", "counterResetMinute", int),
            E("emergency_sip_bypass_allowed", "emergencySIPBypassAllowed", bool),
        )


class SystemAutomaticCallbackAddReleaseCauseListRequest(OCIRequest):
    """
    Adds automatic callback release cause to the releaseCause attribute.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        release_cause (List[str]): releaseCause *Optional*
    """

    __slots__: List[str] = [
        "release_cause",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("release_cause", "releaseCause", str, is_array=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 (List[str]): releaseCause *Optional*
    """

    __slots__: List[str] = [
        "release_cause",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("release_cause", "releaseCause", str, is_array=True),)


class SystemAutomaticCallbackGetReleaseCauseListRequest(OCIRequest):
    """
    Request the system's automatic callback attributes.

    The response is either a `SystemAutomaticCallbackGetReleaseCauseListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAutomaticCallbackGetRequest(OCIRequest):
    """
    Request the system's automatic callback attributes.

    The response is either a `SystemAutomaticCallbackGetResponse()` or an
    `ErrorResponse()`.

    Replaced By: `SystemAutomaticCallbackGetRequest15()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAutomaticCallbackGetRequest15(OCIRequest):
    """
    Request the system's automatic callback attributes.

    The response is either a `SystemAutomaticCallbackGetResponse15()` or an
    `ErrorResponse()`.

    Replaced By: `SystemAutomaticCallbackGetRequest15sp2()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAutomaticCallbackGetRequest15sp2(OCIRequest):
    """
    Request the system's automatic callback attributes.

    The response is either a `SystemAutomaticCallbackGetResponse15sp2()` or an
    `ErrorResponse()`. Replaced by: `SystemAutomaticCallbackGetRequest17()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAutomaticCallbackGetRequest17(OCIRequest):
    """
    Request the system's automatic callback attributes.

    The response is either a `SystemAutomaticCallbackGetResponse17()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAutomaticCallbackModifyRequest(OCIRequest):
    """
    Modifies the system's automatic callback attributes.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `SystemAutomaticCallbackModifyRequest15()`

    Attributes:
        monitor_minutes (int): monitorMinutes *Optional*
        wait_between_retry_originator_minutes (int): waitBetweenRetryOriginatorMinutes
            *Optional*
        max_monitors_per_originator (int): maxMonitorsPerOriginator *Optional*
        max_callback_rings (int): maxCallbackRings *Optional*
        max_retry_originator_minutes (int): maxRetryOriginatorMinutes *Optional*
    """

    __slots__: List[str] = [
        "monitor_minutes",
        "wait_between_retry_originator_minutes",
        "max_monitors_per_originator",
        "max_callback_rings",
        "max_retry_originator_minutes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("monitor_minutes", "monitorMinutes", int),
            E(
                "wait_between_retry_originator_minutes",
                "waitBetweenRetryOriginatorMinutes",
                int,
            ),
            E("max_monitors_per_originator", "maxMonitorsPerOriginator", int),
            E("max_callback_rings", "maxCallbackRings", int),
            E("max_retry_originator_minutes", "maxRetryOriginatorMinutes", int),
        )


class SystemAutomaticCallbackModifyRequest15(OCIRequest):
    """
    Modifies the system's automatic callback attributes.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        monitor_minutes (int): monitorMinutes *Optional*
        max_monitors_per_originator (int): maxMonitorsPerOriginator *Optional*
        max_callback_rings (int): maxCallbackRings *Optional*
        max_monitors_per_terminator (int): maxMonitorsPerTerminator *Optional*
        terminator_idle_guard_seconds (int): terminatorIdleGuardSeconds *Optional*
        callback_method (str): callbackMethod *Optional*
        polling_interval_seconds (int): pollingIntervalSeconds *Optional*
        activation_digit (int): activationDigit *Optional*
    """

    __slots__: List[str] = [
        "monitor_minutes",
        "max_monitors_per_originator",
        "max_callback_rings",
        "max_monitors_per_terminator",
        "terminator_idle_guard_seconds",
        "callback_method",
        "polling_interval_seconds",
        "activation_digit",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("monitor_minutes", "monitorMinutes", int),
            E("max_monitors_per_originator", "maxMonitorsPerOriginator", int),
            E("max_callback_rings", "maxCallbackRings", int),
            E("max_monitors_per_terminator", "maxMonitorsPerTerminator", int),
            E("terminator_idle_guard_seconds", "terminatorIdleGuardSeconds", int),
            E("callback_method", "callbackMethod", str),
            E("polling_interval_seconds", "pollingIntervalSeconds", int),
            E("activation_digit", "activationDigit", int),
        )


class SystemAutomaticCollectCallGetRequest(OCIRequest):
    """
    Get system Automatic Collect Call service settings.

    The response is either `SystemAutomaticCollectCallGetResponse()` or `ErrorResponse()`.
    Replaced by `SystemAutomaticCollectCallGetRequest()` in AS mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAutomaticCollectCallGetRequest22(OCIRequest):
    """
    Get system Automatic Collect Call service settings.

    The response is either `SystemAutomaticCollectCallGetResponse22()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemAutomaticCollectCallModifyRequest(OCIRequest):
    """
    Modify system Automatic Collect Call service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        enable_automatic_collect_call (bool): enableAutomaticCollectCall *Optional*
        enable_connect_tone (bool): enableConnectTone *Optional*
        include_country_code_in_cic (bool): includeCountryCodeInCic *Optional*
    """

    __slots__: List[str] = [
        "enable_automatic_collect_call",
        "enable_connect_tone",
        "include_country_code_in_cic",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enable_automatic_collect_call", "enableAutomaticCollectCall", bool),
            E("enable_connect_tone", "enableConnectTone", bool),
            E("include_country_code_in_cic", "includeCountryCodeInCic", bool),
        )


class SystemAutomaticCollectCallPrefixDigitsGetListRequest(OCIRequest):
    """
    Get the system automatic collect call prefix digits lists.

    The response is either `SystemAutomaticCollectCallPrefixDigitsGetListResponse()` or
    `ErrorResponse()`.

    Attributes:
        country_code (str): countryCode *Optional*
    """

    __slots__: List[str] = [
        "country_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("country_code", "countryCode", str),)


class SystemBCCTAddOCIInterfaceAddressRequest(OCIRequest):
    """
    Add an OCI entry to the Broadworks Common Communication Transport (BCCT) protocol to
    interface mapping table.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        interface_net_address (str): interfaceNetAddress
    """

    __slots__: List[str] = [
        "interface_net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("interface_net_address", "interfaceNetAddress", str, is_required=True),
        )


class SystemBCCTDeleteOCIInterfaceAddressRequest(OCIRequest):
    """
    Delete an OCI entry in the Broadworks Common Communication Transport (BCCT) protocol
    to interface mapping table.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        interface_net_address (str): interfaceNetAddress
    """

    __slots__: List[str] = [
        "interface_net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("interface_net_address", "interfaceNetAddress", str, is_required=True),
        )


class SystemBCCTGetOCIInterfaceAddressListRequest(OCIRequest):
    """
    Get the OCI entries from the Broadworks Common Communication Transport (BCCT) protocol
    to interface mapping list.

    The response is `SystemBCCTGetOCIInterfaceAddressListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadCloudGetRequest(OCIRequest):
    """
    Get the system interface attributes for Messaging Server/BroadCloud.

    The response is either `SystemBroadCloudGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadCloudModifyRequest(OCIRequest):
    """
    Modify the system interface attributes for Messaging Server/BroadCloud.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        provisioning_url (str): provisioningUrl *Optional*
        provisioning_user_id (str): provisioningUserId *Optional*
        provisioning_password (str): provisioningPassword *Optional*
        enable_synchronization (bool): enableSynchronization *Optional*
    """

    __slots__: List[str] = [
        "provisioning_url",
        "provisioning_user_id",
        "provisioning_password",
        "enable_synchronization",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("provisioning_url", "provisioningUrl", str),
            E("provisioning_user_id", "provisioningUserId", str),
            E("provisioning_password", "provisioningPassword", str),
            E("enable_synchronization", "enableSynchronization", bool),
        )


class SystemBroadWorksAnywhereGetRequest(OCIRequest):
    """
    Get the Broadworks Anywhere system parameters.

    The response is either a `SystemBroadWorksAnywhereGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksAnywhereModifyRequest(OCIRequest):
    """
    Modify the BroadWorks Anywhere system parameters.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        enable_transfer_notification (bool): enableTransferNotification *Optional*
    """

    __slots__: List[str] = [
        "enable_transfer_notification",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("enable_transfer_notification", "enableTransferNotification", bool),)


class SystemBroadWorksMobileManagerGetRequest(OCIRequest):
    """
    Get the BroadWorks Mobile Manager service system settings.

    The response is either `SystemBroadWorksMobileManagerGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksMobileManagerModifyRequest(OCIRequest):
    """
    Modify the BroadWorks Mobile Manager service system settings.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        scf_api_net_address1 (str): scfApiNetAddress1 *Optional*
        scf_api_net_address2 (str): scfApiNetAddress2 *Optional*
        user_name (str): userName *Optional*
        password (str): password *Optional*
        email_from_address (str): emailFromAddress *Optional*
        scf_ims_only (bool): scfIMSOnly *Optional*
        signaling_ip_address (str): signalingIPAddress *Optional*
        signaling_port (int): signalingPort *Optional*
    """

    __slots__: List[str] = [
        "scf_api_net_address1",
        "scf_api_net_address2",
        "user_name",
        "password",
        "email_from_address",
        "scf_ims_only",
        "signaling_ip_address",
        "signaling_port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("scf_api_net_address1", "scfApiNetAddress1", str),
            E("scf_api_net_address2", "scfApiNetAddress2", str),
            E("user_name", "userName", str),
            E("password", "password", str),
            E("email_from_address", "emailFromAddress", str),
            E("scf_ims_only", "scfIMSOnly", bool),
            E("signaling_ip_address", "signalingIPAddress", str),
            E("signaling_port", "signalingPort", int),
        )


class SystemBroadWorksMobilityDeleteIMRNListRequest(OCIRequest):
    """
    Removes a BroadWorks Mobility IMRN number from the system.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        imrn_number (List[str]): imrnNumber
    """

    __slots__: List[str] = [
        "imrn_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("imrn_number", "imrnNumber", str, is_required=True, is_array=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): mobileNetworkName
        imrn_number (List[str]): imrnNumber
    """

    __slots__: List[str] = [
        "mobile_network_name",
        "imrn_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("mobile_network_name", "mobileNetworkName", str, is_required=True),
            E("imrn_number", "imrnNumber", str, is_required=True, is_array=True),
        )


class SystemBroadWorksMobilityGeographicalPoolAddRequest(OCIRequest):
    """
    Add a geographical pool to the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        country_code (str): countryCode
        is_default (bool): isDefault
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "name",
        "country_code",
        "is_default",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("country_code", "countryCode", str, is_required=True),
            E("is_default", "isDefault", bool, is_required=True),
            E("description", "description", str),
        )


class SystemBroadWorksMobilityGeographicalPoolDeleteRequest(OCIRequest):
    """
    Delete a geographical pool from the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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 (str): countryCode *Optional*
    """

    __slots__: List[str] = [
        "country_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("country_code", "countryCode", str),)


class SystemBroadWorksMobilityGeographicalPoolIMRNDeleteListRequest(OCIRequest):
    """
    Remove BroadWorks Mobility IMRN numbers from a geographical pool.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        geographical_pool_name (str): geographicalPoolName
        imrn_number (List[str]): imrnNumber
    """

    __slots__: List[str] = [
        "geographical_pool_name",
        "imrn_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("geographical_pool_name", "geographicalPoolName", str, is_required=True),
            E("imrn_number", "imrnNumber", str, is_required=True, is_array=True),
        )


class SystemBroadWorksMobilityGeographicalPoolModifyRequest(OCIRequest):
    """
    Modify the settings of a geographical pool.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        name (str): name
        new_name (str): newName *Optional*
        is_default (bool): isDefault *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "is_default",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("is_default", "isDefault", bool),
            E("description", "description", str),
        )


class SystemBroadWorksMobilityGeographicalPoolPrefixAddListRequest(OCIRequest):
    """
    Add a list of geographical prefixes.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        geographical_pool_name (str): geographicalPoolName
        prefix (List[str]): prefix
    """

    __slots__: List[str] = [
        "geographical_pool_name",
        "prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("geographical_pool_name", "geographicalPoolName", str, is_required=True),
            E("prefix", "prefix", str, is_required=True, is_array=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): geographicalPoolName
        prefix (List[str]): prefix
    """

    __slots__: List[str] = [
        "geographical_pool_name",
        "prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("geographical_pool_name", "geographicalPoolName", str, is_required=True),
            E("prefix", "prefix", str, is_required=True, is_array=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): geographicalPoolName
    """

    __slots__: List[str] = [
        "geographical_pool_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("geographical_pool_name", "geographicalPoolName", str, is_required=True),
        )


class SystemBroadWorksMobilityGetRequest(OCIRequest):
    """
    Get the broadworks mobility system parameters.

    The response is either a `SystemBroadWorksMobilityGetResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemBroadWorksMobilityGetRequest17sp4()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksMobilityGetRequest17sp4(OCIRequest):
    """
    Get the broadworks mobility system parameters.

    The response is either a `SystemBroadWorksMobilityGetResponse17sp4()` or an
    `ErrorResponse()`. Replaced by: `SystemBroadWorksMobilityGetRequest19sp1()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksMobilityGetRequest19sp1(OCIRequest):
    """
    Get the broadworks mobility system parameters.

    The response is either a `SystemBroadWorksMobilityGetResponse19sp1()` or an
    `ErrorResponse()`. Replaced by `SystemBroadWorksMobilityGetRequest21()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksMobilityGetRequest21(OCIRequest):
    """
    Get the broadworks mobility system parameters.

    The response is either a `SystemBroadWorksMobilityGetResponse21()` or an
    `ErrorResponse()`. Replaced by: `SystemBroadWorksMobilityGetRequest22()` in AS data
    mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksMobilityGetRequest21sp1(OCIRequest):
    """
    Get the broadworks mobility system parameters.

    The response is either a `SystemBroadWorksMobilityGetResponse21sp1()` or an
    `ErrorResponse()`. Replaced by `SystemBroadWorksMobilityGetRequest22V2()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksMobilityGetRequest22(OCIRequest):
    """
    Get the broadworks mobility system parameters.

    The response is either a `SystemBroadWorksMobilityGetResponse22()` or an
    `ErrorResponse()`. Replaced by `SystemBroadWorksMobilityGetRequest22V2()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksMobilityGetRequest22V2(OCIRequest):
    """
    Get the broadworks mobility system parameters.

    The response is either a `SystemBroadWorksMobilityGetResponse22V2()` or an
    `ErrorResponse()`. Replaced by `SystemBroadWorksMobilityGetRequest22V3()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksMobilityGetRequest22V3(OCIRequest):
    """
    Get the broadworks mobility system parameters.

    The response is either a `SystemBroadWorksMobilityGetResponse22V3()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksMobilityMobileNetworkAddRequest(OCIRequest):
    """
    Add a Mobile Network.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        name (str): name
        scf_signaling_net_address (str): scfSignalingNetAddress *Optional*
        scf_signaling_port (int): scfSignalingPort *Optional*
        refresh_period_seconds (int): refreshPeriodSeconds
        max_consecutive_failures (int): maxConsecutiveFailures
        max_response_wait_time_milliseconds (int): maxResponseWaitTimeMilliseconds
        enable_announcement_suppression (bool): enableAnnouncementSuppression
        service_access_code_list_name (str): serviceAccessCodeListName *Optional*
    """

    __slots__: List[str] = [
        "name",
        "scf_signaling_net_address",
        "scf_signaling_port",
        "refresh_period_seconds",
        "max_consecutive_failures",
        "max_response_wait_time_milliseconds",
        "enable_announcement_suppression",
        "service_access_code_list_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("scf_signaling_net_address", "scfSignalingNetAddress", str),
            E("scf_signaling_port", "scfSignalingPort", int),
            E("refresh_period_seconds", "refreshPeriodSeconds", int, is_required=True),
            E(
                "max_consecutive_failures",
                "maxConsecutiveFailures",
                int,
                is_required=True,
            ),
            E(
                "max_response_wait_time_milliseconds",
                "maxResponseWaitTimeMilliseconds",
                int,
                is_required=True,
            ),
            E(
                "enable_announcement_suppression",
                "enableAnnouncementSuppression",
                bool,
                is_required=True,
            ),
            E("service_access_code_list_name", "serviceAccessCodeListName", str),
        )


class SystemBroadWorksMobilityMobileNetworkDeleteRequest(OCIRequest):
    """
    Delete a Mobile Network.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemBroadWorksMobilityMobileNetworkGetListRequest(OCIRequest):
    """
    Get the list of Mobile Networks.

    The response is either `SystemBroadWorksMobilityMobileNetworkGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksMobilityMobileNetworkGetRequest(OCIRequest):
    """
    Get a Mobile Network.

    The response is either `SystemBroadWorksMobilityMobileNetworkGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemBroadWorksMobilityMobileNetworkModifyRequest(OCIRequest):
    """
    Modify a Mobile Network.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        name (str): name
        new_name (str): newName *Optional*
        scf_signaling_net_address (str): scfSignalingNetAddress *Optional*
        scf_signaling_port (int): scfSignalingPort *Optional*
        refresh_period_seconds (int): refreshPeriodSeconds *Optional*
        max_consecutive_failures (int): maxConsecutiveFailures *Optional*
        max_response_wait_time_milliseconds (int): maxResponseWaitTimeMilliseconds
            *Optional*
        enable_announcement_suppression (bool): enableAnnouncementSuppression *Optional*
        service_access_code_list_name (str): serviceAccessCodeListName *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "scf_signaling_net_address",
        "scf_signaling_port",
        "refresh_period_seconds",
        "max_consecutive_failures",
        "max_response_wait_time_milliseconds",
        "enable_announcement_suppression",
        "service_access_code_list_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("scf_signaling_net_address", "scfSignalingNetAddress", str),
            E("scf_signaling_port", "scfSignalingPort", int),
            E("refresh_period_seconds", "refreshPeriodSeconds", int),
            E("max_consecutive_failures", "maxConsecutiveFailures", int),
            E(
                "max_response_wait_time_milliseconds",
                "maxResponseWaitTimeMilliseconds",
                int,
            ),
            E("enable_announcement_suppression", "enableAnnouncementSuppression", bool),
            E("service_access_code_list_name", "serviceAccessCodeListName", str),
        )


class SystemBroadWorksMobilityModifyRequest(OCIRequest):
    """
    Modify the BroadWorks Mobility system parameters.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemBroadWorksMobilityModifyRequest17sp4()`.

    Attributes:
        enable_location_services (bool): enableLocationServices *Optional*
        enable_msrn_lookup (bool): enableMSRNLookup *Optional*
        enable_mobile_state_checking (bool): enableMobileStateChecking *Optional*
        deny_call_originations (bool): denyCallOriginations *Optional*
        deny_call_terminations (bool): denyCallTerminations *Optional*
        imrn_timeout_milliseconds (int): imrnTimeoutMilliseconds *Optional*
        scf_signaling_ip_address (str): scfSignalingIPAddress *Optional*
        scf_signaling_port (int): scfSignalingPort *Optional*
    """

    __slots__: List[str] = [
        "enable_location_services",
        "enable_msrn_lookup",
        "enable_mobile_state_checking",
        "deny_call_originations",
        "deny_call_terminations",
        "imrn_timeout_milliseconds",
        "scf_signaling_ip_address",
        "scf_signaling_port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enable_location_services", "enableLocationServices", bool),
            E("enable_msrn_lookup", "enableMSRNLookup", bool),
            E("enable_mobile_state_checking", "enableMobileStateChecking", bool),
            E("deny_call_originations", "denyCallOriginations", bool),
            E("deny_call_terminations", "denyCallTerminations", bool),
            E("imrn_timeout_milliseconds", "imrnTimeoutMilliseconds", int),
            E("scf_signaling_ip_address", "scfSignalingIPAddress", str),
            E("scf_signaling_port", "scfSignalingPort", int),
        )


class SystemBroadWorksMobilityModifyRequest17sp4(OCIRequest):
    """
    Modify the BroadWorks Mobility system parameters.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by
    `SystemBroadWorksMobilityModifyRequest21()`.

    Attributes:
        enable_location_services (bool): enableLocationServices *Optional*
        enable_msrn_lookup (bool): enableMSRNLookup *Optional*
        enable_mobile_state_checking (bool): enableMobileStateChecking *Optional*
        deny_call_originations (bool): denyCallOriginations *Optional*
        deny_call_terminations (bool): denyCallTerminations *Optional*
        imrn_timeout_milliseconds (int): imrnTimeoutMilliseconds *Optional*
        scf_signaling_net_address (str): scfSignalingNetAddress *Optional*
        scf_signaling_port (int): scfSignalingPort *Optional*
        refresh_period_seconds (int): refreshPeriodSeconds *Optional*
        max_consecutive_failures (int): maxConsecutiveFailures *Optional*
        max_response_wait_time_milliseconds (int): maxResponseWaitTimeMilliseconds
            *Optional*
        enable_announcement_suppression (bool): enableAnnouncementSuppression *Optional*
    """

    __slots__: List[str] = [
        "enable_location_services",
        "enable_msrn_lookup",
        "enable_mobile_state_checking",
        "deny_call_originations",
        "deny_call_terminations",
        "imrn_timeout_milliseconds",
        "scf_signaling_net_address",
        "scf_signaling_port",
        "refresh_period_seconds",
        "max_consecutive_failures",
        "max_response_wait_time_milliseconds",
        "enable_announcement_suppression",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enable_location_services", "enableLocationServices", bool),
            E("enable_msrn_lookup", "enableMSRNLookup", bool),
            E("enable_mobile_state_checking", "enableMobileStateChecking", bool),
            E("deny_call_originations", "denyCallOriginations", bool),
            E("deny_call_terminations", "denyCallTerminations", bool),
            E("imrn_timeout_milliseconds", "imrnTimeoutMilliseconds", int),
            E("scf_signaling_net_address", "scfSignalingNetAddress", str),
            E("scf_signaling_port", "scfSignalingPort", int),
            E("refresh_period_seconds", "refreshPeriodSeconds", int),
            E("max_consecutive_failures", "maxConsecutiveFailures", int),
            E(
                "max_response_wait_time_milliseconds",
                "maxResponseWaitTimeMilliseconds",
                int,
            ),
            E("enable_announcement_suppression", "enableAnnouncementSuppression", bool),
        )


class SystemBroadWorksMobilityModifyRequest21(OCIRequest):
    """
    Modify the BroadWorks Mobility system parameters.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        enable_location_services (bool): enableLocationServices *Optional*
        enable_msrn_lookup (bool): enableMSRNLookup *Optional*
        enable_mobile_state_checking (bool): enableMobileStateChecking *Optional*
        deny_call_originations (bool): denyCallOriginations *Optional*
        deny_call_terminations (bool): denyCallTerminations *Optional*
        imrn_timeout_milliseconds (int): imrnTimeoutMilliseconds *Optional*
        enable_internal_clid_delivery (bool): enableInternalCLIDDelivery *Optional*
        include_redirect_for_mobility_termination (bool):
            includeRedirectForMobilityTermination *Optional*
        enable_internal_clid_delivery_access_locations (bool):
            enableInternalCLIDDeliveryAccessLocations *Optional*
        enable_enhanced_unreachable_state_checking (bool):
            enableEnhancedUnreachableStateChecking *Optional*
        enable_network_call_barring_status_check (bool):
            enableNetworkCallBarringStatusCheck *Optional*
        network_translation_index (str): networkTranslationIndex *Optional*
    """

    __slots__: List[str] = [
        "enable_location_services",
        "enable_msrn_lookup",
        "enable_mobile_state_checking",
        "deny_call_originations",
        "deny_call_terminations",
        "imrn_timeout_milliseconds",
        "enable_internal_clid_delivery",
        "include_redirect_for_mobility_termination",
        "enable_internal_clid_delivery_access_locations",
        "enable_enhanced_unreachable_state_checking",
        "enable_network_call_barring_status_check",
        "network_translation_index",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enable_location_services", "enableLocationServices", bool),
            E("enable_msrn_lookup", "enableMSRNLookup", bool),
            E("enable_mobile_state_checking", "enableMobileStateChecking", bool),
            E("deny_call_originations", "denyCallOriginations", bool),
            E("deny_call_terminations", "denyCallTerminations", bool),
            E("imrn_timeout_milliseconds", "imrnTimeoutMilliseconds", int),
            E("enable_internal_clid_delivery", "enableInternalCLIDDelivery", bool),
            E(
                "include_redirect_for_mobility_termination",
                "includeRedirectForMobilityTermination",
                bool,
            ),
            E(
                "enable_internal_clid_delivery_access_locations",
                "enableInternalCLIDDeliveryAccessLocations",
                bool,
            ),
            E(
                "enable_enhanced_unreachable_state_checking",
                "enableEnhancedUnreachableStateChecking",
                bool,
            ),
            E(
                "enable_network_call_barring_status_check",
                "enableNetworkCallBarringStatusCheck",
                bool,
            ),
            E("network_translation_index", "networkTranslationIndex", str),
        )


class SystemBroadWorksMobilityServiceAccessCodeAddRequest(OCIRequest):
    """
    Add a system service access code.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by
    `SystemBroadWorksMobilityServiceAccessCodeAddRequest21()`.

    Attributes:
        service_access_code (str): serviceAccessCode
        country_code (str): countryCode
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_access_code",
        "country_code",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_access_code", "serviceAccessCode", str, is_required=True),
            E("country_code", "countryCode", str, is_required=True),
            E("description", "description", str),
        )


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): serviceAccessCodeListName
        country_code (str): countryCode
        service_access_code (str): serviceAccessCode
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_access_code_list_name",
        "country_code",
        "service_access_code",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_access_code_list_name",
                "serviceAccessCodeListName",
                str,
                is_required=True,
            ),
            E("country_code", "countryCode", str, is_required=True),
            E("service_access_code", "serviceAccessCode", str, is_required=True),
            E("description", "description", str),
        )


class SystemBroadWorksMobilityServiceAccessCodeDeleteRequest(OCIRequest):
    """
    Delete a system service access code.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by
    `SystemBroadWorksMobilityServiceAccessCodeDeleteRequest21()`.

    Attributes:
        country_code (str): countryCode
        service_access_code (str): serviceAccessCode
    """

    __slots__: List[str] = [
        "country_code",
        "service_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("country_code", "countryCode", str, is_required=True),
            E("service_access_code", "serviceAccessCode", str, is_required=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): serviceAccessCodeListName
        country_code (str): countryCode
        service_access_code (str): serviceAccessCode
    """

    __slots__: List[str] = [
        "service_access_code_list_name",
        "country_code",
        "service_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_access_code_list_name",
                "serviceAccessCodeListName",
                str,
                is_required=True,
            ),
            E("country_code", "countryCode", str, is_required=True),
            E("service_access_code", "serviceAccessCode", str, is_required=True),
        )


class SystemBroadWorksMobilityServiceAccessCodeGetListRequest(OCIRequest):
    """
    Get a list of system service access codes.

    The response is either `SystemBroadWorksMobilityServiceAccessCodeGetListResponse()` or
    `ErrorResponse()`. Replaced by
    `SystemBroadWorksMobilityServiceAccessCodeGetListRequest21()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): serviceAccessCodeListName
    """

    __slots__: List[str] = [
        "service_access_code_list_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_access_code_list_name",
                "serviceAccessCodeListName",
                str,
                is_required=True,
            ),
        )


class SystemBroadWorksMobilityServiceAccessCodeListAddRequest(OCIRequest):
    """
    Add a Service Access Code list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemBroadWorksMobilityServiceAccessCodeListDeleteRequest(OCIRequest):
    """
    Delete a Service Access Code list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemBroadWorksMobilityServiceAccessCodeListGetListRequest(OCIRequest):
    """
    Get the list of Service Access Code lists.

    The response is either
    `SystemBroadWorksMobilityServiceAccessCodeListGetListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksMobilityServiceAccessCodeListModifyRequest(OCIRequest):
    """
    Modify a Service Access Code list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        name (str): name
        new_name (str): newName *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
        )


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): serviceAccessCodeListName
    """

    __slots__: List[str] = [
        "service_access_code_list_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_access_code_list_name",
                "serviceAccessCodeListName",
                str,
                is_required=True,
            ),
        )


class SystemBroadWorksMobilityServiceAccessCodeModifyRequest(OCIRequest):
    """
    Modify a system service access code.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by
    `SystemBroadWorksMobilityServiceAccessCodeModifyRequest21()`.

    Attributes:
        country_code (str): countryCode
        service_access_code (str): serviceAccessCode
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "country_code",
        "service_access_code",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("country_code", "countryCode", str, is_required=True),
            E("service_access_code", "serviceAccessCode", str, is_required=True),
            E("description", "description", str),
        )


class SystemBroadWorksMobilityServiceAccessCodeModifyRequest21(OCIRequest):
    """
    Modify a service access code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_access_code_list_name (str): serviceAccessCodeListName
        country_code (str): countryCode
        service_access_code (str): serviceAccessCode
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_access_code_list_name",
        "country_code",
        "service_access_code",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_access_code_list_name",
                "serviceAccessCodeListName",
                str,
                is_required=True,
            ),
            E("country_code", "countryCode", str, is_required=True),
            E("service_access_code", "serviceAccessCode", str, is_required=True),
            E("description", "description", str),
        )


class SystemBroadWorksReceptionistEnterpriseGetRequest(OCIRequest):
    """
    Request to get the list of BroadWorks Receptionist - Enterprise parameters.

    The response is either `SystemBroadWorksReceptionistEnterpriseGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBroadWorksReceptionistEnterpriseModifyRequest(OCIRequest):
    """
    Request to modify BroadWorks Receptionist - Enterprise settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        max_monitored_users (int): maxMonitoredUsers *Optional*
    """

    __slots__: List[str] = [
        "max_monitored_users",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("max_monitored_users", "maxMonitoredUsers", int),)


class SystemBusyLampFieldGetRequest(OCIRequest):
    """
    Request the system level data associated with the Busy Lamp Field service.

    The response is either a `SystemBusyLampFieldGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBusyLampFieldGetRequest18(OCIRequest):
    """
    Request the system level data associated with the Busy Lamp Field service.

    The response is either a `SystemBusyLampFieldGetResponse18()` or an `ErrorResponse()`.
    Replaced by: `SystemBusyLampFieldGetRequest23()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBusyLampFieldGetRequest22(OCIRequest):
    """
    Request the system level data associated with the Busy Lamp Field service.

    The response is either a `SystemBusyLampFieldGetResponse22()` or an `ErrorResponse()`.
    Replaced by: `SystemBusyLampFieldGetRequest23V2()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBusyLampFieldGetRequest23(OCIRequest):
    """
    Request the system level data associated with the Busy Lamp Field service.

    The response is either a `SystemBusyLampFieldGetResponse23()` or an `ErrorResponse()`.
    Replaced by: `SystemBusyLampFieldGetRequest23V2()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBusyLampFieldGetRequest23V2(OCIRequest):
    """
    Request the system level data associated with the Busy Lamp Field service.

    The response is either a `SystemBusyLampFieldGetResponse23V2()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 Amplify and 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 (bool):
            displayLocalUserIdentityLastNameFirst *Optional*
        force_use_of_tcp (bool): forceUseOfTCP *Optional*
        enable_redundancy (bool): enableRedundancy *Optional*
        redundancy_task_delay_milliseconds (int): redundancyTaskDelayMilliseconds
            *Optional*
        redundancy_task_interval_milliseconds (int): redundancyTaskIntervalMilliseconds
            *Optional*
        max_number_of_subscriptions_per_redundancy_task_interval (int):
            maxNumberOfSubscriptionsPerRedundancyTaskInterval *Optional*
        ignore_unanswered_terminating_calls (bool): ignoreUnansweredTerminatingCalls
            *Optional*
    """

    __slots__: List[str] = [
        "display_local_user_identity_last_name_first",
        "force_use_of_tcp",
        "enable_redundancy",
        "redundancy_task_delay_milliseconds",
        "redundancy_task_interval_milliseconds",
        "max_number_of_subscriptions_per_redundancy_task_interval",
        "ignore_unanswered_terminating_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "display_local_user_identity_last_name_first",
                "displayLocalUserIdentityLastNameFirst",
                bool,
            ),
            E("force_use_of_tcp", "forceUseOfTCP", bool),
            E("enable_redundancy", "enableRedundancy", bool),
            E(
                "redundancy_task_delay_milliseconds",
                "redundancyTaskDelayMilliseconds",
                int,
            ),
            E(
                "redundancy_task_interval_milliseconds",
                "redundancyTaskIntervalMilliseconds",
                int,
            ),
            E(
                "max_number_of_subscriptions_per_redundancy_task_interval",
                "maxNumberOfSubscriptionsPerRedundancyTaskInterval",
                int,
            ),
            E(
                "ignore_unanswered_terminating_calls",
                "ignoreUnansweredTerminatingCalls",
                bool,
            ),
        )


class SystemBwDiameterBaseDataGetRequest(OCIRequest):
    """
    Requests the list of System Diameter base parameters.

    The response is either `SystemBwDiameterBaseDataGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBwDiameterBaseDataGetRequest17sp3(OCIRequest):
    """
    Requests the list of System Diameter base parameters.

    The response is either `SystemBwDiameterBaseDataGetResponse17sp3()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBwDiameterBaseDataGetRequest22(OCIRequest):
    """
    Requests the list of System Diameter base parameters.

    The response is either `SystemBwDiameterBaseDataGetResponse22()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBwDiameterBaseDataModifyRequest(OCIRequest):
    """
    Modifies the System Diameter base parameters.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        xs_realm (str): xsRealm *Optional*
        xs_listening_port (int): xsListeningPort *Optional*
        xs_listening_port_enabled (bool): xsListeningPortEnabled *Optional*
        xs_listening_secure_port (int): xsListeningSecurePort *Optional*
        xs_listening_secure_port_enabled (bool): xsListeningSecurePortEnabled *Optional*
        ps_realm (str): psRealm *Optional*
        ps_listening_port (int): psListeningPort *Optional*
        ps_listening_port_enabled (bool): psListeningPortEnabled *Optional*
        ps_listening_secure_port (int): psListeningSecurePort *Optional*
        ps_listening_secure_port_enabled (bool): psListeningSecurePortEnabled *Optional*
        ps_relay_through_xs (bool): psRelayThroughXs *Optional*
        xs_relay_listening_port (int): xsRelayListeningPort *Optional*
        tc_timer_seconds (int): tcTimerSeconds *Optional*
        tw_timer_seconds (int): twTimerSeconds *Optional*
        request_timer_seconds (int): requestTimerSeconds *Optional*
        busy_peer_detection_outstanding_txn_count (int):
            busyPeerDetectionOutstandingTxnCount *Optional*
        busy_peer_restore_outstanding_txn_count (int): busyPeerRestoreOutstandingTxnCount
            *Optional*
        dynamic_entry_inactivity_timer_hours (int): dynamicEntryInactivityTimerHours
            *Optional*
        advertised_offline_billing_application (str): advertisedOfflineBillingApplication
            *Optional*
        advertised_online_billing_application (str): advertisedOnlineBillingApplication
            *Optional*
        default_port (int): defaultPort *Optional*
        default_secure_port (int): defaultSecurePort *Optional*
        peer_discovery_mode (str): peerDiscoveryMode *Optional*
    """

    __slots__: List[str] = [
        "xs_realm",
        "xs_listening_port",
        "xs_listening_port_enabled",
        "xs_listening_secure_port",
        "xs_listening_secure_port_enabled",
        "ps_realm",
        "ps_listening_port",
        "ps_listening_port_enabled",
        "ps_listening_secure_port",
        "ps_listening_secure_port_enabled",
        "ps_relay_through_xs",
        "xs_relay_listening_port",
        "tc_timer_seconds",
        "tw_timer_seconds",
        "request_timer_seconds",
        "busy_peer_detection_outstanding_txn_count",
        "busy_peer_restore_outstanding_txn_count",
        "dynamic_entry_inactivity_timer_hours",
        "advertised_offline_billing_application",
        "advertised_online_billing_application",
        "default_port",
        "default_secure_port",
        "peer_discovery_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("xs_realm", "xsRealm", str),
            E("xs_listening_port", "xsListeningPort", int),
            E("xs_listening_port_enabled", "xsListeningPortEnabled", bool),
            E("xs_listening_secure_port", "xsListeningSecurePort", int),
            E("xs_listening_secure_port_enabled", "xsListeningSecurePortEnabled", bool),
            E("ps_realm", "psRealm", str),
            E("ps_listening_port", "psListeningPort", int),
            E("ps_listening_port_enabled", "psListeningPortEnabled", bool),
            E("ps_listening_secure_port", "psListeningSecurePort", int),
            E("ps_listening_secure_port_enabled", "psListeningSecurePortEnabled", bool),
            E("ps_relay_through_xs", "psRelayThroughXs", bool),
            E("xs_relay_listening_port", "xsRelayListeningPort", int),
            E("tc_timer_seconds", "tcTimerSeconds", int),
            E("tw_timer_seconds", "twTimerSeconds", int),
            E("request_timer_seconds", "requestTimerSeconds", int),
            E(
                "busy_peer_detection_outstanding_txn_count",
                "busyPeerDetectionOutstandingTxnCount",
                int,
            ),
            E(
                "busy_peer_restore_outstanding_txn_count",
                "busyPeerRestoreOutstandingTxnCount",
                int,
            ),
            E(
                "dynamic_entry_inactivity_timer_hours",
                "dynamicEntryInactivityTimerHours",
                int,
            ),
            E(
                "advertised_offline_billing_application",
                "advertisedOfflineBillingApplication",
                str,
            ),
            E(
                "advertised_online_billing_application",
                "advertisedOnlineBillingApplication",
                str,
            ),
            E("default_port", "defaultPort", int),
            E("default_secure_port", "defaultSecurePort", int),
            E("peer_discovery_mode", "peerDiscoveryMode", str),
        )


class SystemBwDiameterPeerAddRequest(OCIRequest):
    """
    Add a static entry in the Diameter Peer Table.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        instance (str): instance
        identity (str): identity
        ip_address (str): ipAddress *Optional*
        port (int): port
        enabled (bool): enabled
    """

    __slots__: List[str] = [
        "instance",
        "identity",
        "ip_address",
        "port",
        "enabled",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("instance", "instance", str, is_required=True),
            E("identity", "identity", str, is_required=True),
            E("ip_address", "ipAddress", str),
            E("port", "port", int, is_required=True),
            E("enabled", "enabled", bool, is_required=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): instance
        identity (str): identity
        ip_address (str): ipAddress *Optional*
        port (int): port
        enabled (bool): enabled
        secure (bool): secure
    """

    __slots__: List[str] = [
        "instance",
        "identity",
        "ip_address",
        "port",
        "enabled",
        "secure",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("instance", "instance", str, is_required=True),
            E("identity", "identity", str, is_required=True),
            E("ip_address", "ipAddress", str),
            E("port", "port", int, is_required=True),
            E("enabled", "enabled", bool, is_required=True),
            E("secure", "secure", bool, is_required=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): instance
        identity (str): identity
    """

    __slots__: List[str] = [
        "instance",
        "identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("instance", "instance", str, is_required=True),
            E("identity", "identity", str, is_required=True),
        )


class SystemBwDiameterPeerGetListRequest(OCIRequest):
    """
    Requests the list of Diameter peers.

    The response is either `SystemBwDiameterPeerGetListResponse22()` or `ErrorResponse()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): instance
        identity (str): identity
        ip_address (str): ipAddress *Optional*
        port (int): port *Optional*
        enabled (bool): enabled *Optional*
        secure (bool): secure *Optional*
    """

    __slots__: List[str] = [
        "instance",
        "identity",
        "ip_address",
        "port",
        "enabled",
        "secure",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("instance", "instance", str, is_required=True),
            E("identity", "identity", str, is_required=True),
            E("ip_address", "ipAddress", str),
            E("port", "port", int),
            E("enabled", "enabled", bool),
            E("secure", "secure", bool),
        )


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): instance
        realm (str): realm
        application_id (str): applicationId
        identity (str): identity
        priority (int): priority
        weight (int): weight
    """

    __slots__: List[str] = [
        "instance",
        "realm",
        "application_id",
        "identity",
        "priority",
        "weight",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("instance", "instance", str, is_required=True),
            E("realm", "realm", str, is_required=True),
            E("application_id", "applicationId", str, is_required=True),
            E("identity", "identity", str, is_required=True),
            E("priority", "priority", int, is_required=True),
            E("weight", "weight", int, is_required=True),
        )


class SystemBwDiameterRoutingPeerDeleteRequest(OCIRequest):
    """
    Remove a Diameter routing peer.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        instance (str): instance
        realm (str): realm
        application_id (str): applicationId
        identity (str): identity
    """

    __slots__: List[str] = [
        "instance",
        "realm",
        "application_id",
        "identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("instance", "instance", str, is_required=True),
            E("realm", "realm", str, is_required=True),
            E("application_id", "applicationId", str, is_required=True),
            E("identity", "identity", str, is_required=True),
        )


class SystemBwDiameterRoutingPeerGetListRequest(OCIRequest):
    """
    Requests the list of Diameter routing peers associated with the specified realm.

    The response is either `SystemBwDiameterRoutingPeerGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): instance
        realm (str): realm
        application_id (str): applicationId
        identity (str): identity
        priority (int): priority *Optional*
        weight (int): weight *Optional*
    """

    __slots__: List[str] = [
        "instance",
        "realm",
        "application_id",
        "identity",
        "priority",
        "weight",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("instance", "instance", str, is_required=True),
            E("realm", "realm", str, is_required=True),
            E("application_id", "applicationId", str, is_required=True),
            E("identity", "identity", str, is_required=True),
            E("priority", "priority", int),
            E("weight", "weight", int),
        )


class SystemBwDiameterRoutingRealmAddRequest(OCIRequest):
    """
    Add a static entry in the Realm Routing Table.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        instance (str): instance
        realm (str): realm
        application_id (str): applicationId
        default (bool): default
    """

    __slots__: List[str] = [
        "instance",
        "realm",
        "application_id",
        "default",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("instance", "instance", str, is_required=True),
            E("realm", "realm", str, is_required=True),
            E("application_id", "applicationId", str, is_required=True),
            E("default", "default", bool, is_required=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): instance
        realm (str): realm
        application_id (str): applicationId
    """

    __slots__: List[str] = [
        "instance",
        "realm",
        "application_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("instance", "instance", str, is_required=True),
            E("realm", "realm", str, is_required=True),
            E("application_id", "applicationId", str, is_required=True),
        )


class SystemBwDiameterRoutingRealmGetListRequest(OCIRequest):
    """
    Requests the list of Diameter routing realms.

    The response is either `SystemBwDiameterRoutingRealmGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemBwDiameterRoutingRealmModifyRequest(OCIRequest):
    """
    Modify a static entry in the Realm Routing Table.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        instance (str): instance
        realm (str): realm
        application_id (str): applicationId
        default (bool): default *Optional*
    """

    __slots__: List[str] = [
        "instance",
        "realm",
        "application_id",
        "default",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("instance", "instance", str, is_required=True),
            E("realm", "realm", str, is_required=True),
            E("application_id", "applicationId", str, is_required=True),
            E("default", "default", bool),
        )


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
    """

    __slots__: List[str] = [
        "prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("prefix", "prefix", str, is_required=True, is_array=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
    """

    __slots__: List[str] = [
        "prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("prefix", "prefix", str, is_required=True, is_array=True),)


class SystemCLIDDeliveryPrefixGetListRequest(OCIRequest):
    """
    Request to get the list of provisioned prefixes in the system.

    The response is either a `SystemCLIDDeliveryPrefixGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCPEConfigAddFileServerRequest(OCIRequest):
    """
    Add a device CPE config file server.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `SystemCPEConfigAddFileServerRequest14sp6()`

    Attributes:
        device_type (str): deviceType
        ftp_host_net_address (str): ftpHostNetAddress
        ftp_user_id (str): ftpUserId
        ftp_user_password (str): ftpUserPassword
        cpe_file_directory (str): cpeFileDirectory *Optional*
        passive_ftp (bool): passiveFTP *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "ftp_host_net_address",
        "ftp_user_id",
        "ftp_user_password",
        "cpe_file_directory",
        "passive_ftp",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("ftp_host_net_address", "ftpHostNetAddress", str, is_required=True),
            E("ftp_user_id", "ftpUserId", str, is_required=True),
            E("ftp_user_password", "ftpUserPassword", str, is_required=True),
            E("cpe_file_directory", "cpeFileDirectory", str),
            E("passive_ftp", "passiveFTP", bool),
        )


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): deviceType
        file_repository_name (str): fileRepositoryName
        cpe_file_directory (str): cpeFileDirectory *Optional*
        extended_capture_file_repository_name (str): extendedCaptureFileRepositoryName
            *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "file_repository_name",
        "cpe_file_directory",
        "extended_capture_file_repository_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
            E("cpe_file_directory", "cpeFileDirectory", str),
            E(
                "extended_capture_file_repository_name",
                "extendedCaptureFileRepositoryName",
                str,
            ),
        )


class SystemCPEConfigDeleteFileServerRequest(OCIRequest):
    """
    Delete a device CPE config file server.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemCPEConfigGetFileServerListRequest(OCIRequest):
    """
    Requests the list of device CPE config file servers.

    The response is either `SystemCPEConfigGetFileServerListResponse()` or
    `ErrorResponse()`.

    Replaced By: `SystemCPEConfigGetFileServerListRequest14sp6()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCPEConfigGetFileServerListRequest14sp6(OCIRequest):
    """
    Requests the list of device CPE config file servers.

    The response is either `SystemCPEConfigGetFileServerListResponse14sp6()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCPEConfigModifyFileServerRequest(OCIRequest):
    """
    Modify a device CPE config file server.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `SystemCPEConfigModifyFileServerRequest14sp6()`

    Attributes:
        device_type (str): deviceType
        ftp_host_net_address (str): ftpHostNetAddress *Optional*
        ftp_user_id (str): ftpUserId *Optional*
        ftp_user_password (str): ftpUserPassword *Optional*
        cpe_file_directory (str): cpeFileDirectory *Optional*
        passive_ftp (bool): passiveFTP *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "ftp_host_net_address",
        "ftp_user_id",
        "ftp_user_password",
        "cpe_file_directory",
        "passive_ftp",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("ftp_host_net_address", "ftpHostNetAddress", str),
            E("ftp_user_id", "ftpUserId", str),
            E("ftp_user_password", "ftpUserPassword", str),
            E("cpe_file_directory", "cpeFileDirectory", str),
            E("passive_ftp", "passiveFTP", bool),
        )


class SystemCPEConfigModifyFileServerRequest14sp6(OCIRequest):
    """
    Modify a device CPE config file server.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        file_repository_name (str): fileRepositoryName *Optional*
        cpe_file_directory (str): cpeFileDirectory *Optional*
        extended_capture_file_repository_name (str): extendedCaptureFileRepositoryName
            *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "file_repository_name",
        "cpe_file_directory",
        "extended_capture_file_repository_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_repository_name", "fileRepositoryName", str),
            E("cpe_file_directory", "cpeFileDirectory", str),
            E(
                "extended_capture_file_repository_name",
                "extendedCaptureFileRepositoryName",
                str,
            ),
        )


class SystemCPEConfigParametersGetRequest(OCIRequest):
    """
    Request to get the list of CPE Config system parameters.

    The response is either `SystemCPEConfigParametersGetResponse()` or `ErrorResponse()`.

    Replaced By: `SystemCPEConfigParametersGetRequest14sp6()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCPEConfigParametersGetRequest14sp6(OCIRequest):
    """
    Request to get the list of CPE Config system parameters.

    The response is either `SystemCPEConfigParametersGetResponse14sp6()` or
    `ErrorResponse()`. Replaced by: `SystemCPEConfigParametersGetRequest20()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCPEConfigParametersGetRequest20(OCIRequest):
    """
    Request to get the list of CPE Config system parameters.

    The response is either `SystemCPEConfigParametersGetResponse20()` or
    `ErrorResponse()`. Replaced by: `SystemCPEConfigParametersGetRequest21()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCPEConfigParametersGetRequest21(OCIRequest):
    """
    Request to get the list of CPE Config system parameters.

    The response is either `SystemCPEConfigParametersGetResponse21()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCPEConfigParametersModifyRequest(OCIRequest):
    """
    Request to modify CPE Config system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemCPEConfigParametersModifyRequest20()`.

    Attributes:
        enable_ip_device_management (bool): enableIPDeviceManagement *Optional*
        ftp_connect_timeout_seconds (int): ftpConnectTimeoutSeconds *Optional*
        ftp_file_transfer_timeout_seconds (int): ftpFileTransferTimeoutSeconds *Optional*
        pause_between_file_rebuild_milliseconds (int): pauseBetweenFileRebuildMilliseconds
            *Optional*
        max_busy_time_minutes (int): maxBusyTimeMinutes *Optional*
        device_access_app_server_cluster_name (str): deviceAccessAppServerClusterName
            *Optional*
        file_rebuild_immediate (OCI.fileRebuildImmediate): fileRebuildImmediate *Optional*
        file_rebuild_daily (OCI.fileRebuildDaily): fileRebuildDaily *Optional*
        file_rebuild_hourly (OCI.fileRebuildHourly): fileRebuildHourly *Optional*
    """

    __slots__: List[str] = [
        "enable_ip_device_management",
        "ftp_connect_timeout_seconds",
        "ftp_file_transfer_timeout_seconds",
        "pause_between_file_rebuild_milliseconds",
        "max_busy_time_minutes",
        "device_access_app_server_cluster_name",
        "file_rebuild_immediate",
        "file_rebuild_daily",
        "file_rebuild_hourly",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enable_ip_device_management", "enableIPDeviceManagement", bool),
            E("ftp_connect_timeout_seconds", "ftpConnectTimeoutSeconds", int),
            E(
                "ftp_file_transfer_timeout_seconds",
                "ftpFileTransferTimeoutSeconds",
                int,
            ),
            E(
                "pause_between_file_rebuild_milliseconds",
                "pauseBetweenFileRebuildMilliseconds",
                int,
            ),
            E("max_busy_time_minutes", "maxBusyTimeMinutes", int),
            E(
                "device_access_app_server_cluster_name",
                "deviceAccessAppServerClusterName",
                str,
            ),
            E(
                "file_rebuild_immediate",
                "fileRebuildImmediate",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "file_rebuild_daily",
                "fileRebuildDaily",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "file_rebuild_hourly",
                "fileRebuildHourly",
                str,
                is_complex=True,
            ),  # unknown
        )


class SystemCPEConfigParametersModifyRequest20(OCIRequest):
    """
    Request to modify CPE Config system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemCPEConfigParametersModifyRequest21()`

    Attributes:
        enable_ip_device_management (bool): enableIPDeviceManagement *Optional*
        ftp_connect_timeout_seconds (int): ftpConnectTimeoutSeconds *Optional*
        ftp_file_transfer_timeout_seconds (int): ftpFileTransferTimeoutSeconds *Optional*
        pause_between_file_rebuild_milliseconds (int): pauseBetweenFileRebuildMilliseconds
            *Optional*
        max_busy_time_minutes (int): maxBusyTimeMinutes *Optional*
        device_access_app_server_cluster_name (str): deviceAccessAppServerClusterName
            *Optional*
    """

    __slots__: List[str] = [
        "enable_ip_device_management",
        "ftp_connect_timeout_seconds",
        "ftp_file_transfer_timeout_seconds",
        "pause_between_file_rebuild_milliseconds",
        "max_busy_time_minutes",
        "device_access_app_server_cluster_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enable_ip_device_management", "enableIPDeviceManagement", bool),
            E("ftp_connect_timeout_seconds", "ftpConnectTimeoutSeconds", int),
            E(
                "ftp_file_transfer_timeout_seconds",
                "ftpFileTransferTimeoutSeconds",
                int,
            ),
            E(
                "pause_between_file_rebuild_milliseconds",
                "pauseBetweenFileRebuildMilliseconds",
                int,
            ),
            E("max_busy_time_minutes", "maxBusyTimeMinutes", int),
            E(
                "device_access_app_server_cluster_name",
                "deviceAccessAppServerClusterName",
                str,
            ),
        )


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 (bool): enableIPDeviceManagement *Optional*
        ftp_connect_timeout_seconds (int): ftpConnectTimeoutSeconds *Optional*
        ftp_file_transfer_timeout_seconds (int): ftpFileTransferTimeoutSeconds *Optional*
        pause_between_file_rebuild_milliseconds (int): pauseBetweenFileRebuildMilliseconds
            *Optional*
        device_access_app_server_cluster_name (str): deviceAccessAppServerClusterName
            *Optional*
        min_time_between_reset_milliseconds (int): minTimeBetweenResetMilliseconds
            *Optional*
        always_push_files_on_rebuild (bool): alwaysPushFilesOnRebuild *Optional*
        max_file_operation_retry_attempts (int): maxFileOperationRetryAttempts *Optional*
        enable_auto_rebuild_config (bool): enableAutoRebuildConfig *Optional*
        event_queue_size (int): eventQueueSize *Optional*
        allow_device_credentials_retrieval (bool): allowDeviceCredentialsRetrieval
            *Optional*
    """

    __slots__: List[str] = [
        "enable_ip_device_management",
        "ftp_connect_timeout_seconds",
        "ftp_file_transfer_timeout_seconds",
        "pause_between_file_rebuild_milliseconds",
        "device_access_app_server_cluster_name",
        "min_time_between_reset_milliseconds",
        "always_push_files_on_rebuild",
        "max_file_operation_retry_attempts",
        "enable_auto_rebuild_config",
        "event_queue_size",
        "allow_device_credentials_retrieval",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enable_ip_device_management", "enableIPDeviceManagement", bool),
            E("ftp_connect_timeout_seconds", "ftpConnectTimeoutSeconds", int),
            E(
                "ftp_file_transfer_timeout_seconds",
                "ftpFileTransferTimeoutSeconds",
                int,
            ),
            E(
                "pause_between_file_rebuild_milliseconds",
                "pauseBetweenFileRebuildMilliseconds",
                int,
            ),
            E(
                "device_access_app_server_cluster_name",
                "deviceAccessAppServerClusterName",
                str,
            ),
            E(
                "min_time_between_reset_milliseconds",
                "minTimeBetweenResetMilliseconds",
                int,
            ),
            E("always_push_files_on_rebuild", "alwaysPushFilesOnRebuild", bool),
            E(
                "max_file_operation_retry_attempts",
                "maxFileOperationRetryAttempts",
                int,
            ),
            E("enable_auto_rebuild_config", "enableAutoRebuildConfig", bool),
            E("event_queue_size", "eventQueueSize", int),
            E(
                "allow_device_credentials_retrieval",
                "allowDeviceCredentialsRetrieval",
                bool,
            ),
        )


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 (str): deviceType *Optional*
        rebuild_type (str): rebuildType *Optional*
        force (bool): force *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "rebuild_type",
        "force",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str),
            E("rebuild_type", "rebuildType", str),
            E("force", "force", bool),
        )


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): deviceName
        force (bool): force *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "force",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("force", "force", bool),
        )


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): deviceName
        ordered_line_port_list (List[str]): orderedLinePortList
    """

    __slots__: List[str] = [
        "device_name",
        "ordered_line_port_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E(
                "ordered_line_port_list",
                "orderedLinePortList",
                str,
                is_required=True,
                is_array=True,
            ),
        )


class SystemCPEConfigResetDeviceRequest(OCIRequest):
    """
    Reset a specific system device.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=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 (str): deviceType *Optional*
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str),)


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): deviceType
        config_file (str): configFile
    """

    __slots__: List[str] = [
        "device_type",
        "config_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("config_file", "configFile", str, is_required=True),
        )


class SystemCallCenterEnhancedReportingBrandingGetRequest(OCIRequest):
    """
    Request to get the system branding information.

    The response is either `SystemCallCenterEnhancedReportingBrandingGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallCenterEnhancedReportingGetRequest(OCIRequest):
    """
    Request to get the call center enhanced reporting system settings.

    The response is either a `SystemCallCenterEnhancedReportingGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallCenterEnhancedReportingModifyRequest(OCIRequest):
    """
    Modify the system settings for call center enhanced reporting.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        archive_reports (bool): archiveReports *Optional*
        report_application_url (str): reportApplicationURL *Optional*
        repository_application_url (str): repositoryApplicationURL *Optional*
    """

    __slots__: List[str] = [
        "archive_reports",
        "report_application_url",
        "repository_application_url",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("archive_reports", "archiveReports", bool),
            E("report_application_url", "reportApplicationURL", str),
            E("repository_application_url", "repositoryApplicationURL", str),
        )


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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCallCenterEnhancedReportingReportTemplateGetListRequest(OCIRequest):
    """
    Request to get system level call center report template list.

    The response is either a
    `SystemCallCenterEnhancedReportingReportTemplateGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCallCenterEnhancedReportingScheduledTaskParametersGetRequest(OCIRequest):
    """
    Request to get the system settings for the call center enhanced reporting scheduling
    tasks.

    The response is either a
    `SystemCallCenterEnhancedReportingScheduledTaskParametersGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallCenterEnhancedReportingScheduledTaskParametersGetRequest22()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallCenterEnhancedReportingScheduledTaskParametersGetRequest22(OCIRequest):
    """
    Request to get the system settings for the call center enhanced reporting scheduling
    tasks.

    The response is either a
    `SystemCallCenterEnhancedReportingScheduledTaskParametersGetResponse22()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallCenterEnhancedReportingScheduledTaskParametersModifyRequest(OCIRequest):
    """
    Modify the system settings for the call center enhanced reporting scheduling tasks.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. The following
    elements are only used in AS data mode: callCenterEventMode, value “Legacy ECCR" is
    returned in Amplify data mode

    Attributes:
        scheduled_report_search_interval_minutes (int):
            scheduledReportSearchIntervalMinutes *Optional*
        maximum_scheduled_reports_per_interval (int): maximumScheduledReportsPerInterval
            *Optional*
        delete_scheduled_report_days_after_completion (int):
            deleteScheduledReportDaysAfterCompletion *Optional*
        call_center_event_mode (str): callCenterEventMode *Optional*
    """

    __slots__: List[str] = [
        "scheduled_report_search_interval_minutes",
        "maximum_scheduled_reports_per_interval",
        "delete_scheduled_report_days_after_completion",
        "call_center_event_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "scheduled_report_search_interval_minutes",
                "scheduledReportSearchIntervalMinutes",
                int,
            ),
            E(
                "maximum_scheduled_reports_per_interval",
                "maximumScheduledReportsPerInterval",
                int,
            ),
            E(
                "delete_scheduled_report_days_after_completion",
                "deleteScheduledReportDaysAfterCompletion",
                int,
            ),
            E("call_center_event_mode", "callCenterEventMode", str),
        )


class SystemCallCenterEventRecordingFileParametersGetRequest(OCIRequest):
    """
    Request to get the list of Call Center Event Recording File system parameters.

    The response is either `SystemCallCenterEventRecordingFileParametersGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (int): fileRetentionTimeDays *Optional*
        file_rotation_period_minutes (str): fileRotationPeriodMinutes *Optional*
        file_rotation_offset_minutes (int): fileRotationOffsetMinutes *Optional*
        remote_url (str): remoteUrl *Optional*
        remote_user_id (str): remoteUserId *Optional*
        remote_password (str): remotePassword *Optional*
    """

    __slots__: List[str] = [
        "file_retention_time_days",
        "file_rotation_period_minutes",
        "file_rotation_offset_minutes",
        "remote_url",
        "remote_user_id",
        "remote_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("file_retention_time_days", "fileRetentionTimeDays", int),
            E("file_rotation_period_minutes", "fileRotationPeriodMinutes", str),
            E("file_rotation_offset_minutes", "fileRotationOffsetMinutes", int),
            E("remote_url", "remoteUrl", str),
            E("remote_user_id", "remoteUserId", str),
            E("remote_password", "remotePassword", str),
        )


class SystemCallCenterGetRequest(OCIRequest):
    """
    Request the system level data associated with Call Center.

    The response is either a `SystemCallCenterGetResponse()` or an `ErrorResponse()`.

    Replaced By: `SystemCallCenterGetRequest14sp9()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallCenterGetRequest14sp9(OCIRequest):
    """
    Request the system level data associated with Call Center.

    The response is either a `SystemCallCenterGetResponse14sp9()` or an `ErrorResponse()`.

    Replaced By: `SystemCallCenterGetRequest16()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallCenterGetRequest16(OCIRequest):
    """
    Request the system level data associated with Call Center.

    The response is either a `SystemCallCenterGetResponse16()` or an `ErrorResponse()`.
    Replaced by: `SystemCallCenterGetRequest17()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallCenterGetRequest17(OCIRequest):
    """
    Request the system level data associated with Call Center.

    The response is either a `SystemCallCenterGetResponse17()` or an `ErrorResponse()`.
    Replaced by `SystemCallCenterGetRequest17sp4()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallCenterGetRequest17sp4(OCIRequest):
    """
    Request the system level data associated with Call Center.

    The response is either a `SystemCallCenterGetResponse17sp4()` or an `ErrorResponse()`.
    Replaced by: `SystemCallCenterGetRequest19()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallCenterGetRequest19(OCIRequest):
    """
    Request the system level data associated with Call Center.

    The response is either a `SystemCallCenterGetResponse19()` or an `ErrorResponse()`.
    Replaced by `SystemCallCenterGetRequest21()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallCenterGetRequest21(OCIRequest):
    """
    Request the system level data associated with Call Center.

    The response is either a `SystemCallCenterGetResponse21()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallCenterModifyRequest(OCIRequest):
    """
    Modify the system 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 Amplify data mode:
    callHandlingSamplingPeriodMinutes callHandlingMinimumSamplingSize
    thresholdCrossingNotificationEmailGuardTimerSeconds

    Attributes:
        default_from_address (str): defaultFromAddress *Optional*
        statistics_sampling_period_minutes (int): statisticsSamplingPeriodMinutes
            *Optional*
        default_enable_guard_timer (bool): defaultEnableGuardTimer *Optional*
        default_guard_timer_seconds (int): defaultGuardTimerSeconds *Optional*
        force_agent_unavailable_on_dnd_activation (bool):
            forceAgentUnavailableOnDNDActivation *Optional*
        force_agent_unavailable_on_personal_calls (bool):
            forceAgentUnavailableOnPersonalCalls *Optional*
        force_agent_unavailable_on_bounced_call_limit (bool):
            forceAgentUnavailableOnBouncedCallLimit *Optional*
        number_consecutive_bounced_calls_to_force_agent_unavailable (int):
            numberConsecutiveBouncedCallsToForceAgentUnavailable *Optional*
        force_agent_unavailable_on_not_reachable (bool):
            forceAgentUnavailableOnNotReachable *Optional*
        default_play_ring_when_offer_call (bool): defaultPlayRingWhenOfferCall *Optional*
        uniform_call_distribution_policy_scope (str): uniformCallDistributionPolicyScope
            *Optional*
        call_handling_sampling_period_minutes (int): callHandlingSamplingPeriodMinutes
            *Optional*
        call_handling_minimum_sampling_size (int): callHandlingMinimumSamplingSize
            *Optional*
        play_tone_to_agent_for_emergency_call (bool): playToneToAgentForEmergencyCall
            *Optional*
        emergency_call_clid_prefix (str): emergencyCallCLIDPrefix *Optional*
        threshold_crossing_notification_email_guard_timer_seconds (int):
            thresholdCrossingNotificationEmailGuardTimerSeconds *Optional*
        allow_agent_device_initiated_forward (bool): allowAgentDeviceInitiatedForward
            *Optional*
    """

    __slots__: List[str] = [
        "default_from_address",
        "statistics_sampling_period_minutes",
        "default_enable_guard_timer",
        "default_guard_timer_seconds",
        "force_agent_unavailable_on_dnd_activation",
        "force_agent_unavailable_on_personal_calls",
        "force_agent_unavailable_on_bounced_call_limit",
        "number_consecutive_bounced_calls_to_force_agent_unavailable",
        "force_agent_unavailable_on_not_reachable",
        "default_play_ring_when_offer_call",
        "uniform_call_distribution_policy_scope",
        "call_handling_sampling_period_minutes",
        "call_handling_minimum_sampling_size",
        "play_tone_to_agent_for_emergency_call",
        "emergency_call_clid_prefix",
        "threshold_crossing_notification_email_guard_timer_seconds",
        "allow_agent_device_initiated_forward",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("default_from_address", "defaultFromAddress", str),
            E(
                "statistics_sampling_period_minutes",
                "statisticsSamplingPeriodMinutes",
                int,
            ),
            E("default_enable_guard_timer", "defaultEnableGuardTimer", bool),
            E("default_guard_timer_seconds", "defaultGuardTimerSeconds", int),
            E(
                "force_agent_unavailable_on_dnd_activation",
                "forceAgentUnavailableOnDNDActivation",
                bool,
            ),
            E(
                "force_agent_unavailable_on_personal_calls",
                "forceAgentUnavailableOnPersonalCalls",
                bool,
            ),
            E(
                "force_agent_unavailable_on_bounced_call_limit",
                "forceAgentUnavailableOnBouncedCallLimit",
                bool,
            ),
            E(
                "number_consecutive_bounced_calls_to_force_agent_unavailable",
                "numberConsecutiveBouncedCallsToForceAgentUnavailable",
                int,
            ),
            E(
                "force_agent_unavailable_on_not_reachable",
                "forceAgentUnavailableOnNotReachable",
                bool,
            ),
            E(
                "default_play_ring_when_offer_call",
                "defaultPlayRingWhenOfferCall",
                bool,
            ),
            E(
                "uniform_call_distribution_policy_scope",
                "uniformCallDistributionPolicyScope",
                str,
            ),
            E(
                "call_handling_sampling_period_minutes",
                "callHandlingSamplingPeriodMinutes",
                int,
            ),
            E(
                "call_handling_minimum_sampling_size",
                "callHandlingMinimumSamplingSize",
                int,
            ),
            E(
                "play_tone_to_agent_for_emergency_call",
                "playToneToAgentForEmergencyCall",
                bool,
            ),
            E("emergency_call_clid_prefix", "emergencyCallCLIDPrefix", str),
            E(
                "threshold_crossing_notification_email_guard_timer_seconds",
                "thresholdCrossingNotificationEmailGuardTimerSeconds",
                int,
            ),
            E(
                "allow_agent_device_initiated_forward",
                "allowAgentDeviceInitiatedForward",
                bool,
            ),
        )


class SystemCallCenterReportingServerGetListRequest(OCIRequest):
    """
    Request to get a list of Call Center Reporting Server.

    The response is either `SystemCallCenterReportingServerGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallMeNowGetRequest(OCIRequest):
    """
    Request the system level data associated with Call Me Now service.

    The response is either a `SystemCallMeNowGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (int): passcodeLength *Optional*
        passcode_timeout_seconds (int): passcodeTimeoutSeconds *Optional*
    """

    __slots__: List[str] = [
        "passcode_length",
        "passcode_timeout_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("passcode_length", "passcodeLength", int),
            E("passcode_timeout_seconds", "passcodeTimeoutSeconds", int),
        )


class SystemCallNotifyGetRequest(OCIRequest):
    """
    Request the system level data associated with Call Notify.

    The response is either a `SystemCallNotifyGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (str): defaultFromAddress *Optional*
        use_short_subject_line (bool): useShortSubjectLine *Optional*
        use_dn_in_mail_body (bool): useDnInMailBody *Optional*
    """

    __slots__: List[str] = [
        "default_from_address",
        "use_short_subject_line",
        "use_dn_in_mail_body",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("default_from_address", "defaultFromAddress", str),
            E("use_short_subject_line", "useShortSubjectLine", bool),
            E("use_dn_in_mail_body", "useDnInMailBody", bool),
        )


class SystemCallProcessingGetPolicyRequest14(OCIRequest):
    """
    Request the system level data associated with Call Processing Policy.

    The response is either a `SystemCallProcessingGetPolicyResponse14()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest14sp1(OCIRequest):
    """
    Request the system level data associated with Call Processing Policy.

    The response is either a `SystemCallProcessingGetPolicyResponse14sp1()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest14sp4(OCIRequest):
    """
    Request the system level data associated with Call Processing Policy.

    The response is either a `SystemCallProcessingGetPolicyResponse14sp4()` or an
    `ErrorResponse()`.

    Replaced By : `SystemCallProcessingGetPolicyRequest15()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest14sp7(OCIRequest):
    """
    Request the system level data associated with Call Processing Policy.

    The response is either a `SystemCallProcessingGetPolicyResponse14sp7()` or an
    `ErrorResponse()`.

    Replaced By: `SystemCallProcessingGetPolicyRequest16()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest15(OCIRequest):
    """
    Request the system level data associated with Call Processing Policy.

    The response is either a `SystemCallProcessingGetPolicyResponse15()` or an
    `ErrorResponse()`.

    Replaced By: `SystemCallProcessingGetPolicyRequest15sp2()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest15sp2(OCIRequest):
    """
    Request the system level data associated with Call Processing Policy.

    The response is either a `SystemCallProcessingGetPolicyResponse15sp2()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest16(OCIRequest):
    """
    Request the system level data associated with Call Processing Policy.

    The response is either a `SystemCallProcessingGetPolicyResponse16()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest16sp2(OCIRequest):
    """
    Request the system level data associated with Call Processing Policy.

    The response is either a `SystemCallProcessingGetPolicyResponse16sp2()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest17(OCIRequest):
    """
    The response is either a `SystemCallProcessingGetPolicyResponse17()` or an
    `ErrorResponse()`.

    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest17sp3(OCIRequest):
    """
    Request the system level data associated with Call Processing Policy.

    The response is either a `SystemCallProcessingGetPolicyResponse17sp3()` or an
    `ErrorResponse()`. Replaced by: `SystemCallProcessingGetPolicyRequest17sp4()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest17sp4(OCIRequest):
    """
    The response is either a `SystemCallProcessingGetPolicyResponse17sp4()` or an
    `ErrorResponse()`.

    Replaced By : `SystemCallProcessingGetPolicyRequest18sp1()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest18sp1(OCIRequest):
    """
    The response is either a `SystemCallProcessingGetPolicyResponse18sp1()` or an
    `ErrorResponse()`.

    Replaced by: `SystemCallProcessingGetPolicyRequest19sp1()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest19sp1(OCIRequest):
    """
    The response is either a `SystemCallProcessingGetPolicyResponse19sp1()` or an
    `ErrorResponse()`.

    Replaced by: `SystemCallProcessingGetPolicyRequest21sp1()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest21sp1(OCIRequest):
    """
    The response is either a `SystemCallProcessingGetPolicyResponse21sp1()` or an
    `ErrorResponse()`.

    Replaced by: `SystemCallProcessingGetPolicyRequest1sp2()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest21sp2(OCIRequest):
    """
    The response is either a `SystemCallProcessingGetPolicyResponse21sp2()` or an
    `ErrorResponse()`.

    Replaced by: `SystemCallProcessingGetPolicyRequest22()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest22(OCIRequest):
    """
    The response is either a `SystemCallProcessingGetPolicyResponse22()` or an
    `ErrorResponse()`.

    Replaced by: `SystemCallProcessingGetPolicyRequest22V2()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest22V2(OCIRequest):
    """
    The response is either a `SystemCallProcessingGetPolicyResponse22V2()` or an
    `ErrorResponse()`.

    Replaced by: `SystemCallProcessingGetPolicyRequest23()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest22V3(OCIRequest):
    """
    The response is either a `SystemCallProcessingGetPolicyResponse22V3()` or an
    `ErrorResponse()`.

    Replaced by: `SystemCallProcessingGetPolicyResponse23V2()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest23(OCIRequest):
    """
    The response is either a `SystemCallProcessingGetPolicyResponse23()` or an
    `ErrorResponse()`.

    Replaced by: `SystemCallProcessingGetPolicyRequest23V2()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingGetPolicyRequest23V2(OCIRequest):
    """
    The response is either a `SystemCallProcessingGetPolicyResponse22V3()` or an
    `ErrorResponse()`.

    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingModifyPolicyRequest14(OCIRequest):
    """
    Modify the system level data associated with Call Processing Policy.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By : `SystemCallProcessingModifyPolicyRequest15()`

    Attributes:
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        media_policy_selection (str): mediaPolicySelection *Optional*
        supported_media_set_name (str): supportedMediaSetName *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_external_calls_via_private_dialing_plan (bool):
            overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        conference_uri (str): conferenceURI *Optional*
        max_conference_parties (int): maxConferenceParties *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
    """

    __slots__: List[str] = [
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "media_policy_selection",
        "supported_media_set_name",
        "network_usage_selection",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_external_calls_via_private_dialing_plan",
        "enable_enterprise_extension_dialing",
        "conference_uri",
        "max_conference_parties",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E("media_policy_selection", "mediaPolicySelection", str),
            E("supported_media_set_name", "supportedMediaSetName", str),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_external_calls_via_private_dialing_plan",
                "overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan",
                bool,
            ),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E("conference_uri", "conferenceURI", str),
            E("max_conference_parties", "maxConferenceParties", int),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
        )


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 enterpriseCallsCLIDPolicy
    enterpriseGroupCallsCLIDPolicy serviceProviderGroupCallsCLIDPolicy 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 The following elements are only used in XS data mode and ignored in
    AS data mode: routeOverrideDomain routeOverridePrefix

    Attributes:
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        media_policy_selection (str): mediaPolicySelection *Optional*
        supported_media_set_name (str): supportedMediaSetName *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        conference_uri (str): conferenceURI *Optional*
        max_conference_parties (int): maxConferenceParties *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        enable_phone_list_lookup (bool): enablePhoneListLookup *Optional*
        use_max_concurrent_terminating_alerting_requests (bool):
            useMaxConcurrentTerminatingAlertingRequests *Optional*
        max_concurrent_terminating_alerting_requests (int):
            maxConcurrentTerminatingAlertingRequests *Optional*
        delay_timer_to_remove_cancelled_calls_in_seconds (int):
            delayTimerToRemoveCancelledCallsInSeconds *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        route_override_domain (str): routeOverrideDomain *Optional*
        route_override_prefix (str): routeOverridePrefix *Optional*
        allow_mobile_dn_for_redirecting_identity (bool):
            allowMobileDNForRedirectingIdentity *Optional*
        conference_disable_clamp_tones (bool): conferenceDisableClampTones *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "media_policy_selection",
        "supported_media_set_name",
        "network_usage_selection",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "enable_enterprise_extension_dialing",
        "conference_uri",
        "max_conference_parties",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "enable_dialable_caller_id",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "enable_phone_list_lookup",
        "use_max_concurrent_terminating_alerting_requests",
        "max_concurrent_terminating_alerting_requests",
        "delay_timer_to_remove_cancelled_calls_in_seconds",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "route_override_domain",
        "route_override_prefix",
        "allow_mobile_dn_for_redirecting_identity",
        "conference_disable_clamp_tones",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E("media_policy_selection", "mediaPolicySelection", str),
            E("supported_media_set_name", "supportedMediaSetName", str),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E("conference_uri", "conferenceURI", str),
            E("max_conference_parties", "maxConferenceParties", int),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("enable_phone_list_lookup", "enablePhoneListLookup", bool),
            E(
                "use_max_concurrent_terminating_alerting_requests",
                "useMaxConcurrentTerminatingAlertingRequests",
                bool,
            ),
            E(
                "max_concurrent_terminating_alerting_requests",
                "maxConcurrentTerminatingAlertingRequests",
                int,
            ),
            E(
                "delay_timer_to_remove_cancelled_calls_in_seconds",
                "delayTimerToRemoveCancelledCallsInSeconds",
                int,
            ),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("route_override_domain", "routeOverrideDomain", str),
            E("route_override_prefix", "routeOverridePrefix", str),
            E(
                "allow_mobile_dn_for_redirecting_identity",
                "allowMobileDNForRedirectingIdentity",
                bool,
            ),
            E("conference_disable_clamp_tones", "conferenceDisableClampTones", bool),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallProcessingPolicyProfileAddRequest(OCIRequest):
    """
    Add a call processing policy profile to system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by
    `SystemCallProcessingPolicyProfileAddRequest20()`.

    Attributes:
        name (str): name
        description (str): description *Optional*
        assigned_subscriber_type (List[str]): assignedSubscriberType *Optional*
    """

    __slots__: List[str] = [
        "name",
        "description",
        "assigned_subscriber_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("assigned_subscriber_type", "assignedSubscriberType", str, is_array=True),
        )


class SystemCallProcessingPolicyProfileAddRequest20(OCIRequest):
    """
    Add a call processing policy profile to system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        description (str): description *Optional*
        assigned_subscriber_type (List[str]): assignedSubscriberType *Optional*
    """

    __slots__: List[str] = [
        "name",
        "description",
        "assigned_subscriber_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("assigned_subscriber_type", "assignedSubscriberType", str, is_array=True),
        )


class SystemCallProcessingPolicyProfileAddRequest21(OCIRequest):
    """
    Add a call processing policy profile to system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        description (str): description *Optional*
        assigned_subscriber_type (List[str]): assignedSubscriberType *Optional*
    """

    __slots__: List[str] = [
        "name",
        "description",
        "assigned_subscriber_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("assigned_subscriber_type", "assignedSubscriberType", str, is_array=True),
        )


class SystemCallProcessingPolicyProfileAutoAttendantProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Auto Attendant
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileAutoAttendantProfileGetRequestResponse()` or an
    `ErrorResponse()`. The response contains the call processing policy profile setting
    for Auto Attendant.  Replaced by:
    `SystemCallProcessingPolicyProfileAutoAttendantProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileAutoAttendantProfileGetRequest22(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Auto Attendant
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileAutoAttendantProfileGetRequestResponse22()` or an
    `ErrorResponse()`. The response contains the call processing policy profile setting
    for Auto Attendant.  Replaced by:
    `SystemCallProcessingPolicyProfileAutoAttendantProfileGetRequest22V2()` in AS data
    mode.

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        use_incoming_clid_policy (bool): useIncomingCLIDPolicy *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "use_incoming_clid_policy",
        "enable_dialable_caller_id",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E("use_incoming_clid_policy", "useIncomingCLIDPolicy", bool),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallProcessingPolicyProfileBroadWorksAnywhereProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile BroadWorks
    Anywhere subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileBroadWorksAnywhereProfileGetRequestResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileBroadWorksAnywhereProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileBroadWorksAnywhereProfileGetRequest22(
    OCIRequest,
):
    """
    Request to get the configuration for a call processing policy profile BroadWorks
    Anywhere subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileBroadWorksAnywhereProfileGetRequestResponse22()` or
    an `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileBroadWorksAnywhereProfileGetRequest22()` in AS data
    mode.

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        use_incoming_clid_policy (bool): useIncomingCLIDPolicy *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "use_incoming_clid_policy",
        "enable_dialable_caller_id",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E("use_incoming_clid_policy", "useIncomingCLIDPolicy", bool),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallProcessingPolicyProfileCallCenterProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Call Center
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileCallCenterProfileGetRequestResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileCallCenterProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileCallCenterProfileGetRequest22(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Call Center
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileCallCenterProfileGetRequestResponse22()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileCallCenterProfileGetRequest22V2()` in AS data mode.

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_incoming_clid_policy (bool): useIncomingCLIDPolicy *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_incoming_clid_policy",
        "enable_dialable_caller_id",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E("use_incoming_clid_policy", "useIncomingCLIDPolicy", bool),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallProcessingPolicyProfileCollaborateProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Collaborate
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileCollaborateProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileCollaborateProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileCollaborateProfileGetRequest22(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Collaborate
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileCollaborateProfileGetResponse22()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileCollaborateProfileGetRequest22V2()` in AS data mode.

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        use_incoming_clid_policy (bool): useIncomingCLIDPolicy *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "use_incoming_clid_policy",
        "enable_dialable_caller_id",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E("use_incoming_clid_policy", "useIncomingCLIDPolicy", bool),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallProcessingPolicyProfileDeleteRequest(OCIRequest):
    """
    Delete a call processing policy profile from system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCallProcessingPolicyProfileFindMeFollowMeProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Find-me/Follow-
    me subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileFindMeFollowMeProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileFindMeFollowMeProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileFindMeFollowMeProfileGetRequest22(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Find-me/Follow-
    me subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileFindMeFollowMeProfileGetResponse22()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileFindMeFollowMeProfileGetRequest22V2()` in AS data
    mode.

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_incoming_clid_policy (bool): useIncomingCLIDPolicy *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_incoming_clid_policy",
        "enable_dialable_caller_id",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E("use_incoming_clid_policy", "useIncomingCLIDPolicy", bool),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallProcessingPolicyProfileFlexibleSeatingHostProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Flexible Seating
    Host subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileFlexibleSeatingHostProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileFlexibleSeatingHostProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileFlexibleSeatingHostProfileGetRequest22(
    OCIRequest,
):
    """
    Request to get the configuration for a call processing policy profile Flexible Seating
    Host subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileFlexibleSeatingHostProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileFlexibleSeatingHostProfileGetRequest22V2()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "emergency_clid_policy",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


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): profileName
    """

    __slots__: List[str] = [
        "profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("profile_name", "profileName", str, is_required=True),)


class SystemCallProcessingPolicyProfileGetListRequest(OCIRequest):
    """
    Get the list of all Call Processing Policy Profiles.

    The response is either a `SystemCallProcessingPolicyProfileGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallProcessingPolicyProfileGetRequest(OCIRequest):
    """
    Request to get a call processing policy profile in system.

    The response is either a `SystemCallProcessingPolicyProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by `SystemCallProcessingPolicyProfileGetRequest20()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCallProcessingPolicyProfileGetRequest20(OCIRequest):
    """
    Request to get a call processing policy profile in system.

    The response is either a `SystemCallProcessingPolicyProfileGetResponse20()` or an
    `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCallProcessingPolicyProfileGroupPagingProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Group Paging
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileGroupPagingProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileGroupPagingProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileGroupPagingProfileModifyRequest(OCIRequest):
    """

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
        )


class SystemCallProcessingPolicyProfileHuntGroupProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Hunt Group
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileHuntGroupProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileHuntGroupProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileHuntGroupProfileGetRequest22(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Hunt Group
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileHuntGroupProfileGetResponse22()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileHuntGroupProfileGetRequest22V2()`.

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_incoming_clid_policy (bool): useIncomingCLIDPolicy *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_incoming_clid_policy",
        "enable_dialable_caller_id",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E("use_incoming_clid_policy", "useIncomingCLIDPolicy", bool),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallProcessingPolicyProfileInstantGroupCallProfileGetRequest(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()`. Replaced by:
    `SystemCallProcessingPolicyProfileInstantGroupCallProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileInstantGroupCallProfileModifyRequest(OCIRequest):
    """

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
        )


class SystemCallProcessingPolicyProfileMeetMeConferencingProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Meet-Me
    Conferencing subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileMeetMeConferencingProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileMeetMeConferencingProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileMeetMeConferencingProfileGetRequest22(
    OCIRequest,
):
    """
    Request to get the configuration for a call processing policy profile Meet-Me
    Conferencing subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileMeetMeConferencingProfileGetResponse22()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileMeetMeConferencingProfileGetRequest22V2()`.

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        use_incoming_clid_policy (bool): useIncomingCLIDPolicy *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "use_incoming_clid_policy",
        "enable_dialable_caller_id",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E("use_incoming_clid_policy", "useIncomingCLIDPolicy", bool),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallProcessingPolicyProfileRoutePointProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Route Point
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileRoutePointProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileRoutePointProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileRoutePointProfileGetRequest22(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Route Point
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileRoutePointProfileGetResponse22()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileRoutePointProfileGetRequest22V2()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        use_incoming_clid_policy (bool): useIncomingCLIDPolicy *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "use_incoming_clid_policy",
        "enable_dialable_caller_id",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E("use_incoming_clid_policy", "useIncomingCLIDPolicy", bool),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Trunk Group
    Pilot user subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetRequest22(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Trunk Group
    Pilot user subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetResponse22()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetRequest22V2()` in AS data
    mode.

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetRequest22V2(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Trunk Group
    Pilot user subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetResponse22V2()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetRequest22V3()` in AS data
    mode.

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_media_policy (bool): useMediaPolicy *Optional*
        media_policy_selection (str): mediaPolicySelection *Optional*
        supported_media_set_name (str): supportedMediaSetName *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        use_incoming_clid_policy (bool): useIncomingCLIDPolicy *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        use_max_concurrent_terminating_alerting_requests (bool):
            useMaxConcurrentTerminatingAlertingRequests *Optional*
        max_concurrent_terminating_alerting_requests (int):
            maxConcurrentTerminatingAlertingRequests *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        allow_mobile_dn_for_redirecting_identity (bool):
            allowMobileDNForRedirectingIdentity *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_media_policy",
        "media_policy_selection",
        "supported_media_set_name",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "use_incoming_clid_policy",
        "enable_dialable_caller_id",
        "use_max_concurrent_terminating_alerting_requests",
        "max_concurrent_terminating_alerting_requests",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "allow_mobile_dn_for_redirecting_identity",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_media_policy", "useMediaPolicy", bool),
            E("media_policy_selection", "mediaPolicySelection", str),
            E("supported_media_set_name", "supportedMediaSetName", str),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E("use_incoming_clid_policy", "useIncomingCLIDPolicy", bool),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "use_max_concurrent_terminating_alerting_requests",
                "useMaxConcurrentTerminatingAlertingRequests",
                bool,
            ),
            E(
                "max_concurrent_terminating_alerting_requests",
                "maxConcurrentTerminatingAlertingRequests",
                int,
            ),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "allow_mobile_dn_for_redirecting_identity",
                "allowMobileDNForRedirectingIdentity",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallProcessingPolicyProfileUserProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile user subscriber
    type profile.

    The response is either a `SystemCallProcessingPolicyProfileUserProfileGetResponse()`
    or an `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileUserProfileGetRequest21sp1()` in AS data mode

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileUserProfileGetRequest21sp1(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile user subscriber
    type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileUserProfileGetResponse21sp1()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileUserProfileGetRequest22()` in AS data mode

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileUserProfileGetRequest22(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile user subscriber
    type profile.

    The response is either a `SystemCallProcessingPolicyProfileUserProfileGetResponse22()`
    or an `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileUserProfileGetRequest22V2()` in AS data mode.

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileUserProfileGetRequest22V2(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile user subscriber
    type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileUserProfileGetResponse22V2()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileUserProfileGetRequest22V2()` in AS data mode.

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_media_policy (bool): useMediaPolicy *Optional*
        media_policy_selection (str): mediaPolicySelection *Optional*
        supported_media_set_name (str): supportedMediaSetName *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        use_incoming_clid_policy (bool): useIncomingCLIDPolicy *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        use_phone_list_lookup_policy (bool): usePhoneListLookupPolicy *Optional*
        enable_phone_list_lookup (bool): enablePhoneListLookup *Optional*
        use_max_concurrent_terminating_alerting_requests (bool):
            useMaxConcurrentTerminatingAlertingRequests *Optional*
        max_concurrent_terminating_alerting_requests (int):
            maxConcurrentTerminatingAlertingRequests *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        allow_mobile_dn_for_redirecting_identity (bool):
            allowMobileDNForRedirectingIdentity *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_media_policy",
        "media_policy_selection",
        "supported_media_set_name",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "use_incoming_clid_policy",
        "enable_dialable_caller_id",
        "use_phone_list_lookup_policy",
        "enable_phone_list_lookup",
        "use_max_concurrent_terminating_alerting_requests",
        "max_concurrent_terminating_alerting_requests",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "allow_mobile_dn_for_redirecting_identity",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_media_policy", "useMediaPolicy", bool),
            E("media_policy_selection", "mediaPolicySelection", str),
            E("supported_media_set_name", "supportedMediaSetName", str),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E("use_incoming_clid_policy", "useIncomingCLIDPolicy", bool),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E("use_phone_list_lookup_policy", "usePhoneListLookupPolicy", bool),
            E("enable_phone_list_lookup", "enablePhoneListLookup", bool),
            E(
                "use_max_concurrent_terminating_alerting_requests",
                "useMaxConcurrentTerminatingAlertingRequests",
                bool,
            ),
            E(
                "max_concurrent_terminating_alerting_requests",
                "maxConcurrentTerminatingAlertingRequests",
                int,
            ),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "allow_mobile_dn_for_redirecting_identity",
                "allowMobileDNForRedirectingIdentity",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallProcessingPolicyProfileVoicePortalProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Voice Portal
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileVoicePortalProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileVoicePortalProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileVoicePortalProfileGetRequest22(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile Voice Portal
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileVoicePortalProfileGetResponse22()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileVoicePortalProfileGetRequest22V2()`.

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallProcessingPolicyProfileVoiceXMLProfileGetRequest(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile VoiceXML
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileVoiceXMLProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileVoiceXMLProfileGetRequest22()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
        )


class SystemCallProcessingPolicyProfileVoiceXMLProfileGetRequest22(OCIRequest):
    """
    Request to get the configuration for a call processing policy profile VoiceXML
    subscriber type profile.

    The response is either a
    `SystemCallProcessingPolicyProfileVoiceXMLProfileGetResponse22()` or an
    `ErrorResponse()`. Replaced by:
    `SystemCallProcessingPolicyProfileVoiceXMLProfileGetRequest22V2()`

    Attributes:
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=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): callProcessingPolicyProfileName
        use_clid_policy (bool): useCLIDPolicy *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        enterprise_calls_clid_policy (str): enterpriseCallsCLIDPolicy *Optional*
        enterprise_group_calls_clid_policy (str): enterpriseGroupCallsCLIDPolicy
            *Optional*
        service_provider_group_calls_clid_policy (str):
            serviceProviderGroupCallsCLIDPolicy *Optional*
        use_call_limits_policy (bool): useCallLimitsPolicy *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_translation_routing_policy (bool): useTranslationRoutingPolicy *Optional*
        network_usage_selection (str): networkUsageSelection *Optional*
        enable_enterprise_extension_dialing (bool): enableEnterpriseExtensionDialing
            *Optional*
        enforce_group_calling_line_identity_restriction (bool):
            enforceGroupCallingLineIdentityRestriction *Optional*
        enforce_enterprise_calling_line_identity_restriction (bool):
            enforceEnterpriseCallingLineIdentityRestriction *Optional*
        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPrivateDialingPlan *Optional*
        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):
            allowEnterpriseGroupCallTypingForPublicDialingPlan *Optional*
        override_clid_restriction_for_private_call_category (bool):
            overrideCLIDRestrictionForPrivateCallCategory *Optional*
        use_enterprise_clid_for_private_call_category (bool):
            useEnterpriseCLIDForPrivateCallCategory *Optional*
        use_incoming_clid_policy (bool): useIncomingCLIDPolicy *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable *Optional*
        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):
            useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable *Optional*
        use_max_calls_per_second (bool): useMaxCallsPerSecond *Optional*
        max_calls_per_second (int): maxCallsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "call_processing_policy_profile_name",
        "use_clid_policy",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "enterprise_calls_clid_policy",
        "enterprise_group_calls_clid_policy",
        "service_provider_group_calls_clid_policy",
        "use_call_limits_policy",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "max_redirection_depth",
        "use_translation_routing_policy",
        "network_usage_selection",
        "enable_enterprise_extension_dialing",
        "enforce_group_calling_line_identity_restriction",
        "enforce_enterprise_calling_line_identity_restriction",
        "allow_enterprise_group_call_typing_for_private_dialing_plan",
        "allow_enterprise_group_call_typing_for_public_dialing_plan",
        "override_clid_restriction_for_private_call_category",
        "use_enterprise_clid_for_private_call_category",
        "use_incoming_clid_policy",
        "enable_dialable_caller_id",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
        "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
        "use_max_calls_per_second",
        "max_calls_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
                is_required=True,
            ),
            E("use_clid_policy", "useCLIDPolicy", bool),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E("enterprise_calls_clid_policy", "enterpriseCallsCLIDPolicy", str),
            E(
                "enterprise_group_calls_clid_policy",
                "enterpriseGroupCallsCLIDPolicy",
                str,
            ),
            E(
                "service_provider_group_calls_clid_policy",
                "serviceProviderGroupCallsCLIDPolicy",
                str,
            ),
            E("use_call_limits_policy", "useCallLimitsPolicy", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E("use_translation_routing_policy", "useTranslationRoutingPolicy", bool),
            E("network_usage_selection", "networkUsageSelection", str),
            E(
                "enable_enterprise_extension_dialing",
                "enableEnterpriseExtensionDialing",
                bool,
            ),
            E(
                "enforce_group_calling_line_identity_restriction",
                "enforceGroupCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "enforce_enterprise_calling_line_identity_restriction",
                "enforceEnterpriseCallingLineIdentityRestriction",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_private_dialing_plan",
                "allowEnterpriseGroupCallTypingForPrivateDialingPlan",
                bool,
            ),
            E(
                "allow_enterprise_group_call_typing_for_public_dialing_plan",
                "allowEnterpriseGroupCallTypingForPublicDialingPlan",
                bool,
            ),
            E(
                "override_clid_restriction_for_private_call_category",
                "overrideCLIDRestrictionForPrivateCallCategory",
                bool,
            ),
            E(
                "use_enterprise_clid_for_private_call_category",
                "useEnterpriseCLIDForPrivateCallCategory",
                bool,
            ),
            E("use_incoming_clid_policy", "useIncomingCLIDPolicy", bool),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E(
                "use_user_phone_number_for_group_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E(
                "use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable",
                "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable",
                bool,
            ),
            E("use_max_calls_per_second", "useMaxCallsPerSecond", bool),
            E("max_calls_per_second", "maxCallsPerSecond", int),
        )


class SystemCallRecordingAddPlatformRequest(OCIRequest):
    """
    Add a Call Recording platform.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemCallRecordingAddPlatformRequest19()`

    Attributes:
        name (str): name
        net_address (str): netAddress
        port (int): port
        media_stream (str): mediaStream
        transport_type (str): transportType
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "name",
        "net_address",
        "port",
        "media_stream",
        "transport_type",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int, is_required=True),
            E("media_stream", "mediaStream", str, is_required=True),
            E("transport_type", "transportType", str, is_required=True),
            E("description", "description", str),
        )


class SystemCallRecordingAddPlatformRequest19(OCIRequest):
    """
    Add a Call Recording platform.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemCallRecordingAddPlatformRequest20()`

    Attributes:
        name (str): name
        net_address (str): netAddress
        port (int): port
        media_stream (str): mediaStream
        transport_type (str): transportType
        description (str): description *Optional*
        schema_version (str): schemaVersion
    """

    __slots__: List[str] = [
        "name",
        "net_address",
        "port",
        "media_stream",
        "transport_type",
        "description",
        "schema_version",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int, is_required=True),
            E("media_stream", "mediaStream", str, is_required=True),
            E("transport_type", "transportType", str, is_required=True),
            E("description", "description", str),
            E("schema_version", "schemaVersion", str, is_required=True),
        )


class SystemCallRecordingAddPlatformRequest20(OCIRequest):
    """
    Add a Call Recording platform.

    The first system level call recording platform added is made the system default call
    recording platform.  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()`. Replaced by:
    `SystemCallRecordingAddPlatformRequest22()`

    Attributes:
        name (str): name
        net_address (str): netAddress
        port (int): port *Optional*
        media_stream (str): mediaStream
        transport_type (str): transportType
        description (str): description *Optional*
        schema_version (str): schemaVersion
        support_video_recording (bool): supportVideoRecording
        reseller_id (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "name",
        "net_address",
        "port",
        "media_stream",
        "transport_type",
        "description",
        "schema_version",
        "support_video_recording",
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("media_stream", "mediaStream", str, is_required=True),
            E("transport_type", "transportType", str, is_required=True),
            E("description", "description", str),
            E("schema_version", "schemaVersion", str, is_required=True),
            E(
                "support_video_recording",
                "supportVideoRecording",
                bool,
                is_required=True,
            ),
            E("reseller_id", "resellerId", str),
        )


class SystemCallRecordingAddPlatformRequest22(OCIRequest):
    """
    Add a Call Recording platform.

    The first system level call recording platform added is made the system default call
    recording platform.  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): name
        net_address (str): netAddress
        port (int): port *Optional*
        media_stream (str): mediaStream
        transport_type (str): transportType
        description (str): description *Optional*
        schema_version (str): schemaVersion
        support_video_recording (bool): supportVideoRecording
        reseller_id (str): resellerId *Optional*
        route (str): route *Optional*
    """

    __slots__: List[str] = [
        "name",
        "net_address",
        "port",
        "media_stream",
        "transport_type",
        "description",
        "schema_version",
        "support_video_recording",
        "reseller_id",
        "route",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("media_stream", "mediaStream", str, is_required=True),
            E("transport_type", "transportType", str, is_required=True),
            E("description", "description", str),
            E("schema_version", "schemaVersion", str, is_required=True),
            E(
                "support_video_recording",
                "supportVideoRecording",
                bool,
                is_required=True,
            ),
            E("reseller_id", "resellerId", str),
            E("route", "route", str),
        )


class SystemCallRecordingDeletePlatformRequest(OCIRequest):
    """
    Delete a Call Recording platform.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCallRecordingGetPlatformListRequest(OCIRequest):
    """
    Get list of Call Recording platforms.

    The response is either `SystemCallRecordingGetPlatformListResponse()` or
    `ErrorResponse()`. The possible values for "Support Video Rec" can be either true or
    false.  Schema version values include: 1.0, 2.0, 3.0 Replaced by:
    `SystemCallRecordingGetPlatformListRequest20sp1()` in AS data mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallRecordingGetPlatformListRequest20sp1(OCIRequest):
    """
    Get list of Call Recording platforms.

    The response is either `SystemCallRecordingGetPlatformListResponse20sp1()` or
    `ErrorResponse()`. The possible values for "Support Video Rec" can be either true or
    false.  Schema version values include: 1.0, 2.0, 3.0 Replaced by
    `SystemCallRecordingGetPlatformListRequest22()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallRecordingGetPlatformListRequest22(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 `SystemCallRecordingGetPlatformListResponse22()` or
    `ErrorResponse()`. Replaced by: `SystemCallRecordingGetPlatformListRequest22V2()`

    Attributes:
        exclude_reseller (bool): excludeReseller *Optional*
        reseller_id (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "exclude_reseller",
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("exclude_reseller", "excludeReseller", bool),
            E("reseller_id", "resellerId", str),
        )


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()`.

    Attributes:
        exclude_reseller (bool): excludeReseller *Optional*
        reseller_id (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "exclude_reseller",
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("exclude_reseller", "excludeReseller", bool),
            E("reseller_id", "resellerId", str),
        )


class SystemCallRecordingGetPlatformUsageRequest(OCIRequest):
    """
    Get the list of groups currently associated to the specified Call Recording platform.

    The response is either `SystemCallRecordingGetPlatformUsageResponse()` or
    `ErrorResponse()`. Replaced by `SystemCallRecordingGetPlatformUsageRequest22()` in AS
    data mode.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCallRecordingGetRequest(OCIRequest):
    """
    Request the system level data associated with Call Recording.

    The response is either a `SystemCallRecordingGetResponse()` or an `ErrorResponse()`.
    Replaced by: `SystemCallRecordingGetRequest22()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallRecordingGetRequest22(OCIRequest):
    """
    Request the system level data associated with Call Recording.

    The response is either a `SystemCallRecordingGetResponse22()` or an `ErrorResponse()`.
    Replaced by: `SystemCallRecordingGetRequest23()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallRecordingGetRequest23(OCIRequest):
    """
    Request the system level data associated with Call Recording.

    The response is either a `SystemCallRecordingGetResponse23()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallRecordingModifyPlatformRequest(OCIRequest):
    """
    Modify the specified Call Recording platform.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemCallRecordingModifyPlatformRequest22()`

    Attributes:
        name (str): name
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        media_stream (str): mediaStream *Optional*
        become_system_default (bool): becomeSystemDefault *Optional*
        become_reseller_default (str): becomeResellerDefault *Optional*
        transport_type (str): transportType *Optional*
        description (str): description *Optional*
        schema_version (str): schemaVersion *Optional*
        support_video_recording (bool): supportVideoRecording *Optional*
    """

    __slots__: List[str] = [
        "name",
        "net_address",
        "port",
        "media_stream",
        "become_system_default",
        "become_reseller_default",
        "transport_type",
        "description",
        "schema_version",
        "support_video_recording",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E("media_stream", "mediaStream", str),
            E("become_system_default", "becomeSystemDefault", bool),
            E("become_reseller_default", "becomeResellerDefault", str),
            E("transport_type", "transportType", str),
            E("description", "description", str),
            E("schema_version", "schemaVersion", str),
            E("support_video_recording", "supportVideoRecording", bool),
        )


class SystemCallRecordingModifyPlatformRequest22(OCIRequest):
    """
    Modify the specified Call Recording platform.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        media_stream (str): mediaStream *Optional*
        become_system_default (bool): becomeSystemDefault *Optional*
        become_reseller_default (str): becomeResellerDefault *Optional*
        transport_type (str): transportType *Optional*
        description (str): description *Optional*
        schema_version (str): schemaVersion *Optional*
        support_video_recording (bool): supportVideoRecording *Optional*
        route (str): route *Optional*
    """

    __slots__: List[str] = [
        "name",
        "net_address",
        "port",
        "media_stream",
        "become_system_default",
        "become_reseller_default",
        "transport_type",
        "description",
        "schema_version",
        "support_video_recording",
        "route",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E("media_stream", "mediaStream", str),
            E("become_system_default", "becomeSystemDefault", bool),
            E("become_reseller_default", "becomeResellerDefault", str),
            E("transport_type", "transportType", str),
            E("description", "description", str),
            E("schema_version", "schemaVersion", str),
            E("support_video_recording", "supportVideoRecording", bool),
            E("route", "route", str),
        )


class SystemCallRecordingModifyRequest(OCIRequest):
    """
    Modify the system level data associated with Call Recording.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `SystemCallRecordingModifyRequest22()`

    Attributes:
        continue_call_after_recording_failure (bool): continueCallAfterRecordingFailure
            *Optional*
        refresh_period_seconds (int): refreshPeriodSeconds *Optional*
        max_consecutive_failures (int): maxConsecutiveFailures *Optional*
        max_response_wait_time_milliseconds (int): maxResponseWaitTimeMilliseconds
            *Optional*
        continue_call_after_video_recording_failure (bool):
            continueCallAfterVideoRecordingFailure *Optional*
    """

    __slots__: List[str] = [
        "continue_call_after_recording_failure",
        "refresh_period_seconds",
        "max_consecutive_failures",
        "max_response_wait_time_milliseconds",
        "continue_call_after_video_recording_failure",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "continue_call_after_recording_failure",
                "continueCallAfterRecordingFailure",
                bool,
            ),
            E("refresh_period_seconds", "refreshPeriodSeconds", int),
            E("max_consecutive_failures", "maxConsecutiveFailures", int),
            E(
                "max_response_wait_time_milliseconds",
                "maxResponseWaitTimeMilliseconds",
                int,
            ),
            E(
                "continue_call_after_video_recording_failure",
                "continueCallAfterVideoRecordingFailure",
                bool,
            ),
        )


class SystemCallRecordingModifyRequest22(OCIRequest):
    """
    Modify the system level data associated with Call Recording.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        continue_call_after_recording_failure (bool): continueCallAfterRecordingFailure
            *Optional*
        max_response_wait_time_milliseconds (int): maxResponseWaitTimeMilliseconds
            *Optional*
        continue_call_after_video_recording_failure (bool):
            continueCallAfterVideoRecordingFailure *Optional*
        use_continue_call_after_recording_failure_for_on_demand_mode (bool):
            useContinueCallAfterRecordingFailureForOnDemandMode *Optional*
        use_continue_call_after_recording_failure_for_on_demand_user_initiated_start_mode
            (bool): useContinueCallAfterRecordingFailureForOnDemandUserInitiatedStartMode
            *Optional*
        restrict_call_recording_provisioning_access (bool):
            restrictCallRecordingProvisioningAccess *Optional*
    """

    __slots__: List[str] = [
        "continue_call_after_recording_failure",
        "max_response_wait_time_milliseconds",
        "continue_call_after_video_recording_failure",
        "use_continue_call_after_recording_failure_for_on_demand_mode",
        "use_continue_call_after_recording_failure_for_on_demand_user_initiated_start_mode",
        "restrict_call_recording_provisioning_access",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "continue_call_after_recording_failure",
                "continueCallAfterRecordingFailure",
                bool,
            ),
            E(
                "max_response_wait_time_milliseconds",
                "maxResponseWaitTimeMilliseconds",
                int,
            ),
            E(
                "continue_call_after_video_recording_failure",
                "continueCallAfterVideoRecordingFailure",
                bool,
            ),
            E(
                "use_continue_call_after_recording_failure_for_on_demand_mode",
                "useContinueCallAfterRecordingFailureForOnDemandMode",
                bool,
            ),
            E(
                "use_continue_call_after_recording_failure_for_on_demand_user_initiated_start_mode",
                "useContinueCallAfterRecordingFailureForOnDemandUserInitiatedStartMode",
                bool,
            ),
            E(
                "restrict_call_recording_provisioning_access",
                "restrictCallRecordingProvisioningAccess",
                bool,
            ),
        )


class SystemCallReturnGetRequest(OCIRequest):
    """
    Request the system level data associated with Call Return.

    The response is either a `SystemCallReturnGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): twoLevelActivation *Optional*
        provide_date (bool): provideDate *Optional*
        last_unanswered_call_only (bool): lastUnansweredCallOnly *Optional*
        confirmation_key (str): confirmationKey *Optional*
        allow_restricted_number (bool): allowRestrictedNumber *Optional*
        delete_number_after_answered_call_return (bool):
            deleteNumberAfterAnsweredCallReturn *Optional*
    """

    __slots__: List[str] = [
        "two_level_activation",
        "provide_date",
        "last_unanswered_call_only",
        "confirmation_key",
        "allow_restricted_number",
        "delete_number_after_answered_call_return",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("two_level_activation", "twoLevelActivation", bool),
            E("provide_date", "provideDate", bool),
            E("last_unanswered_call_only", "lastUnansweredCallOnly", bool),
            E("confirmation_key", "confirmationKey", str),
            E("allow_restricted_number", "allowRestrictedNumber", bool),
            E(
                "delete_number_after_answered_call_return",
                "deleteNumberAfterAnsweredCallReturn",
                bool,
            ),
        )


class SystemCallTypeAddMappingRequest(OCIRequest):
    """
    Add a system call type mapping.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        country_code (str): countryCode
        digit_map (str): digitMap
        call_type (str): callType
    """

    __slots__: List[str] = [
        "country_code",
        "digit_map",
        "call_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("country_code", "countryCode", str, is_required=True),
            E("digit_map", "digitMap", str, is_required=True),
            E("call_type", "callType", str, is_required=True),
        )


class SystemCallTypeDeleteMappingRequest(OCIRequest):
    """
    Delete a system call type mapping.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        country_code (str): countryCode
        digit_map (str): digitMap
    """

    __slots__: List[str] = [
        "country_code",
        "digit_map",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("country_code", "countryCode", str, is_required=True),
            E("digit_map", "digitMap", str, is_required=True),
        )


class SystemCallTypeGetListRequest(OCIRequest):
    """
    Get a list of system call types.

    The response is either `SystemCallTypeGetListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallTypeGetMappingListRequest(OCIRequest):
    """
    Get a list of system call type mappings.

    The response is either `SystemCallTypeGetMappingListResponse()` or `ErrorResponse()`.

    Attributes:
        country_code (str): countryCode *Optional*
    """

    __slots__: List[str] = [
        "country_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("country_code", "countryCode", str),)


class SystemCallWaitingGetRequest(OCIRequest):
    """
    Request the system level data associated with Call Waiting.

    The response is either a `SystemCallWaitingGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): playDistinctiveRingback *Optional*
    """

    __slots__: List[str] = [
        "play_distinctive_ringback",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("play_distinctive_ringback", "playDistinctiveRingback", bool),)


class SystemCallingNameRetrievalGetRequest14(OCIRequest):
    """
    Request the system's calling name retrieval attributes.

    The response is either a `SystemCallingNameRetrievalGetResponse14()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallingNameRetrievalGetRequest16sp1(OCIRequest):
    """
    Request the system's calling name retrieval attributes.

    The response is either a `SystemCallingNameRetrievalGetResponse16sp1()` or an
    `ErrorResponse()`. Replaced by: `SystemCallingNameRetrievalGetRequest17sp4()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallingNameRetrievalGetRequest17sp4(OCIRequest):
    """
    Request the system's calling name retrieval attributes.

    The response is either a `SystemCallingNameRetrievalGetResponse17sp4()` or an
    `ErrorResponse()`. Replaced by: `SystemCallingNameRetrievalGetRequest24()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallingNameRetrievalGetRequest20(OCIRequest):
    """
    Request the system's calling name retrieval attributes.

    The response is either a `SystemCallingNameRetrievalGetResponse20()` or an
    `ErrorResponse()`. Replaced by: `SystemCallingNameRetrievalGetRequest24()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallingNameRetrievalGetRequest24(OCIRequest):
    """
    Request the system's calling name retrieval attributes.

    The response is either a `SystemCallingNameRetrievalGetResponse24()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallingNameRetrievalModifyRequest(OCIRequest):
    """
    Modifies the system's calling name retrieval attributes.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemCallingNameRetrievalModifyRequest16sp1()`

    Attributes:
        query_timer_milli_seconds (int): queryTimerMilliSeconds *Optional*
        server_net_address (str): serverNetAddress *Optional*
        server_port (int): serverPort *Optional*
        server_transport_protocol (str): serverTransportProtocol *Optional*
    """

    __slots__: List[str] = [
        "query_timer_milli_seconds",
        "server_net_address",
        "server_port",
        "server_transport_protocol",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("query_timer_milli_seconds", "queryTimerMilliSeconds", int),
            E("server_net_address", "serverNetAddress", str),
            E("server_port", "serverPort", int),
            E("server_transport_protocol", "serverTransportProtocol", str),
        )


class SystemCallingNameRetrievalModifyRequest16sp1(OCIRequest):
    """
    Modifies the system's calling name retrieval attributes.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemCallingNameRetrievalModifyRequest20()`

    Attributes:
        trigger_cnam_queries_for_all_network_calls (bool):
            triggerCNAMQueriesForAllNetworkCalls *Optional*
        trigger_cnam_queries_for_group_and_enterprise_calls (bool):
            triggerCNAMQueriesForGroupAndEnterpriseCalls *Optional*
        query_protocol (str): queryProtocol *Optional*
        query_timeout_milliseconds (int): queryTimeoutMilliseconds *Optional*
        sip_external_database_net_address (str): sipExternalDatabaseNetAddress *Optional*
        sip_external_database_port (int): sipExternalDatabasePort *Optional*
        sip_external_database_transport (str): sipExternalDatabaseTransport *Optional*
        soap_external_database_net_address (str): soapExternalDatabaseNetAddress
            *Optional*
        soap_supports_dnssrv (bool): soapSupportsDNSSRV *Optional*
        calling_name_source (str): callingNameSource *Optional*
    """

    __slots__: List[str] = [
        "trigger_cnam_queries_for_all_network_calls",
        "trigger_cnam_queries_for_group_and_enterprise_calls",
        "query_protocol",
        "query_timeout_milliseconds",
        "sip_external_database_net_address",
        "sip_external_database_port",
        "sip_external_database_transport",
        "soap_external_database_net_address",
        "soap_supports_dnssrv",
        "calling_name_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trigger_cnam_queries_for_all_network_calls",
                "triggerCNAMQueriesForAllNetworkCalls",
                bool,
            ),
            E(
                "trigger_cnam_queries_for_group_and_enterprise_calls",
                "triggerCNAMQueriesForGroupAndEnterpriseCalls",
                bool,
            ),
            E("query_protocol", "queryProtocol", str),
            E("query_timeout_milliseconds", "queryTimeoutMilliseconds", int),
            E(
                "sip_external_database_net_address",
                "sipExternalDatabaseNetAddress",
                str,
            ),
            E("sip_external_database_port", "sipExternalDatabasePort", int),
            E("sip_external_database_transport", "sipExternalDatabaseTransport", str),
            E(
                "soap_external_database_net_address",
                "soapExternalDatabaseNetAddress",
                str,
            ),
            E("soap_supports_dnssrv", "soapSupportsDNSSRV", bool),
            E("calling_name_source", "callingNameSource", str),
        )


class SystemCallingNameRetrievalModifyRequest20(OCIRequest):
    """
    Modifies the system's calling name retrieval attributes.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        trigger_cnam_queries_for_all_network_calls (bool):
            triggerCNAMQueriesForAllNetworkCalls *Optional*
        trigger_cnam_queries_for_group_and_enterprise_calls (bool):
            triggerCNAMQueriesForGroupAndEnterpriseCalls *Optional*
        query_protocol (str): queryProtocol *Optional*
        query_timeout_milliseconds (int): queryTimeoutMilliseconds *Optional*
        sip_external_database_net_address (str): sipExternalDatabaseNetAddress *Optional*
        sip_external_database_port (int): sipExternalDatabasePort *Optional*
        sip_external_database_transport (str): sipExternalDatabaseTransport *Optional*
        soap_external_database_net_address (str): soapExternalDatabaseNetAddress
            *Optional*
        calling_name_source (str): callingNameSource *Optional*
        route_advance_timer (int): routeAdvanceTimer *Optional*
        retry_failed_cnam_server_interval (int): retryFailedCNAMServerInterval *Optional*
        ignore_restricted_presentation_indicator (bool):
            ignoreRestrictedPresentationIndicator *Optional*
        supports_dnssrv (bool): supportsDNSSRV *Optional*
    """

    __slots__: List[str] = [
        "trigger_cnam_queries_for_all_network_calls",
        "trigger_cnam_queries_for_group_and_enterprise_calls",
        "query_protocol",
        "query_timeout_milliseconds",
        "sip_external_database_net_address",
        "sip_external_database_port",
        "sip_external_database_transport",
        "soap_external_database_net_address",
        "calling_name_source",
        "route_advance_timer",
        "retry_failed_cnam_server_interval",
        "ignore_restricted_presentation_indicator",
        "supports_dnssrv",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trigger_cnam_queries_for_all_network_calls",
                "triggerCNAMQueriesForAllNetworkCalls",
                bool,
            ),
            E(
                "trigger_cnam_queries_for_group_and_enterprise_calls",
                "triggerCNAMQueriesForGroupAndEnterpriseCalls",
                bool,
            ),
            E("query_protocol", "queryProtocol", str),
            E("query_timeout_milliseconds", "queryTimeoutMilliseconds", int),
            E(
                "sip_external_database_net_address",
                "sipExternalDatabaseNetAddress",
                str,
            ),
            E("sip_external_database_port", "sipExternalDatabasePort", int),
            E("sip_external_database_transport", "sipExternalDatabaseTransport", str),
            E(
                "soap_external_database_net_address",
                "soapExternalDatabaseNetAddress",
                str,
            ),
            E("calling_name_source", "callingNameSource", str),
            E("route_advance_timer", "routeAdvanceTimer", int),
            E(
                "retry_failed_cnam_server_interval",
                "retryFailedCNAMServerInterval",
                int,
            ),
            E(
                "ignore_restricted_presentation_indicator",
                "ignoreRestrictedPresentationIndicator",
                bool,
            ),
            E("supports_dnssrv", "supportsDNSSRV", bool),
        )


class SystemCallingPartyCategoryAddRequest(OCIRequest):
    """
    Add a Calling Party Category to system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        category (str): category
        cpc_value (str): cpcValue *Optional*
        isup_oli_value (int): isupOliValue *Optional*
        gtd_oli_value (str): gtdOliValue *Optional*
        user_category (bool): userCategory
        pay_phone (bool): payPhone
        operator (bool): operator
        default (bool): default
        collect_call (bool): collectCall
        web_display_key (str): webDisplayKey *Optional*
    """

    __slots__: List[str] = [
        "category",
        "cpc_value",
        "isup_oli_value",
        "gtd_oli_value",
        "user_category",
        "pay_phone",
        "operator",
        "default",
        "collect_call",
        "web_display_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("category", "category", str, is_required=True),
            E("cpc_value", "cpcValue", str),
            E("isup_oli_value", "isupOliValue", int),
            E("gtd_oli_value", "gtdOliValue", str),
            E("user_category", "userCategory", bool, is_required=True),
            E("pay_phone", "payPhone", bool, is_required=True),
            E("operator", "operator", bool, is_required=True),
            E("default", "default", bool, is_required=True),
            E("collect_call", "collectCall", bool, is_required=True),
            E("web_display_key", "webDisplayKey", str),
        )


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
    """

    __slots__: List[str] = [
        "category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("category", "category", str, is_required=True),)


class SystemCallingPartyCategoryGetListRequest(OCIRequest):
    """
    Get the list of all Calling Party Category in system.

    The response is either a `SystemCallingPartyCategoryGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCallingPartyCategoryGetRequest(OCIRequest):
    """
    Get an existing Calling Party Category in system.

    The response is either a `SystemCallingPartyCategoryGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        category (str): category
    """

    __slots__: List[str] = [
        "category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("category", "category", str, is_required=True),)


class SystemCallingPartyCategoryModifyRequest(OCIRequest):
    """
    Modify a Calling Party Category in system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        category (str): category
        cpc_value (str): cpcValue *Optional*
        isup_oli_value (int): isupOliValue *Optional*
        gtd_oli_value (str): gtdOliValue *Optional*
        user_category (bool): userCategory *Optional*
        pay_phone (bool): payPhone *Optional*
        operator (bool): operator *Optional*
        become_default (bool): becomeDefault *Optional*
        collect_call (bool): collectCall *Optional*
        web_display_key (str): webDisplayKey *Optional*
    """

    __slots__: List[str] = [
        "category",
        "cpc_value",
        "isup_oli_value",
        "gtd_oli_value",
        "user_category",
        "pay_phone",
        "operator",
        "become_default",
        "collect_call",
        "web_display_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("category", "category", str, is_required=True),
            E("cpc_value", "cpcValue", str),
            E("isup_oli_value", "isupOliValue", int),
            E("gtd_oli_value", "gtdOliValue", str),
            E("user_category", "userCategory", bool),
            E("pay_phone", "payPhone", bool),
            E("operator", "operator", bool),
            E("become_default", "becomeDefault", bool),
            E("collect_call", "collectCall", bool),
            E("web_display_key", "webDisplayKey", str),
        )


class SystemClassmarkAddRequest(OCIRequest):
    """
    Add a Class Mark to system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        classmark (str): classmark
        value (str): value
        web_display_key (str): webDisplayKey *Optional*
    """

    __slots__: List[str] = [
        "classmark",
        "value",
        "web_display_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("classmark", "classmark", str, is_required=True),
            E("value", "value", str, is_required=True),
            E("web_display_key", "webDisplayKey", str),
        )


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
    """

    __slots__: List[str] = [
        "classmark",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("classmark", "classmark", str, is_required=True),)


class SystemClassmarkGetListRequest(OCIRequest):
    """
    Get the list of all Class Mark in system.

    The response is either a `SystemClassmarkGetListResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemClassmarkModifyRequest(OCIRequest):
    """
    Modify a Class Mark in system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        classmark (str): classmark
        value (str): value *Optional*
        web_display_key (str): webDisplayKey *Optional*
    """

    __slots__: List[str] = [
        "classmark",
        "value",
        "web_display_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("classmark", "classmark", str, is_required=True),
            E("value", "value", str),
            E("web_display_key", "webDisplayKey", str),
        )


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): clientIdentity
    """

    __slots__: List[str] = [
        "client_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("client_identity", "clientIdentity", str, is_required=True),)


class SystemClientIdentityDeleteRequest(OCIRequest):
    """
    Request to delete a client identity.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        client_identity (str): clientIdentity
    """

    __slots__: List[str] = [
        "client_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("client_identity", "clientIdentity", str, is_required=True),)


class SystemClientIdentityGetListRequest(OCIRequest):
    """
    Request to get a list of client identities.

    The response is either a `SystemClientIdentityGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemClientSessionParametersGetRequest(OCIRequest):
    """
    Request to get the list of Client Session (web and CLI) system parameters.

    The response is either `SystemClientSessionParametersGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemClientSessionParametersModifyRequest(OCIRequest):
    """
    Request to modify Client Session (web and CLI) system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        enable_inactivity_timeout (bool): enableInactivityTimeout *Optional*
        inactivity_timeout_minutes (int): inactivityTimeoutMinutes *Optional*
    """

    __slots__: List[str] = [
        "enable_inactivity_timeout",
        "inactivity_timeout_minutes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enable_inactivity_timeout", "enableInactivityTimeout", bool),
            E("inactivity_timeout_minutes", "inactivityTimeoutMinutes", int),
        )


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
    """

    __slots__: List[str] = [
        "codec",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("codec", "codec", str, is_required=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
    """

    __slots__: List[str] = [
        "codec",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("codec", "codec", str, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCollaborateGetRequest(OCIRequest):
    """
    Request the system level data associated with collaborate services.

    The response is either a `SystemCollaborateGetResponse()` or an `ErrorResponse()`.
    Replaced by: `SystemCollaborateGetRequest20sp1()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCollaborateGetRequest20sp1(OCIRequest):
    """
    Request the system level data associated with collaborate services.

    The response is either a `SystemCollaborateGetResponse20sp1()` or an
    `ErrorResponse()`. Replaced by: SystemCollaborateGetRequest20sp1V2
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCommunicationBarringAlternateCallIndicatorAddRequest(OCIRequest):
    """
    Add a Communication Barring Alternate Call Indicator.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        alternate_call_indicator (str): alternateCallIndicator
        network_server_alternate_call_indicator (str): networkServerAlternateCallIndicator
    """

    __slots__: List[str] = [
        "alternate_call_indicator",
        "network_server_alternate_call_indicator",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "alternate_call_indicator",
                "alternateCallIndicator",
                str,
                is_required=True,
            ),
            E(
                "network_server_alternate_call_indicator",
                "networkServerAlternateCallIndicator",
                str,
                is_required=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): alternateCallIndicator
    """

    __slots__: List[str] = [
        "alternate_call_indicator",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "alternate_call_indicator",
                "alternateCallIndicator",
                str,
                is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCommunicationBarringAlternateCallIndicatorModifyRequest(OCIRequest):
    """
    Modify a Communication Barring Alternate Call Indicator.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        alternate_call_indicator (str): alternateCallIndicator
        network_server_alternate_call_indicator (str): networkServerAlternateCallIndicator
            *Optional*
    """

    __slots__: List[str] = [
        "alternate_call_indicator",
        "network_server_alternate_call_indicator",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "alternate_call_indicator",
                "alternateCallIndicator",
                str,
                is_required=True,
            ),
            E(
                "network_server_alternate_call_indicator",
                "networkServerAlternateCallIndicator",
                str,
            ),
        )


class SystemCommunicationBarringCallTypeAddRequest(OCIRequest):
    """
    Add a Communication Barring Call Type.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        call_type (str): callType
        network_server_call_type (str): networkServerCallType
    """

    __slots__: List[str] = [
        "call_type",
        "network_server_call_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_type", "callType", str, is_required=True),
            E(
                "network_server_call_type",
                "networkServerCallType",
                str,
                is_required=True,
            ),
        )


class SystemCommunicationBarringCallTypeDeleteRequest(OCIRequest):
    """
    Delete a Communication Barring Call Type.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        call_type (str): callType
    """

    __slots__: List[str] = [
        "call_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("call_type", "callType", str, is_required=True),)


class SystemCommunicationBarringCallTypeGetListRequest(OCIRequest):
    """
    Get all the Communication Barring Call Types defined in the system.

    The response is either a `SystemCommunicationBarringCallTypeGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCommunicationBarringCallTypeModifyRequest(OCIRequest):
    """
    Modify a Communication Barring Call Type.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        call_type (str): callType
        network_server_call_type (str): networkServerCallType *Optional*
    """

    __slots__: List[str] = [
        "call_type",
        "network_server_call_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_type", "callType", str, is_required=True),
            E("network_server_call_type", "networkServerCallType", str),
        )


class SystemCommunicationBarringCriteriaAddRequest(OCIRequest):
    """
    Add a new Communication Barring Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemCommunicationBarringCriteriaAddRequest17()`

    Attributes:
        name (str): name
        description (str): description *Optional*
        match_call_type (List[str]): matchCallType *Optional*
        match_alternate_call_indicator (List[str]): matchAlternateCallIndicator *Optional*
        match_virtual_on_net_call_type (List[str]): matchVirtualOnNetCallType *Optional*
        match_public_network (bool): matchPublicNetwork
        match_private_network (bool): matchPrivateNetwork
        match_local_category (bool): matchLocalCategory
        match_national_category (bool): matchNationalCategory
        match_interlata_category (bool): matchInterlataCategory
        match_intralata_category (bool): matchIntralataCategory
        match_international_category (bool): matchInternationalCategory
        match_private_category (bool): matchPrivateCategory
        match_emergency_category (bool): matchEmergencyCategory
        match_other_category (bool): matchOtherCategory
        match_inter_network (bool): matchInterNetwork
        match_inter_hosting_ne (bool): matchInterHostingNE
        match_inter_as (bool): matchInterAS
        match_intra_as (bool): matchIntraAS
        match_charge_calls (bool): matchChargeCalls
        match_no_charge_calls (bool): matchNoChargeCalls
        match_group_calls (bool): matchGroupCalls
        match_enterprise_calls (bool): matchEnterpriseCalls
        match_network_calls (bool): matchNetworkCalls
        match_network_url_calls (bool): matchNetworkURLCalls
        match_repair_calls (bool): matchRepairCalls
        match_emergency_calls (bool): matchEmergencyCalls
        match_internal_calls (bool): matchInternalCalls
        time_schedule (str): timeSchedule *Optional*
        holiday_schedule (str): holidaySchedule *Optional*
    """

    __slots__: List[str] = [
        "name",
        "description",
        "match_call_type",
        "match_alternate_call_indicator",
        "match_virtual_on_net_call_type",
        "match_public_network",
        "match_private_network",
        "match_local_category",
        "match_national_category",
        "match_interlata_category",
        "match_intralata_category",
        "match_international_category",
        "match_private_category",
        "match_emergency_category",
        "match_other_category",
        "match_inter_network",
        "match_inter_hosting_ne",
        "match_inter_as",
        "match_intra_as",
        "match_charge_calls",
        "match_no_charge_calls",
        "match_group_calls",
        "match_enterprise_calls",
        "match_network_calls",
        "match_network_url_calls",
        "match_repair_calls",
        "match_emergency_calls",
        "match_internal_calls",
        "time_schedule",
        "holiday_schedule",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("match_call_type", "matchCallType", str, is_array=True),
            E(
                "match_alternate_call_indicator",
                "matchAlternateCallIndicator",
                str,
                is_array=True,
            ),
            E(
                "match_virtual_on_net_call_type",
                "matchVirtualOnNetCallType",
                str,
                is_array=True,
            ),
            E("match_public_network", "matchPublicNetwork", bool, is_required=True),
            E("match_private_network", "matchPrivateNetwork", bool, is_required=True),
            E("match_local_category", "matchLocalCategory", bool, is_required=True),
            E(
                "match_national_category",
                "matchNationalCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_interlata_category",
                "matchInterlataCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_intralata_category",
                "matchIntralataCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_international_category",
                "matchInternationalCategory",
                bool,
                is_required=True,
            ),
            E("match_private_category", "matchPrivateCategory", bool, is_required=True),
            E(
                "match_emergency_category",
                "matchEmergencyCategory",
                bool,
                is_required=True,
            ),
            E("match_other_category", "matchOtherCategory", bool, is_required=True),
            E("match_inter_network", "matchInterNetwork", bool, is_required=True),
            E("match_inter_hosting_ne", "matchInterHostingNE", bool, is_required=True),
            E("match_inter_as", "matchInterAS", bool, is_required=True),
            E("match_intra_as", "matchIntraAS", bool, is_required=True),
            E("match_charge_calls", "matchChargeCalls", bool, is_required=True),
            E("match_no_charge_calls", "matchNoChargeCalls", bool, is_required=True),
            E("match_group_calls", "matchGroupCalls", bool, is_required=True),
            E("match_enterprise_calls", "matchEnterpriseCalls", bool, is_required=True),
            E("match_network_calls", "matchNetworkCalls", bool, is_required=True),
            E(
                "match_network_url_calls",
                "matchNetworkURLCalls",
                bool,
                is_required=True,
            ),
            E("match_repair_calls", "matchRepairCalls", bool, is_required=True),
            E("match_emergency_calls", "matchEmergencyCalls", bool, is_required=True),
            E("match_internal_calls", "matchInternalCalls", bool, is_required=True),
            E("time_schedule", "timeSchedule", str),
            E("holiday_schedule", "holidaySchedule", str),
        )


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): name
        description (str): description *Optional*
        match_call_type (List[str]): matchCallType *Optional*
        match_alternate_call_indicator (List[str]): matchAlternateCallIndicator *Optional*
        match_virtual_on_net_call_type (List[str]): matchVirtualOnNetCallType *Optional*
        match_public_network (bool): matchPublicNetwork
        match_private_network (bool): matchPrivateNetwork
        match_local_category (bool): matchLocalCategory
        match_national_category (bool): matchNationalCategory
        match_interlata_category (bool): matchInterlataCategory
        match_intralata_category (bool): matchIntralataCategory
        match_international_category (bool): matchInternationalCategory
        match_private_category (bool): matchPrivateCategory
        match_emergency_category (bool): matchEmergencyCategory
        match_other_category (bool): matchOtherCategory
        match_inter_network (bool): matchInterNetwork
        match_inter_hosting_ne (bool): matchInterHostingNE
        match_inter_as (bool): matchInterAS
        match_intra_as (bool): matchIntraAS
        match_charge_calls (bool): matchChargeCalls
        match_no_charge_calls (bool): matchNoChargeCalls
        match_group_calls (bool): matchGroupCalls
        match_enterprise_calls (bool): matchEnterpriseCalls
        match_network_calls (bool): matchNetworkCalls
        match_network_url_calls (bool): matchNetworkURLCalls
        match_repair_calls (bool): matchRepairCalls
        match_emergency_calls (bool): matchEmergencyCalls
        match_internal_calls (bool): matchInternalCalls
        match_location (str): matchLocation
        match_roaming (str): matchRoaming
        time_schedule (str): timeSchedule *Optional*
        holiday_schedule (str): holidaySchedule *Optional*
        match_number_portability_status (List[str]): matchNumberPortabilityStatus
            *Optional*
    """

    __slots__: List[str] = [
        "name",
        "description",
        "match_call_type",
        "match_alternate_call_indicator",
        "match_virtual_on_net_call_type",
        "match_public_network",
        "match_private_network",
        "match_local_category",
        "match_national_category",
        "match_interlata_category",
        "match_intralata_category",
        "match_international_category",
        "match_private_category",
        "match_emergency_category",
        "match_other_category",
        "match_inter_network",
        "match_inter_hosting_ne",
        "match_inter_as",
        "match_intra_as",
        "match_charge_calls",
        "match_no_charge_calls",
        "match_group_calls",
        "match_enterprise_calls",
        "match_network_calls",
        "match_network_url_calls",
        "match_repair_calls",
        "match_emergency_calls",
        "match_internal_calls",
        "match_location",
        "match_roaming",
        "time_schedule",
        "holiday_schedule",
        "match_number_portability_status",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("match_call_type", "matchCallType", str, is_array=True),
            E(
                "match_alternate_call_indicator",
                "matchAlternateCallIndicator",
                str,
                is_array=True,
            ),
            E(
                "match_virtual_on_net_call_type",
                "matchVirtualOnNetCallType",
                str,
                is_array=True,
            ),
            E("match_public_network", "matchPublicNetwork", bool, is_required=True),
            E("match_private_network", "matchPrivateNetwork", bool, is_required=True),
            E("match_local_category", "matchLocalCategory", bool, is_required=True),
            E(
                "match_national_category",
                "matchNationalCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_interlata_category",
                "matchInterlataCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_intralata_category",
                "matchIntralataCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_international_category",
                "matchInternationalCategory",
                bool,
                is_required=True,
            ),
            E("match_private_category", "matchPrivateCategory", bool, is_required=True),
            E(
                "match_emergency_category",
                "matchEmergencyCategory",
                bool,
                is_required=True,
            ),
            E("match_other_category", "matchOtherCategory", bool, is_required=True),
            E("match_inter_network", "matchInterNetwork", bool, is_required=True),
            E("match_inter_hosting_ne", "matchInterHostingNE", bool, is_required=True),
            E("match_inter_as", "matchInterAS", bool, is_required=True),
            E("match_intra_as", "matchIntraAS", bool, is_required=True),
            E("match_charge_calls", "matchChargeCalls", bool, is_required=True),
            E("match_no_charge_calls", "matchNoChargeCalls", bool, is_required=True),
            E("match_group_calls", "matchGroupCalls", bool, is_required=True),
            E("match_enterprise_calls", "matchEnterpriseCalls", bool, is_required=True),
            E("match_network_calls", "matchNetworkCalls", bool, is_required=True),
            E(
                "match_network_url_calls",
                "matchNetworkURLCalls",
                bool,
                is_required=True,
            ),
            E("match_repair_calls", "matchRepairCalls", bool, is_required=True),
            E("match_emergency_calls", "matchEmergencyCalls", bool, is_required=True),
            E("match_internal_calls", "matchInternalCalls", bool, is_required=True),
            E("match_location", "matchLocation", str, is_required=True),
            E("match_roaming", "matchRoaming", str, is_required=True),
            E("time_schedule", "timeSchedule", str),
            E("holiday_schedule", "holidaySchedule", str),
            E(
                "match_number_portability_status",
                "matchNumberPortabilityStatus",
                str,
                is_array=True,
            ),
        )


class SystemCommunicationBarringCriteriaDeleteRequest(OCIRequest):
    """
    Delete an existing Communication Barring Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringCriteriaGetListRequest(OCIRequest):
    """
    Get the list of all Communication Barring Criteria.

    The response is either a `SystemCommunicationBarringCriteriaGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCommunicationBarringCriteriaGetRequest(OCIRequest):
    """
    Get an existing Communication Barring Criteria.

    The response is either a `SystemCommunicationBarringCriteriaGetResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemCommunicationBarringCriteriaGetRequest17()`

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringCriteriaGetRequest17(OCIRequest):
    """
    Get an existing Communication Barring Criteria.

    The response is either a `SystemCommunicationBarringCriteriaGetResponse17()` or an
    `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringCriteriaGetRequest19sp1(OCIRequest):
    """
    Get an existing Communication Barring Criteria.

    The response is either a `SystemCommunicationBarringCriteriaGetResponse19sp1()` or an
    `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringDigitPatternCriteriaAddRequest(OCIRequest):
    """
    Add a new Communication Barring Digit Pattern Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        description (str): description *Optional*
        match_digit_pattern (List[str]): matchDigitPattern *Optional*
    """

    __slots__: List[str] = [
        "name",
        "description",
        "match_digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("match_digit_pattern", "matchDigitPattern", str, is_array=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCommunicationBarringDigitPatternCriteriaGetRequest(OCIRequest):
    """
    Get an existing Communication Barring Digit Pattern Criteria.

    The response is either a `SystemCommunicationBarringDigitPatternCriteriaGetResponse()`
    or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringDigitPatternCriteriaModifyRequest(OCIRequest):
    """
    Modify an existing Communication Barring Digit Pattern Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        add_match_digit_pattern (List[str]): addMatchDigitPattern *Optional*
        delete_match_digit_pattern (List[str]): deleteMatchDigitPattern *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "description",
        "add_match_digit_pattern",
        "delete_match_digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E("add_match_digit_pattern", "addMatchDigitPattern", str, is_array=True),
            E(
                "delete_match_digit_pattern",
                "deleteMatchDigitPattern",
                str,
                is_array=True,
            ),
        )


class SystemCommunicationBarringGetRequest(OCIRequest):
    """
    Request the system level data associated with Communication Barring.

    The response is either a `SystemCommunicationBarringGetResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemCommunicationBarringGetRequest21sp1()` in AS
    data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCommunicationBarringGetRequest21sp1(OCIRequest):
    """
    Request the system level data associated with Communication Barring.

    The response is either a `SystemCommunicationBarringGetResponse21sp1()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCommunicationBarringIncomingCriteriaAddRequest(OCIRequest):
    """
    Add a new Communication Barring Incoming Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemCommunicationBarringIncomingCriteriaAddRequest22()`

    Attributes:
        name (str): name
        description (str): description *Optional*
        time_schedule (str): timeSchedule *Optional*
        holiday_schedule (str): holidaySchedule *Optional*
        match_number_portability_status (List[str]): matchNumberPortabilityStatus
            *Optional*
    """

    __slots__: List[str] = [
        "name",
        "description",
        "time_schedule",
        "holiday_schedule",
        "match_number_portability_status",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("time_schedule", "timeSchedule", str),
            E("holiday_schedule", "holidaySchedule", str),
            E(
                "match_number_portability_status",
                "matchNumberPortabilityStatus",
                str,
                is_array=True,
            ),
        )


class SystemCommunicationBarringIncomingCriteriaAddRequest22(OCIRequest):
    """
    Add a new Communication Barring Incoming Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        description (str): description *Optional*
        time_schedule (str): timeSchedule *Optional*
        holiday_schedule (str): holidaySchedule *Optional*
        match_number_portability_status (List[str]): matchNumberPortabilityStatus
            *Optional*
        call_tagged_as_spam (bool): callTaggedAsSpam
    """

    __slots__: List[str] = [
        "name",
        "description",
        "time_schedule",
        "holiday_schedule",
        "match_number_portability_status",
        "call_tagged_as_spam",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("time_schedule", "timeSchedule", str),
            E("holiday_schedule", "holidaySchedule", str),
            E(
                "match_number_portability_status",
                "matchNumberPortabilityStatus",
                str,
                is_array=True,
            ),
            E("call_tagged_as_spam", "callTaggedAsSpam", bool, is_required=True),
        )


class SystemCommunicationBarringIncomingCriteriaDeleteRequest(OCIRequest):
    """
    Delete an existing Communication Barring Incoming Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringIncomingCriteriaGetListRequest(OCIRequest):
    """
    Get the list of all Communication Barring Incoming Criteria.

    The response is either a `SystemCommunicationBarringIncomingCriteriaGetListResponse()`
    or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCommunicationBarringIncomingCriteriaGetRequest(OCIRequest):
    """
    Get an existing Communication Barring Incoming Criteria.

    The response is either a `SystemCommunicationBarringIncomingCriteriaGetResponse()` or
    an `ErrorResponse()`. Replaced by:
    `SystemCommunicationBarringIncomingCriteriaGetRequest22()`

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringIncomingCriteriaGetRequest22(OCIRequest):
    """
    Get an existing Communication Barring Incoming Criteria.

    The response is either a `SystemCommunicationBarringIncomingCriteriaGetResponse22()`
    or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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 (bool): directTransferScreening *Optional*
        vm_callback_screening (bool): vmCallbackScreening *Optional*
    """

    __slots__: List[str] = [
        "direct_transfer_screening",
        "vm_callback_screening",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("direct_transfer_screening", "directTransferScreening", bool),
            E("vm_callback_screening", "vmCallbackScreening", bool),
        )


class SystemCommunicationBarringProfileDeleteRequest(OCIRequest):
    """
    Delete an existing Communication Barring Profile.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringProfileGetListRequest(OCIRequest):
    """
    Get the list of all Communication Barring Profiles.

    The response is either a `SystemCommunicationBarringProfileGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCommunicationBarringProfileGetRequest(OCIRequest):
    """
    Get an existing Communication Barring Profile.

    The response is either a `SystemCommunicationBarringProfileGetResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemCommunicationBarringProfileGetRequest16()`

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringProfileGetRequest16(OCIRequest):
    """
    Get an existing Communication Barring Profile.

    The response is either a `SystemCommunicationBarringProfileGetResponse16()` or an
    `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringProfileGetRequest17sp1(OCIRequest):
    """
    Get an existing Communication Barring Profile.

    The response is either a `SystemCommunicationBarringProfileGetResponse17sp1()` or an
    `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringProfileGetRequest17sp3(OCIRequest):
    """
    Get an existing Communication Barring Profile.

    The response is either a `SystemCommunicationBarringProfileGetResponse17sp3()` or an
    `ErrorResponse()`. Replaced by: `SystemCommunicationBarringProfileGetRequest19sp1()`
    in AS data mode

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringProfileGetRequest19sp1(OCIRequest):
    """
    Get an existing Communication Barring Profile.

    The response is either a `SystemCommunicationBarringProfileGetResponse19sp1()` or an
    `ErrorResponse()`. Replaced by: SystemCommunicationBarringProfileGetRequest19sp1V2 in
    AS data mode

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemCommunicationBarringUserControlGetRequest(OCIRequest):
    """
    Gets the Communication Barring system level settings.

    The response is either `SystemCommunicationBarringUserControlGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCommunicationBarringUserControlModifyRequest(OCIRequest):
    """
    Modifies the system's Communication Barring User-Control settings.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        enable_lockout (bool): enableLockout *Optional*
        max_number_of_failed_attempts (int): maxNumberOfFailedAttempts *Optional*
        lockout_minutes (int): lockoutMinutes *Optional*
    """

    __slots__: List[str] = [
        "enable_lockout",
        "max_number_of_failed_attempts",
        "lockout_minutes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enable_lockout", "enableLockout", bool),
            E("max_number_of_failed_attempts", "maxNumberOfFailedAttempts", int),
            E("lockout_minutes", "lockoutMinutes", int),
        )


class SystemConfigurableFileSystemGetRequest(OCIRequest):
    """
    Request to get the File System parameters.

    The response is either `SystemConfigurableFileSystemGetResponse()` or
    `ErrorResponse()`. Replaced by: `SystemConfigurableFileSystemGetRequest23()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemConfigurableFileSystemGetRequest22(OCIRequest):
    """
    Request to get the File System parameters.

    The response is either `SystemConfigurableFileSystemGetResponse22()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemConfigurableFileSystemGetRequest23(OCIRequest):
    """
    Request to get the File System parameters.

    change of behavior is that CLI System/MediaFileSystem/get will no longer show the
    password

    The response is either `SystemConfigurableFileSystemGetResponse23()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemConfigurableFileSystemGetRequest23V2(OCIRequest):
    """
    Request to get the File System parameters.

    The response is either `SystemConfigurableFileSystemGetResponse23V2()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (str): mediaDirectory *Optional*
        protocol_file (OCI.protocolFile): protocolFile *Optional*
        protocol_web_dav (OCI.protocolWebDAV): protocolWebDAV *Optional*
    """

    __slots__: List[str] = [
        "media_directory",
        "protocol_file",
        "protocol_web_dav",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("media_directory", "mediaDirectory", str),
            E("protocol_file", "protocolFile", str, is_complex=True),  # unknown
            E("protocol_web_dav", "protocolWebDAV", str, is_complex=True),  # unknown
        )


class SystemConfigurableTreatmentAddRequest(OCIRequest):
    """
    Add a configurable treatment.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        treatment_id (str): treatmentId
        charge_indicator (str): chargeIndicator
        description (str): description *Optional*
        access_sip_status_code (int): accessSIPStatusCode *Optional*
        access_sip_status_message (str): accessSIPStatusMessage *Optional*
        network_sip_status_code (int): networkSIPStatusCode *Optional*
        network_sip_status_message (str): networkSIPStatusMessage *Optional*
        q850_cause_value (int): q850CauseValue *Optional*
        q850_text (str): q850Text *Optional*
        access_treatment_audio_file (str): accessTreatmentAudioFile *Optional*
        access_treatment_video_file (str): accessTreatmentVideoFile *Optional*
        network_treatment_audio_file (str): networkTreatmentAudioFile *Optional*
        network_treatment_video_file (str): networkTreatmentVideoFile *Optional*
        cdr_termination_cause (str): cdrTerminationCause *Optional*
        route_advance (bool): routeAdvance *Optional*
        internal_release_cause (str): internalReleaseCause *Optional*
        access_send_reason_header (bool): accessSendReasonHeader *Optional*
        network_send_reason_header (bool): networkSendReasonHeader *Optional*
    """

    __slots__: List[str] = [
        "treatment_id",
        "charge_indicator",
        "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",
        "route_advance",
        "internal_release_cause",
        "access_send_reason_header",
        "network_send_reason_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("treatment_id", "treatmentId", str, is_required=True),
            E("charge_indicator", "chargeIndicator", str, is_required=True),
            E("description", "description", str),
            E("access_sip_status_code", "accessSIPStatusCode", int),
            E("access_sip_status_message", "accessSIPStatusMessage", str),
            E("network_sip_status_code", "networkSIPStatusCode", int),
            E("network_sip_status_message", "networkSIPStatusMessage", str),
            E("q850_cause_value", "q850CauseValue", int),
            E("q850_text", "q850Text", str),
            E("access_treatment_audio_file", "accessTreatmentAudioFile", str),
            E("access_treatment_video_file", "accessTreatmentVideoFile", str),
            E("network_treatment_audio_file", "networkTreatmentAudioFile", str),
            E("network_treatment_video_file", "networkTreatmentVideoFile", str),
            E("cdr_termination_cause", "cdrTerminationCause", str),
            E("route_advance", "routeAdvance", bool),
            E("internal_release_cause", "internalReleaseCause", str),
            E("access_send_reason_header", "accessSendReasonHeader", bool),
            E("network_send_reason_header", "networkSendReasonHeader", bool),
        )


class SystemConfigurableTreatmentDeleteRequest(OCIRequest):
    """
    Delete a configurable treatment.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("treatment_id", "treatmentId", str, is_required=True),)


class SystemConfigurableTreatmentGetListRequest(OCIRequest):
    """
    Get a list of configurable treatments.

    The response is either a `SystemConfigurableTreatmentGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemConfigurableTreatmentGetRequest(OCIRequest):
    """
    Get all the attributes of a configurable treatment.

    The response is either a `SystemConfigurableTreatmentGetResponse()` or an
    `ErrorResponse()`.

    Replaced By: `SystemConfigurableTreatmentGetRequest16()`

    Attributes:
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("treatment_id", "treatmentId", str, is_required=True),)


class SystemConfigurableTreatmentGetRequest16(OCIRequest):
    """
    Get all the attributes of a configurable treatment.

    The response is either a `SystemConfigurableTreatmentGetResponse16()` or an
    `ErrorResponse()`.

    Attributes:
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("treatment_id", "treatmentId", str, is_required=True),)


class SystemConfigurableTreatmentModifyRequest(OCIRequest):
    """
    Modify the fields for a configurable treatment.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        treatment_id (str): treatmentId
        charge_indicator (str): chargeIndicator *Optional*
        description (str): description *Optional*
        access_sip_status_code (int): accessSIPStatusCode *Optional*
        access_sip_status_message (str): accessSIPStatusMessage *Optional*
        network_sip_status_code (int): networkSIPStatusCode *Optional*
        network_sip_status_message (str): networkSIPStatusMessage *Optional*
        q850_cause_value (int): q850CauseValue *Optional*
        q850_text (str): q850Text *Optional*
        access_treatment_audio_file (str): accessTreatmentAudioFile *Optional*
        access_treatment_video_file (str): accessTreatmentVideoFile *Optional*
        network_treatment_audio_file (str): networkTreatmentAudioFile *Optional*
        network_treatment_video_file (str): networkTreatmentVideoFile *Optional*
        cdr_termination_cause (str): cdrTerminationCause *Optional*
        route_advance (bool): routeAdvance *Optional*
        internal_release_cause (str): internalReleaseCause *Optional*
        access_send_reason_header (bool): accessSendReasonHeader *Optional*
        network_send_reason_header (bool): networkSendReasonHeader *Optional*
    """

    __slots__: List[str] = [
        "treatment_id",
        "charge_indicator",
        "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",
        "route_advance",
        "internal_release_cause",
        "access_send_reason_header",
        "network_send_reason_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("treatment_id", "treatmentId", str, is_required=True),
            E("charge_indicator", "chargeIndicator", str),
            E("description", "description", str),
            E("access_sip_status_code", "accessSIPStatusCode", int),
            E("access_sip_status_message", "accessSIPStatusMessage", str),
            E("network_sip_status_code", "networkSIPStatusCode", int),
            E("network_sip_status_message", "networkSIPStatusMessage", str),
            E("q850_cause_value", "q850CauseValue", int),
            E("q850_text", "q850Text", str),
            E("access_treatment_audio_file", "accessTreatmentAudioFile", str),
            E("access_treatment_video_file", "accessTreatmentVideoFile", str),
            E("network_treatment_audio_file", "networkTreatmentAudioFile", str),
            E("network_treatment_video_file", "networkTreatmentVideoFile", str),
            E("cdr_termination_cause", "cdrTerminationCause", str),
            E("route_advance", "routeAdvance", bool),
            E("internal_release_cause", "internalReleaseCause", str),
            E("access_send_reason_header", "accessSendReasonHeader", bool),
            E("network_send_reason_header", "networkSendReasonHeader", bool),
        )


class SystemConnectedLineIdentificationPresentationGetRequest(OCIRequest):
    """
    Request the system level data associated with the COLP service.

    The response is either a `SystemConnectedLineIdentificationPresentationGetResponse()`
    or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): enforceUserServiceAssignment *Optional*
    """

    __slots__: List[str] = [
        "enforce_user_service_assignment",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enforce_user_service_assignment", "enforceUserServiceAssignment", bool),
        )


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): countryCode
        country_name (str): countryName
        ring_period_milliseconds (int): ringPeriodMilliseconds *Optional*
        off_hook_warning_timer_seconds (int): offHookWarningTimerSeconds *Optional*
        enable_national_prefix (bool): enableNationalPrefix *Optional*
        national_prefix (str): nationalPrefix *Optional*
        max_call_waiting_tones (int): maxCallWaitingTones *Optional*
        time_between_call_waiting_tones_milliseconds (int):
            timeBetweenCallWaitingTonesMilliseconds *Optional*
        disable_national_prefix_for_off_net_calls (bool):
            disableNationalPrefixForOffNetCalls *Optional*
    """

    __slots__: List[str] = [
        "country_code",
        "country_name",
        "ring_period_milliseconds",
        "off_hook_warning_timer_seconds",
        "enable_national_prefix",
        "national_prefix",
        "max_call_waiting_tones",
        "time_between_call_waiting_tones_milliseconds",
        "disable_national_prefix_for_off_net_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("country_code", "countryCode", str, is_required=True),
            E("country_name", "countryName", str, is_required=True),
            E("ring_period_milliseconds", "ringPeriodMilliseconds", int),
            E("off_hook_warning_timer_seconds", "offHookWarningTimerSeconds", int),
            E("enable_national_prefix", "enableNationalPrefix", bool),
            E("national_prefix", "nationalPrefix", str),
            E("max_call_waiting_tones", "maxCallWaitingTones", int),
            E(
                "time_between_call_waiting_tones_milliseconds",
                "timeBetweenCallWaitingTonesMilliseconds",
                int,
            ),
            E(
                "disable_national_prefix_for_off_net_calls",
                "disableNationalPrefixForOffNetCalls",
                bool,
            ),
        )


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): countryCode
    """

    __slots__: List[str] = [
        "country_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("country_code", "countryCode", str, is_required=True),)


class SystemCountryCodeGetListRequest(OCIRequest):
    """
    Request data for all country codes.

    The response is either a `SystemCountryCodeGetListResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): countryCode
        ring_period_milliseconds (int): ringPeriodMilliseconds *Optional*
        off_hook_warning_timer_seconds (int): offHookWarningTimerSeconds *Optional*
        enable_national_prefix (bool): enableNationalPrefix *Optional*
        national_prefix (str): nationalPrefix *Optional*
        become_default_country_code (bool): becomeDefaultCountryCode *Optional*
        max_call_waiting_tones (int): maxCallWaitingTones *Optional*
        time_between_call_waiting_tones_milliseconds (int):
            timeBetweenCallWaitingTonesMilliseconds *Optional*
        disable_national_prefix_for_off_net_calls (bool):
            disableNationalPrefixForOffNetCalls *Optional*
    """

    __slots__: List[str] = [
        "country_code",
        "ring_period_milliseconds",
        "off_hook_warning_timer_seconds",
        "enable_national_prefix",
        "national_prefix",
        "become_default_country_code",
        "max_call_waiting_tones",
        "time_between_call_waiting_tones_milliseconds",
        "disable_national_prefix_for_off_net_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("country_code", "countryCode", str, is_required=True),
            E("ring_period_milliseconds", "ringPeriodMilliseconds", int),
            E("off_hook_warning_timer_seconds", "offHookWarningTimerSeconds", int),
            E("enable_national_prefix", "enableNationalPrefix", bool),
            E("national_prefix", "nationalPrefix", str),
            E("become_default_country_code", "becomeDefaultCountryCode", bool),
            E("max_call_waiting_tones", "maxCallWaitingTones", int),
            E(
                "time_between_call_waiting_tones_milliseconds",
                "timeBetweenCallWaitingTonesMilliseconds",
                int,
            ),
            E(
                "disable_national_prefix_for_off_net_calls",
                "disableNationalPrefixForOffNetCalls",
                bool,
            ),
        )


class SystemCrInterfaceGetRequest(OCIRequest):
    """
    Gets the system level attributes of the Cr Interface.

    The response is either a `SystemCrInterfaceGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemCrInterfaceGetRequest22(OCIRequest):
    """
    Gets the system level attributes of the Cr Interface.

    The response is either a `SystemCrInterfaceGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): crAuditEnabled *Optional*
        cr_audit_interval_milliseconds (int): crAuditIntervalMilliseconds *Optional*
        cr_audit_timeout_milliseconds (int): crAuditTimeoutMilliseconds *Optional*
        cr_connection_enabled (bool): crConnectionEnabled *Optional*
        cr_connection_timeout_milliseconds (int): crConnectionTimeoutMilliseconds
            *Optional*
        cr_tcp_connection_timeout_seconds (int): crTcpConnectionTimeoutSeconds *Optional*
        cr_number_of_reconnection_attempts (int): crNumberOfReconnectionAttempts
            *Optional*
    """

    __slots__: List[str] = [
        "cr_audit_enabled",
        "cr_audit_interval_milliseconds",
        "cr_audit_timeout_milliseconds",
        "cr_connection_enabled",
        "cr_connection_timeout_milliseconds",
        "cr_tcp_connection_timeout_seconds",
        "cr_number_of_reconnection_attempts",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("cr_audit_enabled", "crAuditEnabled", bool),
            E("cr_audit_interval_milliseconds", "crAuditIntervalMilliseconds", int),
            E("cr_audit_timeout_milliseconds", "crAuditTimeoutMilliseconds", int),
            E("cr_connection_enabled", "crConnectionEnabled", bool),
            E(
                "cr_connection_timeout_milliseconds",
                "crConnectionTimeoutMilliseconds",
                int,
            ),
            E(
                "cr_tcp_connection_timeout_seconds",
                "crTcpConnectionTimeoutSeconds",
                int,
            ),
            E(
                "cr_number_of_reconnection_attempts",
                "crNumberOfReconnectionAttempts",
                int,
            ),
        )


class SystemCustomerOriginatedTraceGetRequest(OCIRequest):
    """
    Request the system level data associated with Customer Originated Trace.

    The response is either a `SystemCustomerOriginatedTraceGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): screenMaliciousCallers *Optional*
    """

    __slots__: List[str] = [
        "screen_malicious_callers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("screen_malicious_callers", "screenMaliciousCallers", bool),)


class SystemDTMFTransmissionGetRequest(OCIRequest):
    """
    Get the system DTMF transmission configurations.

    The response is either `SystemDTMFTransmissionGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemDTMFTransmissionModifyRequest(OCIRequest):
    """
    Modify the DTMF transmission settings.

    The response is either `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        transmission_method (str): transmissionMethod *Optional*
        signaling_content_type (str): signalingContentType *Optional*
    """

    __slots__: List[str] = [
        "transmission_method",
        "signaling_content_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("transmission_method", "transmissionMethod", str),
            E("signaling_content_type", "signalingContentType", str),
        )


class SystemDeviceActivationPolicyGetRequest(OCIRequest):
    """
    Request the Device Activation policy of the system.

    The response is either a `SystemDeviceActivationPolicyGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): allowActivationCodeRequestByUser
            *Optional*
        send_activation_code_in_email (bool): sendActivationCodeInEmail *Optional*
    """

    __slots__: List[str] = [
        "allow_activation_code_request_by_user",
        "send_activation_code_in_email",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "allow_activation_code_request_by_user",
                "allowActivationCodeRequestByUser",
                bool,
            ),
            E("send_activation_code_in_email", "sendActivationCodeInEmail", bool),
        )


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): deviceFamilyName
        reseller_id (str): resellerId *Optional*
        assign_device_type (List[str]): assignDeviceType *Optional*
        assign_tag_set (List[str]): assignTagSet *Optional*
    """

    __slots__: List[str] = [
        "device_family_name",
        "reseller_id",
        "assign_device_type",
        "assign_tag_set",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_family_name", "deviceFamilyName", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E("assign_device_type", "assignDeviceType", str, is_array=True),
            E("assign_tag_set", "assignTagSet", str, is_array=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): deviceFamilyName
        device_type_name (List[str]): deviceTypeName
    """

    __slots__: List[str] = [
        "device_family_name",
        "device_type_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_family_name", "deviceFamilyName", str, is_required=True),
            E(
                "device_type_name",
                "deviceTypeName",
                str,
                is_required=True,
                is_array=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): deviceFamilyName
        tag_set_name (List[str]): tagSetName
    """

    __slots__: List[str] = [
        "device_family_name",
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_family_name", "deviceFamilyName", str, is_required=True),
            E("tag_set_name", "tagSetName", str, is_required=True, is_array=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]): deviceFamilyName
    """

    __slots__: List[str] = [
        "device_family_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "device_family_name",
                "deviceFamilyName",
                str,
                is_required=True,
                is_array=True,
            ),
        )


class SystemDeviceFamilyExportRequest(OCIRequest):
    """
    Request to export a device family.

    The response is either a `SystemDeviceFamilyExportResponse()` or an `ErrorResponse()`.

    Attributes:
        device_family_name (str): deviceFamilyName
    """

    __slots__: List[str] = [
        "device_family_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_family_name", "deviceFamilyName", str, is_required=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): deviceFamilyName
    """

    __slots__: List[str] = [
        "device_family_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_family_name", "deviceFamilyName", str, is_required=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): file
        reseller_id (str): resellerId *Optional*
        device_family_override (bool): deviceFamilyOverride *Optional*
        tag_set_override (bool): tagSetOverride *Optional*
        device_type_file_update (bool): deviceTypeFileUpdate *Optional*
    """

    __slots__: List[str] = [
        "file",
        "reseller_id",
        "device_family_override",
        "tag_set_override",
        "device_type_file_update",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("file", "file", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E("device_family_override", "deviceFamilyOverride", bool),
            E("tag_set_override", "tagSetOverride", bool),
            E("device_type_file_update", "deviceTypeFileUpdate", bool),
        )


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): file
        reseller_id (str): resellerId *Optional*
        device_family_override (bool): deviceFamilyOverride *Optional*
        tag_set_override (bool): tagSetOverride *Optional*
        device_type_file_update (bool): deviceTypeFileUpdate *Optional*
    """

    __slots__: List[str] = [
        "file",
        "reseller_id",
        "device_family_override",
        "tag_set_override",
        "device_type_file_update",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("file", "file", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E("device_family_override", "deviceFamilyOverride", bool),
            E("tag_set_override", "tagSetOverride", bool),
            E("device_type_file_update", "deviceTypeFileUpdate", bool),
        )


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): deviceFamilyName
        device_type_name (List[str]): deviceTypeName
    """

    __slots__: List[str] = [
        "device_family_name",
        "device_type_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_family_name", "deviceFamilyName", str, is_required=True),
            E(
                "device_type_name",
                "deviceTypeName",
                str,
                is_required=True,
                is_array=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): deviceFamilyName
        tag_set_name (List[str]): tagSetName
    """

    __slots__: List[str] = [
        "device_family_name",
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_family_name", "deviceFamilyName", str, is_required=True),
            E("tag_set_name", "tagSetName", str, is_required=True, is_array=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (str): deviceType *Optional*
        count_only_reset_supported_device (bool): countOnlyResetSupportedDevice *Optional*
        allow_unmanaged_device_type (bool): allowUnmanagedDeviceType *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "count_only_reset_supported_device",
        "allow_unmanaged_device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str),
            E(
                "count_only_reset_supported_device",
                "countOnlyResetSupportedDevice",
                bool,
            ),
            E("allow_unmanaged_device_type", "allowUnmanagedDeviceType", bool),
        )


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (OCI.cancelAllEvents): cancelAllEvents *Optional*
        cancel_multiple_events (OCI.cancelMultipleEvents): cancelMultipleEvents *Optional*
        event_id (List[int]): eventId *Optional*
    """

    __slots__: List[str] = [
        "cancel_all_events",
        "cancel_multiple_events",
        "event_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("cancel_all_events", "cancelAllEvents", str, is_complex=True),  # unknown
            E(
                "cancel_multiple_events",
                "cancelMultipleEvents",
                str,
                is_complex=True,
            ),  # unknown
            E("event_id", "eventId", int, is_array=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 (str): serviceProviderId *Optional*
        svc_provider_id (str): svcProviderId *Optional*
        group_id (str): groupId *Optional*
        device_name (str): deviceName
        to_device_type (str): toDeviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "svc_provider_id",
        "group_id",
        "device_name",
        "to_device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("svc_provider_id", "svcProviderId", str),
            E("group_id", "groupId", str),
            E("device_name", "deviceName", str, is_required=True),
            E("to_device_type", "toDeviceType", str, is_required=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 (str): serviceProviderId *Optional*
        svc_provider_id (str): svcProviderId *Optional*
        group_id (str): groupId *Optional*
        from_device_type (str): fromDeviceType
        to_device_type (str): toDeviceType
    """

    __slots__: List[str] = [
        "service_provider_id",
        "svc_provider_id",
        "group_id",
        "from_device_type",
        "to_device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("svc_provider_id", "svcProviderId", str),
            E("group_id", "groupId", str),
            E("from_device_type", "fromDeviceType", str, is_required=True),
            E("to_device_type", "toDeviceType", str, is_required=True),
        )


class SystemDeviceManagementTagAddRequest(OCIRequest):
    """
    Request to add a static configuration tag.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemDeviceManagementTagAddRequest21sp2()`

    Attributes:
        system_default_tag_set (bool): systemDefaultTagSet *Optional*
        tag_set_name (str): tagSetName *Optional*
        tag_name (str): tagName
        tag_value (str): tagValue *Optional*
    """

    __slots__: List[str] = [
        "system_default_tag_set",
        "tag_set_name",
        "tag_name",
        "tag_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_default_tag_set", "systemDefaultTagSet", bool),
            E("tag_set_name", "tagSetName", str),
            E("tag_name", "tagName", str, is_required=True),
            E("tag_value", "tagValue", str),
        )


class SystemDeviceManagementTagAddRequest21sp2(OCIRequest):
    """
    Request to add a static configuration tag.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemDeviceManagementTagAddRequest22()`

    Attributes:
        system_default_tag_set (bool): systemDefaultTagSet *Optional*
        tag_set_name (str): tagSetName *Optional*
        tag_name (str): tagName
        is_tag_value_encrypted (bool): isTagValueEncrypted
        tag_value (str): tagValue *Optional*
        tag_value_to_encrypt (str): tagValueToEncrypt *Optional*
    """

    __slots__: List[str] = [
        "system_default_tag_set",
        "tag_set_name",
        "tag_name",
        "is_tag_value_encrypted",
        "tag_value",
        "tag_value_to_encrypt",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_default_tag_set", "systemDefaultTagSet", bool),
            E("tag_set_name", "tagSetName", str),
            E("tag_name", "tagName", str, is_required=True),
            E("is_tag_value_encrypted", "isTagValueEncrypted", bool, is_required=True),
            E("tag_value", "tagValue", str),
            E("tag_value_to_encrypt", "tagValueToEncrypt", str),
        )


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 (bool): systemDefaultTagSet *Optional*
        tag_set_name (str): tagSetName *Optional*
        tag_name (str): tagName
        is_tag_value_encrypted (bool): isTagValueEncrypted
        tag_value (str): tagValue *Optional*
        tag_value_to_encrypt (str): tagValueToEncrypt *Optional*
        is_tag_value_overridable (bool): isTagValueOverridable
    """

    __slots__: List[str] = [
        "system_default_tag_set",
        "tag_set_name",
        "tag_name",
        "is_tag_value_encrypted",
        "tag_value",
        "tag_value_to_encrypt",
        "is_tag_value_overridable",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_default_tag_set", "systemDefaultTagSet", bool),
            E("tag_set_name", "tagSetName", str),
            E("tag_name", "tagName", str, is_required=True),
            E("is_tag_value_encrypted", "isTagValueEncrypted", bool, is_required=True),
            E("tag_value", "tagValue", str),
            E("tag_value_to_encrypt", "tagValueToEncrypt", str),
            E(
                "is_tag_value_overridable",
                "isTagValueOverridable",
                bool,
                is_required=True,
            ),
        )


class SystemDeviceManagementTagDeleteListRequest(OCIRequest):
    """
    Request to delete static configuration tags.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        system_default_tag_set (bool): systemDefaultTagSet *Optional*
        tag_set_name (str): tagSetName *Optional*
        tag_name (List[str]): tagName
    """

    __slots__: List[str] = [
        "system_default_tag_set",
        "tag_set_name",
        "tag_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_default_tag_set", "systemDefaultTagSet", bool),
            E("tag_set_name", "tagSetName", str),
            E("tag_name", "tagName", str, is_required=True, is_array=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 (bool): systemDefaultTagSet *Optional*
        tag_set_name (str): tagSetName *Optional*
    """

    __slots__: List[str] = [
        "system_default_tag_set",
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_default_tag_set", "systemDefaultTagSet", bool),
            E("tag_set_name", "tagSetName", str),
        )


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 (bool): systemDefaultTagSet *Optional*
        tag_set_name (str): tagSetName *Optional*
        tag_name (str): tagName
        tag_value (str): tagValue *Optional*
        tag_value_to_encrypt (str): tagValueToEncrypt *Optional*
        is_tag_value_overridable (bool): isTagValueOverridable *Optional*
    """

    __slots__: List[str] = [
        "system_default_tag_set",
        "tag_set_name",
        "tag_name",
        "tag_value",
        "tag_value_to_encrypt",
        "is_tag_value_overridable",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_default_tag_set", "systemDefaultTagSet", bool),
            E("tag_set_name", "tagSetName", str),
            E("tag_name", "tagName", str, is_required=True),
            E("tag_value", "tagValue", str),
            E("tag_value_to_encrypt", "tagValueToEncrypt", str),
            E("is_tag_value_overridable", "isTagValueOverridable", bool),
        )


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): tagSetName
        reseller_id (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "tag_set_name",
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("tag_set_name", "tagSetName", str, is_required=True),
            E("reseller_id", "resellerId", str),
        )


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): tagSetName
        region_name (str): regionName
        country_name (str): countryName
    """

    __slots__: List[str] = [
        "tag_set_name",
        "region_name",
        "country_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("tag_set_name", "tagSetName", str, is_required=True),
            E("region_name", "regionName", str, is_required=True),
            E("country_name", "countryName", str, is_required=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): tagSetName
        region_name (str): regionName
        country_name (List[str]): countryName
    """

    __slots__: List[str] = [
        "tag_set_name",
        "region_name",
        "country_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("tag_set_name", "tagSetName", str, is_required=True),
            E("region_name", "regionName", str, is_required=True),
            E("country_name", "countryName", str, is_required=True, is_array=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): tagSetName
        region_name (str): regionName
    """

    __slots__: List[str] = [
        "tag_set_name",
        "region_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("tag_set_name", "tagSetName", str, is_required=True),
            E("region_name", "regionName", str, is_required=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): tagSetName
    """

    __slots__: List[str] = [
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("tag_set_name", "tagSetName", str, is_required=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): tagSetName
    """

    __slots__: List[str] = [
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("tag_set_name", "tagSetName", str, is_required=True),)


class SystemDeviceManagementTagSetGetListRequest(OCIRequest):
    """
    Request to get the list of custom configuration tag sets managed by the Device
    Management System.

    The response is either `SystemDeviceManagementTagSetGetListResponse()` or
    `ErrorResponse()`. Replaced by `SystemDeviceManagementTagSetGetListRequest22()` in AS
    data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): excludeReseller *Optional*
        reseller_id (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "exclude_reseller",
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("exclude_reseller", "excludeReseller", bool),
            E("reseller_id", "resellerId", str),
        )


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): tagSetName
        new_tag_set_name (str): newTagSetName *Optional*
    """

    __slots__: List[str] = [
        "tag_set_name",
        "new_tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("tag_set_name", "tagSetName", str, is_required=True),
            E("new_tag_set_name", "newTagSetName", str),
        )


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): tagSetName
        region_name (str): regionName
    """

    __slots__: List[str] = [
        "tag_set_name",
        "region_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("tag_set_name", "tagSetName", str, is_required=True),
            E("region_name", "regionName", str, is_required=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): tagSetName
        region_name (List[str]): regionName
    """

    __slots__: List[str] = [
        "tag_set_name",
        "region_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("tag_set_name", "tagSetName", str, is_required=True),
            E("region_name", "regionName", str, is_required=True, is_array=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): tagSetName
    """

    __slots__: List[str] = [
        "tag_set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("tag_set_name", "tagSetName", str, is_required=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): tagSetName
        region_name (str): regionName
        new_region_name (str): newRegionName *Optional*
    """

    __slots__: List[str] = [
        "tag_set_name",
        "region_name",
        "new_region_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("tag_set_name", "tagSetName", str, is_required=True),
            E("region_name", "regionName", str, is_required=True),
            E("new_region_name", "newRegionName", str),
        )


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): tagSetName
        region_name (str): regionName
        tag_name (List[str]): tagName
    """

    __slots__: List[str] = [
        "tag_set_name",
        "region_name",
        "tag_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("tag_set_name", "tagSetName", str, is_required=True),
            E("region_name", "regionName", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True, is_array=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): tagSetName
        region_name (str): regionName
    """

    __slots__: List[str] = [
        "tag_set_name",
        "region_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("tag_set_name", "tagSetName", str, is_required=True),
            E("region_name", "regionName", str, is_required=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): tagSetName
        region_name (str): regionName
        tag_name (str): tagName
        tag_value (str): tagValue *Optional*
    """

    __slots__: List[str] = [
        "tag_set_name",
        "region_name",
        "tag_name",
        "tag_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("tag_set_name", "tagSetName", str, is_required=True),
            E("region_name", "regionName", str, is_required=True),
            E("tag_name", "tagName", str, is_required=True),
            E("tag_value", "tagValue", str),
        )


class SystemDeviceProfileAuthenticationLockoutClearAllRequest(OCIRequest):
    """
    Request to clear all device password authentication lockouts in the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemDeviceProfileAuthenticationPasswordRulesGetRequest(OCIRequest):
    """
    Request to get the system level device profile authentication password rule settings.

    The response is either a `SystemDeviceProfileAuthenticationPasswordRulesGetResponse()`
    or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): disallowAuthenticationName *Optional*
        disallow_old_password (bool): disallowOldPassword *Optional*
        disallow_reversed_old_password (bool): disallowReversedOldPassword *Optional*
        restrict_min_digits (bool): restrictMinDigits *Optional*
        min_digits (int): minDigits *Optional*
        restrict_min_upper_case_letters (bool): restrictMinUpperCaseLetters *Optional*
        min_upper_case_letters (int): minUpperCaseLetters *Optional*
        restrict_min_lower_case_letters (bool): restrictMinLowerCaseLetters *Optional*
        min_lower_case_letters (int): minLowerCaseLetters *Optional*
        restrict_min_non_alphanumeric_characters (bool):
            restrictMinNonAlphanumericCharacters *Optional*
        min_non_alphanumeric_characters (int): minNonAlphanumericCharacters *Optional*
        min_length (int): minLength *Optional*
        send_permanent_lockout_notification (bool): sendPermanentLockoutNotification
            *Optional*
        permanent_lockout_notify_email_address (str): permanentLockoutNotifyEmailAddress
            *Optional*
        device_profile_authentication_lockout_type (str):
            deviceProfileAuthenticationLockoutType *Optional*
        device_profile_temporary_lockout_threshold (int):
            deviceProfileTemporaryLockoutThreshold *Optional*
        device_profile_wait_algorithm (str): deviceProfileWaitAlgorithm *Optional*
        device_profile_lockout_fixed_minutes (str): deviceProfileLockoutFixedMinutes
            *Optional*
        device_profile_permanent_lockout_threshold (int):
            deviceProfilePermanentLockoutThreshold *Optional*
    """

    __slots__: List[str] = [
        "disallow_authentication_name",
        "disallow_old_password",
        "disallow_reversed_old_password",
        "restrict_min_digits",
        "min_digits",
        "restrict_min_upper_case_letters",
        "min_upper_case_letters",
        "restrict_min_lower_case_letters",
        "min_lower_case_letters",
        "restrict_min_non_alphanumeric_characters",
        "min_non_alphanumeric_characters",
        "min_length",
        "send_permanent_lockout_notification",
        "permanent_lockout_notify_email_address",
        "device_profile_authentication_lockout_type",
        "device_profile_temporary_lockout_threshold",
        "device_profile_wait_algorithm",
        "device_profile_lockout_fixed_minutes",
        "device_profile_permanent_lockout_threshold",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("disallow_authentication_name", "disallowAuthenticationName", bool),
            E("disallow_old_password", "disallowOldPassword", bool),
            E("disallow_reversed_old_password", "disallowReversedOldPassword", bool),
            E("restrict_min_digits", "restrictMinDigits", bool),
            E("min_digits", "minDigits", int),
            E("restrict_min_upper_case_letters", "restrictMinUpperCaseLetters", bool),
            E("min_upper_case_letters", "minUpperCaseLetters", int),
            E("restrict_min_lower_case_letters", "restrictMinLowerCaseLetters", bool),
            E("min_lower_case_letters", "minLowerCaseLetters", int),
            E(
                "restrict_min_non_alphanumeric_characters",
                "restrictMinNonAlphanumericCharacters",
                bool,
            ),
            E("min_non_alphanumeric_characters", "minNonAlphanumericCharacters", int),
            E("min_length", "minLength", int),
            E(
                "send_permanent_lockout_notification",
                "sendPermanentLockoutNotification",
                bool,
            ),
            E(
                "permanent_lockout_notify_email_address",
                "permanentLockoutNotifyEmailAddress",
                str,
            ),
            E(
                "device_profile_authentication_lockout_type",
                "deviceProfileAuthenticationLockoutType",
                str,
            ),
            E(
                "device_profile_temporary_lockout_threshold",
                "deviceProfileTemporaryLockoutThreshold",
                int,
            ),
            E("device_profile_wait_algorithm", "deviceProfileWaitAlgorithm", str),
            E(
                "device_profile_lockout_fixed_minutes",
                "deviceProfileLockoutFixedMinutes",
                str,
            ),
            E(
                "device_profile_permanent_lockout_threshold",
                "deviceProfilePermanentLockoutThreshold",
                int,
            ),
        )


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): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetAvailableListRequest(OCIRequest):
    """
    Requests a list of non-obsolete Identity/device profile types defined in the system.

    It is possible to get either all conference device types or all non-conferernce types.
    This command is similar to the `SystemSIPDeviceTypeGetListRequest()` and
    `SystemMGCPDeviceTypeGetListRequest()` but gets both SIP and MGCP types.

    The response is either `SystemDeviceTypeGetlAvailableListResponse()` or
    `ErrorResponse()`.

    Attributes:
        allow_conference (bool): allowConference
        allow_music_on_hold (bool): allowMusicOnHold
        only_conference (bool): onlyConference
        only_video_capable (bool): onlyVideoCapable
        only_optional_ip_address (bool): onlyOptionalIpAddress
    """

    __slots__: List[str] = [
        "allow_conference",
        "allow_music_on_hold",
        "only_conference",
        "only_video_capable",
        "only_optional_ip_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("allow_conference", "allowConference", bool, is_required=True),
            E("allow_music_on_hold", "allowMusicOnHold", bool, is_required=True),
            E("only_conference", "onlyConference", bool, is_required=True),
            E("only_video_capable", "onlyVideoCapable", bool, is_required=True),
            E(
                "only_optional_ip_address",
                "onlyOptionalIpAddress",
                bool,
                is_required=True,
            ),
        )


class SystemDeviceTypeGetAvailableListRequest14sp1(OCIRequest):
    """
    Requests a list of non-obsolete Identity/device profile types defined in the system.

    It is possible to get either all conference device types or all non-conferernce types.
    This command is similar to the `SystemSIPDeviceTypeGetListRequest()` and
    `SystemMGCPDeviceTypeGetListRequest()` but gets both SIP and MGCP types.

    The response is either `SystemDeviceTypeGetlAvailableListResponse14sp1()` or
    `ErrorResponse()`.

    Replaced By: `SystemDeviceTypeGetAvailableListRequest14sp3()`

    Attributes:
        allow_conference (bool): allowConference
        allow_music_on_hold (bool): allowMusicOnHold
        only_conference (bool): onlyConference
        only_video_capable (bool): onlyVideoCapable
        only_optional_ip_address (bool): onlyOptionalIpAddress
    """

    __slots__: List[str] = [
        "allow_conference",
        "allow_music_on_hold",
        "only_conference",
        "only_video_capable",
        "only_optional_ip_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("allow_conference", "allowConference", bool, is_required=True),
            E("allow_music_on_hold", "allowMusicOnHold", bool, is_required=True),
            E("only_conference", "onlyConference", bool, is_required=True),
            E("only_video_capable", "onlyVideoCapable", bool, is_required=True),
            E(
                "only_optional_ip_address",
                "onlyOptionalIpAddress",
                bool,
                is_required=True,
            ),
        )


class SystemDeviceTypeGetAvailableListRequest14sp3(OCIRequest):
    """
    Requests a list of non-obsolete Identity/device profile types defined in the system.

    It is possible to get either all conference device types or all non-conferernce types.
    This command is similar to the `SystemSIPDeviceTypeGetListRequest()` and
    `SystemMGCPDeviceTypeGetListRequest()` but gets both SIP and MGCP types.

    The response is either `SystemDeviceTypeGetlAvailableListResponse14sp1()` or
    `ErrorResponse()`. Replaced by: `SystemDeviceTypeGetAvailableListRequest19()`.

    Attributes:
        allow_conference (bool): allowConference
        allow_music_on_hold (bool): allowMusicOnHold
        only_conference (bool): onlyConference
        only_video_capable (bool): onlyVideoCapable
        only_optional_ip_address (bool): onlyOptionalIpAddress
    """

    __slots__: List[str] = [
        "allow_conference",
        "allow_music_on_hold",
        "only_conference",
        "only_video_capable",
        "only_optional_ip_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("allow_conference", "allowConference", bool, is_required=True),
            E("allow_music_on_hold", "allowMusicOnHold", bool, is_required=True),
            E("only_conference", "onlyConference", bool, is_required=True),
            E("only_video_capable", "onlyVideoCapable", bool, is_required=True),
            E(
                "only_optional_ip_address",
                "onlyOptionalIpAddress",
                bool,
                is_required=True,
            ),
        )


class SystemDeviceTypeGetAvailableListRequest19(OCIRequest):
    """
    Requests a list of non-obsolete Identity/device profile types defined in the system.

    It is possible to get either all conference device types or all non-conferernce types.
    This command is similar to the `SystemSIPDeviceTypeGetListRequest()` and
    `SystemMGCPDeviceTypeGetListRequest()` but gets both SIP and MGCP types.

    The response is either `SystemDeviceTypeGetlAvailableListResponse19()` or
    `ErrorResponse()`. Replaced by `SystemDeviceTypeGetAvailableListRequest22()` in AS
    data mode.

    Attributes:
        allow_conference (bool): allowConference
        allow_music_on_hold (bool): allowMusicOnHold
        only_conference (bool): onlyConference
        only_video_capable (bool): onlyVideoCapable
        only_optional_ip_address (bool): onlyOptionalIpAddress
    """

    __slots__: List[str] = [
        "allow_conference",
        "allow_music_on_hold",
        "only_conference",
        "only_video_capable",
        "only_optional_ip_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("allow_conference", "allowConference", bool, is_required=True),
            E("allow_music_on_hold", "allowMusicOnHold", bool, is_required=True),
            E("only_conference", "onlyConference", bool, is_required=True),
            E("only_video_capable", "onlyVideoCapable", bool, is_required=True),
            E(
                "only_optional_ip_address",
                "onlyOptionalIpAddress",
                bool,
                is_required=True,
            ),
        )


class SystemDeviceTypeGetAvailableListRequest22(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". The following
    elements are only used in AS data mode and ignored in the XS data mode: resellerId
    excludeLeafDeviceTypes

    The response is either `SystemDeviceTypeGetlAvailableListResponse22()` or
    `ErrorResponse()`.

    Attributes:
        allow_conference (bool): allowConference
        allow_music_on_hold (bool): allowMusicOnHold
        only_conference (bool): onlyConference
        only_video_capable (bool): onlyVideoCapable
        only_optional_ip_address (bool): onlyOptionalIpAddress
        exclude_reseller (bool): excludeReseller *Optional*
        reseller_id (str): resellerId *Optional*
        exclude_leaf_device_types (bool): excludeLeafDeviceTypes *Optional*
    """

    __slots__: List[str] = [
        "allow_conference",
        "allow_music_on_hold",
        "only_conference",
        "only_video_capable",
        "only_optional_ip_address",
        "exclude_reseller",
        "reseller_id",
        "exclude_leaf_device_types",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("allow_conference", "allowConference", bool, is_required=True),
            E("allow_music_on_hold", "allowMusicOnHold", bool, is_required=True),
            E("only_conference", "onlyConference", bool, is_required=True),
            E("only_video_capable", "onlyVideoCapable", bool, is_required=True),
            E(
                "only_optional_ip_address",
                "onlyOptionalIpAddress",
                bool,
                is_required=True,
            ),
            E("exclude_reseller", "excludeReseller", bool),
            E("reseller_id", "resellerId", str),
            E("exclude_leaf_device_types", "excludeLeafDeviceTypes", bool),
        )


class SystemDeviceTypeGetRequest(OCIRequest):
    """
    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse()` or `ErrorResponse()`.

    Replaced By: `SystemDeviceTypeGetRequest14sp3()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetRequest14sp3(OCIRequest):
    """
    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse14sp3()` or `ErrorResponse()`.

    Replaced By: `SystemDeviceTypeGetRequest14sp6()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetRequest14sp6(OCIRequest):
    """
    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse14sp6()` or `ErrorResponse()`.
    Replaced by: `SystemDeviceTypeGetRequest16()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetRequest16(OCIRequest):
    """
    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse16()` or `ErrorResponse()`.
    Replaced by: `SystemDeviceTypeGetRequest16sp1()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetRequest16sp1(OCIRequest):
    """
    Replaced By `SystemDeviceTypeGetRequest18()`.

    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse16sp1()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetRequest18(OCIRequest):
    """
    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse18()` or `ErrorResponse()`. Note:
    The elements deviceTypeConfigurationOption applies to SIP device types only.
    Therefore, only present in the response when the device type is SIP. Replaced by:
    `SystemSIPDeviceTypeGetRequest19()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetRequest19(OCIRequest):
    """
    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse19()` 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.
    Replaced by: `SystemSIPDeviceTypeGetRequest21sp1()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetRequest21sp1(OCIRequest):
    """
    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse21sp1()` 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): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetRequest22(OCIRequest):
    """
    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse22()` 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): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetRequest22V2(OCIRequest):
    """
    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse22V2()` 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): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetRequest22V3(OCIRequest):
    """
    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse22V3()` 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.
    Replaced by: `SystemDeviceTypeGetRequest22V4()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetRequest22V4(OCIRequest):
    """
    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse22V4()` 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.
    Replaced by: `SystemDeviceTypeGetRequest22V5()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemDeviceTypeGetRequest22V5(OCIRequest):
    """
    Requests the information about the specified device type without regard to whether the
    type is SIP or MGCP.

    The response is either `SystemDeviceTypeGetResponse22V5()` 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): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=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): accessCode
        include_code_for_network_translations_and_routing (bool):
            includeCodeForNetworkTranslationsAndRouting
        include_code_for_screening_services (bool): includeCodeForScreeningServices
        enable_secondary_dial_tone (bool): enableSecondaryDialTone
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "access_code",
        "include_code_for_network_translations_and_routing",
        "include_code_for_screening_services",
        "enable_secondary_dial_tone",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("access_code", "accessCode", str, is_required=True),
            E(
                "include_code_for_network_translations_and_routing",
                "includeCodeForNetworkTranslationsAndRouting",
                bool,
                is_required=True,
            ),
            E(
                "include_code_for_screening_services",
                "includeCodeForScreeningServices",
                bool,
                is_required=True,
            ),
            E(
                "enable_secondary_dial_tone",
                "enableSecondaryDialTone",
                bool,
                is_required=True,
            ),
            E("description", "description", str),
        )


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): accessCode
    """

    __slots__: List[str] = [
        "access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("access_code", "accessCode", str, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): accessCode
    """

    __slots__: List[str] = [
        "access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("access_code", "accessCode", str, is_required=True),)


class SystemDialPlanPolicyGetRequest(OCIRequest):
    """
    Request the system level data associated with Dial Plan Policy.

    The response is either a `SystemDialPlanPolicyGetResponse()` or an `ErrorResponse()`.
    Replaced by: `SystemDialPlanPolicyGetRequest17()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemDialPlanPolicyGetRequest17(OCIRequest):
    """
    Request the system level data associated with Dial Plan Policy.

    The response is either a `SystemDialPlanPolicyGetResponse17()` or an
    `ErrorResponse()`. Replaced by: `SystemDialPlanPolicyGetRequest22()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemDialPlanPolicyGetRequest22(OCIRequest):
    """
    Request the system level data associated with Dial Plan Policy.

    The response is either a `SystemDialPlanPolicyGetResponse22()` or an
    `ErrorResponse()`. Replaced by: `SystemDialPlanPolicyGetRequest22V2()` in AS data
    mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemDialPlanPolicyGetRequest22V2(OCIRequest):
    """
    Request the system level data associated with Dial Plan Policy.

    The response is either a `SystemDialPlanPolicyGetResponse22V2()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): accessCode
        include_code_for_network_translations_and_routing (bool):
            includeCodeForNetworkTranslationsAndRouting *Optional*
        include_code_for_screening_services (bool): includeCodeForScreeningServices
            *Optional*
        enable_secondary_dial_tone (bool): enableSecondaryDialTone *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "access_code",
        "include_code_for_network_translations_and_routing",
        "include_code_for_screening_services",
        "enable_secondary_dial_tone",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("access_code", "accessCode", str, is_required=True),
            E(
                "include_code_for_network_translations_and_routing",
                "includeCodeForNetworkTranslationsAndRouting",
                bool,
            ),
            E(
                "include_code_for_screening_services",
                "includeCodeForScreeningServices",
                bool,
            ),
            E("enable_secondary_dial_tone", "enableSecondaryDialTone", bool),
            E("description", "description", str),
        )


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 (bool): requiresAccessCodeForPublicCalls
            *Optional*
        allow_e164_public_calls (bool): allowE164PublicCalls *Optional*
        prefer_e164_number_format_for_callback_services (bool):
            preferE164NumberFormatForCallbackServices *Optional*
        public_digit_map (str): publicDigitMap *Optional*
        private_digit_map (str): privateDigitMap *Optional*
        override_resolved_device_digit_map (bool): overrideResolvedDeviceDigitMap
            *Optional*
        device_digit_map (str): deviceDigitMap *Optional*
        perform_internal_translations_with_oac (bool): performInternalTranslationsWithOAC
            *Optional*
        permissive_oac_dialing (bool): permissiveOACDialing *Optional*
    """

    __slots__: List[str] = [
        "requires_access_code_for_public_calls",
        "allow_e164_public_calls",
        "prefer_e164_number_format_for_callback_services",
        "public_digit_map",
        "private_digit_map",
        "override_resolved_device_digit_map",
        "device_digit_map",
        "perform_internal_translations_with_oac",
        "permissive_oac_dialing",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "requires_access_code_for_public_calls",
                "requiresAccessCodeForPublicCalls",
                bool,
            ),
            E("allow_e164_public_calls", "allowE164PublicCalls", bool),
            E(
                "prefer_e164_number_format_for_callback_services",
                "preferE164NumberFormatForCallbackServices",
                bool,
            ),
            E("public_digit_map", "publicDigitMap", str),
            E("private_digit_map", "privateDigitMap", str),
            E(
                "override_resolved_device_digit_map",
                "overrideResolvedDeviceDigitMap",
                bool,
            ),
            E("device_digit_map", "deviceDigitMap", str),
            E(
                "perform_internal_translations_with_oac",
                "performInternalTranslationsWithOAC",
                bool,
            ),
            E("permissive_oac_dialing", "permissiveOACDialing", bool),
        )


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): name
        description (str): description *Optional*
        prefix_digits (str): prefixDigits *Optional*
        match_call_type (List[str]): matchCallType *Optional*
        match_alternate_call_indicator (List[str]): matchAlternateCallIndicator *Optional*
        match_local_category (bool): matchLocalCategory
        match_national_category (bool): matchNationalCategory
        match_interlata_category (bool): matchInterlataCategory
        match_intralata_category (bool): matchIntralataCategory
        match_international_category (bool): matchInternationalCategory
        match_private_category (bool): matchPrivateCategory
        match_emergency_category (bool): matchEmergencyCategory
        match_other_category (bool): matchOtherCategory
    """

    __slots__: List[str] = [
        "name",
        "description",
        "prefix_digits",
        "match_call_type",
        "match_alternate_call_indicator",
        "match_local_category",
        "match_national_category",
        "match_interlata_category",
        "match_intralata_category",
        "match_international_category",
        "match_private_category",
        "match_emergency_category",
        "match_other_category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("prefix_digits", "prefixDigits", str),
            E("match_call_type", "matchCallType", str, is_array=True),
            E(
                "match_alternate_call_indicator",
                "matchAlternateCallIndicator",
                str,
                is_array=True,
            ),
            E("match_local_category", "matchLocalCategory", bool, is_required=True),
            E(
                "match_national_category",
                "matchNationalCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_interlata_category",
                "matchInterlataCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_intralata_category",
                "matchIntralataCategory",
                bool,
                is_required=True,
            ),
            E(
                "match_international_category",
                "matchInternationalCategory",
                bool,
                is_required=True,
            ),
            E("match_private_category", "matchPrivateCategory", bool, is_required=True),
            E(
                "match_emergency_category",
                "matchEmergencyCategory",
                bool,
                is_required=True,
            ),
            E("match_other_category", "matchOtherCategory", bool, is_required=True),
        )


class SystemDialableCallerIDCriteriaDeleteRequest(OCIRequest):
    """
    Delete a Dialable Caller ID Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemDialableCallerIDCriteriaGetRequest(OCIRequest):
    """
    Get an existing Dialable Caller ID Criteria.

    The response is either a `SystemDialableCallerIDCriteriaGetRequest()` or an
    `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemDialableCallerIDGetRequest(OCIRequest):
    """
    Get the system level Dialable Caller ID criteria list.

    The response is either a `SystemDialableCallerIDGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemDigitCollectionGetRequest13mp4(OCIRequest):
    """
    Request the system's digit collection attributes.

    The response is either a `SystemDigitCollectionGetResponse13mp4()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemDigitCollectionModifyRequest(OCIRequest):
    """
    Modifies the system's digit collection attributes.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        access_code (str): accessCode *Optional*
        public_digit_map (str): publicDigitMap *Optional*
        private_digit_map (str): privateDigitMap *Optional*
    """

    __slots__: List[str] = [
        "access_code",
        "public_digit_map",
        "private_digit_map",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("access_code", "accessCode", str),
            E("public_digit_map", "publicDigitMap", str),
            E("private_digit_map", "privateDigitMap", str),
        )


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 (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str),)


class SystemDnGetUtilizationRequest(OCIRequest):
    """
    Get the utilization of a single DN.

    The response is either `SystemDnGetUtilizationResponse()` or `ErrorResponse()`.

    Replaced By: `SystemDnGetUtilizationRequest14sp3()`

    Attributes:
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("phone_number", "phoneNumber", str, is_required=True),)


class SystemDnGetUtilizationRequest14sp3(OCIRequest):
    """
    Get the utilization of a single DN.

    The response is either `SystemDnGetUtilizationResponse14sp3()` or `ErrorResponse()`.

    Attributes:
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("phone_number", "phoneNumber", str, is_required=True),)


class SystemDomainAddRequest(OCIRequest):
    """
    Add a system or reseller domain to the system.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        domain (str): domain
        reseller_id (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "domain",
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("domain", "domain", str, is_required=True),
            E("reseller_id", "resellerId", str),
        )


class SystemDomainDeleteRequest(OCIRequest):
    """
    Delete a system domain from the system.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        domain (str): domain
    """

    __slots__: List[str] = [
        "domain",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("domain", "domain", str, is_required=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): domain
        reseller_id (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "domain",
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("domain", "domain", str, is_required=True),
            E("reseller_id", "resellerId", str),
        )


class SystemDomainGetListRequest(OCIRequest):
    """
    Requests the list of all system-level domain names.

    The response is either `SystemDomainGetListResponse()` or `ErrorResponse()`. Replaced
    by `SystemDomainGetListRequest22()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemDomainGetListRequest22(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 `SystemDomainGetListResponse22()` or `ErrorResponse()`. The
    following elements are only used in AS data mode: includeReseller resellerId Replaced
    by `SystemDomainGetListRequest22V2()` in AS data mode.

    Attributes:
        exclude_reseller (bool): excludeReseller *Optional*
        reseller_id (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "exclude_reseller",
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("exclude_reseller", "excludeReseller", bool),
            E("reseller_id", "resellerId", str),
        )


class SystemDomainParametersGetRequest(OCIRequest):
    """
    Request to get the list of system Domain parameters.

    The response is either `SystemDomainParametersGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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
    The following elements are only used in AS and XS data mode and ignored in Amplify
    data mode: defaultDomain

    Attributes:
        use_alias_for_domain (bool): useAliasForDomain *Optional*
        default_domain (str): defaultDomain *Optional*
    """

    __slots__: List[str] = [
        "use_alias_for_domain",
        "default_domain",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("use_alias_for_domain", "useAliasForDomain", bool),
            E("default_domain", "defaultDomain", str),
        )


class SystemEmergencyCallDDoSProtectionGetRequest(OCIRequest):
    """
    Get the system Emergency Call DDos Protection configurations.

    The response is either `SystemEmergencyCallDDoSProtectionGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemEmergencyCallDDoSProtectionModifyRequest(OCIRequest):
    """
    Modify the Emergency Call DDos Protection settings.

    The response is either `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        enabled (bool): enabled *Optional*
        sample_interval_seconds (int): sampleIntervalSeconds *Optional*
        protection_rate (int): protectionRate *Optional*
        protection_action (str): protectionAction *Optional*
    """

    __slots__: List[str] = [
        "enabled",
        "sample_interval_seconds",
        "protection_rate",
        "protection_action",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enabled", "enabled", bool),
            E("sample_interval_seconds", "sampleIntervalSeconds", int),
            E("protection_rate", "protectionRate", int),
            E("protection_action", "protectionAction", str),
        )


class SystemEmergencyCallNotificationGetRequest(OCIRequest):
    """
    Request the system level data associated with Emergency Call Notification.

    The response is either a `SystemEmergencyCallNotificationGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (str): defaultFromAddress *Optional*
    """

    __slots__: List[str] = [
        "default_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("default_from_address", "defaultFromAddress", str),)


class SystemEmergencyZonesGetRequest(OCIRequest):
    """
    Request the system level data associated with Emergency Zones.

    The response is either a `SystemEmergencyZonesGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (str): defaultFromAddress *Optional*
    """

    __slots__: List[str] = [
        "default_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("default_from_address", "defaultFromAddress", str),)


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemEnhancedCallLogsGetRequest(OCIRequest):
    """
    Request the system level data associated with Enhanced Call Logs.

    The response is either a `SystemEnhancedCallLogsGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemEnhancedCallLogsGetRequest17sp4(OCIRequest):
    """
    Request the system level data associated with Enhanced Call Logs.

    The response is either a `SystemEnhancedCallLogsGetResponse17sp4()` or an
    `ErrorResponse()`. Replaced by:`SystemEnhancedCallLogsGetRequest20sp1()` in AS data
    mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemEnhancedCallLogsGetRequest20sp1(OCIRequest):
    """
    Request the system level data associated with Enhanced Call Logs.

    The response is either a `SystemEnhancedCallLogsGetResponse20sp1()` or an
    `ErrorResponse()`. Replaced by:`SystemEnhancedCallLogsGetRequest22()` in AS data mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemEnhancedCallLogsGetRequest22(OCIRequest):
    """
    Request the system level data associated with Enhanced Call Logs.

    Replaced by: `SystemEnhancedCallLogsGetRequest24()`. Response to
    `SystemDeviceTypeGetRequest16sp1()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemEnhancedCallLogsGetRequest22V2(OCIRequest):
    """
    Request the system level data associated with Enhanced Call Logs.

    The response is either a `SystemEnhancedCallLogsGetResponse22V2()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemEnhancedCallLogsModifyRequest(OCIRequest):
    """
    Modify the system level data associated with Enhanced Call Logs.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. The following
    elements are only used in AS data mode: isSendEnabled server1NetAddress
    server1SendPort server1RetrievePort server2NetAddress server2SendPort
    server2RetrievePort sharedSecret retransmissionDelayMilliSeconds maxTransmissions
    soapTimeoutSeconds useDBS eclQueryApplicationURL eclQueryDataRepositoryURL

    Attributes:
        is_send_enabled (bool): isSendEnabled *Optional*
        server1_net_address (str): server1NetAddress *Optional*
        server1_send_port (int): server1SendPort *Optional*
        server1_retrieve_port (int): server1RetrievePort *Optional*
        server2_net_address (str): server2NetAddress *Optional*
        server2_send_port (int): server2SendPort *Optional*
        server2_retrieve_port (int): server2RetrievePort *Optional*
        shared_secret (str): sharedSecret *Optional*
        retransmission_delay_milli_seconds (int): retransmissionDelayMilliSeconds
            *Optional*
        max_transmissions (int): maxTransmissions *Optional*
        soap_timeout_seconds (int): soapTimeoutSeconds *Optional*
        use_dbs (bool): useDBS *Optional*
        max_non_paged_response_size (int): maxNonPagedResponseSize *Optional*
        ecl_query_application_url (str): eclQueryApplicationURL *Optional*
        ecl_query_data_repository_url (str): eclQueryDataRepositoryURL *Optional*
    """

    __slots__: List[str] = [
        "is_send_enabled",
        "server1_net_address",
        "server1_send_port",
        "server1_retrieve_port",
        "server2_net_address",
        "server2_send_port",
        "server2_retrieve_port",
        "shared_secret",
        "retransmission_delay_milli_seconds",
        "max_transmissions",
        "soap_timeout_seconds",
        "use_dbs",
        "max_non_paged_response_size",
        "ecl_query_application_url",
        "ecl_query_data_repository_url",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("is_send_enabled", "isSendEnabled", bool),
            E("server1_net_address", "server1NetAddress", str),
            E("server1_send_port", "server1SendPort", int),
            E("server1_retrieve_port", "server1RetrievePort", int),
            E("server2_net_address", "server2NetAddress", str),
            E("server2_send_port", "server2SendPort", int),
            E("server2_retrieve_port", "server2RetrievePort", int),
            E("shared_secret", "sharedSecret", str),
            E(
                "retransmission_delay_milli_seconds",
                "retransmissionDelayMilliSeconds",
                int,
            ),
            E("max_transmissions", "maxTransmissions", int),
            E("soap_timeout_seconds", "soapTimeoutSeconds", int),
            E("use_dbs", "useDBS", bool),
            E("max_non_paged_response_size", "maxNonPagedResponseSize", int),
            E("ecl_query_application_url", "eclQueryApplicationURL", str),
            E("ecl_query_data_repository_url", "eclQueryDataRepositoryURL", str),
        )


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 (int): maxNonPagedResponseSize *Optional*
        ecl_query_application_url (str): eclQueryApplicationURL *Optional*
        ecl_query_data_repository_url (str): eclQueryDataRepositoryURL *Optional*
        default_schema (str): defaultSchema *Optional*
    """

    __slots__: List[str] = [
        "max_non_paged_response_size",
        "ecl_query_application_url",
        "ecl_query_data_repository_url",
        "default_schema",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("max_non_paged_response_size", "maxNonPagedResponseSize", int),
            E("ecl_query_application_url", "eclQueryApplicationURL", str),
            E("ecl_query_data_repository_url", "eclQueryDataRepositoryURL", str),
            E("default_schema", "defaultSchema", str),
        )


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemEnterpriseTrunkGetRequest(OCIRequest):
    """
    Request the system level data associated with the Enterprise Trunk service.

    The response is either `SystemEnterpriseTrunkGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool):
            enableHoldoverOfHighwaterCallCounts *Optional*
        holdover_period (str): holdoverPeriod *Optional*
        time_zone_offset_minutes (str): timeZoneOffsetMinutes *Optional*
    """

    __slots__: List[str] = [
        "enable_holdover_of_highwater_call_counts",
        "holdover_period",
        "time_zone_offset_minutes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "enable_holdover_of_highwater_call_counts",
                "enableHoldoverOfHighwaterCallCounts",
                bool,
            ),
            E("holdover_period", "holdoverPeriod", str),
            E("time_zone_offset_minutes", "timeZoneOffsetMinutes", str),
        )


class SystemExecutiveGetRequest(OCIRequest):
    """
    Request to get the Executive system parameters.

    The response is either `SystemExecutiveGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): treatVirtualOnNetCallsAsInternal
            *Optional*
    """

    __slots__: List[str] = [
        "treat_virtual_on_net_calls_as_internal",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "treat_virtual_on_net_calls_as_internal",
                "treatVirtualOnNetCallsAsInternal",
                bool,
            ),
        )


class SystemExpensiveCallNotificationGetRequest(OCIRequest):
    """
    Request to get the expensive call notification service parameters.

    The response is either a `SystemExpensiveCallNotificationGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemExpensiveCallNotificationModifyRequest(OCIRequest):
    """
    Modify the expensive call notification service parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        enable_post_announcement_delay_timer (bool): enablePostAnnouncementDelayTimer
            *Optional*
        post_announcement_delay_seconds (int): postAnnouncementDelaySeconds *Optional*
    """

    __slots__: List[str] = [
        "enable_post_announcement_delay_timer",
        "post_announcement_delay_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "enable_post_announcement_delay_timer",
                "enablePostAnnouncementDelayTimer",
                bool,
            ),
            E("post_announcement_delay_seconds", "postAnnouncementDelaySeconds", int),
        )


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): alternateCallIndicator
        treatment_audio_file (str): treatmentAudioFile *Optional*
    """

    __slots__: List[str] = [
        "alternate_call_indicator",
        "treatment_audio_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "alternate_call_indicator",
                "alternateCallIndicator",
                str,
                is_required=True,
            ),
            E("treatment_audio_file", "treatmentAudioFile", str),
        )


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): alternateCallIndicator
    """

    __slots__: List[str] = [
        "alternate_call_indicator",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "alternate_call_indicator",
                "alternateCallIndicator",
                str,
                is_required=True,
            ),
        )


class SystemExpensiveCallTypeGetListRequest(OCIRequest):
    """
    Request to get the list of expensive alternate call indicators in the system.

    The response is either a `SystemExpensiveCallTypeGetListResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemExpensiveCallTypeGetListRequest16sp1()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): alternateCallIndicator
        treatment_audio_file (str): treatmentAudioFile *Optional*
    """

    __slots__: List[str] = [
        "alternate_call_indicator",
        "treatment_audio_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "alternate_call_indicator",
                "alternateCallIndicator",
                str,
                is_required=True,
            ),
            E("treatment_audio_file", "treatmentAudioFile", str),
        )


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): fileName
    """

    __slots__: List[str] = [
        "file_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("file_name", "fileName", str, is_required=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): fileName
    """

    __slots__: List[str] = [
        "file_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("file_name", "fileName", str, is_required=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.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemExtensionLengthGetRequest(OCIRequest):
    """
    Request the system's extension range.

    The response is either a `SystemExtensionLengthGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemExtensionLengthModifyRequest(OCIRequest):
    """
    Modify the group's extension length range.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        min_extension_length (int): minExtensionLength *Optional*
        max_extension_length (int): maxExtensionLength *Optional*
    """

    __slots__: List[str] = [
        "min_extension_length",
        "max_extension_length",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("min_extension_length", "minExtensionLength", int),
            E("max_extension_length", "maxExtensionLength", int),
        )


class SystemExternalAuthenticationAddACLEntryRequest(OCIRequest):
    """
    Add an entry to the external authentication access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


class SystemExternalAuthenticationAddACLEntryRequest14sp2(OCIRequest):
    """
    Add an entry to the external authentication access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


class SystemExternalAuthenticationDeleteACLEntryRequest(OCIRequest):
    """
    Delete an entry from the external authentication access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=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): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=True),)


class SystemExternalAuthenticationGetACLListRequest(OCIRequest):
    """
    Get the external authentication access control list.

    The response is either `SystemExternalAuthenticationGetACLListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemExternalAuthenticationModifyACLEntryRequest(OCIRequest):
    """
    Modify an entry from the external authentication access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


class SystemExternalAuthenticationModifyACLEntryRequest14sp2(OCIRequest):
    """
    Modify an entry from the external authentication access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


class SystemExternalEmergencyRoutingParametersGetRequest13mp13(OCIRequest):
    """
    Request to get the list of External Emergency Routing system parameters.

    The response is either `SystemExternalEmergencyRoutingParametersGetResponse13mp13()`
    or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemExternalEmergencyRoutingParametersModifyRequest13mp13(OCIRequest):
    """
    Request to modify Call External Emergency Routing system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_uri (str): serviceURI *Optional*
        default_emergency_number (str): defaultEmergencyNumber *Optional*
        is_active (bool): isActive *Optional*
        supports_dnssrv (bool): supportsDNSSRV *Optional*
        connection_timeout_seconds (int): connectionTimeoutSeconds *Optional*
    """

    __slots__: List[str] = [
        "service_uri",
        "default_emergency_number",
        "is_active",
        "supports_dnssrv",
        "connection_timeout_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_uri", "serviceURI", str),
            E("default_emergency_number", "defaultEmergencyNumber", str),
            E("is_active", "isActive", bool),
            E("supports_dnssrv", "supportsDNSSRV", bool),
            E("connection_timeout_seconds", "connectionTimeoutSeconds", int),
        )


class SystemFaxMessagingGetRequest(OCIRequest):
    """
    Request the system level data associated with Fax Messaging.

    The response is either a `SystemFaxMessagingGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (int): statusDurationHours *Optional*
        status_audit_interval_hours (int): statusAuditIntervalHours *Optional*
        maximum_concurrent_faxes_per_user (int): maximumConcurrentFaxesPerUser *Optional*
    """

    __slots__: List[str] = [
        "status_duration_hours",
        "status_audit_interval_hours",
        "maximum_concurrent_faxes_per_user",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("status_duration_hours", "statusDurationHours", int),
            E("status_audit_interval_hours", "statusAuditIntervalHours", int),
            E(
                "maximum_concurrent_faxes_per_user",
                "maximumConcurrentFaxesPerUser",
                int,
            ),
        )


class SystemFeatureAccessCodeGetListRequest(OCIRequest):
    """
    Request to get list of default Feature Access Codes defined on system level.

    The response is either `SystemFeatureAccessCodeGetListResponse()` or
    `ErrorResponse()`. Replaced by: `SystemFeatureAccessCodeGetListRequest21()` in AS data
    mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemFeatureAccessCodeGetListRequest20(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". Replaced by: `SystemFeatureAccessCodeGetListRequest21()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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".
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): fileName
    """

    __slots__: List[str] = [
        "file_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("file_name", "fileName", str, is_required=True),)


class SystemFileRepositoryDeviceDeleteRequest(OCIRequest):
    """
    Delete a file repository.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemFileRepositoryDeviceGetListRequest(OCIRequest):
    """
    Request the list of file repositories in the system.

    The response is either a `SystemFileRepositoryDeviceGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemFileRepositoryDeviceGetRequest(OCIRequest):
    """
    Request to get the file repository information.

    The response is either `SystemFileRepositoryDeviceGetResponse()` or `ErrorResponse()`.
    Replaced by: `SystemFileRepositoryDeviceGetRequest16()`

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemFileRepositoryDeviceGetRequest16(OCIRequest):
    """
    Request to get the file repository information.

    The response is either `SystemFileRepositoryDeviceGetResponse16()` or
    `ErrorResponse()`. Replaced by: `SystemFileRepositoryDeviceGetRequest20()`

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemFileRepositoryDeviceGetRequest20(OCIRequest):
    """
    Request to get the file repository information.

    The response is either `SystemFileRepositoryDeviceGetResponse20()` or
    `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemFileRepositoryDeviceGetRequest22(OCIRequest):
    """
    Request to get the file repository information.

    The response is either `SystemFileRepositoryDeviceGetResponse22()` or
    `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemFileRepositoryDeviceModifyRequest(OCIRequest):
    """
    Modify a file repository.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        name (str): name
        root_directory (str): rootDirectory *Optional*
        secure (bool): secure *Optional*
        net_address (str): netAddress *Optional*
        ftp_passive (bool): ftpPassive *Optional*
        protocol (str): protocol *Optional*
        port (int): port *Optional*
        ftp_remote_verification (bool): ftpRemoteVerification *Optional*
    """

    __slots__: List[str] = [
        "name",
        "root_directory",
        "secure",
        "net_address",
        "ftp_passive",
        "protocol",
        "port",
        "ftp_remote_verification",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("root_directory", "rootDirectory", str),
            E("secure", "secure", bool),
            E("net_address", "netAddress", str),
            E("ftp_passive", "ftpPassive", bool),
            E("protocol", "protocol", str),
            E("port", "port", int),
            E("ftp_remote_verification", "ftpRemoteVerification", bool),
        )


class SystemFileRepositoryDeviceModifyRequest22(OCIRequest):
    """
    Modify a file repository.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        name (str): name
        root_directory (str): rootDirectory *Optional*
        secure (bool): secure *Optional*
        net_address (str): netAddress *Optional*
        ftp_passive (bool): ftpPassive *Optional*
        protocol (str): protocol *Optional*
        port (int): port *Optional*
        ftp_remote_verification (bool): ftpRemoteVerification *Optional*
    """

    __slots__: List[str] = [
        "name",
        "root_directory",
        "secure",
        "net_address",
        "ftp_passive",
        "protocol",
        "port",
        "ftp_remote_verification",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("root_directory", "rootDirectory", str),
            E("secure", "secure", bool),
            E("net_address", "netAddress", str),
            E("ftp_passive", "ftpPassive", bool),
            E("protocol", "protocol", str),
            E("port", "port", int),
            E("ftp_remote_verification", "ftpRemoteVerification", bool),
        )


class SystemFileRepositoryDeviceUserAddRequest(OCIRequest):
    """
    Add a new file repository user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        file_repository_name (str): fileRepositoryName
        user_name (str): userName
        password (str): password
        allow_put (bool): allowPut
        allow_delete (bool): allowDelete
        allow_get (bool): allowGet
    """

    __slots__: List[str] = [
        "file_repository_name",
        "user_name",
        "password",
        "allow_put",
        "allow_delete",
        "allow_get",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
            E("user_name", "userName", str, is_required=True),
            E("password", "password", str, is_required=True),
            E("allow_put", "allowPut", bool, is_required=True),
            E("allow_delete", "allowDelete", bool, is_required=True),
            E("allow_get", "allowGet", bool, is_required=True),
        )


class SystemFileRepositoryDeviceUserDeleteRequest(OCIRequest):
    """
    Delete a file repository user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        file_repository_name (str): fileRepositoryName
        user_name (str): userName
    """

    __slots__: List[str] = [
        "file_repository_name",
        "user_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
            E("user_name", "userName", str, is_required=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): fileRepositoryName
    """

    __slots__: List[str] = [
        "file_repository_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("file_repository_name", "fileRepositoryName", str, is_required=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): fileRepositoryName
        user_name (str): userName
    """

    __slots__: List[str] = [
        "file_repository_name",
        "user_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
            E("user_name", "userName", str, is_required=True),
        )


class SystemFileRepositoryDeviceUserModifyRequest(OCIRequest):
    """
    Modify a file repository user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        file_repository_name (str): fileRepositoryName
        user_name (str): userName
        password (str): password *Optional*
        allow_put (bool): allowPut *Optional*
        allow_delete (bool): allowDelete *Optional*
        allow_get (bool): allowGet *Optional*
    """

    __slots__: List[str] = [
        "file_repository_name",
        "user_name",
        "password",
        "allow_put",
        "allow_delete",
        "allow_get",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("file_repository_name", "fileRepositoryName", str, is_required=True),
            E("user_name", "userName", str, is_required=True),
            E("password", "password", str),
            E("allow_put", "allowPut", bool),
            E("allow_delete", "allowDelete", bool),
            E("allow_get", "allowGet", bool),
        )


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): avpCode
        vendor_id (int): vendorId
    """

    __slots__: List[str] = [
        "avp_code",
        "vendor_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("avp_code", "avpCode", int, is_required=True),
            E("vendor_id", "vendorId", int, is_required=True),
        )


class SystemGETSAvpCodeMapDeleteRequest(OCIRequest):
    """
    Delete a system GETS AVP Code map.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        avp_code (int): avpCode
        vendor_id (int): vendorId
    """

    __slots__: List[str] = [
        "avp_code",
        "vendor_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("avp_code", "avpCode", int, is_required=True),
            E("vendor_id", "vendorId", int, is_required=True),
        )


class SystemGETSAvpCodeMapGetListRequest(OCIRequest):
    """
    Get a list of GETS AVP Code Maps at the system level.

    The response is either `SystemGETSAvpCodeMapGetListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemGETSGetRequest(OCIRequest):
    """
    Get the GETS system settings.

    The response is either `SystemGETSGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemGETSModifyRequest(OCIRequest):
    """
    Modify GETS system settings.

    The following elements are only used in AS data mode and ignored in the Amplify data
    mode: callIdentifierMode

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        enabled (bool): enabled *Optional*
        enable_require_resource_priority (bool): enableRequireResourcePriority *Optional*
        send_access_resource_priority (bool): sendAccessResourcePriority *Optional*
        call_identifier_mode (str): callIdentifierMode *Optional*
        default_priority_avp (int): defaultPriorityAVP *Optional*
        signaling_dscp (int): signalingDSCP *Optional*
        default_r_value (str): defaultRValue *Optional*
        bypass_ro_release (bool): bypassRoRelease *Optional*
    """

    __slots__: List[str] = [
        "enabled",
        "enable_require_resource_priority",
        "send_access_resource_priority",
        "call_identifier_mode",
        "default_priority_avp",
        "signaling_dscp",
        "default_r_value",
        "bypass_ro_release",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enabled", "enabled", bool),
            E(
                "enable_require_resource_priority",
                "enableRequireResourcePriority",
                bool,
            ),
            E("send_access_resource_priority", "sendAccessResourcePriority", bool),
            E("call_identifier_mode", "callIdentifierMode", str),
            E("default_priority_avp", "defaultPriorityAVP", int),
            E("signaling_dscp", "signalingDSCP", int),
            E("default_r_value", "defaultRValue", str),
            E("bypass_ro_release", "bypassRoRelease", bool),
        )


class SystemGETSNumberAddRequest(OCIRequest):
    """
    Add a GETS reserved Number.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        number (str): number
        type (str): type
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "number",
        "type",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("number", "number", str, is_required=True),
            E("type", "type", str, is_required=True),
            E("description", "description", str),
        )


class SystemGETSNumberDeleteRequest(OCIRequest):
    """
    Delete a GETS reserved Number.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        number (str): number
    """

    __slots__: List[str] = [
        "number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("number", "number", str, is_required=True),)


class SystemGETSNumberGetListRequest(OCIRequest):
    """
    Get a list of GETS reserved Numbers.

    The response is either `SystemGETSNumberGetListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemGETSNumberModifyRequest(OCIRequest):
    """
    Modify a GETS reserved Number.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        number (str): number
        type (str): type *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "number",
        "type",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("number", "number", str, is_required=True),
            E("type", "type", str),
            E("description", "description", str),
        )


class SystemGETSReservedFeatureAccessCodeAddRequest(OCIRequest):
    """
    Add a GETS reserved FAC.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        code (str): code
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "code",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("code", "code", str, is_required=True),
            E("description", "description", str),
        )


class SystemGETSReservedFeatureAccessCodeDeleteRequest(OCIRequest):
    """
    Delete a GETS reserved FAC.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        code (str): code
    """

    __slots__: List[str] = [
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("code", "code", str, is_required=True),)


class SystemGETSReservedFeatureAccessCodeGetListRequest(OCIRequest):
    """
    Get a list of GETS reserved FAC.

    The response is either `SystemGETSReservedFeatureAccessCodeGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemGETSReservedFeatureAccessCodeModifyRequest(OCIRequest):
    """
    Modify a GETS reserved FAC.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        code (str): code
        new_code (str): newCode *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "code",
        "new_code",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("code", "code", str, is_required=True),
            E("new_code", "newCode", str),
            E("description", "description", str),
        )


class SystemGETSResourcePriorityAddRequest(OCIRequest):
    """
    Add a GETS Resource Priority.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        priority_value (str): priorityValue
        priority_level (int): priorityLevel
        priority_class (str): priorityClass
    """

    __slots__: List[str] = [
        "priority_value",
        "priority_level",
        "priority_class",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("priority_value", "priorityValue", str, is_required=True),
            E("priority_level", "priorityLevel", int, is_required=True),
            E("priority_class", "priorityClass", str, is_required=True),
        )


class SystemGETSResourcePriorityDeleteRequest(OCIRequest):
    """
    Delete a GETS Resource Priority.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        priority_value (str): priorityValue
    """

    __slots__: List[str] = [
        "priority_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("priority_value", "priorityValue", str, is_required=True),)


class SystemGETSResourcePriorityGetListRequest(OCIRequest):
    """
    Get a list of GETS Resource Priorities.

    The response is either `SystemGETSResourcePriorityGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemGETSResourcePriorityModifyRequest(OCIRequest):
    """
    Modify a GETS reserved Resource Priority.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        priority_value (str): priorityValue
        new_priority_value (str): newPriorityValue *Optional*
        priority_level (int): priorityLevel *Optional*
        priority_class (str): priorityClass *Optional*
    """

    __slots__: List[str] = [
        "priority_value",
        "new_priority_value",
        "priority_level",
        "priority_class",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("priority_value", "priorityValue", str, is_required=True),
            E("new_priority_value", "newPriorityValue", str),
            E("priority_level", "priorityLevel", int),
            E("priority_class", "priorityClass", str),
        )


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): priorityLevel
        session_priority (int): sessionPriority
    """

    __slots__: List[str] = [
        "priority_level",
        "session_priority",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("priority_level", "priorityLevel", int, is_required=True),
            E("session_priority", "sessionPriority", int, is_required=True),
        )


class SystemGETSSessionPriorityMapDeleteRequest(OCIRequest):
    """
    Delete a GETS Session Priority map.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        priority_level (int): priorityLevel
    """

    __slots__: List[str] = [
        "priority_level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("priority_level", "priorityLevel", int, is_required=True),)


class SystemGETSSessionPriorityMapGetListRequest(OCIRequest):
    """
    Get a list of GETS Session Priority maps.

    The response is either `SystemGETSSessionPriorityMapGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemGETSSessionPriorityMapModifyRequest(OCIRequest):
    """
    Modify a GETS Session Priority Map.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        priority_level (int): priorityLevel
        session_priority (int): sessionPriority *Optional*
    """

    __slots__: List[str] = [
        "priority_level",
        "session_priority",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("priority_level", "priorityLevel", int, is_required=True),
            E("session_priority", "sessionPriority", int),
        )


class SystemGeographicRedundancyPeerSipConnectionMonitoringGetRequest(OCIRequest):
    """
    Request to get the list of Peer SIP Connection system parameters The response is a
    `SystemGeographicRedundancyPeerSipConnectionMonitoringGetResponse()`.

    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemGeographicRedundancyPeerSipConnectionMonitoringModifyRequest(OCIRequest):
    """
    Modify the list of Peer SIP Connection Monitoring system parameters The response is
    either a `SuccessResponse()` or an `ErrorResponse()`.


    Attributes:
        enabled (bool): enabled *Optional*
        heartbeat_interval (int): heartbeatInterval *Optional*
        heartbeat_timeout (int): heartbeatTimeout *Optional*
    """

    __slots__: List[str] = [
        "enabled",
        "heartbeat_interval",
        "heartbeat_timeout",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enabled", "enabled", bool),
            E("heartbeat_interval", "heartbeatInterval", int),
            E("heartbeat_timeout", "heartbeatTimeout", int),
        )


class SystemGeographicRedundancyProxyGetRequest(OCIRequest):
    """
    Request to get the list of Geographic Redundancy Proxy system parameters The response
    is a `SystemGeographicRedundancyProxyGetResponse()`.

    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemGeographicRedundancyProxyModifyRequest(OCIRequest):
    """
    Modify the list of Geographic Redundancy Proxysystem parameters The response is either
    a `SuccessResponse()` or an `ErrorResponse()`.


    Attributes:
        enabled (bool): enabled *Optional*
    """

    __slots__: List[str] = [
        "enabled",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("enabled", "enabled", bool),)


class SystemGeographicRedundancyUnreachableFromPrimaryGetUserListRequest(OCIRequest):
    """
    Get the list of users that are unreachable from the primary application server.

    The response is a
    `SystemGeographicRedundancyUnreachableFromPrimaryGetUserListResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemGeographicRedundancyUnreachableFromPrimaryGetUserListRequest22()` in AS data
    mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (int): userListSizeLimit *Optional*
    """

    __slots__: List[str] = [
        "user_list_size_limit",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_list_size_limit", "userListSizeLimit", int),)


class SystemGetAvailableLeafDeviceListRequest(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". It can be linked to only one tree
    device.  The list returned includes devices created at the system, service provider,
    and group levels.

    The response is either `SystemGetAvailableLeafDeviceListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemGroupNightForwardingGetRequest(OCIRequest):
    """
    Request to get the Group Night Forwarding system parameters.

    The response is either `SystemGroupNightForwardingGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool):
            nightForwardGroupCallsWithinEnterprise *Optional*
    """

    __slots__: List[str] = [
        "night_forward_group_calls_within_enterprise",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "night_forward_group_calls_within_enterprise",
                "nightForwardGroupCallsWithinEnterprise",
                bool,
            ),
        )


class SystemHPBXAlternateCarrierSelectionAddCarrierRequest(OCIRequest):
    """
    Add a new alternate carrier for CbC and Preselection.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        prefix (str): prefix
        domain (str): domain
        type (str): type
    """

    __slots__: List[str] = [
        "name",
        "prefix",
        "domain",
        "type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("prefix", "prefix", str, is_required=True),
            E("domain", "domain", str, is_required=True),
            E("type", "type", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemHPBXAlternateCarrierSelectionGetCarrierListRequest(OCIRequest):
    """
    Request the list of alternate carriers available for CbC and Preselection.

    The response is either a `SystemHPBXAlternateCarrierSelectionGetCarrierListResponse()`
    or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemHPBXAlternateCarrierSelectionModifyCarrierRequest(OCIRequest):
    """
    Modify an alternate carrier for CbC and Preselection.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        new_name (str): newName *Optional*
        prefix (str): prefix *Optional*
        domain (str): domain *Optional*
        type (str): type *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "prefix",
        "domain",
        "type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("prefix", "prefix", str),
            E("domain", "domain", str),
            E("type", "type", str),
        )


class SystemHPBXMobileTerminationGetRequest(OCIRequest):
    """
    Request to get the hPBX mobile termination related configuration parameters.

    The response is either a `SystemHPBXMobileTerminationGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (str): routingPrefix *Optional*
    """

    __slots__: List[str] = [
        "routing_prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("routing_prefix", "routingPrefix", str),)


class SystemHolidayScheduleDeleteRequest(OCIRequest):
    """
    Delete a system holiday schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        holiday_schedule_name (str): holidayScheduleName
    """

    __slots__: List[str] = [
        "holiday_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("holiday_schedule_name", "holidayScheduleName", str, is_required=True),
        )


class SystemHolidayScheduleGetListRequest(OCIRequest):
    """
    Request a list of all system holiday schedules.

    The response is either a `SystemHolidayScheduleGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemHolidayScheduleGetRequest(OCIRequest):
    """
    Get a system holiday schedule.

    The response is either a `SystemHolidayScheduleGetResponse()` or an `ErrorResponse()`.

    Attributes:
        holiday_schedule_name (str): holidayScheduleName
    """

    __slots__: List[str] = [
        "holiday_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("holiday_schedule_name", "holidayScheduleName", str, is_required=True),
        )


class SystemHomeNetworkAddRequest(OCIRequest):
    """
    Add a Home Network.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        msc_address (str): mscAddress
    """

    __slots__: List[str] = [
        "msc_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("msc_address", "mscAddress", str, is_required=True),)


class SystemHomeNetworkDeleteRequest(OCIRequest):
    """
    Delete a Home Network.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        msc_address (str): mscAddress
    """

    __slots__: List[str] = [
        "msc_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("msc_address", "mscAddress", str, is_required=True),)


class SystemHuntGroupGetRequest(OCIRequest):
    """
    Request the system level data associated with Hunt Group.

    The response is either a `SystemHuntGroupGetResponse()` or an `ErrorResponse()`.
    Replaced by: `SystemHuntGroupGetRequest17()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemHuntGroupGetRequest17(OCIRequest):
    """
    Request the system level data associated with Hunt Group.

    The response is either a `SystemHuntGroupGetResponse()` or an `ErrorResponse()`.
    Replaced by: `SystemHuntGroupGetRequest21()` in AS data mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemHuntGroupGetRequest21(OCIRequest):
    """
    Request the system level data associated with Hunt Group.

    The response is either a `SystemHuntGroupGetResponse21()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemHuntGroupModifyRequest(OCIRequest):
    """
    Modify the system level data associated with Hunt Group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemHuntGroupModifyRequest21()` in AS data mode

    Attributes:
        anonymous_instead_of_private_clid (bool): anonymousInsteadOfPrivateCLID *Optional*
        remove_hunt_group_name_from_clid (bool): removeHuntGroupNameFromCLID *Optional*
        uniform_call_distribution_policy_scope (str): uniformCallDistributionPolicyScope
            *Optional*
    """

    __slots__: List[str] = [
        "anonymous_instead_of_private_clid",
        "remove_hunt_group_name_from_clid",
        "uniform_call_distribution_policy_scope",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "anonymous_instead_of_private_clid",
                "anonymousInsteadOfPrivateCLID",
                bool,
            ),
            E("remove_hunt_group_name_from_clid", "removeHuntGroupNameFromCLID", bool),
            E(
                "uniform_call_distribution_policy_scope",
                "uniformCallDistributionPolicyScope",
                str,
            ),
        )


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 (bool): removeHuntGroupNameFromCLID *Optional*
        uniform_call_distribution_policy_scope (str): uniformCallDistributionPolicyScope
            *Optional*
        allow_agent_device_initiated_forward (bool): allowAgentDeviceInitiatedForward
            *Optional*
    """

    __slots__: List[str] = [
        "remove_hunt_group_name_from_clid",
        "uniform_call_distribution_policy_scope",
        "allow_agent_device_initiated_forward",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("remove_hunt_group_name_from_clid", "removeHuntGroupNameFromCLID", bool),
            E(
                "uniform_call_distribution_policy_scope",
                "uniformCallDistributionPolicyScope",
                str,
            ),
            E(
                "allow_agent_device_initiated_forward",
                "allowAgentDeviceInitiatedForward",
                bool,
            ),
        )


class SystemInCallServiceActivationGetRequest(OCIRequest):
    """
    Request the system's DTMF based in-call service activation trigger attributes.

    The response is either a `SystemInCallServiceActivationGetResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemInCallServiceActivationGetRequest17()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemInCallServiceActivationGetRequest17(OCIRequest):
    """
    Request the system's DTMF based in-call service activation trigger attributes.

    The response is either a `SystemInCallServiceActivationGetResponse17()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemInCallServiceActivationModifyRequest(OCIRequest):
    """
    Modifies the system's DTMF based in-call service activation trigger attributes.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemInCallServiceActivationModifyRequest17()`

    Attributes:
        default_activation_digits (str): defaultActivationDigits *Optional*
    """

    __slots__: List[str] = [
        "default_activation_digits",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("default_activation_digits", "defaultActivationDigits", str),)


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 (str): defaultFlashActivationDigits *Optional*
        default_call_transfer_activation_digits (str): defaultCallTransferActivationDigits
            *Optional*
    """

    __slots__: List[str] = [
        "default_flash_activation_digits",
        "default_call_transfer_activation_digits",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("default_flash_activation_digits", "defaultFlashActivationDigits", str),
            E(
                "default_call_transfer_activation_digits",
                "defaultCallTransferActivationDigits",
                str,
            ),
        )


class SystemIntegratedIMPGetRequest(OCIRequest):
    """
    Get the system Integrated IMP service attributes.

    The response is either `SystemIntegratedIMPGetResponse()` or `ErrorResponse()`.
    Replaced by `SystemIntegratedIMPGetRequest19()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemIntegratedIMPGetRequest19(OCIRequest):
    """
    Get the system Integrated IMP service attributes.

    The response is either `SystemIntegratedIMPGetResponse19()` or `ErrorResponse()`.
    Replaced by: `SystemIntegratedIMPGetRequest21()` in AS data mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemIntegratedIMPGetRequest21(OCIRequest):
    """
    Get the system Integrated IMP service attributes.

    The response is either `SystemIntegratedIMPGetResponse19()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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

    Attributes:
        service_domain (str): serviceDomain *Optional*
        service_port (int): servicePort *Optional*
        add_service_provider_in_imp_user_id (bool): addServiceProviderInIMPUserId
            *Optional*
        bosh_url (str): boshURL *Optional*
        allow_imp_password_retrieval (bool): allowImpPasswordRetrieval *Optional*
    """

    __slots__: List[str] = [
        "service_domain",
        "service_port",
        "add_service_provider_in_imp_user_id",
        "bosh_url",
        "allow_imp_password_retrieval",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_domain", "serviceDomain", str),
            E("service_port", "servicePort", int),
            E(
                "add_service_provider_in_imp_user_id",
                "addServiceProviderInIMPUserId",
                bool,
            ),
            E("bosh_url", "boshURL", str),
            E("allow_imp_password_retrieval", "allowImpPasswordRetrieval", bool),
        )


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]): phoneNumbers
    """

    __slots__: List[str] = [
        "phone_numbers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("phone_numbers", "phoneNumbers", str, is_required=True, is_array=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemInterceptUserGetRequest(OCIRequest):
    """
    Get the system-level intercept user service settings.

    The response is either a `SystemInterceptUserGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): phoneNumber
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "phone_number",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("phone_number", "phoneNumber", str, is_required=True),
            E("description", "description", str),
        )


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 (bool): emergencyAndRepairIntercept *Optional*
    """

    __slots__: List[str] = [
        "emergency_and_repair_intercept",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("emergency_and_repair_intercept", "emergencyAndRepairIntercept", bool),
        )


class SystemInventoryReportGetRequest(OCIRequest):
    """
    Request the system level data associated with Inventory Report.

    The response is either a `SystemInventoryReportGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (str): defaultFromAddress *Optional*
    """

    __slots__: List[str] = [
        "default_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("default_from_address", "defaultFromAddress", str),)


class SystemLanguageAddRequest(OCIRequest):
    """
    Request to add a language to the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemLanguageAddRequest22()`.

    Attributes:
        language (str): language
        locale (str): locale
        encoding (str): encoding
    """

    __slots__: List[str] = [
        "language",
        "locale",
        "encoding",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("language", "language", str, is_required=True),
            E("locale", "locale", str, is_required=True),
            E("encoding", "encoding", str, is_required=True),
        )


class SystemLanguageAddRequest22(OCIRequest):
    """
    Request to add a language to the system.

    The command will fail in Amplify data mode if the locale element is greater than 5
    characters in length.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        language (str): language
        locale (str): locale
        encoding (str): encoding
    """

    __slots__: List[str] = [
        "language",
        "locale",
        "encoding",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("language", "language", str, is_required=True),
            E("locale", "locale", str, is_required=True),
            E("encoding", "encoding", str, is_required=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
    """

    __slots__: List[str] = [
        "language",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("language", "language", str, is_required=True),)


class SystemLanguageGetListRequest(OCIRequest):
    """
    Request the defined languages in the system.

    The response is either a `SystemLanguageGetListResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLanguageModifyRequest(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()`. Replaced by:
    `SystemLanguageModifyRequest22()`.

    Attributes:
        language (str): language
        become_default_language (bool): becomeDefaultLanguage *Optional*
        locale (str): locale *Optional*
        encoding (str): encoding *Optional*
    """

    __slots__: List[str] = [
        "language",
        "become_default_language",
        "locale",
        "encoding",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("language", "language", str, is_required=True),
            E("become_default_language", "becomeDefaultLanguage", bool),
            E("locale", "locale", str),
            E("encoding", "encoding", str),
        )


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 command will fail in Amplify data mode if
    the locale element is greater than 5 characters in length.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        language (str): language
        become_default_language (bool): becomeDefaultLanguage *Optional*
        locale (str): locale *Optional*
        encoding (str): encoding *Optional*
    """

    __slots__: List[str] = [
        "language",
        "become_default_language",
        "locale",
        "encoding",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("language", "language", str, is_required=True),
            E("become_default_language", "becomeDefaultLanguage", bool),
            E("locale", "locale", str),
            E("encoding", "encoding", str),
        )


class SystemLegacyAutomaticCallbackGetLineTypeListRequest(OCIRequest):
    """
    Request the system's legacy automatic callback line type settings.

    The response is either a `SystemLegacyAutomaticCallbackGetTypeLineListResponse()` or
    an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLegacyAutomaticCallbackGetRequest(OCIRequest):
    """
    Request the system's legacy automatic callback attributes.

    The response is either a `SystemLegacyAutomaticCallbackGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): lineType
        match_action (str): matchAction *Optional*
        no_match_action (str): noMatchAction *Optional*
    """

    __slots__: List[str] = [
        "line_type",
        "match_action",
        "no_match_action",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("line_type", "lineType", str, is_required=True),
            E("match_action", "matchAction", str),
            E("no_match_action", "noMatchAction", str),
        )


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 (int): maxMonitorsPerOriginator *Optional*
        max_monitors_per_terminator (int): maxMonitorsPerTerminator *Optional*
        t2_minutes (int): t2Minutes *Optional*
        t4_seconds (int): t4Seconds *Optional*
        t5_seconds (int): t5Seconds *Optional*
        t6_minutes (int): t6Minutes *Optional*
        t7_minutes (int): t7Minutes *Optional*
        t8_seconds (int): t8Seconds *Optional*
        t_ring_seconds (int): tRingSeconds *Optional*
        t10_o_minutes (int): t10OMinutes *Optional*
        t10_t_minutes (int): t10TMinutes *Optional*
    """

    __slots__: List[str] = [
        "max_monitors_per_originator",
        "max_monitors_per_terminator",
        "t2_minutes",
        "t4_seconds",
        "t5_seconds",
        "t6_minutes",
        "t7_minutes",
        "t8_seconds",
        "t_ring_seconds",
        "t10_o_minutes",
        "t10_t_minutes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("max_monitors_per_originator", "maxMonitorsPerOriginator", int),
            E("max_monitors_per_terminator", "maxMonitorsPerTerminator", int),
            E("t2_minutes", "t2Minutes", int),
            E("t4_seconds", "t4Seconds", int),
            E("t5_seconds", "t5Seconds", int),
            E("t6_minutes", "t6Minutes", int),
            E("t7_minutes", "t7Minutes", int),
            E("t8_seconds", "t8Seconds", int),
            E("t_ring_seconds", "tRingSeconds", int),
            E("t10_o_minutes", "t10OMinutes", int),
            E("t10_t_minutes", "t10TMinutes", int),
        )


class SystemLicensingGetRequest(OCIRequest):
    """
    Get all the licensing information.

    The response is either `SystemLicensingGetResponse()` or `ErrorResponse()`.

    Replaced By: `SystemLicensingGetRequest14sp3()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLicensingGetRequest14sp3(OCIRequest):
    """
    Get all the licensing information.

    The response is either `SystemLicensingGetResponse14sp3()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLicensingGetRequest21sp1(OCIRequest):
    """
    Get all the licensing information.

    The response is either `SystemLicensingGetResponse21sp1()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLicensingGetSystemLicenseListRequest(OCIRequest):
    """
    Request to get the list of system licenses in the system.

    The response is either a `SystemLicensingGetSystemLicenseListResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemLicensingGetSystemLicenseListRequest21()` in AS
    data mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLicensingGetSystemLicenseListRequest19sp1(OCIRequest):
    """
    Request to get the list of system licenses in the system.

    The response is either a `SystemLicensingGetSystemLicenseListResponse21()` or an
    `ErrorResponse()`. Replaced by: `SystemLicensingGetSystemLicenseListRequest21sp1()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLicensingGetSystemLicenseListRequest21(OCIRequest):
    """
    Request to get the list of system licenses in the system.

    The response is either a `SystemLicensingGetSystemLicenseListResponse21()` or an
    `ErrorResponse()`. Replaced by: SystemLicensingGetSystemLicenseListRequest21p1.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLicensingGetSystemLicenseListRequest21sp1(OCIRequest):
    """
    Request to get the list of system licenses in the system.

    The response is either a `SystemLicensingGetSystemLicenseListResponse21sp1()` or an
    `ErrorResponse()`. Replaced by: `SystemLicensingGetSystemLicenseListRequest22()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLicensingGetSystemLicenseListRequest22(OCIRequest):
    """
    Request to get the list of system licenses in the system.

    The response is either a `SystemLicensingGetSystemLicenseListResponse22()` or an
    `ErrorResponse()`. Replaced by: `SystemLicensingGetSystemLicenseListRequest22V2()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLicensingGetSystemLicenseListRequest22V2(OCIRequest):
    """
    Request to get the list of system licenses in the system.

    The response is either a `SystemLicensingGetSystemLicenseListResponse22V2()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLicensingReloadRequest(OCIRequest):
    """
    Load a new license file.

    The response is either `SuccessResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLocationBasedCallingRestrictionsGetRequest(OCIRequest):
    """
    Gets system level the Location Based Calling Restrictions attributes.

    The response is either a `SystemLocationBasedCallingRestrictionsGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `SystemLocationBasedCallingRestrictionsGetRequest17sp3()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemLocationBasedCallingRestrictionsGetRequest17sp3(OCIRequest):
    """
    Gets system level the Location Based Calling Restrictions attributes.

    The response is either a `SystemLocationBasedCallingRestrictionsGetResponse17sp3()` or
    an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (str): physicalLocationIndicator *Optional*
        enforce_msc_validation (bool): enforceMscValidation *Optional*
        enable_office_zone_announcement (bool): enableOfficeZoneAnnouncement *Optional*
        enhance_office_zone (bool): enhanceOfficeZone *Optional*
    """

    __slots__: List[str] = [
        "physical_location_indicator",
        "enforce_msc_validation",
        "enable_office_zone_announcement",
        "enhance_office_zone",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("physical_location_indicator", "physicalLocationIndicator", str),
            E("enforce_msc_validation", "enforceMscValidation", bool),
            E("enable_office_zone_announcement", "enableOfficeZoneAnnouncement", bool),
            E("enhance_office_zone", "enhanceOfficeZone", bool),
        )


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMGCPDeviceTypeGetRequest(OCIRequest):
    """
    Request to get a mgcp device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemMGCPDeviceTypeGetResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=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): deviceType
        is_obsolete (bool): isObsolete *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
        )


class SystemMailParametersGetRequest(OCIRequest):
    """
    Request to get the list of Mail system parameters.

    The response is either `SystemMailParametersGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMailParametersGetRequest22(OCIRequest):
    """
    Request to get the list of Mail system parameters.

    The response is either `SystemMailParametersGetResponse22()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMailParametersModifyRequest(OCIRequest):
    """
    Request to modify Mail system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        primary_server_net_address (str): primaryServerNetAddress *Optional*
        secondary_server_net_address (str): secondaryServerNetAddress *Optional*
        default_from_address (str): defaultFromAddress *Optional*
        default_subject (str): defaultSubject *Optional*
        support_dnssrv_for_mail_server_access (bool): supportDNSSRVForMailServerAccess
            *Optional*
        secure_mode (str): secureMode *Optional*
        port (int): port *Optional*
    """

    __slots__: List[str] = [
        "primary_server_net_address",
        "secondary_server_net_address",
        "default_from_address",
        "default_subject",
        "support_dnssrv_for_mail_server_access",
        "secure_mode",
        "port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("primary_server_net_address", "primaryServerNetAddress", str),
            E("secondary_server_net_address", "secondaryServerNetAddress", str),
            E("default_from_address", "defaultFromAddress", str),
            E("default_subject", "defaultSubject", str),
            E(
                "support_dnssrv_for_mail_server_access",
                "supportDNSSRVForMailServerAccess",
                bool,
            ),
            E("secure_mode", "secureMode", str),
            E("port", "port", int),
        )


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMaliciousCallTraceGetUserListRequest(OCIRequest):
    """
    Request the list of users that use the Malicious Call Trace feature.

    The response is either a `SystemMaliciousCallTraceGetUserListResponse()` or an
    `ErrorResponse()`.

    Replaced By: `SystemMaliciousCallTraceGetRequest()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMaliciousCallTraceModifyRequest(OCIRequest):
    """
    Modify a Malicious Call Trace system parameter.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        play_mct_warning_announcement (bool): playMCTWarningAnnouncement *Optional*
    """

    __slots__: List[str] = [
        "play_mct_warning_announcement",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("play_mct_warning_announcement", "playMCTWarningAnnouncement", bool),)


class SystemMediaAddRequest(OCIRequest):
    """
    Request to add a Media to the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        media_name (str): mediaName
        codec_name (str): codecName
        media_type (str): mediaType
        bandwidth_enforcement_type (str): bandwidthEnforcementType
        media_bandwidth (int): mediaBandwidth *Optional*
    """

    __slots__: List[str] = [
        "media_name",
        "codec_name",
        "media_type",
        "bandwidth_enforcement_type",
        "media_bandwidth",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("media_name", "mediaName", str, is_required=True),
            E("codec_name", "codecName", str, is_required=True),
            E("media_type", "mediaType", str, is_required=True),
            E(
                "bandwidth_enforcement_type",
                "bandwidthEnforcementType",
                str,
                is_required=True,
            ),
            E("media_bandwidth", "mediaBandwidth", int),
        )


class SystemMediaAddRequest16(OCIRequest):
    """
    Request to add a Media to the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        media_name (str): mediaName
        codec_name (str): codecName
        media_type (str): mediaType
        bandwidth_enforcement_type (str): bandwidthEnforcementType
        media_bandwidth (int): mediaBandwidth *Optional*
    """

    __slots__: List[str] = [
        "media_name",
        "codec_name",
        "media_type",
        "bandwidth_enforcement_type",
        "media_bandwidth",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("media_name", "mediaName", str, is_required=True),
            E("codec_name", "codecName", str, is_required=True),
            E("media_type", "mediaType", str, is_required=True),
            E(
                "bandwidth_enforcement_type",
                "bandwidthEnforcementType",
                str,
                is_required=True,
            ),
            E("media_bandwidth", "mediaBandwidth", int),
        )


class SystemMediaDeleteRequest(OCIRequest):
    """
    Request to delete a Media from the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        media_name (str): mediaName
    """

    __slots__: List[str] = [
        "media_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("media_name", "mediaName", str, is_required=True),)


class SystemMediaGetListRequest(OCIRequest):
    """
    Request to get a list of media in the system.

    The response is either a `SystemMediaGetListResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMediaGroupAddRequest(OCIRequest):
    """
    Request to add a media group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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): name
        codec_name (str): codecName
        codec_weight (int): codecWeight
    """

    __slots__: List[str] = [
        "name",
        "codec_name",
        "codec_weight",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("codec_name", "codecName", str, is_required=True),
            E("codec_weight", "codecWeight", int, is_required=True),
        )


class SystemMediaGroupCodecDeleteRequest(OCIRequest):
    """
    Request to delete media from a media group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        codec_name (str): codecName
    """

    __slots__: List[str] = [
        "name",
        "codec_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("codec_name", "codecName", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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): name
        codec_name (str): codecName
        codec_weight (int): codecWeight *Optional*
    """

    __slots__: List[str] = [
        "name",
        "codec_name",
        "codec_weight",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("codec_name", "codecName", str, is_required=True),
            E("codec_weight", "codecWeight", int),
        )


class SystemMediaGroupDeleteRequest(OCIRequest):
    """
    Request to delete a media group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemMediaGroupGetListRequest(OCIRequest):
    """
    Request to get the list of media groups.

    The response is either `SystemMediaGroupGetListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMediaGroupModifyRequest(OCIRequest):
    """
    Request to modify a media group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        new_name (str): newName *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
        )


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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemMediaModifyRequest(OCIRequest):
    """
    Request to modify a media.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        media_name (str): mediaName
        codec_name (str): codecName *Optional*
        bandwidth_enforcement_type (str): bandwidthEnforcementType *Optional*
        media_bandwidth (int): mediaBandwidth *Optional*
    """

    __slots__: List[str] = [
        "media_name",
        "codec_name",
        "bandwidth_enforcement_type",
        "media_bandwidth",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("media_name", "mediaName", str, is_required=True),
            E("codec_name", "codecName", str),
            E("bandwidth_enforcement_type", "bandwidthEnforcementType", str),
            E("media_bandwidth", "mediaBandwidth", int),
        )


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): netAddress
        port (int): port *Optional*
        transport_protocol (str): transportProtocol
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "transport_protocol",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("transport_protocol", "transportProtocol", str, is_required=True),
            E("description", "description", str),
        )


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): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): netAddress
        port (int): port *Optional*
        transport_protocol (str): transportProtocol *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "transport_protocol",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("transport_protocol", "transportProtocol", str),
            E("description", "description", str),
        )


class SystemMediaServerParametersGetRequest(OCIRequest):
    """
    Request to get the list of Media Server system parameters.

    The response is either `SystemMediaServerParametersGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMediaServerParametersModifyRequest(OCIRequest):
    """
    Request to modify Media Server system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        media_server_response_timer_milliseconds (int):
            mediaServerResponseTimerMilliseconds *Optional*
        media_server_selection_route_timer_milliseconds (int):
            mediaServerSelectionRouteTimerMilliseconds *Optional*
        use_static_media_server_device (bool): useStaticMediaServerDevice *Optional*
    """

    __slots__: List[str] = [
        "media_server_response_timer_milliseconds",
        "media_server_selection_route_timer_milliseconds",
        "use_static_media_server_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "media_server_response_timer_milliseconds",
                "mediaServerResponseTimerMilliseconds",
                int,
            ),
            E(
                "media_server_selection_route_timer_milliseconds",
                "mediaServerSelectionRouteTimerMilliseconds",
                int,
            ),
            E("use_static_media_server_device", "useStaticMediaServerDevice", bool),
        )


class SystemMediaSetAddRequest(OCIRequest):
    """
    Request to add a Media Set.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        set_name (str): setName
        media_name (List[str]): mediaName
    """

    __slots__: List[str] = [
        "set_name",
        "media_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("set_name", "setName", str, is_required=True),
            E("media_name", "mediaName", str, is_required=True, is_array=True),
        )


class SystemMediaSetDeleteRequest(OCIRequest):
    """
    Request to delete a Media Set.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        set_name (str): setName
    """

    __slots__: List[str] = [
        "set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("set_name", "setName", str, is_required=True),)


class SystemMediaSetGetListRequest(OCIRequest):
    """
    Request to get the list of Media Sets in the system.

    The response is either a `SystemMediaSetGetListResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMediaSetGetRequest(OCIRequest):
    """
    Request to get a Media Set.

    The response is either a `SystemMediaSetGetResponse()` or an `ErrorResponse()`.

    Attributes:
        set_name (str): setName
    """

    __slots__: List[str] = [
        "set_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("set_name", "setName", str, is_required=True),)


class SystemMeetMeConferencingGetRequest(OCIRequest):
    """
    Request the system level data associated with Meet-Me Conferencing functions.

    The response is either a `SystemMeetMeConferencingGetResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemMeetMeConferencingGetRequest17sp3()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMeetMeConferencingGetRequest17sp3(OCIRequest):
    """
    Request the system level data associated with Meet-Me Conferencing functions.

    The response is either a `SystemMeetMeConferencingGetResponse17sp3()` or an
    `ErrorResponse()`. Replaced by: `SystemMeetMeConferencingGetRequest18()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMeetMeConferencingGetRequest18(OCIRequest):
    """
    Request the system level data associated with Meet-Me Conferencing functions.

    The response is either a `SystemMeetMeConferencingGetResponse18()` or an
    `ErrorResponse()`. Replaced by `SystemMeetMeConferencingGetRequest19()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMeetMeConferencingGetRequest19(OCIRequest):
    """
    Request the system level data associated with Meet-Me Conferencing functions.

    The response is either a `SystemMeetMeConferencingGetResponse19()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemMigratedUsersGetListRequest(OCIRequest):
    """
    Get a list of migrated users.

    The response is either `SystemMigratedUsersGetListResponse()` or `ErrorResponse()`.
    Replaced by: `SystemMigratedUsersGetListRequest22()` in AS data mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (int): userListSizeLimit *Optional*
    """

    __slots__: List[str] = [
        "user_list_size_limit",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_list_size_limit", "userListSizeLimit", int),)


class SystemMultimediaPolicyGetRequest(OCIRequest):
    """
    Request the system level data associated with Multimedia Policy.

    The response is either a `SystemMultimediaPolicyGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): restrictNonAudioVideoMediaTypes
            *Optional*
    """

    __slots__: List[str] = [
        "restrict_non_audio_video_media_types",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "restrict_non_audio_video_media_types",
                "restrictNonAudioVideoMediaTypes",
                bool,
            ),
        )


class SystemMusicOnHoldGetRequest(OCIRequest):
    """
    Request the system level data associated with Music On Hold.

    The response is either a `SystemMusicOnHoldGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (int): delayMilliseconds *Optional*
    """

    __slots__: List[str] = [
        "delay_milliseconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("delay_milliseconds", "delayMilliseconds", int),)


class SystemNetworkClassOfServiceDeleteRequest(OCIRequest):
    """
    Delete a Network Class of Service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemNetworkClassOfServiceGetListRequest(OCIRequest):
    """
    Get the list of all Network Classes of Service.

    The response is either a `SystemNetworkClassOfServiceGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNetworkClassOfServiceGetRequest(OCIRequest):
    """
    Get an existing Network Class of Service.

    The response is either a `SystemNetworkClassOfServiceGetResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemNetworkClassOfServiceGetRequest17()`

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemNetworkClassOfServiceGetRequest17(OCIRequest):
    """
    Get an existing Network Class of Service.

    The response is either a `SystemNetworkClassOfServiceGetResponse17()` or an
    `ErrorResponse()`. Replaced by: `SystemNetworkClassOfServiceGetRequest19sp1()` in AS
    data mode

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemNetworkClassOfServiceGetRequest19sp1(OCIRequest):
    """
    Get an existing Network Class of Service.

    The response is either a `SystemNetworkClassOfServiceGetResponse19sp1()` or an
    `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=True),)


class SystemNetworkDeviceMonitorParametersGetRequest(OCIRequest):
    """
    Request to get the list of Network Device Polling system parameters.

    The response is either `SystemNetworkDeviceMonitorParametersGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNetworkDeviceMonitorParametersModifyRequest(OCIRequest):
    """
    Request to modify Network Device Polling system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        polling_interval_minutes (int): pollingIntervalMinutes *Optional*
        failed_polling_interval_minutes (int): failedPollingIntervalMinutes *Optional*
    """

    __slots__: List[str] = [
        "polling_interval_minutes",
        "failed_polling_interval_minutes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("polling_interval_minutes", "pollingIntervalMinutes", int),
            E("failed_polling_interval_minutes", "failedPollingIntervalMinutes", int),
        )


class SystemNetworkProgressionGetRequest(OCIRequest):
    """
    Request the system level data associated with network progression.

    The response is either a `SystemNetworkProgressionGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNetworkProgressionModifyRequest(OCIRequest):
    """
    Modify the system level data associated with network progression.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        is_active (bool): isActive *Optional*
        wait_period_seconds (int): waitPeriodSeconds *Optional*
    """

    __slots__: List[str] = [
        "is_active",
        "wait_period_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("is_active", "isActive", bool),
            E("wait_period_seconds", "waitPeriodSeconds", int),
        )


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): netAddress
        port (int): port *Optional*
        transport_protocol (str): transportProtocol
        poll (bool): poll
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "transport_protocol",
        "poll",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("transport_protocol", "transportProtocol", str, is_required=True),
            E("poll", "poll", bool, is_required=True),
            E("description", "description", str),
        )


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): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): netAddress
        port (int): port *Optional*
        transport_protocol (str): transportProtocol *Optional*
        poll (bool): poll *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "transport_protocol",
        "poll",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("transport_protocol", "transportProtocol", str),
            E("poll", "poll", bool),
            E("description", "description", str),
        )


class SystemNetworkServerSyncParametersGetRequest(OCIRequest):
    """
    Request to get the list of Network Server Sync system parameters.

    The response is either `SystemNetworkServerSyncParametersGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNetworkServerSyncParametersGetRequest14sp2(OCIRequest):
    """
    Request to get the list of Network Server Sync system parameters.

    The response is either `SystemNetworkServerSyncParametersGetResponse14sp2()` or
    `ErrorResponse()`.

    Replaced By: `SystemNetworkServerSyncParametersGetRequest16()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNetworkServerSyncParametersGetRequest16(OCIRequest):
    """
    Request to get the list of Network Server Sync system parameters.

    The response is either `SystemNetworkServerSyncParametersGetResponse16()` or
    `ErrorResponse()`.

    Replaced By: `SystemNetworkServerSyncParametersGetRequest17sp4()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNetworkServerSyncParametersGetRequest17sp4(OCIRequest):
    """
    Request to get the list of Network Server Sync system parameters.

    The response is either `SystemNetworkServerSyncParametersGetResponse17sp4()` or
    `ErrorResponse()`. Replaced by: `SystemNetworkServerSyncParametersGetRequest24()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNetworkServerSyncParametersGetRequest22(OCIRequest):
    """
    Request to get the list of Network Server Sync system parameters.

    The response is either `SystemNetworkServerSyncParametersGetResponse22()` or
    `ErrorResponse()`. Replaced by: `SystemNetworkServerSyncParametersGetRequest24V2()` in
    AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNetworkServerSyncParametersGetRequest24(OCIRequest):
    """
    Request to get the list of Network Server Sync system parameters.

    The response is either `SystemNetworkServerSyncParametersGetResponse24()` or
    `ErrorResponse()`. Replaced by: `SystemNetworkServerSyncParametersGetRequest24V2()` in
    AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNetworkServerSyncParametersGetRequest24V2(OCIRequest):
    """
    Request to get the list of Network Server Sync system parameters.

    The response is either `SystemNetworkServerSyncParametersGetResponse24V2()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): enableSync *Optional*
        sync_line_ports (bool): syncLinePorts *Optional*
        sync_device_management_info (bool): syncDeviceManagementInfo *Optional*
        sync_trunk_groups (bool): syncTrunkGroups *Optional*
        sync_connection_timeout_seconds (int): syncConnectionTimeoutSeconds *Optional*
        sync_enterprise_numbers (bool): syncEnterpriseNumbers *Optional*
    """

    __slots__: List[str] = [
        "enable_sync",
        "sync_line_ports",
        "sync_device_management_info",
        "sync_trunk_groups",
        "sync_connection_timeout_seconds",
        "sync_enterprise_numbers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enable_sync", "enableSync", bool),
            E("sync_line_ports", "syncLinePorts", bool),
            E("sync_device_management_info", "syncDeviceManagementInfo", bool),
            E("sync_trunk_groups", "syncTrunkGroups", bool),
            E("sync_connection_timeout_seconds", "syncConnectionTimeoutSeconds", int),
            E("sync_enterprise_numbers", "syncEnterpriseNumbers", bool),
        )


class SystemNetworkSynchingServerAddRequest(OCIRequest):
    """
    Request to add a Network Server to the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by
    `SystemNetworkSynchingServerAddRequest22V2()`

    Attributes:
        net_address (str): netAddress
        port (int): port *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("description", "description", str),
        )


class SystemNetworkSynchingServerAddRequest22(OCIRequest):
    """
    Request to add a Network Server to the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by
    `SystemNetworkSynchingServerAddRequest22V2()`

    Attributes:
        net_address (str): netAddress
        port (int): port
        description (str): description *Optional*
        order (int): order
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "description",
        "order",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int, is_required=True),
            E("description", "description", str),
            E("order", "order", int, is_required=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): netAddress
        port (int): port
        description (str): description *Optional*
        order (int): order *Optional*
        secure (bool): secure
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "description",
        "order",
        "secure",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int, is_required=True),
            E("description", "description", str),
            E("order", "order", int),
            E("secure", "secure", bool, is_required=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): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNetworkSynchingServerModifyRequest(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 Replaced by `SystemNetworkSynchingServerModifyRequest22()`

    Attributes:
        net_address (str): netAddress
        port (int): port *Optional*
        description (str): description *Optional*
        become_preferred (bool): becomePreferred *Optional*
        order (int): order *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "description",
        "become_preferred",
        "order",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("description", "description", str),
            E("become_preferred", "becomePreferred", bool),
            E("order", "order", int),
        )


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): netAddress
        port (int): port *Optional*
        description (str): description *Optional*
        become_preferred (bool): becomePreferred *Optional*
        order (int): order *Optional*
        secure (bool): secure *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "description",
        "become_preferred",
        "order",
        "secure",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("description", "description", str),
            E("become_preferred", "becomePreferred", bool),
            E("order", "order", int),
            E("secure", "secure", bool),
        )


class SystemNumberActivationGetRequest(OCIRequest):
    """
    Request to get the Number Activation state.

    The response is either `SystemNumberActivationGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNumberActivationGetRequest18sp1(OCIRequest):
    """
    Request to get the Number Activation state.

    The response is either `SystemNumberActivationGetResponse18sp1()` or
    `ErrorResponse()`. Replaced by: `SystemNumberActivationGetRequest21()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNumberActivationGetRequest21(OCIRequest):
    """
    Request to get the number activation state and enterprise trunk number range
    activation status.

    The response is either `SystemNumberActivationGetResponse21()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNumberActivationModifyRequest(OCIRequest):
    """
    Request to modify system number activation setting.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        use_number_activation (bool): useNumberActivation *Optional*
    """

    __slots__: List[str] = [
        "use_number_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("use_number_activation", "useNumberActivation", bool),)


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 (str): numberActivationMode *Optional*
        enable_enterprise_trunk_number_range_activation (bool):
            enableEnterpriseTrunkNumberRangeActivation *Optional*
    """

    __slots__: List[str] = [
        "number_activation_mode",
        "enable_enterprise_trunk_number_range_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("number_activation_mode", "numberActivationMode", str),
            E(
                "enable_enterprise_trunk_number_range_activation",
                "enableEnterpriseTrunkNumberRangeActivation",
                bool,
            ),
        )


class SystemNumberFormattingParametersGetRequest(OCIRequest):
    """
    Request to get the system number formatting parameters.

    The response is either `SystemNumberFormattingParametersGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNumberFormattingParametersModifyRequest(OCIRequest):
    """
    Request to modify the system number formatting parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        apply_formatting_to_e164_numbers (bool): applyFormattingToE164Numbers *Optional*
    """

    __slots__: List[str] = [
        "apply_formatting_to_e164_numbers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("apply_formatting_to_e164_numbers", "applyFormattingToE164Numbers", bool),
        )


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): digitPattern
        status (str): status
    """

    __slots__: List[str] = [
        "digit_pattern",
        "status",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("digit_pattern", "digitPattern", str, is_required=True),
            E("status", "status", str, is_required=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]): digitPattern
    """

    __slots__: List[str] = [
        "digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("digit_pattern", "digitPattern", str, is_required=True, is_array=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): digitPattern
    """

    __slots__: List[str] = [
        "digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("digit_pattern", "digitPattern", str, is_required=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): digitPattern
        new_digit_pattern (str): newDigitPattern *Optional*
        status (str): status *Optional*
    """

    __slots__: List[str] = [
        "digit_pattern",
        "new_digit_pattern",
        "status",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("digit_pattern", "digitPattern", str, is_required=True),
            E("new_digit_pattern", "newDigitPattern", str),
            E("status", "status", str),
        )


class SystemNumberPortabilityQueryGetRequest(OCIRequest):
    """
    Get system Number Portability Query Parameters.

    The response is either `SystemNumberPortabilityQueryGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool):
            continueCallAsDialedOnTimeoutOrError *Optional*
        number_portability_name_lookup_timeout_milliseconds (int):
            numberPortabilityNameLookupTimeoutMilliseconds *Optional*
    """

    __slots__: List[str] = [
        "continue_call_as_dialed_on_timeout_or_error",
        "number_portability_name_lookup_timeout_milliseconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "continue_call_as_dialed_on_timeout_or_error",
                "continueCallAsDialedOnTimeoutOrError",
                bool,
            ),
            E(
                "number_portability_name_lookup_timeout_milliseconds",
                "numberPortabilityNameLookupTimeoutMilliseconds",
                int,
            ),
        )


class SystemNumberPortabilityQueryStatusAddRequest(OCIRequest):
    """
    Add a system number portability status information.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        status (str): status
        treatment_file_name (str): treatmentFileName *Optional*
    """

    __slots__: List[str] = [
        "status",
        "treatment_file_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("status", "status", str, is_required=True),
            E("treatment_file_name", "treatmentFileName", str),
        )


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
    """

    __slots__: List[str] = [
        "status",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("status", "status", str, is_required=True, is_array=True),)


class SystemNumberPortabilityQueryStatusGetListRequest(OCIRequest):
    """
    Get a list system Number Portability Query Statuses.

    The response is either `SystemNumberPortabilityQueryStatusGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemNumberPortabilityQueryStatusGetRequest(OCIRequest):
    """
    Get information for a system Number Portability Query Status.

    The response is either `SystemNumberPortabilityQueryStatusGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        status (str): status
    """

    __slots__: List[str] = [
        "status",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("status", "status", str, is_required=True),)


class SystemNumberPortabilityQueryStatusModifyRequest(OCIRequest):
    """
    Modify the system number portability status information.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        status_name (str): statusName
        new_status_name (str): newStatusName *Optional*
        treatment_file_name (str): treatmentFileName *Optional*
    """

    __slots__: List[str] = [
        "status_name",
        "new_status_name",
        "treatment_file_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("status_name", "statusName", str, is_required=True),
            E("new_status_name", "newStatusName", str),
            E("treatment_file_name", "treatmentFileName", str),
        )


class SystemOCIAddACLEntryRequest(OCIRequest):
    """
    Add an entry to the OCI access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


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): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


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): applicationId
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "application_id",
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("application_id", "applicationId", str, is_required=True),
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


class SystemOCICallControlApplicationAddRequest(OCIRequest):
    """
    Add an application to the OCI call control application list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        application_id (str): applicationId
        enable_system_wide (bool): enableSystemWide
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "application_id",
        "enable_system_wide",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("application_id", "applicationId", str, is_required=True),
            E("enable_system_wide", "enableSystemWide", bool, is_required=True),
            E("description", "description", str),
        )


class SystemOCICallControlApplicationAddRequest14sp9(OCIRequest):
    """
    Add an application to the OCI call control application list.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemOCICallControlApplicationAddRequest17()`

    Attributes:
        application_id (str): applicationId
        enable_system_wide (bool): enableSystemWide
        notification_timeout_seconds (int): notificationTimeoutSeconds
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "application_id",
        "enable_system_wide",
        "notification_timeout_seconds",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("application_id", "applicationId", str, is_required=True),
            E("enable_system_wide", "enableSystemWide", bool, is_required=True),
            E(
                "notification_timeout_seconds",
                "notificationTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("description", "description", str),
        )


class SystemOCICallControlApplicationAddRequest17(OCIRequest):
    """
    Add an application to the OCI call control application list.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemOCICallControlApplicationAddRequest22()`

    Attributes:
        application_id (str): applicationId
        enable_system_wide (bool): enableSystemWide
        notification_timeout_seconds (int): notificationTimeoutSeconds
        description (str): description *Optional*
        max_event_channels_per_set (int): maxEventChannelsPerSet
    """

    __slots__: List[str] = [
        "application_id",
        "enable_system_wide",
        "notification_timeout_seconds",
        "description",
        "max_event_channels_per_set",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("application_id", "applicationId", str, is_required=True),
            E("enable_system_wide", "enableSystemWide", bool, is_required=True),
            E(
                "notification_timeout_seconds",
                "notificationTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("description", "description", str),
            E(
                "max_event_channels_per_set",
                "maxEventChannelsPerSet",
                int,
                is_required=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): applicationId
        enable_system_wide (bool): enableSystemWide
        notification_timeout_seconds (int): notificationTimeoutSeconds
        description (str): description *Optional*
        max_event_channels_per_set (int): maxEventChannelsPerSet
        unresponsive_channel_set_grace_period_seconds (int):
            unresponsiveChannelSetGracePeriodSeconds
    """

    __slots__: List[str] = [
        "application_id",
        "enable_system_wide",
        "notification_timeout_seconds",
        "description",
        "max_event_channels_per_set",
        "unresponsive_channel_set_grace_period_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("application_id", "applicationId", str, is_required=True),
            E("enable_system_wide", "enableSystemWide", bool, is_required=True),
            E(
                "notification_timeout_seconds",
                "notificationTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("description", "description", str),
            E(
                "max_event_channels_per_set",
                "maxEventChannelsPerSet",
                int,
                is_required=True,
            ),
            E(
                "unresponsive_channel_set_grace_period_seconds",
                "unresponsiveChannelSetGracePeriodSeconds",
                int,
                is_required=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): applicationId
        net_address (str): netAddress
    """

    __slots__: List[str] = [
        "application_id",
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("application_id", "applicationId", str, is_required=True),
            E("net_address", "netAddress", str, is_required=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): applicationId
    """

    __slots__: List[str] = [
        "application_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("application_id", "applicationId", str, is_required=True),)


class SystemOCICallControlApplicationGetACLListRequest(OCIRequest):
    """
    Get the OCI call control access control list.

    The response is either `SystemOCICallControlApplicationGetACLListResponse()` or
    `ErrorResponse()`.

    Attributes:
        application_id (str): applicationId
    """

    __slots__: List[str] = [
        "application_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("application_id", "applicationId", str, is_required=True),)


class SystemOCICallControlApplicationGetListRequest(OCIRequest):
    """
    Get the OCI call control application list.

    The response is either `SystemOCICallControlApplicationGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemOCICallControlApplicationModifyACLEntryRequest(OCIRequest):
    """
    Modify an entry from the call control access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        application_id (str): applicationId
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "application_id",
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("application_id", "applicationId", str, is_required=True),
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


class SystemOCICallControlApplicationModifyRequest(OCIRequest):
    """
    Modify an application from the OCI call control application list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        application_id (str): applicationId
        enable_system_wide (bool): enableSystemWide *Optional*
        notification_timeout_seconds (int): notificationTimeoutSeconds *Optional*
        description (str): description *Optional*
        max_event_channels_per_set (int): maxEventChannelsPerSet *Optional*
        unresponsive_channel_set_grace_period_seconds (int):
            unresponsiveChannelSetGracePeriodSeconds *Optional*
    """

    __slots__: List[str] = [
        "application_id",
        "enable_system_wide",
        "notification_timeout_seconds",
        "description",
        "max_event_channels_per_set",
        "unresponsive_channel_set_grace_period_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("application_id", "applicationId", str, is_required=True),
            E("enable_system_wide", "enableSystemWide", bool),
            E("notification_timeout_seconds", "notificationTimeoutSeconds", int),
            E("description", "description", str),
            E("max_event_channels_per_set", "maxEventChannelsPerSet", int),
            E(
                "unresponsive_channel_set_grace_period_seconds",
                "unresponsiveChannelSetGracePeriodSeconds",
                int,
            ),
        )


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): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=True),)


class SystemOCICallControlGetACLListRequest(OCIRequest):
    """
    Get the OCI call control access control list.

    The response is either `SystemOCICallControlGetACLListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemOCICallControlModifyACLEntryRequest(OCIRequest):
    """
    Modify an entry from the call control access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


class SystemOCIDeleteACLEntryRequest(OCIRequest):
    """
    Delete an entry from the OCI access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=True),)


class SystemOCIGetACLListRequest(OCIRequest):
    """
    Get the OCI access control list.

    The response is either `SystemOCIGetACLListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemOCIModifyACLEntryRequest(OCIRequest):
    """
    Modify an entry in the OCI access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


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): netAddress
        description (str): description *Optional*
        restrict_messages (bool): restrictMessages
    """

    __slots__: List[str] = [
        "net_address",
        "description",
        "restrict_messages",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
            E("restrict_messages", "restrictMessages", bool, is_required=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): netAddress
        message_name_starts_with (List[str]): messageNameStartsWith
    """

    __slots__: List[str] = [
        "net_address",
        "message_name_starts_with",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E(
                "message_name_starts_with",
                "messageNameStartsWith",
                str,
                is_required=True,
                is_array=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): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=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): netAddress
        delete_all_message_names (bool): deleteAllMessageNames *Optional*
        message_name_starts_with (List[str]): messageNameStartsWith *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "delete_all_message_names",
        "message_name_starts_with",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("delete_all_message_names", "deleteAllMessageNames", bool),
            E("message_name_starts_with", "messageNameStartsWith", str, is_array=True),
        )


class SystemOCIReportingGetACLListRequest(OCIRequest):
    """
    Get the OCI Reporting Access Control List.

    The response is either a `SystemOCIReportingACLListGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=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): netAddress
        description (str): description *Optional*
        restrict_messages (bool): restrictMessages *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
        "restrict_messages",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
            E("restrict_messages", "restrictMessages", bool),
        )


class SystemOCIReportingParametersGetRequest(OCIRequest):
    """
    Request to get the list of OCIReporting system parameters.

    The response is either `SystemOCIReportingParametersGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemOCIReportingParametersGetRequest14sp1(OCIRequest):
    """
    Request to get the list of OCIReporting system parameters.

    The response is either `SystemOCIReportingParametersGetResponse14sp1()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemOCIReportingParametersGetRequest22(OCIRequest):
    """
    Request to get the list of OCIReporting system parameters.

    The response is either `SystemOCIReportingParametersGetResponse22()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemOCIReportingParametersModifyRequest(OCIRequest):
    """
    Request to modify OCI Reporting system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        server_port (int): serverPort *Optional*
        enable_connection_ping (bool): enableConnectionPing *Optional*
        connection_ping_interval_seconds (int): connectionPingIntervalSeconds *Optional*
        alter_passwords (bool): alterPasswords *Optional*
        enable_public_identity_reporting (bool): enablePublicIdentityReporting *Optional*
        secure (bool): secure *Optional*
    """

    __slots__: List[str] = [
        "server_port",
        "enable_connection_ping",
        "connection_ping_interval_seconds",
        "alter_passwords",
        "enable_public_identity_reporting",
        "secure",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("server_port", "serverPort", int),
            E("enable_connection_ping", "enableConnectionPing", bool),
            E("connection_ping_interval_seconds", "connectionPingIntervalSeconds", int),
            E("alter_passwords", "alterPasswords", bool),
            E(
                "enable_public_identity_reporting",
                "enablePublicIdentityReporting",
                bool,
            ),
            E("secure", "secure", bool),
        )


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): officeZoneName
        description (str): description *Optional*
        zone_name (List[str]): zoneName
        primary_zone_name (str): primaryZoneName
    """

    __slots__: List[str] = [
        "office_zone_name",
        "description",
        "zone_name",
        "primary_zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("office_zone_name", "officeZoneName", str, is_required=True),
            E("description", "description", str),
            E("zone_name", "zoneName", str, is_required=True, is_array=True),
            E("primary_zone_name", "primaryZoneName", str, is_required=True),
        )


class SystemOfficeZoneDeleteRequest(OCIRequest):
    """
    Delete an Office Zone.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        office_zone_name (str): officeZoneName
    """

    __slots__: List[str] = [
        "office_zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("office_zone_name", "officeZoneName", str, is_required=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): officeZoneName
    """

    __slots__: List[str] = [
        "office_zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("office_zone_name", "officeZoneName", str, is_required=True),)


class SystemOfficeZoneGetListRequest(OCIRequest):
    """
    Get the list of all Office Zones.

    The response is either a `SystemOfficeZoneGetListResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemOfficeZoneGetRequest(OCIRequest):
    """
    Get an existing Office Zone.

    The response is either a `SystemOfficeZoneGetResponse()` or an `ErrorResponse()`.

    Attributes:
        office_zone_name (str): officeZoneName
    """

    __slots__: List[str] = [
        "office_zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("office_zone_name", "officeZoneName", str, is_required=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): zoneName
    """

    __slots__: List[str] = [
        "zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("zone_name", "zoneName", str, is_required=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.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (int): evictionTimeoutMinutes *Optional*
        refresh_timeout_minutes (int): refreshTimeoutMinutes *Optional*
        audit_interval_minutes (int): auditIntervalMinutes *Optional*
        maximum_cache_size (int): maximumCacheSize *Optional*
        dns_type_default_value (str): dnsTypeDefaultValue *Optional*
        use_dns_srv_default_value (str): useDnsSrvDefaultValue *Optional*
        srv_prefix_default_value (str): srvPrefixDefaultValue *Optional*
        outbound_proxy_default_value (str): outboundProxyDefaultValue *Optional*
        transport_type_default_value (str): transportTypeDefaultValue *Optional*
        secure_rtp_default_value (str): secureRtpDefaultValue *Optional*
    """

    __slots__: List[str] = [
        "eviction_timeout_minutes",
        "refresh_timeout_minutes",
        "audit_interval_minutes",
        "maximum_cache_size",
        "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",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("eviction_timeout_minutes", "evictionTimeoutMinutes", int),
            E("refresh_timeout_minutes", "refreshTimeoutMinutes", int),
            E("audit_interval_minutes", "auditIntervalMinutes", int),
            E("maximum_cache_size", "maximumCacheSize", int),
            E("dns_type_default_value", "dnsTypeDefaultValue", str),
            E("use_dns_srv_default_value", "useDnsSrvDefaultValue", str),
            E("srv_prefix_default_value", "srvPrefixDefaultValue", str),
            E("outbound_proxy_default_value", "outboundProxyDefaultValue", str),
            E("transport_type_default_value", "transportTypeDefaultValue", str),
            E("secure_rtp_default_value", "secureRtpDefaultValue", str),
        )


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 (str): resellerId *Optional*
        service_provider_id (str): serviceProviderId *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str),
            E("service_provider_id", "serviceProviderId", str),
        )


class SystemOutgoingCallingPlanCallTypeAddMappingRequest(OCIRequest):
    """
    Add a system outgoing calling plan call type mapping.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        country_code (str): countryCode
        digit_map (str): digitMap
        call_type (str): callType
    """

    __slots__: List[str] = [
        "country_code",
        "digit_map",
        "call_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("country_code", "countryCode", str, is_required=True),
            E("digit_map", "digitMap", str, is_required=True),
            E("call_type", "callType", str, is_required=True),
        )


class SystemOutgoingCallingPlanCallTypeDeleteMappingRequest(OCIRequest):
    """
    Delete a system outgoing calling plan call type mapping.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        country_code (str): countryCode
        digit_map (str): digitMap
    """

    __slots__: List[str] = [
        "country_code",
        "digit_map",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("country_code", "countryCode", str, is_required=True),
            E("digit_map", "digitMap", str, is_required=True),
        )


class SystemOutgoingCallingPlanCallTypeGetListRequest(OCIRequest):
    """
    Request to get the list of call types of outgoing calling plan Response is
    `SystemOutgoingCallingPlanCallTypeGetListRequest()` or `ErrorResponse()`.

    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemOutgoingCallingPlanCallTypeGetMappingListRequest(OCIRequest):
    """
    Get a list of system outgoing calling plan call type mappings.

    The response is either `SystemOutgoingCallingPlanCallTypeGetMappingListResponse()` or
    `ErrorResponse()`.

    Attributes:
        country_code (str): countryCode *Optional*
    """

    __slots__: List[str] = [
        "country_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("country_code", "countryCode", str),)


class SystemOutgoingCallingPlanGetRequest(OCIRequest):
    """
    Request the system level data associated with Outgoing Calling Plan.

    The response is either a `SystemOutgoingCallingPlanGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemOutgoingCallingPlanGetRequest17sp3(OCIRequest):
    """
    Request the system level data associated with Outgoing Calling Plan.

    The response is either a `SystemOutgoingCallingPlanGetResponse17sp3()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): directTransferScreening *Optional*
        enable_enhanced_toll_call_typing (bool): enableEnhancedTollCallTyping *Optional*
    """

    __slots__: List[str] = [
        "direct_transfer_screening",
        "enable_enhanced_toll_call_typing",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("direct_transfer_screening", "directTransferScreening", bool),
            E("enable_enhanced_toll_call_typing", "enableEnhancedTollCallTyping", bool),
        )


class SystemPasswordRulesGetRequest13mp2(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 `SystemPasswordRulesGetResponse13mp2()` or `ErrorResponse()`.

    Replaced By : `SystemPasswordRulesGetRequest16()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPasswordRulesGetRequest16(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 `SystemPasswordRulesGetResponse16()` or `ErrorResponse()`.
    Replaced by: `SystemPasswordRulesGetRequest22()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPasswordRulesGetRequest22(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 `SystemPasswordRulesGetResponse22()` or `ErrorResponse()`.
    Replaced by: `SystemPasswordRulesGetRequest23()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPasswordRulesGetRequest23(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 `SystemPasswordRulesGetResponse23()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPasswordRulesModifyRequest(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 response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `SystemPasswordRulesModifyRequest14sp3()`

    Attributes:
        rules_apply_to (str): rulesApplyTo *Optional*
        allow_web_add_external_authentication_users (bool):
            allowWebAddExternalAuthenticationUsers *Optional*
        disallow_user_id (bool): disallowUserId *Optional*
        disallow_old_password (bool): disallowOldPassword *Optional*
        disallow_reversed_old_password (bool): disallowReversedOldPassword *Optional*
        restrict_min_digits (bool): restrictMinDigits *Optional*
        min_digits (int): minDigits *Optional*
        restrict_min_upper_case_letters (bool): restrictMinUpperCaseLetters *Optional*
        min_upper_case_letters (int): minUpperCaseLetters *Optional*
        restrict_min_lower_case_letters (bool): restrictMinLowerCaseLetters *Optional*
        min_lower_case_letters (int): minLowerCaseLetters *Optional*
        restrict_min_non_alphanumeric_characters (bool):
            restrictMinNonAlphanumericCharacters *Optional*
        min_non_alphanumeric_characters (int): minNonAlphanumericCharacters *Optional*
        min_length (int): minLength *Optional*
        max_failed_login_attempts (int): maxFailedLoginAttempts *Optional*
        password_expires_days (int): passwordExpiresDays *Optional*
        send_login_disabled_notify_email (bool): sendLoginDisabledNotifyEmail *Optional*
        login_disabled_notify_email_address (str): loginDisabledNotifyEmailAddress
            *Optional*
        disallow_rules_modification (bool): disallowRulesModification *Optional*
    """

    __slots__: List[str] = [
        "rules_apply_to",
        "allow_web_add_external_authentication_users",
        "disallow_user_id",
        "disallow_old_password",
        "disallow_reversed_old_password",
        "restrict_min_digits",
        "min_digits",
        "restrict_min_upper_case_letters",
        "min_upper_case_letters",
        "restrict_min_lower_case_letters",
        "min_lower_case_letters",
        "restrict_min_non_alphanumeric_characters",
        "min_non_alphanumeric_characters",
        "min_length",
        "max_failed_login_attempts",
        "password_expires_days",
        "send_login_disabled_notify_email",
        "login_disabled_notify_email_address",
        "disallow_rules_modification",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("rules_apply_to", "rulesApplyTo", str),
            E(
                "allow_web_add_external_authentication_users",
                "allowWebAddExternalAuthenticationUsers",
                bool,
            ),
            E("disallow_user_id", "disallowUserId", bool),
            E("disallow_old_password", "disallowOldPassword", bool),
            E("disallow_reversed_old_password", "disallowReversedOldPassword", bool),
            E("restrict_min_digits", "restrictMinDigits", bool),
            E("min_digits", "minDigits", int),
            E("restrict_min_upper_case_letters", "restrictMinUpperCaseLetters", bool),
            E("min_upper_case_letters", "minUpperCaseLetters", int),
            E("restrict_min_lower_case_letters", "restrictMinLowerCaseLetters", bool),
            E("min_lower_case_letters", "minLowerCaseLetters", int),
            E(
                "restrict_min_non_alphanumeric_characters",
                "restrictMinNonAlphanumericCharacters",
                bool,
            ),
            E("min_non_alphanumeric_characters", "minNonAlphanumericCharacters", int),
            E("min_length", "minLength", int),
            E("max_failed_login_attempts", "maxFailedLoginAttempts", int),
            E("password_expires_days", "passwordExpiresDays", int),
            E("send_login_disabled_notify_email", "sendLoginDisabledNotifyEmail", bool),
            E(
                "login_disabled_notify_email_address",
                "loginDisabledNotifyEmailAddress",
                str,
            ),
            E("disallow_rules_modification", "disallowRulesModification", bool),
        )


class SystemPasswordRulesModifyRequest14sp3(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

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        rules_apply_to (str): rulesApplyTo *Optional*
        allow_web_add_external_authentication_users (bool):
            allowWebAddExternalAuthenticationUsers *Optional*
        disallow_user_id (bool): disallowUserId *Optional*
        disallow_old_password (bool): disallowOldPassword *Optional*
        disallow_reversed_old_password (bool): disallowReversedOldPassword *Optional*
        restrict_min_digits (bool): restrictMinDigits *Optional*
        min_digits (int): minDigits *Optional*
        restrict_min_upper_case_letters (bool): restrictMinUpperCaseLetters *Optional*
        min_upper_case_letters (int): minUpperCaseLetters *Optional*
        restrict_min_lower_case_letters (bool): restrictMinLowerCaseLetters *Optional*
        min_lower_case_letters (int): minLowerCaseLetters *Optional*
        restrict_min_non_alphanumeric_characters (bool):
            restrictMinNonAlphanumericCharacters *Optional*
        min_non_alphanumeric_characters (int): minNonAlphanumericCharacters *Optional*
        min_length (int): minLength *Optional*
        max_failed_login_attempts (int): maxFailedLoginAttempts *Optional*
        password_expires_days (int): passwordExpiresDays *Optional*
        send_login_disabled_notify_email (bool): sendLoginDisabledNotifyEmail *Optional*
        login_disabled_notify_email_address (str): loginDisabledNotifyEmailAddress
            *Optional*
        disallow_previous_passwords (bool): disallowPreviousPasswords *Optional*
        number_of_previous_passwords (int): numberOfPreviousPasswords *Optional*
        force_password_change_after_reset (bool): forcePasswordChangeAfterReset *Optional*
        enforce_external_auth_for_route_point (bool): enforceExternalAuthForRoutePoint
            *Optional*
    """

    __slots__: List[str] = [
        "rules_apply_to",
        "allow_web_add_external_authentication_users",
        "disallow_user_id",
        "disallow_old_password",
        "disallow_reversed_old_password",
        "restrict_min_digits",
        "min_digits",
        "restrict_min_upper_case_letters",
        "min_upper_case_letters",
        "restrict_min_lower_case_letters",
        "min_lower_case_letters",
        "restrict_min_non_alphanumeric_characters",
        "min_non_alphanumeric_characters",
        "min_length",
        "max_failed_login_attempts",
        "password_expires_days",
        "send_login_disabled_notify_email",
        "login_disabled_notify_email_address",
        "disallow_previous_passwords",
        "number_of_previous_passwords",
        "force_password_change_after_reset",
        "enforce_external_auth_for_route_point",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("rules_apply_to", "rulesApplyTo", str),
            E(
                "allow_web_add_external_authentication_users",
                "allowWebAddExternalAuthenticationUsers",
                bool,
            ),
            E("disallow_user_id", "disallowUserId", bool),
            E("disallow_old_password", "disallowOldPassword", bool),
            E("disallow_reversed_old_password", "disallowReversedOldPassword", bool),
            E("restrict_min_digits", "restrictMinDigits", bool),
            E("min_digits", "minDigits", int),
            E("restrict_min_upper_case_letters", "restrictMinUpperCaseLetters", bool),
            E("min_upper_case_letters", "minUpperCaseLetters", int),
            E("restrict_min_lower_case_letters", "restrictMinLowerCaseLetters", bool),
            E("min_lower_case_letters", "minLowerCaseLetters", int),
            E(
                "restrict_min_non_alphanumeric_characters",
                "restrictMinNonAlphanumericCharacters",
                bool,
            ),
            E("min_non_alphanumeric_characters", "minNonAlphanumericCharacters", int),
            E("min_length", "minLength", int),
            E("max_failed_login_attempts", "maxFailedLoginAttempts", int),
            E("password_expires_days", "passwordExpiresDays", int),
            E("send_login_disabled_notify_email", "sendLoginDisabledNotifyEmail", bool),
            E(
                "login_disabled_notify_email_address",
                "loginDisabledNotifyEmailAddress",
                str,
            ),
            E("disallow_previous_passwords", "disallowPreviousPasswords", bool),
            E("number_of_previous_passwords", "numberOfPreviousPasswords", int),
            E(
                "force_password_change_after_reset",
                "forcePasswordChangeAfterReset",
                bool,
            ),
            E(
                "enforce_external_auth_for_route_point",
                "enforceExternalAuthForRoutePoint",
                bool,
            ),
        )


class SystemPasswordSecurityParametersGetRequest(OCIRequest):
    """
    Get the password security parameters for the system.

    The response is either a `SystemPasswordSecurityParametersGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPasswordSecurityParametersModifyRequest(OCIRequest):
    """
    Modify the password security settings for the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        use_existing_hashing (bool): useExistingHashing *Optional*
        enforce_password_change_on_expiry (bool): enforcePasswordChangeOnExpiry *Optional*
    """

    __slots__: List[str] = [
        "use_existing_hashing",
        "enforce_password_change_on_expiry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("use_existing_hashing", "useExistingHashing", bool),
            E(
                "enforce_password_change_on_expiry",
                "enforcePasswordChangeOnExpiry",
                bool,
            ),
        )


class SystemPerformanceMeasurementGenerateReportRequest(OCIRequest):
    """
    Generate a performance measurements report.

    The response is either `SuccessResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPerformanceMeasurementReportingAddFileServerRequest(OCIRequest):
    """
    Add a performance measurements reporting ftp server.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        ftp_host_net_address (str): ftpHostNetAddress
        ftp_user_id (str): ftpUserId
        ftp_user_password (str): ftpUserPassword
        passive_ftp (bool): passiveFTP *Optional*
    """

    __slots__: List[str] = [
        "ftp_host_net_address",
        "ftp_user_id",
        "ftp_user_password",
        "passive_ftp",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("ftp_host_net_address", "ftpHostNetAddress", str, is_required=True),
            E("ftp_user_id", "ftpUserId", str, is_required=True),
            E("ftp_user_password", "ftpUserPassword", str, is_required=True),
            E("passive_ftp", "passiveFTP", bool),
        )


class SystemPerformanceMeasurementReportingAddFileServerRequest22(OCIRequest):
    """
    Add a performance measurements reporting ftp server.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        repository_url (str): repositoryUrl
        ftp_user_id (str): ftpUserId
        ftp_user_password (str): ftpUserPassword
        passive_ftp (bool): passiveFTP *Optional*
    """

    __slots__: List[str] = [
        "repository_url",
        "ftp_user_id",
        "ftp_user_password",
        "passive_ftp",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("repository_url", "repositoryUrl", str, is_required=True),
            E("ftp_user_id", "ftpUserId", str, is_required=True),
            E("ftp_user_password", "ftpUserPassword", str, is_required=True),
            E("passive_ftp", "passiveFTP", bool),
        )


class SystemPerformanceMeasurementReportingDeleteFileServerRequest(OCIRequest):
    """
    Delete a performance measurements reporting ftp server.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        ftp_host_net_address (str): ftpHostNetAddress
    """

    __slots__: List[str] = [
        "ftp_host_net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("ftp_host_net_address", "ftpHostNetAddress", str, is_required=True),)


class SystemPerformanceMeasurementReportingDeleteFileServerRequest22(OCIRequest):
    """
    Delete a performance measurements reporting ftp server.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        repository_url (str): repositoryUrl
    """

    __slots__: List[str] = [
        "repository_url",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("repository_url", "repositoryUrl", str, is_required=True),)


class SystemPerformanceMeasurementReportingGetFileServerListRequest(OCIRequest):
    """
    Requests the list performance measurements reporting ftp servers.

    The response is either
    `SystemPerformanceMeasurementReportingGetFileServerListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPerformanceMeasurementReportingGetFileServerListRequest22(OCIRequest):
    """
    Requests the list performance measurements reporting ftp servers.

    The response is either
    `SystemPerformanceMeasurementReportingGetFileServerListResponse22()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPerformanceMeasurementReportingGetRequest(OCIRequest):
    """
    Requests the performance measurements reporting settings.

    The response is either `SystemPerformanceMeasurementReportingGetResponse()` or
    `ErrorResponse()`. Replaced by: `SystemPerformanceMeasurementReportingGetRequest22()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPerformanceMeasurementReportingGetRequest22(OCIRequest):
    """
    Requests the performance measurements reporting settings.

    The response is either `SystemPerformanceMeasurementReportingGetResponse22()` or
    `ErrorResponse()`. Replaced by: `SystemPerformanceMeasurementReportingGetRequest24()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPerformanceMeasurementReportingGetRequest24(OCIRequest):
    """
    Requests the performance measurements reporting settings.

    The response is either `SystemPerformanceMeasurementReportingGetResponse24()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPerformanceMeasurementReportingModifyFileServerRequest(OCIRequest):
    """
    Modify a performance measurements reporting ftp server.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        ftp_host_net_address (str): ftpHostNetAddress
        passive_ftp (bool): passiveFTP *Optional*
    """

    __slots__: List[str] = [
        "ftp_host_net_address",
        "passive_ftp",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("ftp_host_net_address", "ftpHostNetAddress", str, is_required=True),
            E("passive_ftp", "passiveFTP", bool),
        )


class SystemPerformanceMeasurementReportingModifyFileServerRequest22(OCIRequest):
    """
    Modify a performance measurements reporting ftp server.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        repository_url (str): repositoryUrl
        passive_ftp (bool): passiveFTP *Optional*
    """

    __slots__: List[str] = [
        "repository_url",
        "passive_ftp",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("repository_url", "repositoryUrl", str, is_required=True),
            E("passive_ftp", "passiveFTP", bool),
        )


class SystemPerformanceMeasurementReportingModifyRequest(OCIRequest):
    """
    Modify the performance measurements reporting settings.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        is_active (bool): isActive *Optional*
        reporting_interval (int): reportingInterval *Optional*
        reset_measurements_after_each_report (bool): resetMeasurementsAfterEachReport
            *Optional*
        report_enterprise (bool): reportEnterprise *Optional*
        report_service_provider (bool): reportServiceProvider *Optional*
        report_device (bool): reportDevice *Optional*
        report_table (bool): reportTable *Optional*
        report_encoding (str): reportEncoding *Optional*
    """

    __slots__: List[str] = [
        "is_active",
        "reporting_interval",
        "reset_measurements_after_each_report",
        "report_enterprise",
        "report_service_provider",
        "report_device",
        "report_table",
        "report_encoding",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("is_active", "isActive", bool),
            E("reporting_interval", "reportingInterval", int),
            E(
                "reset_measurements_after_each_report",
                "resetMeasurementsAfterEachReport",
                bool,
            ),
            E("report_enterprise", "reportEnterprise", bool),
            E("report_service_provider", "reportServiceProvider", bool),
            E("report_device", "reportDevice", bool),
            E("report_table", "reportTable", bool),
            E("report_encoding", "reportEncoding", str),
        )


class SystemPersonalAssistantGetRequest(OCIRequest):
    """
    Get system Personal Assistant Parameters.

    The response is either `SystemPersonalAssistantGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPersonalAssistantModifyRequest(OCIRequest):
    """
    Modify system Personal Assistant Parameters.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        transfer_to_attendant_key (str): transferToAttendantKey *Optional*
        transfer_to_voice_messaging_key (str): transferToVoiceMessagingKey *Optional*
    """

    __slots__: List[str] = [
        "transfer_to_attendant_key",
        "transfer_to_voice_messaging_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("transfer_to_attendant_key", "transferToAttendantKey", str),
            E("transfer_to_voice_messaging_key", "transferToVoiceMessagingKey", str),
        )


class SystemPhysicalLocationGetRequest(OCIRequest):
    """
    Request to get the list of Physical Location system parameters.

    The response is either `SystemPhysicalLocationGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPhysicalLocationModifyRequest(OCIRequest):
    """
    Request to modify Physical Location system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        always_allow_emergency_calls (bool): alwaysAllowEmergencyCalls *Optional*
    """

    __slots__: List[str] = [
        "always_allow_emergency_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("always_allow_emergency_calls", "alwaysAllowEmergencyCalls", bool),)


class SystemPolicyGetDefaultRequest14(OCIRequest):
    """
    Requests the system's default policy settings.

    The response is either `SystemPolicyGetDefaultResponse14()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPolicyGetDefaultRequest14sp1(OCIRequest):
    """
    Requests the system's default policy settings.

    The response is either `SystemPolicyGetDefaultResponse14sp1()` or `ErrorResponse()`.

    Replaced By: `SystemPolicyGetDefaultRequest14sp4()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPolicyGetDefaultRequest14sp4(OCIRequest):
    """
    Requests the system's default policy settings.

    The response is either `SystemPolicyGetDefaultResponse14sp4()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPolicyGetDefaultRequest16sp1(OCIRequest):
    """
    Requests the system's default policy settings.

    The response is either `SystemPolicyGetDefaultResponse16sp1()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPolicyGetDefaultRequest16sp2(OCIRequest):
    """
    Requests the system's default policy settings.

    The response is either `SystemPolicyGetDefaultResponse16sp2()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPolicyGetDefaultRequest17(OCIRequest):
    """
    Requests the system's default policy settings.

    The response is either `SystemPolicyGetDefaultResponse17()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPolicyGetDefaultRequest17sp1(OCIRequest):
    """
    Requests the system's default policy settings.

    The response is either `SystemPolicyGetDefaultResponse17sp1()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPolicyGetDefaultRequest17sp3(OCIRequest):
    """
    Requests the system's default policy settings.

    The response is either `SystemPolicyGetDefaultResponse17sp3()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPolicyGetDefaultRequest18(OCIRequest):
    """
    Requests the system's default policy settings.

    The response is either `SystemPolicyGetDefaultResponse18()` or `ErrorResponse()`.
    Replaced by: `SystemPolicyGetDefaultRequest20()` in AS data mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPolicyGetDefaultRequest19sp1(OCIRequest):
    """
    Requests the system's default policy settings.

    The response is either `SystemPolicyGetDefaultResponse19sp1()` or `ErrorResponse()`.
    Replaced by: `SystemPolicyGetDefaultRequest20()` in AS mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPolicyGetDefaultRequest20(OCIRequest):
    """
    Requests the system's default policy settings.

    The response is either `SystemPolicyGetDefaultResponse20()` or `ErrorResponse()`.
    Replaced by: `SystemPolicyGetDefaultRequest22()` in AS mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPolicyGetDefaultRequest22(OCIRequest):
    """
    Requests the system's default policy settings.

    The response is either `SystemPolicyGetDefaultResponse22()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPolicyModifyDefaultRequest14(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: GroupAdminDialableCallerIDAccess
    ServiceProviderAdminDialableCallerIDAccess
    GroupAdminCommunicationBarringUserProfileAccess (This element is only used for groups
    in an Enterprise) GroupAdminVerifyTranslationAndRoutingAccess
    ServiceProviderVerifyTranslationAndRoutingAccess
    groupUserAutoAttendantNameDialingAccess The following elements are only used in XS
    data mode: serviceProviderAdminCommunicationBarringAccess Replaced by:
    `SystemPolicyModifyDefaultRequest22()` in AS mode

    Attributes:
        group_calling_plan_access (str): groupCallingPlanAccess *Optional*
        group_extension_access (str): groupExtensionAccess *Optional*
        group_ldap_integration_access (str): groupLDAPIntegrationAccess *Optional*
        group_voice_messaging_access (str): groupVoiceMessagingAccess *Optional*
        group_department_admin_user_access (str): groupDepartmentAdminUserAccess
            *Optional*
        group_department_admin_trunk_group_access (str):
            groupDepartmentAdminTrunkGroupAccess *Optional*
        group_department_admin_phone_number_extension_access (str):
            groupDepartmentAdminPhoneNumberExtensionAccess *Optional*
        group_department_admin_calling_line_id_number_access (str):
            groupDepartmentAdminCallingLineIdNumberAccess *Optional*
        group_user_authentication_access (str): groupUserAuthenticationAccess *Optional*
        group_user_group_directory_access (str): groupUserGroupDirectoryAccess *Optional*
        group_user_profile_access (str): groupUserProfileAccess *Optional*
        group_user_enhanced_call_logs_access (str): groupUserEnhancedCallLogsAccess
            *Optional*
        group_user_auto_attendant_name_dialing_access (str):
            groupUserAutoAttendantNameDialingAccess *Optional*
        group_admin_profile_access (str): groupAdminProfileAccess *Optional*
        group_admin_user_access (str): groupAdminUserAccess *Optional*
        group_admin_admin_access (str): groupAdminAdminAccess *Optional*
        group_admin_department_access (str): groupAdminDepartmentAccess *Optional*
        group_admin_access_device_access (str): groupAdminAccessDeviceAccess *Optional*
        group_admin_enhanced_service_instance_access (str):
            groupAdminEnhancedServiceInstanceAccess *Optional*
        group_admin_feature_access_code_access (str): groupAdminFeatureAccessCodeAccess
            *Optional*
        group_admin_phone_number_extension_access (str):
            groupAdminPhoneNumberExtensionAccess *Optional*
        group_admin_calling_line_id_number_access (str):
            groupAdminCallingLineIdNumberAccess *Optional*
        group_admin_service_access (str): groupAdminServiceAccess *Optional*
        group_admin_trunk_group_access (str): groupAdminTrunkGroupAccess *Optional*
        group_admin_verify_translation_and_routing_access (str):
            groupAdminVerifyTranslationAndRoutingAccess *Optional*
        group_admin_session_admission_control_access (str):
            groupAdminSessionAdmissionControlAccess *Optional*
        group_admin_dialable_caller_id_access (str): groupAdminDialableCallerIDAccess
            *Optional*
        group_admin_office_zone_access (str): groupAdminOfficeZoneAccess *Optional*
        group_admin_number_activation_access (str): groupAdminNumberActivationAccess
            *Optional*
        group_admin_communication_barring_user_profile_access (str):
            groupAdminCommunicationBarringUserProfileAccess *Optional*
        service_provider_admin_profile_access (str): serviceProviderAdminProfileAccess
            *Optional*
        service_provider_admin_group_access (str): serviceProviderAdminGroupAccess
            *Optional*
        service_provider_admin_user_access (str): serviceProviderAdminUserAccess
            *Optional*
        service_provider_admin_admin_access (str): serviceProviderAdminAdminAccess
            *Optional*
        service_provider_admin_department_access (str):
            ServiceProviderAdminDepartmentAccess *Optional*
        service_provider_admin_access_device_access (str):
            serviceProviderAdminAccessDeviceAccess *Optional*
        service_provider_admin_phone_number_extension_access (str):
            serviceProviderAdminPhoneNumberExtensionAccess *Optional*
        service_provider_admin_calling_line_id_number_access (str):
            serviceProviderAdminCallingLineIdNumberAccess *Optional*
        service_provider_admin_service_access (str): serviceProviderAdminServiceAccess
            *Optional*
        service_provider_admin_service_pack_access (str):
            serviceProviderAdminServicePackAccess *Optional*
        service_provider_admin_session_admission_control_access (str):
            serviceProviderAdminSessionAdmissionControlAccess *Optional*
        service_provider_admin_verify_translation_and_routing_access (str):
            serviceProviderAdminVerifyTranslationAndRoutingAccess *Optional*
        service_provider_admin_web_branding_access (str):
            serviceProviderAdminWebBrandingAccess *Optional*
        service_provider_admin_office_zone_access (str):
            serviceProviderAdminOfficeZoneAccess *Optional*
        service_provider_admin_communication_barring_access (str):
            serviceProviderAdminCommunicationBarringAccess *Optional*
        enterprise_admin_network_policy_access (str): enterpriseAdminNetworkPolicyAccess
            *Optional*
        service_provider_admin_dialable_caller_id_access (str):
            serviceProviderAdminDialableCallerIDAccess *Optional*
        enterprise_admin_number_activation_access (str):
            enterpriseAdminNumberActivationAccess *Optional*
    """

    __slots__: List[str] = [
        "group_calling_plan_access",
        "group_extension_access",
        "group_ldap_integration_access",
        "group_voice_messaging_access",
        "group_department_admin_user_access",
        "group_department_admin_trunk_group_access",
        "group_department_admin_phone_number_extension_access",
        "group_department_admin_calling_line_id_number_access",
        "group_user_authentication_access",
        "group_user_group_directory_access",
        "group_user_profile_access",
        "group_user_enhanced_call_logs_access",
        "group_user_auto_attendant_name_dialing_access",
        "group_admin_profile_access",
        "group_admin_user_access",
        "group_admin_admin_access",
        "group_admin_department_access",
        "group_admin_access_device_access",
        "group_admin_enhanced_service_instance_access",
        "group_admin_feature_access_code_access",
        "group_admin_phone_number_extension_access",
        "group_admin_calling_line_id_number_access",
        "group_admin_service_access",
        "group_admin_trunk_group_access",
        "group_admin_verify_translation_and_routing_access",
        "group_admin_session_admission_control_access",
        "group_admin_dialable_caller_id_access",
        "group_admin_office_zone_access",
        "group_admin_number_activation_access",
        "group_admin_communication_barring_user_profile_access",
        "service_provider_admin_profile_access",
        "service_provider_admin_group_access",
        "service_provider_admin_user_access",
        "service_provider_admin_admin_access",
        "service_provider_admin_department_access",
        "service_provider_admin_access_device_access",
        "service_provider_admin_phone_number_extension_access",
        "service_provider_admin_calling_line_id_number_access",
        "service_provider_admin_service_access",
        "service_provider_admin_service_pack_access",
        "service_provider_admin_session_admission_control_access",
        "service_provider_admin_verify_translation_and_routing_access",
        "service_provider_admin_web_branding_access",
        "service_provider_admin_office_zone_access",
        "service_provider_admin_communication_barring_access",
        "enterprise_admin_network_policy_access",
        "service_provider_admin_dialable_caller_id_access",
        "enterprise_admin_number_activation_access",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("group_calling_plan_access", "groupCallingPlanAccess", str),
            E("group_extension_access", "groupExtensionAccess", str),
            E("group_ldap_integration_access", "groupLDAPIntegrationAccess", str),
            E("group_voice_messaging_access", "groupVoiceMessagingAccess", str),
            E(
                "group_department_admin_user_access",
                "groupDepartmentAdminUserAccess",
                str,
            ),
            E(
                "group_department_admin_trunk_group_access",
                "groupDepartmentAdminTrunkGroupAccess",
                str,
            ),
            E(
                "group_department_admin_phone_number_extension_access",
                "groupDepartmentAdminPhoneNumberExtensionAccess",
                str,
            ),
            E(
                "group_department_admin_calling_line_id_number_access",
                "groupDepartmentAdminCallingLineIdNumberAccess",
                str,
            ),
            E("group_user_authentication_access", "groupUserAuthenticationAccess", str),
            E(
                "group_user_group_directory_access",
                "groupUserGroupDirectoryAccess",
                str,
            ),
            E("group_user_profile_access", "groupUserProfileAccess", str),
            E(
                "group_user_enhanced_call_logs_access",
                "groupUserEnhancedCallLogsAccess",
                str,
            ),
            E(
                "group_user_auto_attendant_name_dialing_access",
                "groupUserAutoAttendantNameDialingAccess",
                str,
            ),
            E("group_admin_profile_access", "groupAdminProfileAccess", str),
            E("group_admin_user_access", "groupAdminUserAccess", str),
            E("group_admin_admin_access", "groupAdminAdminAccess", str),
            E("group_admin_department_access", "groupAdminDepartmentAccess", str),
            E("group_admin_access_device_access", "groupAdminAccessDeviceAccess", str),
            E(
                "group_admin_enhanced_service_instance_access",
                "groupAdminEnhancedServiceInstanceAccess",
                str,
            ),
            E(
                "group_admin_feature_access_code_access",
                "groupAdminFeatureAccessCodeAccess",
                str,
            ),
            E(
                "group_admin_phone_number_extension_access",
                "groupAdminPhoneNumberExtensionAccess",
                str,
            ),
            E(
                "group_admin_calling_line_id_number_access",
                "groupAdminCallingLineIdNumberAccess",
                str,
            ),
            E("group_admin_service_access", "groupAdminServiceAccess", str),
            E("group_admin_trunk_group_access", "groupAdminTrunkGroupAccess", str),
            E(
                "group_admin_verify_translation_and_routing_access",
                "groupAdminVerifyTranslationAndRoutingAccess",
                str,
            ),
            E(
                "group_admin_session_admission_control_access",
                "groupAdminSessionAdmissionControlAccess",
                str,
            ),
            E(
                "group_admin_dialable_caller_id_access",
                "groupAdminDialableCallerIDAccess",
                str,
            ),
            E("group_admin_office_zone_access", "groupAdminOfficeZoneAccess", str),
            E(
                "group_admin_number_activation_access",
                "groupAdminNumberActivationAccess",
                str,
            ),
            E(
                "group_admin_communication_barring_user_profile_access",
                "groupAdminCommunicationBarringUserProfileAccess",
                str,
            ),
            E(
                "service_provider_admin_profile_access",
                "serviceProviderAdminProfileAccess",
                str,
            ),
            E(
                "service_provider_admin_group_access",
                "serviceProviderAdminGroupAccess",
                str,
            ),
            E(
                "service_provider_admin_user_access",
                "serviceProviderAdminUserAccess",
                str,
            ),
            E(
                "service_provider_admin_admin_access",
                "serviceProviderAdminAdminAccess",
                str,
            ),
            E(
                "service_provider_admin_department_access",
                "ServiceProviderAdminDepartmentAccess",
                str,
            ),
            E(
                "service_provider_admin_access_device_access",
                "serviceProviderAdminAccessDeviceAccess",
                str,
            ),
            E(
                "service_provider_admin_phone_number_extension_access",
                "serviceProviderAdminPhoneNumberExtensionAccess",
                str,
            ),
            E(
                "service_provider_admin_calling_line_id_number_access",
                "serviceProviderAdminCallingLineIdNumberAccess",
                str,
            ),
            E(
                "service_provider_admin_service_access",
                "serviceProviderAdminServiceAccess",
                str,
            ),
            E(
                "service_provider_admin_service_pack_access",
                "serviceProviderAdminServicePackAccess",
                str,
            ),
            E(
                "service_provider_admin_session_admission_control_access",
                "serviceProviderAdminSessionAdmissionControlAccess",
                str,
            ),
            E(
                "service_provider_admin_verify_translation_and_routing_access",
                "serviceProviderAdminVerifyTranslationAndRoutingAccess",
                str,
            ),
            E(
                "service_provider_admin_web_branding_access",
                "serviceProviderAdminWebBrandingAccess",
                str,
            ),
            E(
                "service_provider_admin_office_zone_access",
                "serviceProviderAdminOfficeZoneAccess",
                str,
            ),
            E(
                "service_provider_admin_communication_barring_access",
                "serviceProviderAdminCommunicationBarringAccess",
                str,
            ),
            E(
                "enterprise_admin_network_policy_access",
                "enterpriseAdminNetworkPolicyAccess",
                str,
            ),
            E(
                "service_provider_admin_dialable_caller_id_access",
                "serviceProviderAdminDialableCallerIDAccess",
                str,
            ),
            E(
                "enterprise_admin_number_activation_access",
                "enterpriseAdminNumberActivationAccess",
                str,
            ),
        )


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: GroupAdminDialableCallerIDAccess
    ServiceProviderAdminDialableCallerIDAccess
    GroupAdminCommunicationBarringUserProfileAccess (This element is only used for groups
    in an Enterprise) GroupAdminVerifyTranslationAndRoutingAccess
    ServiceProviderVerifyTranslationAndRoutingAccess
    groupUserAutoAttendantNameDialingAccess The following elements are only used in XS
    data mode: serviceProviderAdminCommunicationBarringAccess

    Attributes:
        group_calling_plan_access (str): groupCallingPlanAccess *Optional*
        group_extension_access (str): groupExtensionAccess *Optional*
        group_voice_messaging_access (str): groupVoiceMessagingAccess *Optional*
        group_department_admin_user_access (str): groupDepartmentAdminUserAccess
            *Optional*
        group_department_admin_trunk_group_access (str):
            groupDepartmentAdminTrunkGroupAccess *Optional*
        group_department_admin_phone_number_extension_access (str):
            groupDepartmentAdminPhoneNumberExtensionAccess *Optional*
        group_department_admin_calling_line_id_number_access (str):
            groupDepartmentAdminCallingLineIdNumberAccess *Optional*
        group_user_authentication_access (str): groupUserAuthenticationAccess *Optional*
        group_user_group_directory_access (str): groupUserGroupDirectoryAccess *Optional*
        group_user_profile_access (str): groupUserProfileAccess *Optional*
        group_user_enhanced_call_logs_access (str): groupUserEnhancedCallLogsAccess
            *Optional*
        group_user_auto_attendant_name_dialing_access (str):
            groupUserAutoAttendantNameDialingAccess *Optional*
        group_admin_profile_access (str): groupAdminProfileAccess *Optional*
        group_admin_user_access (str): groupAdminUserAccess *Optional*
        group_admin_admin_access (str): groupAdminAdminAccess *Optional*
        group_admin_department_access (str): groupAdminDepartmentAccess *Optional*
        group_admin_access_device_access (str): groupAdminAccessDeviceAccess *Optional*
        group_admin_enhanced_service_instance_access (str):
            groupAdminEnhancedServiceInstanceAccess *Optional*
        group_admin_feature_access_code_access (str): groupAdminFeatureAccessCodeAccess
            *Optional*
        group_admin_phone_number_extension_access (str):
            groupAdminPhoneNumberExtensionAccess *Optional*
        group_admin_calling_line_id_number_access (str):
            groupAdminCallingLineIdNumberAccess *Optional*
        group_admin_service_access (str): groupAdminServiceAccess *Optional*
        group_admin_trunk_group_access (str): groupAdminTrunkGroupAccess *Optional*
        group_admin_verify_translation_and_routing_access (str):
            groupAdminVerifyTranslationAndRoutingAccess *Optional*
        group_admin_session_admission_control_access (str):
            groupAdminSessionAdmissionControlAccess *Optional*
        group_admin_dialable_caller_id_access (str): groupAdminDialableCallerIDAccess
            *Optional*
        group_admin_office_zone_access (str): groupAdminOfficeZoneAccess *Optional*
        group_admin_number_activation_access (str): groupAdminNumberActivationAccess
            *Optional*
        group_admin_communication_barring_user_profile_access (str):
            groupAdminCommunicationBarringUserProfileAccess *Optional*
        service_provider_admin_profile_access (str): serviceProviderAdminProfileAccess
            *Optional*
        service_provider_admin_group_access (str): serviceProviderAdminGroupAccess
            *Optional*
        service_provider_admin_user_access (str): serviceProviderAdminUserAccess
            *Optional*
        service_provider_admin_admin_access (str): serviceProviderAdminAdminAccess
            *Optional*
        service_provider_admin_department_access (str):
            ServiceProviderAdminDepartmentAccess *Optional*
        service_provider_admin_access_device_access (str):
            serviceProviderAdminAccessDeviceAccess *Optional*
        service_provider_admin_phone_number_extension_access (str):
            serviceProviderAdminPhoneNumberExtensionAccess *Optional*
        service_provider_admin_calling_line_id_number_access (str):
            serviceProviderAdminCallingLineIdNumberAccess *Optional*
        service_provider_admin_service_access (str): serviceProviderAdminServiceAccess
            *Optional*
        service_provider_admin_service_pack_access (str):
            serviceProviderAdminServicePackAccess *Optional*
        service_provider_admin_session_admission_control_access (str):
            serviceProviderAdminSessionAdmissionControlAccess *Optional*
        service_provider_admin_verify_translation_and_routing_access (str):
            serviceProviderAdminVerifyTranslationAndRoutingAccess *Optional*
        service_provider_admin_web_branding_access (str):
            serviceProviderAdminWebBrandingAccess *Optional*
        service_provider_admin_office_zone_access (str):
            serviceProviderAdminOfficeZoneAccess *Optional*
        service_provider_admin_communication_barring_access (str):
            serviceProviderAdminCommunicationBarringAccess *Optional*
        enterprise_admin_network_policy_access (str): enterpriseAdminNetworkPolicyAccess
            *Optional*
        service_provider_admin_dialable_caller_id_access (str):
            serviceProviderAdminDialableCallerIDAccess *Optional*
        enterprise_admin_number_activation_access (str):
            enterpriseAdminNumberActivationAccess *Optional*
    """

    __slots__: List[str] = [
        "group_calling_plan_access",
        "group_extension_access",
        "group_voice_messaging_access",
        "group_department_admin_user_access",
        "group_department_admin_trunk_group_access",
        "group_department_admin_phone_number_extension_access",
        "group_department_admin_calling_line_id_number_access",
        "group_user_authentication_access",
        "group_user_group_directory_access",
        "group_user_profile_access",
        "group_user_enhanced_call_logs_access",
        "group_user_auto_attendant_name_dialing_access",
        "group_admin_profile_access",
        "group_admin_user_access",
        "group_admin_admin_access",
        "group_admin_department_access",
        "group_admin_access_device_access",
        "group_admin_enhanced_service_instance_access",
        "group_admin_feature_access_code_access",
        "group_admin_phone_number_extension_access",
        "group_admin_calling_line_id_number_access",
        "group_admin_service_access",
        "group_admin_trunk_group_access",
        "group_admin_verify_translation_and_routing_access",
        "group_admin_session_admission_control_access",
        "group_admin_dialable_caller_id_access",
        "group_admin_office_zone_access",
        "group_admin_number_activation_access",
        "group_admin_communication_barring_user_profile_access",
        "service_provider_admin_profile_access",
        "service_provider_admin_group_access",
        "service_provider_admin_user_access",
        "service_provider_admin_admin_access",
        "service_provider_admin_department_access",
        "service_provider_admin_access_device_access",
        "service_provider_admin_phone_number_extension_access",
        "service_provider_admin_calling_line_id_number_access",
        "service_provider_admin_service_access",
        "service_provider_admin_service_pack_access",
        "service_provider_admin_session_admission_control_access",
        "service_provider_admin_verify_translation_and_routing_access",
        "service_provider_admin_web_branding_access",
        "service_provider_admin_office_zone_access",
        "service_provider_admin_communication_barring_access",
        "enterprise_admin_network_policy_access",
        "service_provider_admin_dialable_caller_id_access",
        "enterprise_admin_number_activation_access",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("group_calling_plan_access", "groupCallingPlanAccess", str),
            E("group_extension_access", "groupExtensionAccess", str),
            E("group_voice_messaging_access", "groupVoiceMessagingAccess", str),
            E(
                "group_department_admin_user_access",
                "groupDepartmentAdminUserAccess",
                str,
            ),
            E(
                "group_department_admin_trunk_group_access",
                "groupDepartmentAdminTrunkGroupAccess",
                str,
            ),
            E(
                "group_department_admin_phone_number_extension_access",
                "groupDepartmentAdminPhoneNumberExtensionAccess",
                str,
            ),
            E(
                "group_department_admin_calling_line_id_number_access",
                "groupDepartmentAdminCallingLineIdNumberAccess",
                str,
            ),
            E("group_user_authentication_access", "groupUserAuthenticationAccess", str),
            E(
                "group_user_group_directory_access",
                "groupUserGroupDirectoryAccess",
                str,
            ),
            E("group_user_profile_access", "groupUserProfileAccess", str),
            E(
                "group_user_enhanced_call_logs_access",
                "groupUserEnhancedCallLogsAccess",
                str,
            ),
            E(
                "group_user_auto_attendant_name_dialing_access",
                "groupUserAutoAttendantNameDialingAccess",
                str,
            ),
            E("group_admin_profile_access", "groupAdminProfileAccess", str),
            E("group_admin_user_access", "groupAdminUserAccess", str),
            E("group_admin_admin_access", "groupAdminAdminAccess", str),
            E("group_admin_department_access", "groupAdminDepartmentAccess", str),
            E("group_admin_access_device_access", "groupAdminAccessDeviceAccess", str),
            E(
                "group_admin_enhanced_service_instance_access",
                "groupAdminEnhancedServiceInstanceAccess",
                str,
            ),
            E(
                "group_admin_feature_access_code_access",
                "groupAdminFeatureAccessCodeAccess",
                str,
            ),
            E(
                "group_admin_phone_number_extension_access",
                "groupAdminPhoneNumberExtensionAccess",
                str,
            ),
            E(
                "group_admin_calling_line_id_number_access",
                "groupAdminCallingLineIdNumberAccess",
                str,
            ),
            E("group_admin_service_access", "groupAdminServiceAccess", str),
            E("group_admin_trunk_group_access", "groupAdminTrunkGroupAccess", str),
            E(
                "group_admin_verify_translation_and_routing_access",
                "groupAdminVerifyTranslationAndRoutingAccess",
                str,
            ),
            E(
                "group_admin_session_admission_control_access",
                "groupAdminSessionAdmissionControlAccess",
                str,
            ),
            E(
                "group_admin_dialable_caller_id_access",
                "groupAdminDialableCallerIDAccess",
                str,
            ),
            E("group_admin_office_zone_access", "groupAdminOfficeZoneAccess", str),
            E(
                "group_admin_number_activation_access",
                "groupAdminNumberActivationAccess",
                str,
            ),
            E(
                "group_admin_communication_barring_user_profile_access",
                "groupAdminCommunicationBarringUserProfileAccess",
                str,
            ),
            E(
                "service_provider_admin_profile_access",
                "serviceProviderAdminProfileAccess",
                str,
            ),
            E(
                "service_provider_admin_group_access",
                "serviceProviderAdminGroupAccess",
                str,
            ),
            E(
                "service_provider_admin_user_access",
                "serviceProviderAdminUserAccess",
                str,
            ),
            E(
                "service_provider_admin_admin_access",
                "serviceProviderAdminAdminAccess",
                str,
            ),
            E(
                "service_provider_admin_department_access",
                "ServiceProviderAdminDepartmentAccess",
                str,
            ),
            E(
                "service_provider_admin_access_device_access",
                "serviceProviderAdminAccessDeviceAccess",
                str,
            ),
            E(
                "service_provider_admin_phone_number_extension_access",
                "serviceProviderAdminPhoneNumberExtensionAccess",
                str,
            ),
            E(
                "service_provider_admin_calling_line_id_number_access",
                "serviceProviderAdminCallingLineIdNumberAccess",
                str,
            ),
            E(
                "service_provider_admin_service_access",
                "serviceProviderAdminServiceAccess",
                str,
            ),
            E(
                "service_provider_admin_service_pack_access",
                "serviceProviderAdminServicePackAccess",
                str,
            ),
            E(
                "service_provider_admin_session_admission_control_access",
                "serviceProviderAdminSessionAdmissionControlAccess",
                str,
            ),
            E(
                "service_provider_admin_verify_translation_and_routing_access",
                "serviceProviderAdminVerifyTranslationAndRoutingAccess",
                str,
            ),
            E(
                "service_provider_admin_web_branding_access",
                "serviceProviderAdminWebBrandingAccess",
                str,
            ),
            E(
                "service_provider_admin_office_zone_access",
                "serviceProviderAdminOfficeZoneAccess",
                str,
            ),
            E(
                "service_provider_admin_communication_barring_access",
                "serviceProviderAdminCommunicationBarringAccess",
                str,
            ),
            E(
                "enterprise_admin_network_policy_access",
                "enterpriseAdminNetworkPolicyAccess",
                str,
            ),
            E(
                "service_provider_admin_dialable_caller_id_access",
                "serviceProviderAdminDialableCallerIDAccess",
                str,
            ),
            E(
                "enterprise_admin_number_activation_access",
                "enterpriseAdminNumberActivationAccess",
                str,
            ),
        )


class SystemPortalPasscodeRulesGetRequest(OCIRequest):
    """
    Requests the system passcode rules setting.

    The response is either `SystemPortalPasscodeRulesGetResponse()` or `ErrorResponse()`.
    Replaced by: `SystemPortalPasscodeRulesGetRequest19()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPortalPasscodeRulesGetRequest19(OCIRequest):
    """
    Requests the system passcode rules setting.

    The response is either `SystemPortalPasscodeRulesGetResponse19()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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

    Attributes:
        disallow_repeated_digits (bool): disallowRepeatedDigits *Optional*
        number_of_repeated_digits (int): numberOfRepeatedDigits *Optional*
        disallow_repeated_patterns (bool): disallowRepeatedPatterns *Optional*
        disallow_contiguous_sequences (bool): disallowContiguousSequences *Optional*
        number_of_ascending_digits (int): numberOfAscendingDigits *Optional*
        number_of_descending_digits (int): numberOfDescendingDigits *Optional*
        disallow_user_number (bool): disallowUserNumber *Optional*
        disallow_reversed_user_number (bool): disallowReversedUserNumber *Optional*
        disallow_old_passcode (bool): disallowOldPasscode *Optional*
        number_of_previous_passcodes (int): numberOfPreviousPasscodes *Optional*
        disallow_reversed_old_passcode (bool): disallowReversedOldPasscode *Optional*
        min_code_length (int): minCodeLength *Optional*
        max_code_length (int): maxCodeLength *Optional*
        disable_login_after_max_failed_login_attempts (bool):
            disableLoginAfterMaxFailedLoginAttempts *Optional*
        max_failed_login_attempts (int): maxFailedLoginAttempts *Optional*
        expire_password (bool): expirePassword *Optional*
        passcode_expires_days (int): passcodeExpiresDays *Optional*
        send_login_disabled_notify_email (bool): sendLoginDisabledNotifyEmail *Optional*
        login_disabled_notify_email_address (str): loginDisabledNotifyEmailAddress
            *Optional*
        default_password (str): defaultPassword *Optional*
    """

    __slots__: List[str] = [
        "disallow_repeated_digits",
        "number_of_repeated_digits",
        "disallow_repeated_patterns",
        "disallow_contiguous_sequences",
        "number_of_ascending_digits",
        "number_of_descending_digits",
        "disallow_user_number",
        "disallow_reversed_user_number",
        "disallow_old_passcode",
        "number_of_previous_passcodes",
        "disallow_reversed_old_passcode",
        "min_code_length",
        "max_code_length",
        "disable_login_after_max_failed_login_attempts",
        "max_failed_login_attempts",
        "expire_password",
        "passcode_expires_days",
        "send_login_disabled_notify_email",
        "login_disabled_notify_email_address",
        "default_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("disallow_repeated_digits", "disallowRepeatedDigits", bool),
            E("number_of_repeated_digits", "numberOfRepeatedDigits", int),
            E("disallow_repeated_patterns", "disallowRepeatedPatterns", bool),
            E("disallow_contiguous_sequences", "disallowContiguousSequences", bool),
            E("number_of_ascending_digits", "numberOfAscendingDigits", int),
            E("number_of_descending_digits", "numberOfDescendingDigits", int),
            E("disallow_user_number", "disallowUserNumber", bool),
            E("disallow_reversed_user_number", "disallowReversedUserNumber", bool),
            E("disallow_old_passcode", "disallowOldPasscode", bool),
            E("number_of_previous_passcodes", "numberOfPreviousPasscodes", int),
            E("disallow_reversed_old_passcode", "disallowReversedOldPasscode", bool),
            E("min_code_length", "minCodeLength", int),
            E("max_code_length", "maxCodeLength", int),
            E(
                "disable_login_after_max_failed_login_attempts",
                "disableLoginAfterMaxFailedLoginAttempts",
                bool,
            ),
            E("max_failed_login_attempts", "maxFailedLoginAttempts", int),
            E("expire_password", "expirePassword", bool),
            E("passcode_expires_days", "passcodeExpiresDays", int),
            E("send_login_disabled_notify_email", "sendLoginDisabledNotifyEmail", bool),
            E(
                "login_disabled_notify_email_address",
                "loginDisabledNotifyEmailAddress",
                str,
            ),
            E("default_password", "defaultPassword", str),
        )


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): carrier
        cic (str): cic
        country_code (str): countryCode
        is_intra_lata (bool): isIntraLata
        is_inter_lata (bool): isInterLata
        is_international (bool): isInternational
    """

    __slots__: List[str] = [
        "carrier",
        "cic",
        "country_code",
        "is_intra_lata",
        "is_inter_lata",
        "is_international",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("carrier", "carrier", str, is_required=True),
            E("cic", "cic", str, is_required=True),
            E("country_code", "countryCode", str, is_required=True),
            E("is_intra_lata", "isIntraLata", bool, is_required=True),
            E("is_inter_lata", "isInterLata", bool, is_required=True),
            E("is_international", "isInternational", bool, is_required=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
    """

    __slots__: List[str] = [
        "carrier",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("carrier", "carrier", str, is_required=True),)


class SystemPreferredCarrierGetListRequest(OCIRequest):
    """
    Requests a table of all the carriers defined in the system.

    The response is either a `SystemPreferredCarrierGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPreferredCarrierGetRequest(OCIRequest):
    """
    Requests the attributes of carrier.

    The response is either a `SystemPreferreredCarrierGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        carrier (str): carrier
    """

    __slots__: List[str] = [
        "carrier",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("carrier", "carrier", str, is_required=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): carrier
        cic (str): cic *Optional*
        country_code (str): countryCode *Optional*
        is_intra_lata (bool): isIntraLata *Optional*
        is_inter_lata (bool): isInterLata *Optional*
        is_international (bool): isInternational *Optional*
    """

    __slots__: List[str] = [
        "carrier",
        "cic",
        "country_code",
        "is_intra_lata",
        "is_inter_lata",
        "is_international",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("carrier", "carrier", str, is_required=True),
            E("cic", "cic", str),
            E("country_code", "countryCode", str),
            E("is_intra_lata", "isIntraLata", bool),
            E("is_inter_lata", "isInterLata", bool),
            E("is_international", "isInternational", bool),
        )


class SystemProvisioningValidationGetRequest(OCIRequest):
    """
    Request to get the system's provisioning validation attributes.

    The response is either a `SystemProvisioningValidationGetResponse()` or and
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemProvisioningValidationGetRequest14sp2(OCIRequest):
    """
    Request to get the system's provisioning validation attributes.

    The response is either a `SystemProvisioningValidationGetResponse14sp2()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemProvisioningValidationGetRequest22(OCIRequest):
    """
    Request to get the system's provisioning validation attributes.

    The response is either a `SystemProvisioningValidationGetResponse22()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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

    Attributes:
        is_active (bool): isActive *Optional*
        is_network_server_query_active (bool): isNetworkServerQueryActive *Optional*
        timeout_seconds (int): timeoutSeconds *Optional*
        deny_mobility_number_as_redirection_destination (bool):
            denyMobilityNumberAsRedirectionDestination *Optional*
        deny_enterprise_number_as_network_location_destination (bool):
            denyEnterpriseNumberAsNetworkLocationDestination *Optional*
    """

    __slots__: List[str] = [
        "is_active",
        "is_network_server_query_active",
        "timeout_seconds",
        "deny_mobility_number_as_redirection_destination",
        "deny_enterprise_number_as_network_location_destination",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("is_active", "isActive", bool),
            E("is_network_server_query_active", "isNetworkServerQueryActive", bool),
            E("timeout_seconds", "timeoutSeconds", int),
            E(
                "deny_mobility_number_as_redirection_destination",
                "denyMobilityNumberAsRedirectionDestination",
                bool,
            ),
            E(
                "deny_enterprise_number_as_network_location_destination",
                "denyEnterpriseNumberAsNetworkLocationDestination",
                bool,
            ),
        )


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): applicationId
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "application_id",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("application_id", "applicationId", str, is_required=True),
            E("description", "description", str),
        )


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): applicationId
    """

    __slots__: List[str] = [
        "application_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("application_id", "applicationId", str, is_required=True),)


class SystemPushNotificationAllowedApplicationGetListRequest(OCIRequest):
    """
    Request to get the list of allowed push notification applications.

    The response is either `SystemPushNotificationAllowedApplicationGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): applicationId
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "application_id",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("application_id", "applicationId", str, is_required=True),
            E("description", "description", str),
        )


class SystemPushNotificationParametersGetRequest(OCIRequest):
    """
    Request to get the list of push notification system parameters.

    The response is either `SystemPushNotificationParametersGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemPushNotificationParametersModifyRequest(OCIRequest):
    """
    Request to modify push notification system parameters.

    The following elements are only used in AS data mode and ignored in the Amplify data
    mode: subscriptionEventsPerSecond

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        enforce_allowed_application_list (bool): enforceAllowedApplicationList *Optional*
        maximum_registrations_per_user (int): maximumRegistrationsPerUser *Optional*
        maximum_registration_age_days (int): maximumRegistrationAgeDays *Optional*
        new_call_timeout (int): newCallTimeout *Optional*
        subscription_events_per_second (int): subscriptionEventsPerSecond *Optional*
    """

    __slots__: List[str] = [
        "enforce_allowed_application_list",
        "maximum_registrations_per_user",
        "maximum_registration_age_days",
        "new_call_timeout",
        "subscription_events_per_second",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "enforce_allowed_application_list",
                "enforceAllowedApplicationList",
                bool,
            ),
            E("maximum_registrations_per_user", "maximumRegistrationsPerUser", int),
            E("maximum_registration_age_days", "maximumRegistrationAgeDays", int),
            E("new_call_timeout", "newCallTimeout", int),
            E("subscription_events_per_second", "subscriptionEventsPerSecond", int),
        )


class SystemRedundancyParametersGetRequest(OCIRequest):
    """
    Replaced By `SystemRedundancyParametersGetRequest16sp2()` Request to get the list of
    Redundancy system parameters.

    The response is either `SystemRedundancyParametersGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemRedundancyParametersGetRequest16sp2(OCIRequest):
    """
    Request to get the list of Redundancy system parameters.

    The response is either `SystemRedundancyParametersGetResponse16sp2()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemRedundancyParametersModifyRequest(OCIRequest):
    """
    Request to modify Redundancy system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        roll_back_timer_minutes (int): rollBackTimerMinutes *Optional*
        send_sip_option_message_upon_migration (bool): sendSipOptionMessageUponMigration
            *Optional*
    """

    __slots__: List[str] = [
        "roll_back_timer_minutes",
        "send_sip_option_message_upon_migration",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("roll_back_timer_minutes", "rollBackTimerMinutes", int),
            E(
                "send_sip_option_message_upon_migration",
                "sendSipOptionMessageUponMigration",
                bool,
            ),
        )


class SystemResourcePriorityGetRequest(OCIRequest):
    """
    Get the system Resource Priority service attributes.

    The response is either `SystemResourcePriorityGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): sendResourcePriorityToNetwork *Optional*
        resource_priority (str): resourcePriority *Optional*
    """

    __slots__: List[str] = [
        "send_resource_priority_to_network",
        "resource_priority",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "send_resource_priority_to_network",
                "sendResourcePriorityToNetwork",
                bool,
            ),
            E("resource_priority", "resourcePriority", str),
        )


class SystemRoamingNetworkAddRequest(OCIRequest):
    """
    Add a Roaming Network.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        msc_address (str): mscAddress
        network_translation_index (str): networkTranslationIndex *Optional*
    """

    __slots__: List[str] = [
        "msc_address",
        "network_translation_index",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("msc_address", "mscAddress", str, is_required=True),
            E("network_translation_index", "networkTranslationIndex", str),
        )


class SystemRoamingNetworkDeleteRequest(OCIRequest):
    """
    Delete a Roaming Network.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        msc_address (str): mscAddress
    """

    __slots__: List[str] = [
        "msc_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("msc_address", "mscAddress", str, is_required=True),)


class SystemRoamingNetworkModifyRequest(OCIRequest):
    """
    Modify a Roaming Network.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        msc_address (str): mscAddress
        network_translation_index (str): networkTranslationIndex *Optional*
    """

    __slots__: List[str] = [
        "msc_address",
        "network_translation_index",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("msc_address", "mscAddress", str, is_required=True),
            E("network_translation_index", "networkTranslationIndex", str),
        )


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 (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str),)


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 (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str),)


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): name
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "name",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
        )


class SystemRoutePointExternalSystemApplicationControllerAddListRequest(OCIRequest):
    """
    Add an application controller to Route Point External System.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        application_controller (List[str]): applicationController *Optional*
    """

    __slots__: List[str] = [
        "name",
        "application_controller",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("application_controller", "applicationController", str, is_array=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): name
        application_controller (List[str]): applicationController *Optional*
    """

    __slots__: List[str] = [
        "name",
        "application_controller",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("application_controller", "applicationController", str, is_array=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): externalSystem
    """

    __slots__: List[str] = [
        "external_system",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("external_system", "externalSystem", str, is_required=True),)


class SystemRoutePointExternalSystemDeleteRequest(OCIRequest):
    """
    Delete an Route Point External System.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
    """

    __slots__: List[str] = [
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("name", "name", str, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): routePointExternalSystem
    """

    __slots__: List[str] = [
        "route_point_external_system",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "route_point_external_system",
                "routePointExternalSystem",
                str,
                is_required=True,
            ),
        )


class SystemRoutePointExternalSystemModifyRequest(OCIRequest):
    """
    Modify an Route Point External System.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
        )


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): routeName
        net_address (str): netAddress
        port (int): port *Optional*
        transport_protocol (str): transportProtocol
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "route_name",
        "net_address",
        "port",
        "transport_protocol",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("route_name", "routeName", str, is_required=True),
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("transport_protocol", "transportProtocol", str, is_required=True),
            E("description", "description", str),
        )


class SystemRoutingAddRouteRequest(OCIRequest):
    """
    Request to add a route to the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        route_name (str): routeName
    """

    __slots__: List[str] = [
        "route_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("route_name", "routeName", str, is_required=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): digits
        route_name (str): routeName
    """

    __slots__: List[str] = [
        "digits",
        "route_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("digits", "digits", str, is_required=True),
            E("route_name", "routeName", str, is_required=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): routeName
        net_address (str): netAddress
        port (int): port *Optional*
    """

    __slots__: List[str] = [
        "route_name",
        "net_address",
        "port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("route_name", "routeName", str, is_required=True),
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
        )


class SystemRoutingDeleteRouteRequest(OCIRequest):
    """
    Request to delete a route from the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        route_name (str): routeName
    """

    __slots__: List[str] = [
        "route_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("route_name", "routeName", str, is_required=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
    """

    __slots__: List[str] = [
        "digits",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("digits", "digits", str, is_required=True),)


class SystemRoutingGetRequest(OCIRequest):
    """
    Request the system's general routing attributes.

    The response is either a `SystemRoutingGetResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): routeName
    """

    __slots__: List[str] = [
        "route_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("route_name", "routeName", str, is_required=True),)


class SystemRoutingGetRouteListRequest(OCIRequest):
    """
    Request to get a list of routes in the system.

    The response is either a `SystemRoutingGetRouteListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemRoutingGetTranslationListRequest(OCIRequest):
    """
    Request to get the system digit routing table.

    The response is either a `SystemRoutingGetTranslationListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemRoutingModifyRequest(OCIRequest):
    """
    Modifies the system's general routing attributes.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        is_route_round_robin (bool): isRouteRoundRobin *Optional*
        route_timer_seconds (int): routeTimerSeconds *Optional*
        dns_resolved_address_selection_policy (str): dnsResolvedAddressSelectionPolicy
            *Optional*
        stateful_expiration_minutes (int): statefulExpirationMinutes *Optional*
        max_addresses_per_hostname (int): maxAddressesPerHostname *Optional*
        max_addresses_during_setup (int): maxAddressesDuringSetup *Optional*
    """

    __slots__: List[str] = [
        "is_route_round_robin",
        "route_timer_seconds",
        "dns_resolved_address_selection_policy",
        "stateful_expiration_minutes",
        "max_addresses_per_hostname",
        "max_addresses_during_setup",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("is_route_round_robin", "isRouteRoundRobin", bool),
            E("route_timer_seconds", "routeTimerSeconds", int),
            E(
                "dns_resolved_address_selection_policy",
                "dnsResolvedAddressSelectionPolicy",
                str,
            ),
            E("stateful_expiration_minutes", "statefulExpirationMinutes", int),
            E("max_addresses_per_hostname", "maxAddressesPerHostname", int),
            E("max_addresses_during_setup", "maxAddressesDuringSetup", int),
        )


class SystemRoutingModifyRouteDeviceRequest(OCIRequest):
    """
    Request to modify a routing device.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        route_name (str): routeName
        net_address (str): netAddress
        port (int): port *Optional*
        transport_protocol (str): transportProtocol *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "route_name",
        "net_address",
        "port",
        "transport_protocol",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("route_name", "routeName", str, is_required=True),
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("transport_protocol", "transportProtocol", str),
            E("description", "description", str),
        )


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): digits
        route_name (str): routeName *Optional*
    """

    __slots__: List[str] = [
        "digits",
        "route_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("digits", "digits", str, is_required=True),
            E("route_name", "routeName", str),
        )


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 (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("reseller_id", "resellerId", str),)


class SystemRoutingProfileParametersGetRequest(OCIRequest):
    """
    Request to get the list of Routing Profile related system parameters.

    The response is either `SystemRoutingProfileParametersGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemRoutingProfileParametersModifyRequest(OCIRequest):
    """
    Request to modify Routing Profile system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        enable_permissive_routing (bool): enablePermissiveRouting
    """

    __slots__: List[str] = [
        "enable_permissive_routing",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "enable_permissive_routing",
                "enablePermissiveRouting",
                bool,
                is_required=True,
            ),
        )


class SystemRuntimeDataPublicationGetRequest(OCIRequest):
    """
    Get the system call admission control parameters.

    The response is either a `SystemRuntimeDataPublicationGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): enableRuntimeDataSync *Optional*
        runtime_data_sync_interval_in_milli_seconds (int):
            runtimeDataSyncIntervalInMilliSeconds *Optional*
    """

    __slots__: List[str] = [
        "enable_runtime_data_sync",
        "runtime_data_sync_interval_in_milli_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enable_runtime_data_sync", "enableRuntimeDataSync", bool),
            E(
                "runtime_data_sync_interval_in_milli_seconds",
                "runtimeDataSyncIntervalInMilliSeconds",
                int,
            ),
        )


class SystemSIPAddACLEntryRequest14(OCIRequest):
    """
    Add an entry to the SIP access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        transport_protocol (str): transportProtocol
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "transport_protocol",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("transport_protocol", "transportProtocol", str, is_required=True),
            E("description", "description", str),
        )


class SystemSIPAddACLEntryRequest14sp2(OCIRequest):
    """
    Add an entry to the SIP access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        transport_protocol (str): transportProtocol
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "transport_protocol",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("transport_protocol", "transportProtocol", str, is_required=True),
            E("description", "description", str),
        )


class SystemSIPAddContentTypeRequest(OCIRequest):
    """
    Add a content type for the SIP interface.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        content_type (str): contentType
        interface (str): interface
    """

    __slots__: List[str] = [
        "content_type",
        "interface",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("content_type", "contentType", str, is_required=True),
            E("interface", "interface", str, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSIPAuthenticationPasswordRulesGetRequest(OCIRequest):
    """
    Request to get the system level SIP authentication password rule settings.

    The response is either a `SystemSIPAuthenticationPasswordRulesGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): disallowAuthenticationName *Optional*
        disallow_old_password (bool): disallowOldPassword *Optional*
        disallow_reversed_old_password (bool): disallowReversedOldPassword *Optional*
        restrict_min_digits (bool): restrictMinDigits *Optional*
        min_digits (int): minDigits *Optional*
        restrict_min_upper_case_letters (bool): restrictMinUpperCaseLetters *Optional*
        min_upper_case_letters (int): minUpperCaseLetters *Optional*
        restrict_min_lower_case_letters (bool): restrictMinLowerCaseLetters *Optional*
        min_lower_case_letters (int): minLowerCaseLetters *Optional*
        restrict_min_non_alphanumeric_characters (bool):
            restrictMinNonAlphanumericCharacters *Optional*
        min_non_alphanumeric_characters (int): minNonAlphanumericCharacters *Optional*
        min_length (int): minLength *Optional*
        send_permanent_lockout_notification (bool): sendPermanentLockoutNotification
            *Optional*
        permanent_lockout_notify_email_address (str): permanentLockoutNotifyEmailAddress
            *Optional*
        endpoint_authentication_lockout_type (str): endpointAuthenticationLockoutType
            *Optional*
        endpoint_temporary_lockout_threshold (int): endpointTemporaryLockoutThreshold
            *Optional*
        endpoint_wait_algorithm (str): endpointWaitAlgorithm *Optional*
        endpoint_lockout_fixed_minutes (str): endpointLockoutFixedMinutes *Optional*
        endpoint_permanent_lockout_threshold (int): endpointPermanentLockoutThreshold
            *Optional*
        trunk_group_authentication_lockout_type (str): trunkGroupAuthenticationLockoutType
            *Optional*
        trunk_group_temporary_lockout_threshold (int): trunkGroupTemporaryLockoutThreshold
            *Optional*
        trunk_group_wait_algorithm (str): trunkGroupWaitAlgorithm *Optional*
        trunk_group_lockout_fixed_minutes (str): trunkGroupLockoutFixedMinutes *Optional*
        trunk_group_permanent_lockout_threshold (int): trunkGroupPermanentLockoutThreshold
            *Optional*
    """

    __slots__: List[str] = [
        "disallow_authentication_name",
        "disallow_old_password",
        "disallow_reversed_old_password",
        "restrict_min_digits",
        "min_digits",
        "restrict_min_upper_case_letters",
        "min_upper_case_letters",
        "restrict_min_lower_case_letters",
        "min_lower_case_letters",
        "restrict_min_non_alphanumeric_characters",
        "min_non_alphanumeric_characters",
        "min_length",
        "send_permanent_lockout_notification",
        "permanent_lockout_notify_email_address",
        "endpoint_authentication_lockout_type",
        "endpoint_temporary_lockout_threshold",
        "endpoint_wait_algorithm",
        "endpoint_lockout_fixed_minutes",
        "endpoint_permanent_lockout_threshold",
        "trunk_group_authentication_lockout_type",
        "trunk_group_temporary_lockout_threshold",
        "trunk_group_wait_algorithm",
        "trunk_group_lockout_fixed_minutes",
        "trunk_group_permanent_lockout_threshold",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("disallow_authentication_name", "disallowAuthenticationName", bool),
            E("disallow_old_password", "disallowOldPassword", bool),
            E("disallow_reversed_old_password", "disallowReversedOldPassword", bool),
            E("restrict_min_digits", "restrictMinDigits", bool),
            E("min_digits", "minDigits", int),
            E("restrict_min_upper_case_letters", "restrictMinUpperCaseLetters", bool),
            E("min_upper_case_letters", "minUpperCaseLetters", int),
            E("restrict_min_lower_case_letters", "restrictMinLowerCaseLetters", bool),
            E("min_lower_case_letters", "minLowerCaseLetters", int),
            E(
                "restrict_min_non_alphanumeric_characters",
                "restrictMinNonAlphanumericCharacters",
                bool,
            ),
            E("min_non_alphanumeric_characters", "minNonAlphanumericCharacters", int),
            E("min_length", "minLength", int),
            E(
                "send_permanent_lockout_notification",
                "sendPermanentLockoutNotification",
                bool,
            ),
            E(
                "permanent_lockout_notify_email_address",
                "permanentLockoutNotifyEmailAddress",
                str,
            ),
            E(
                "endpoint_authentication_lockout_type",
                "endpointAuthenticationLockoutType",
                str,
            ),
            E(
                "endpoint_temporary_lockout_threshold",
                "endpointTemporaryLockoutThreshold",
                int,
            ),
            E("endpoint_wait_algorithm", "endpointWaitAlgorithm", str),
            E("endpoint_lockout_fixed_minutes", "endpointLockoutFixedMinutes", str),
            E(
                "endpoint_permanent_lockout_threshold",
                "endpointPermanentLockoutThreshold",
                int,
            ),
            E(
                "trunk_group_authentication_lockout_type",
                "trunkGroupAuthenticationLockoutType",
                str,
            ),
            E(
                "trunk_group_temporary_lockout_threshold",
                "trunkGroupTemporaryLockoutThreshold",
                int,
            ),
            E("trunk_group_wait_algorithm", "trunkGroupWaitAlgorithm", str),
            E(
                "trunk_group_lockout_fixed_minutes",
                "trunkGroupLockoutFixedMinutes",
                str,
            ),
            E(
                "trunk_group_permanent_lockout_threshold",
                "trunkGroupPermanentLockoutThreshold",
                int,
            ),
        )


class SystemSIPDeleteACLEntryRequest(OCIRequest):
    """
    Delete an entry from the SIP access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=True),)


class SystemSIPDeleteACLEntryRequest14sp2(OCIRequest):
    """
    Delete an entry from the SIP access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=True),)


class SystemSIPDeleteContentTypeRequest(OCIRequest):
    """
    Delete a content type for the SIP interface.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        content_type (str): contentType
    """

    __slots__: List[str] = [
        "content_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("content_type", "contentType", str, is_required=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): deviceType
        file_format (str): fileFormat
        extended_capture_on_upload_from_device (bool): extendedCaptureOnUploadFromDevice
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
        "extended_capture_on_upload_from_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E(
                "extended_capture_on_upload_from_device",
                "extendedCaptureOnUploadFromDevice",
                bool,
                is_required=True,
            ),
        )


class SystemSIPDeviceTypeDeleteRequest(OCIRequest):
    """
    Request to delete a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeFileDeleteRequest(OCIRequest):
    """
    Request to delete a sip device type file.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeFileDeleteRequest14sp8()`

    Attributes:
        device_type (str): deviceType
        file_type (str): fileType
    """

    __slots__: List[str] = [
        "device_type",
        "file_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_type", "fileType", str, is_required=True),
        )


class SystemSIPDeviceTypeFileDeleteRequest14sp8(OCIRequest):
    """
    Request to delete a sip device type file.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class SystemSIPDeviceTypeFileGetListRequest(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 `SystemSIPDeviceTypeFileGetListResponse()` or
    `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeFileGetListRequest14sp8()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=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): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeFileGetRequest(OCIRequest):
    """
    Request to get a sip device type file.

    The response is either `SystemSIPDeviceTypeFileGetResponse()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeFileGetRequest14sp8()`

    Attributes:
        device_type (str): deviceType
        file_type (str): fileType
    """

    __slots__: List[str] = [
        "device_type",
        "file_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_type", "fileType", str, is_required=True),
        )


class SystemSIPDeviceTypeFileGetRequest14sp8(OCIRequest):
    """
    Request to get a sip device type file.

    The response is either `SystemSIPDeviceTypeFileGetResponse14sp8()` or
    `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class SystemSIPDeviceTypeFileGetRequest16sp1(OCIRequest):
    """
    Replaced By `SystemSIPDeviceTypeFileGetRequest18()`.

    Request to get a sip device type file.

    The response is either `SystemSIPDeviceTypeFileGetResponse16sp1()` or
    `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class SystemSIPDeviceTypeFileGetRequest18(OCIRequest):
    """
    Request to get a sip device type file.

    The response is either `SystemSIPDeviceTypeFileGetResponse18()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class SystemSIPDeviceTypeFileGetRequest19(OCIRequest):
    """
    Request to get a sip device type file.

    The response is either `SystemSIPDeviceTypeFileGetResponse19()` or `ErrorResponse()`.
    Replaced by: `SystemSIPDeviceTypeFileGetRequest20()`

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class SystemSIPDeviceTypeFileGetRequest20(OCIRequest):
    """
    Request to get a sip device type file.

    The response is either `SystemSIPDeviceTypeFileGetResponse20()` or `ErrorResponse()`.
    Replaced by: SystemSIPDeviceTypeFileGetRequest20Sp1

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class SystemSIPDeviceTypeFileGetRequest21sp1(OCIRequest):
    """
    Request to get a sip device type file.

    The response is either `SystemSIPDeviceTypeFileGetResponse21sp1()` or
    `ErrorResponse()`. Replaced by: `SystemSIPDeviceTypeFileGetRequest22()` in AS data
    mode.

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class SystemSIPDeviceTypeFileGetRequest22(OCIRequest):
    """
    Request to get a sip device type file.

    The response is either `SystemSIPDeviceTypeFileGetResponse22()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
        )


class SystemSIPDeviceTypeGetRequest(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest14sp1(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse14sp1()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest14sp2(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse14sp2()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeGetRequest14sp3()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest14sp3(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse14sp3()` or `ErrorResponse()`.
    Replaced by: `SystemSIPDeviceTypeGetRequest14sp6()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest14sp6(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse14sp6()` or `ErrorResponse()`.

    Replaced By : `SystemSIPDeviceTypeGetRequest15()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest15(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse15()` or `ErrorResponse()`.

    Replaced By : `SystemSIPDeviceTypeGetRequest16()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest16(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse16()` or `ErrorResponse()`.
    Replaced by: `SystemSIPDeviceTypeGetRequest16sp1()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest16sp1(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse16sp1()` or `ErrorResponse()`.
    Replaced by: `SystemSIPDeviceTypeGetRequest17()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest17(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse17()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest17sp4(OCIRequest):
    """
    Replaced By `SystemSIPDeviceTypeGetRequest18()`.

    Request to get a sip device type.  See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse17sp4()` or `ErrorResponse()`.
    Replaced by: `SystemSIPDeviceTypeGetRequest18()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest18(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse18()` or `ErrorResponse()`.
    Replaced by: `SystemSIPDeviceTypeGetRequest19()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest18sp1(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse18sp1()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest19(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse19()` or `ErrorResponse()`.
    Replaced by: `SystemSIPDeviceTypeGetRequest19sp1()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest19sp1(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse19sp1()` or `ErrorResponse()`.
    Replaced by: `SystemSIPDeviceTypeGetRequest20()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest20(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse20()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest20sp1(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse20()` or `ErrorResponse()`.
    Replaced by: SystemSIPDeviceTypeGetRequest21sp1V2.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest21(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse21()` or `ErrorResponse()`.
    Replaced by: SystemSIPDeviceTypeGetRequest21Sp1

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest21sp1(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse21sp1()` or `ErrorResponse()`.
    Replaced by: SystemSIPDeviceTypeGetRequest21sp1V2

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22()` or `ErrorResponse()`.
    Deprecated by: `SystemSIPDeviceTypeGetRequest22V2()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22V10(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22V10()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeGetRequest23V6()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22V11(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22V11()` or `ErrorResponse()`.
    Replaced by `SystemSIPDeviceTypeGetRequest23V7()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22V12(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22V12()` or `ErrorResponse()`.
    Replaced by `SystemSIPDeviceTypeGetRequest23V8()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22V13(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22V13()` or `ErrorResponse()`.
    Replaced by: `SystemSIPDeviceTypeGetRequest23V9()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22V2(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22V2()` or `ErrorResponse()`.
    Deprecated by `SystemSIPDeviceTypeGetRequest22V3()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22V3(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22V3()` or `ErrorResponse()`.
    Deprecated by `SystemSIPDeviceTypeGetRequest22V4()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22V4(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22V4()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22V5(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22V5()` or `ErrorResponse()`.
    Replaced by: `SystemDeviceTypeGetRequest22V13()` in XS data mode.  Replaced by:
    `SystemDeviceTypeGetRequest22V6()` in AS data mode.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22V6(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22V6()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeGetRequest23V2()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22V7(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22V7()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeGetRequest23V2()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22V8(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22V8()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeGetRequest23V4()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest22V9(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse22V8()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeGetRequest23V4()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest23(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse23()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeGetRequest23V2()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest23V2(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse23V2()` or `ErrorResponse()`.
    Replaced by: `SystemSIPDeviceTypeGetRequest23V3()` in AS data mode.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest23V3(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse23V3()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeGetRequest23V4()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest23V4(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse23V4()` or `ErrorResponse()`.
    Replaced by: `SystemSIPDeviceTypeGetRequest23V5()` in AS data mode.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest23V5(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse23V5()` or `ErrorResponse()`.
    Replaced by `SystemSIPDeviceTypeGetRequest23V6()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest23V6(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse23V6()` or `ErrorResponse()`.
    Replaced by `SystemSIPDeviceTypeGetRequest23V7()`

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest23V7(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse23V7()` or `ErrorResponse()`.
    Replaced by SystemSIPDeviceTypeGetResquest23V8

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest23V8(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse23V8()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=True),)


class SystemSIPDeviceTypeGetRequest23V9(OCIRequest):
    """
    Request to get a sip device type.

    See Also: `SystemDeviceTypeGetRequest()`

    The response is either `SystemSIPDeviceTypeGetResponse23V9()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=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): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=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): deviceType
    """

    __slots__: List[str] = [
        "device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_type", "deviceType", str, is_required=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): deviceType
        supports_polycom_phone_services (bool): supportsPolycomPhoneServices *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "supports_polycom_phone_services",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("supports_polycom_phone_services", "supportsPolycomPhoneServices", bool),
        )


class SystemSIPDiversionReasonGetRequest(OCIRequest):
    """
    Request to get the list of SIP Diversion Cause values.

    The response is either a `SystemSIPDiversionReasonGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): diversionReason
        cause_value (str): causeValue
    """

    __slots__: List[str] = [
        "diversion_reason",
        "cause_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("diversion_reason", "diversionReason", str, is_required=True),
            E("cause_value", "causeValue", str, is_required=True),
        )


class SystemSIPGetACLListRequest(OCIRequest):
    """
    Get the SIP access control list.

    The response is either `SystemSIPGetACLListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSIPGetContentTypeListRequest(OCIRequest):
    """
    Get the content type list for the SIP interface.

    The response is either `SystemSIPGetContentTypeListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSIPModifyACLEntryRequest(OCIRequest):
    """
    Modify an entry from the SIP access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        transport_protocol (str): transportProtocol *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "transport_protocol",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("transport_protocol", "transportProtocol", str),
            E("description", "description", str),
        )


class SystemSIPModifyACLEntryRequest14sp2(OCIRequest):
    """
    Modify an entry from the SIP access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        transport_protocol (str): transportProtocol *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "transport_protocol",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("transport_protocol", "transportProtocol", str),
            E("description", "description", str),
        )


class SystemSIPModifyContentTypeRequest(OCIRequest):
    """
    Modify an content type for the SIP interface.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        content_type (str): contentType
        interface (str): interface *Optional*
    """

    __slots__: List[str] = [
        "content_type",
        "interface",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("content_type", "contentType", str, is_required=True),
            E("interface", "interface", str),
        )


class SystemSMDIAddACLEntryRequest(OCIRequest):
    """
    Add an entry to the SMDI access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


class SystemSMDIAddACLEntryRequest14sp2(OCIRequest):
    """
    Add an entry to the SMDI access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


class SystemSMDIDeleteACLEntryRequest(OCIRequest):
    """
    Delete an entry from the SMDI access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=True),)


class SystemSMDIDeleteACLEntryRequest14sp2(OCIRequest):
    """
    Delete an entry from the SMDI access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=True),)


class SystemSMDIGetACLListRequest(OCIRequest):
    """
    Get the SMDI access control list.

    The response is either `SystemSMDIGetACLListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): deviceName
        net_address (str): netAddress
        port (int): port
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "net_address",
        "port",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int, is_required=True),
            E("description", "description", str),
        )


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): routeDestination
        device_name (List[str]): deviceName
    """

    __slots__: List[str] = [
        "route_destination",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("route_destination", "routeDestination", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True, is_array=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): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=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): routeDestination
    """

    __slots__: List[str] = [
        "route_destination",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("route_destination", "routeDestination", str, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSMDIMessageDeskGetServerRouteListRequest(OCIRequest):
    """
    Request to get a list of SMDI Servers routes in the system.

    The response is either a `SystemSMDIMessageDeskGetServerRouteListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): deviceName
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "net_address",
        "port",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E("description", "description", str),
        )


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): routeDestination
        device_name_list (OCI.deviceNameList): deviceNameList *Optional*
    """

    __slots__: List[str] = [
        "route_destination",
        "device_name_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("route_destination", "routeDestination", str, is_required=True),
            E("device_name_list", "deviceNameList", str, is_complex=True),  # unknown
        )


class SystemSMDIModifyACLEntryRequest(OCIRequest):
    """
    Modify an entry from the SMDI access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


class SystemSMDIModifyACLEntryRequest14sp2(OCIRequest):
    """
    Modify an entry from the SMDI access control list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        net_address (str): netAddress
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("description", "description", str),
        )


class SystemSMDIParametersGetRequest(OCIRequest):
    """
    Request to get the list of SMDI system parameters.

    The response is either `SystemSMDIParametersGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSMDIParametersModifyRequest(OCIRequest):
    """
    Request to modify SMDI system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        enable_smdi (bool): enableSMDI *Optional*
        listening_port (int): listeningPort *Optional*
        max_connections (int): maxConnections *Optional*
    """

    __slots__: List[str] = [
        "enable_smdi",
        "listening_port",
        "max_connections",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enable_smdi", "enableSMDI", bool),
            E("listening_port", "listeningPort", int),
            E("max_connections", "maxConnections", int),
        )


class SystemSMPPGetRequest(OCIRequest):
    """
    Request the system level data associated with SMPP external interface.

    The response is either a `SystemSMPPGetResponse()` or an `ErrorResponse()`.

    Replaced By: `SystemSMPPGetRequest14sp5()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSMPPGetRequest14sp5(OCIRequest):
    """
    Request the system level data associated with SMPP external interface.

    The response is either a `SystemSMPPGetResponse14sp5()` or an `ErrorResponse()`.
    Replaced by: `SystemSMPPGetRequest21()` in AS data mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSMPPGetRequest21(OCIRequest):
    """
    Request the system level data associated with SMPP external interface.

    The response is either a `SystemSMPPGetResponse21()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSMPPGetRequest22(OCIRequest):
    """
    Request the system level data associated with SMPP external interface.

    The response is either a `SystemSMPPGetResponse21()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (str): primarySMPPServerNetAddress *Optional*
        primary_smpp_port (int): primarySMPPPort *Optional*
        secondary_smpp_server_net_address (str): secondarySMPPServerNetAddress *Optional*
        secondary_smpp_port (int): secondarySMPPPort *Optional*
        system_id (str): systemId *Optional*
        password (str): password *Optional*
        version (str): version *Optional*
        system_type (str): systemType *Optional*
        enable_mwi_customized_message (bool): enableMWICustomizedMessage *Optional*
        support_message_payload (bool): supportMessagePayload *Optional*
        max_short_message_length (int): maxShortMessageLength *Optional*
        use_gsm_mwi_ucs2_encoding (bool): useGsmMwiUcs2Encoding *Optional*
        include_only_new_message_count (bool): includeOnlyNewMessageCount *Optional*
    """

    __slots__: List[str] = [
        "primary_smpp_server_net_address",
        "primary_smpp_port",
        "secondary_smpp_server_net_address",
        "secondary_smpp_port",
        "system_id",
        "password",
        "version",
        "system_type",
        "enable_mwi_customized_message",
        "support_message_payload",
        "max_short_message_length",
        "use_gsm_mwi_ucs2_encoding",
        "include_only_new_message_count",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("primary_smpp_server_net_address", "primarySMPPServerNetAddress", str),
            E("primary_smpp_port", "primarySMPPPort", int),
            E(
                "secondary_smpp_server_net_address",
                "secondarySMPPServerNetAddress",
                str,
            ),
            E("secondary_smpp_port", "secondarySMPPPort", int),
            E("system_id", "systemId", str),
            E("password", "password", str),
            E("version", "version", str),
            E("system_type", "systemType", str),
            E("enable_mwi_customized_message", "enableMWICustomizedMessage", bool),
            E("support_message_payload", "supportMessagePayload", bool),
            E("max_short_message_length", "maxShortMessageLength", int),
            E("use_gsm_mwi_ucs2_encoding", "useGsmMwiUcs2Encoding", bool),
            E("include_only_new_message_count", "includeOnlyNewMessageCount", bool),
        )


class SystemScheduleAddRequest(OCIRequest):
    """
    Add a system schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        schedule_name (str): scheduleName
        schedule_type (str): scheduleType
    """

    __slots__: List[str] = [
        "schedule_name",
        "schedule_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("schedule_name", "scheduleName", str, is_required=True),
            E("schedule_type", "scheduleType", str, is_required=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 (str): scheduleType *Optional*
    """

    __slots__: List[str] = [
        "schedule_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("schedule_type", "scheduleType", str),)


class SystemSecurityClassificationDeleteClassificationRequest(OCIRequest):
    """
    Delete a System Security Classification The response is either a `SuccessResponse()`
    or an `ErrorResponse()`.


    Attributes:
        security_classification_name (str): securityClassificationName
    """

    __slots__: List[str] = [
        "security_classification_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "security_classification_name",
                "securityClassificationName",
                str,
                is_required=True,
            ),
        )


class SystemSecurityClassificationGetClassificationRequest(OCIRequest):
    """
    Get a system Security Classification.

    The response is either `SystemSecurityClassificationGetClassificationResponse()` or
    `ErrorResponse()`.

    Attributes:
        security_classification_name (str): securityClassificationName
    """

    __slots__: List[str] = [
        "security_classification_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "security_classification_name",
                "securityClassificationName",
                str,
                is_required=True,
            ),
        )


class SystemSecurityClassificationGetRequest(OCIRequest):
    """
    Get a system Security Classifications parameters.

    The response is either `SystemSecurityClassificationGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSecurityClassificationGetRequest21(OCIRequest):
    """
    Get system Security Classifications parameters.

    The response is either `SystemSecurityClassificationGetResponse21()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (int): meetMeAnncThreshold *Optional*
        play_trunk_user_security_classification_announcement (bool):
            playTrunkUserSecurityClassificationAnnouncement *Optional*
        security_classification_name (List[str]): securityClassificationName *Optional*
    """

    __slots__: List[str] = [
        "meet_me_annc_threshold",
        "play_trunk_user_security_classification_announcement",
        "security_classification_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("meet_me_annc_threshold", "meetMeAnncThreshold", int),
            E(
                "play_trunk_user_security_classification_announcement",
                "playTrunkUserSecurityClassificationAnnouncement",
                bool,
            ),
            E(
                "security_classification_name",
                "securityClassificationName",
                str,
                is_array=True,
            ),
        )


class SystemSelectiveServicesGetRequest(OCIRequest):
    """
    Request the system level data associated with Selective Services.

    The response is either a `SystemSelectiveServicesGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSelectiveServicesGetRequest18sp1(OCIRequest):
    """
    Request the system level data associated with Selective Services.

    The response is either a `SystemSelectiveServicesGetResponse18sp1()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSelectiveServicesGetRequest22(OCIRequest):
    """
    Request the system level data associated with Selective Services.

    The response is either a `SystemSelectiveServicesGetResponse22()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSelectiveServicesModifyRequest(OCIRequest):
    """
    Modify the system level data associated with `SystemSelectiveServicesRequest()`.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        schedule_combination (str): scheduleCombination *Optional*
        screen_private_number (bool): screenPrivateNumber *Optional*
        empty_holiday_schedule_is_out_of_schedule (bool):
            emptyHolidayScheduleIsOutOfSchedule *Optional*
    """

    __slots__: List[str] = [
        "schedule_combination",
        "screen_private_number",
        "empty_holiday_schedule_is_out_of_schedule",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("schedule_combination", "scheduleCombination", str),
            E("screen_private_number", "screenPrivateNumber", bool),
            E(
                "empty_holiday_schedule_is_out_of_schedule",
                "emptyHolidayScheduleIsOutOfSchedule",
                bool,
            ),
        )


class SystemServerAddressesGetRequest(OCIRequest):
    """
    Request to get the list of Server Addresses.

    The response is either `SystemServerAddressesGetResponse()` or `ErrorResponse()`. See
    also: `PrimaryInfoGetRequest()` `PublicClusterGetFullyQualifiedDomainNameRequest()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemServerAddressesModifyRequest(OCIRequest):
    """
    Request to modify Server Addresses.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        web_server_cluster_public_fqdn (str): webServerClusterPublicFQDN *Optional*
        application_server_cluster_primary_public_fqdn (str):
            applicationServerClusterPrimaryPublicFQDN *Optional*
        application_server_cluster_secondary_public_fqdn (str):
            applicationServerClusterSecondaryPublicFQDN *Optional*
        application_server_cluster_primary_private_fqdn (str):
            applicationServerClusterPrimaryPrivateFQDN *Optional*
        application_server_cluster_secondary_private_fqdn (str):
            applicationServerClusterSecondaryPrivateFQDN *Optional*
    """

    __slots__: List[str] = [
        "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",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("web_server_cluster_public_fqdn", "webServerClusterPublicFQDN", str),
            E(
                "application_server_cluster_primary_public_fqdn",
                "applicationServerClusterPrimaryPublicFQDN",
                str,
            ),
            E(
                "application_server_cluster_secondary_public_fqdn",
                "applicationServerClusterSecondaryPublicFQDN",
                str,
            ),
            E(
                "application_server_cluster_primary_private_fqdn",
                "applicationServerClusterPrimaryPrivateFQDN",
                str,
            ),
            E(
                "application_server_cluster_secondary_private_fqdn",
                "applicationServerClusterSecondaryPrivateFQDN",
                str,
            ),
        )


class SystemServiceActivationAccessCodeGetRequest(OCIRequest):
    """
    Get the Service Activation Access Code system parameters.

    The response is either a `SystemServiceActivationAccessCodeGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemServiceActivationAccessCodeModifyRequest(OCIRequest):
    """
    Request to modify Service Activation Access Code system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        is_active (bool): isActive *Optional*
        terminating_access_code (str): terminatingAccessCode *Optional*
        redirecting_access_code (str): redirectingAccessCode *Optional*
        click_to_dial_access_code (str): clickToDialAccessCode *Optional*
    """

    __slots__: List[str] = [
        "is_active",
        "terminating_access_code",
        "redirecting_access_code",
        "click_to_dial_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("is_active", "isActive", bool),
            E("terminating_access_code", "terminatingAccessCode", str),
            E("redirecting_access_code", "redirectingAccessCode", str),
            E("click_to_dial_access_code", "clickToDialAccessCode", str),
        )


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): serviceName
    """

    __slots__: List[str] = [
        "service_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_name", "serviceName", str, is_required=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): serviceCode
        description (str): description
    """

    __slots__: List[str] = [
        "service_code",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_code", "serviceCode", str, is_required=True),
            E("description", "description", str, is_required=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): serviceCode
    """

    __slots__: List[str] = [
        "service_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_code", "serviceCode", str, is_required=True),)


class SystemServiceCodeModifyRequest(OCIRequest):
    """
    Request to modify service code.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_code (str): serviceCode
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "service_code",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_code", "serviceCode", str, is_required=True),
            E("description", "description", str),
        )


class SystemServicePackMigrationGetRequest(OCIRequest):
    """
    Get system level Service Pack Migration parameters.

    The response is either a `SystemServicePackMigrationGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (int): maxSimultaneousMigrationTasks *Optional*
    """

    __slots__: List[str] = [
        "max_simultaneous_migration_tasks",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("max_simultaneous_migration_tasks", "maxSimultaneousMigrationTasks", int),
        )


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): serviceType
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "service_type",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_type", "serviceType", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
        )


class SystemSessionAdmissionControlGetRequest(OCIRequest):
    """
    Get the session admission control settings for the system.

    The response is either a `SystemSessionAdmissionControlGetResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemSessionAdmissionControlGetRequest21sp1()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSessionAdmissionControlGetRequest21sp1(OCIRequest):
    """
    Get the session admission control settings for the system.

    The response is either a `SystemSessionAdmissionControlGetResponse21sp1()` or an
    `ErrorResponse()`. Replaced by: `SystemSessionAdmissionControlGetRequest22()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSessionAdmissionControlGetRequest22(OCIRequest):
    """
    Get the session admission control settings for the system.

    The response is either a `SystemSessionAdmissionControlGetResponse22()` or an
    `ErrorResponse()`. Replaced by: `SystemSessionAdmissionControlGetRequest22V2()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSessionAdmissionControlGetRequest22V2(OCIRequest):
    """
    Get the session admission control settings for the system.

    The response is either a `SystemSessionAdmissionControlGetResponse22V2()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): countLongConnectionsToMediaServer
            *Optional*
        sac_handling_for_mo_h (str): sacHandlingForMoH *Optional*
        block_vm_deposit_due_to_sac_limits (bool): blockVMDepositDueToSACLimits *Optional*
        sac_codec_selection_policy (str): sacCodecSelectionPolicy *Optional*
        count_call_to_mobile_number_for_sac_subscriber (bool):
            countCallToMobileNumberForSACSubscriber *Optional*
        count_bw_anywhere_for_sac_subscriber (bool): countBWAnywhereForSACSubscriber
            *Optional*
        count_ro_for_sac_subscriber (bool): countROForSACSubscriber *Optional*
        exclude_bw_mobility_for_sac_subscriber (bool): excludeBWMobilityForSACSubscriber
            *Optional*
        enable_holdover_of_highwater_session_counts (bool):
            enableHoldoverOfHighwaterSessionCounts *Optional*
        holdover_period_minutes (str): holdoverPeriodMinutes *Optional*
        time_zone_offset_minutes (str): timeZoneOffsetMinutes *Optional*
    """

    __slots__: List[str] = [
        "count_long_connections_to_media_server",
        "sac_handling_for_mo_h",
        "block_vm_deposit_due_to_sac_limits",
        "sac_codec_selection_policy",
        "count_call_to_mobile_number_for_sac_subscriber",
        "count_bw_anywhere_for_sac_subscriber",
        "count_ro_for_sac_subscriber",
        "exclude_bw_mobility_for_sac_subscriber",
        "enable_holdover_of_highwater_session_counts",
        "holdover_period_minutes",
        "time_zone_offset_minutes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "count_long_connections_to_media_server",
                "countLongConnectionsToMediaServer",
                bool,
            ),
            E("sac_handling_for_mo_h", "sacHandlingForMoH", str),
            E(
                "block_vm_deposit_due_to_sac_limits",
                "blockVMDepositDueToSACLimits",
                bool,
            ),
            E("sac_codec_selection_policy", "sacCodecSelectionPolicy", str),
            E(
                "count_call_to_mobile_number_for_sac_subscriber",
                "countCallToMobileNumberForSACSubscriber",
                bool,
            ),
            E(
                "count_bw_anywhere_for_sac_subscriber",
                "countBWAnywhereForSACSubscriber",
                bool,
            ),
            E("count_ro_for_sac_subscriber", "countROForSACSubscriber", bool),
            E(
                "exclude_bw_mobility_for_sac_subscriber",
                "excludeBWMobilityForSACSubscriber",
                bool,
            ),
            E(
                "enable_holdover_of_highwater_session_counts",
                "enableHoldoverOfHighwaterSessionCounts",
                bool,
            ),
            E("holdover_period_minutes", "holdoverPeriodMinutes", str),
            E("time_zone_offset_minutes", "timeZoneOffsetMinutes", str),
        )


class SystemSessionAuditGetRequest(OCIRequest):
    """
    Request the system level data associated with session audit.

    The response is either a `SystemSessionAuditGetResponse()` or an `ErrorResponse()`.

    Replaced By: `SystemSessionAuditGetRequest14sp3()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSessionAuditGetRequest14sp3(OCIRequest):
    """
    Request the system level data associated with session audit.

    The response is either a `SystemSessionAuditGetResponse14sp3()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSessionAuditGetRequest17sp3(OCIRequest):
    """
    Request the system level data associated with session audit.

    The response is either a `SystemSessionAuditGetResponse17sp3()` or an
    `ErrorResponse()`. Replaced by: `SystemSessionAuditGetRequest23()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSessionAuditGetRequest23(OCIRequest):
    """
    Request the system level data associated with session audit.

    The response is either a `SystemSessionAuditGetResponse23()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSessionAuditModifyRequest(OCIRequest):
    """
    Modify the system level data associated with session sudit.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `SystemSessionAuditModifyRequest14sp3()`

    Attributes:
        is_active (bool): isActive *Optional*
        interval_seconds (int): intervalSeconds *Optional*
        timeout_period_seconds (int): timeoutPeriodSeconds *Optional*
    """

    __slots__: List[str] = [
        "is_active",
        "interval_seconds",
        "timeout_period_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("is_active", "isActive", bool),
            E("interval_seconds", "intervalSeconds", int),
            E("timeout_period_seconds", "timeoutPeriodSeconds", int),
        )


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 (bool): isAuditActive *Optional*
        audit_interval_seconds (int): auditIntervalSeconds *Optional*
        audit_timeout_seconds (int): auditTimeoutSeconds *Optional*
        release_call_on_audit_failure (bool): releaseCallOnAuditFailure *Optional*
        is_sip_refresh_allowed_on_audit (bool): isSIPRefreshAllowedOnAudit *Optional*
        allow_update_for_sip_refresh (bool): allowUpdateForSIPRefresh *Optional*
        is_sip_session_timer_active (bool): isSIPSessionTimerActive *Optional*
        sip_session_expires_minimum_seconds (int): sipSessionExpiresMinimumSeconds
            *Optional*
        enforce_sip_session_expires_maximum (bool): enforceSIPSessionExpiresMaximum
            *Optional*
        sip_session_expires_maximum_seconds (int): sipSessionExpiresMaximumSeconds
            *Optional*
        sip_session_expires_timer_seconds (int): sipSessionExpiresTimerSeconds *Optional*
        always_use_session_timer_when_supported (bool): alwaysUseSessionTimerWhenSupported
            *Optional*
        preferred_session_timer_refresher (str): preferredSessionTimerRefresher *Optional*
        enable_emergency_call_alarm_timer (bool): enableEmergencyCallAlarmTimer *Optional*
        emergency_call_alarm_minutes (int): emergencyCallAlarmMinutes *Optional*
        enable_emergency_call_cleanup_timer (bool): enableEmergencyCallCleanupTimer
            *Optional*
        emergency_call_cleanup_minutes (int): emergencyCallCleanupMinutes *Optional*
        always_allow_refresh_for_ms (bool): alwaysAllowRefreshForMS *Optional*
        ms_audit_interval_seconds (int): msAuditIntervalSeconds *Optional*
    """

    __slots__: List[str] = [
        "is_audit_active",
        "audit_interval_seconds",
        "audit_timeout_seconds",
        "release_call_on_audit_failure",
        "is_sip_refresh_allowed_on_audit",
        "allow_update_for_sip_refresh",
        "is_sip_session_timer_active",
        "sip_session_expires_minimum_seconds",
        "enforce_sip_session_expires_maximum",
        "sip_session_expires_maximum_seconds",
        "sip_session_expires_timer_seconds",
        "always_use_session_timer_when_supported",
        "preferred_session_timer_refresher",
        "enable_emergency_call_alarm_timer",
        "emergency_call_alarm_minutes",
        "enable_emergency_call_cleanup_timer",
        "emergency_call_cleanup_minutes",
        "always_allow_refresh_for_ms",
        "ms_audit_interval_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("is_audit_active", "isAuditActive", bool),
            E("audit_interval_seconds", "auditIntervalSeconds", int),
            E("audit_timeout_seconds", "auditTimeoutSeconds", int),
            E("release_call_on_audit_failure", "releaseCallOnAuditFailure", bool),
            E("is_sip_refresh_allowed_on_audit", "isSIPRefreshAllowedOnAudit", bool),
            E("allow_update_for_sip_refresh", "allowUpdateForSIPRefresh", bool),
            E("is_sip_session_timer_active", "isSIPSessionTimerActive", bool),
            E(
                "sip_session_expires_minimum_seconds",
                "sipSessionExpiresMinimumSeconds",
                int,
            ),
            E(
                "enforce_sip_session_expires_maximum",
                "enforceSIPSessionExpiresMaximum",
                bool,
            ),
            E(
                "sip_session_expires_maximum_seconds",
                "sipSessionExpiresMaximumSeconds",
                int,
            ),
            E(
                "sip_session_expires_timer_seconds",
                "sipSessionExpiresTimerSeconds",
                int,
            ),
            E(
                "always_use_session_timer_when_supported",
                "alwaysUseSessionTimerWhenSupported",
                bool,
            ),
            E(
                "preferred_session_timer_refresher",
                "preferredSessionTimerRefresher",
                str,
            ),
            E(
                "enable_emergency_call_alarm_timer",
                "enableEmergencyCallAlarmTimer",
                bool,
            ),
            E("emergency_call_alarm_minutes", "emergencyCallAlarmMinutes", int),
            E(
                "enable_emergency_call_cleanup_timer",
                "enableEmergencyCallCleanupTimer",
                bool,
            ),
            E("emergency_call_cleanup_minutes", "emergencyCallCleanupMinutes", int),
            E("always_allow_refresh_for_ms", "alwaysAllowRefreshForMS", bool),
            E("ms_audit_interval_seconds", "msAuditIntervalSeconds", int),
        )


class SystemShInterfaceParametersGetRequest(OCIRequest):
    """
    Retrieves the Sh Interface system parameters.

    The response is either a `SystemShInterfaceParametersGetResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemShInterfaceParametersGetRequest17()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemShInterfaceParametersGetRequest17(OCIRequest):
    """
    Retrieves the Sh Interface system parameters.

    The response is either a `SystemShInterfaceParametersGetResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemShInterfaceParametersModifyRequest(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()`. Replaced by:
    `SystemShInterfaceParametersModifyRequest17()`

    Attributes:
        hss_realm (str): hssRealm *Optional*
        request_timeout_seconds (int): requestTimeoutSeconds *Optional*
        public_identity_refresh_delay_seconds (int): publicIdentityRefreshDelaySeconds
            *Optional*
    """

    __slots__: List[str] = [
        "hss_realm",
        "request_timeout_seconds",
        "public_identity_refresh_delay_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("hss_realm", "hssRealm", str),
            E("request_timeout_seconds", "requestTimeoutSeconds", int),
            E(
                "public_identity_refresh_delay_seconds",
                "publicIdentityRefreshDelaySeconds",
                int,
            ),
        )


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 (str): hssRealm *Optional*
        public_identity_refresh_delay_seconds (int): publicIdentityRefreshDelaySeconds
            *Optional*
    """

    __slots__: List[str] = [
        "hss_realm",
        "public_identity_refresh_delay_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("hss_realm", "hssRealm", str),
            E(
                "public_identity_refresh_delay_seconds",
                "publicIdentityRefreshDelaySeconds",
                int,
            ),
        )


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSoftwareVersionGetRequest(OCIRequest):
    """
    Requests the software version of the Application Server.

    The response is either `SystemSoftwareVersionGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSpeedDial100GetRequest(OCIRequest):
    """
    Get the speed dial 100 system-wide default setting.

    The response is either a `SystemSpeedDial100GetResponse()` or an `ErrorResponse()`.
    Replaced by: `SystemSpeedDial100GetRequest17sp1()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSpeedDial100GetRequest17sp1(OCIRequest):
    """
    Get the speed dial 100 system-wide default setting.

    The response is either a `SystemSpeedDial100GetResponse17sp1()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSpeedDial100ModifyRequest(OCIRequest):
    """
    Modify the speed dial 100 system-wide default prefix setting.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        prefix (str): prefix *Optional*
    """

    __slots__: List[str] = [
        "prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("prefix", "prefix", str),)


class SystemStateOrProvinceGetListRequest(OCIRequest):
    """
    Requests the list of state and province names.

    The response is either `SystemStateOrProvinceGetListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemStirShakenGetRequest(OCIRequest):
    """
    Get system Stir Shaken service settings.

    The response is either `SystemStirShakenGetResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemStirShakenModifyRequest(OCIRequest):
    """
    Modify system Stir Shaken service settings.


    Attributes:
        signing_policy (str): signingPolicy *Optional*
        tagging_policy (str): taggingPolicy *Optional*
        sign_emergency_calls (bool): signEmergencyCalls *Optional*
        tag_emergency_calls (bool): tagEmergencyCalls *Optional*
        signing_service_url (str): signingServiceURL *Optional*
        tag_from_or_pai (str): tagFromOrPAI *Optional*
        verstat_tag (str): verstatTag *Optional*
        use_os_value_for_orig_id (bool): useOSValueForOrigId *Optional*
        orig_uuid (str): origUUID *Optional*
        attestation_level (str): attestationLevel *Optional*
        enable_verification (bool): enableVerification *Optional*
        verification_service_url (str): verificationServiceURL *Optional*
        verification_error_handling (str): verificationErrorHandling *Optional*
        proxy_verstat_to_cnam_subscribe (bool): proxyVerstatToCNAMSubscribe *Optional*
        use_unknown_headers_from_cnam_notify (bool): useUnknownHeadersFromCNAMNotify
            *Optional*
        use_ts24229_headers (bool): useTS24229Headers *Optional*
        enable_signing_for_unscreened_trunk_group_originations (bool):
            enableSigningForUnscreenedTrunkGroupOriginations *Optional*
        enable_tagging_for_unscreened_trunk_group_originations (bool):
            enableTaggingForUnscreenedTrunkGroupOriginations *Optional*
        unscreened_trunk_group_origination_attestation_level (str):
            unscreenedTrunkGroupOriginationAttestationLevel *Optional*
        verify_gets_calls (bool): verifyGETSCalls *Optional*
    """

    __slots__: List[str] = [
        "signing_policy",
        "tagging_policy",
        "sign_emergency_calls",
        "tag_emergency_calls",
        "signing_service_url",
        "tag_from_or_pai",
        "verstat_tag",
        "use_os_value_for_orig_id",
        "orig_uuid",
        "attestation_level",
        "enable_verification",
        "verification_service_url",
        "verification_error_handling",
        "proxy_verstat_to_cnam_subscribe",
        "use_unknown_headers_from_cnam_notify",
        "use_ts24229_headers",
        "enable_signing_for_unscreened_trunk_group_originations",
        "enable_tagging_for_unscreened_trunk_group_originations",
        "unscreened_trunk_group_origination_attestation_level",
        "verify_gets_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("signing_policy", "signingPolicy", str),
            E("tagging_policy", "taggingPolicy", str),
            E("sign_emergency_calls", "signEmergencyCalls", bool),
            E("tag_emergency_calls", "tagEmergencyCalls", bool),
            E("signing_service_url", "signingServiceURL", str),
            E("tag_from_or_pai", "tagFromOrPAI", str),
            E("verstat_tag", "verstatTag", str),
            E("use_os_value_for_orig_id", "useOSValueForOrigId", bool),
            E("orig_uuid", "origUUID", str),
            E("attestation_level", "attestationLevel", str),
            E("enable_verification", "enableVerification", bool),
            E("verification_service_url", "verificationServiceURL", str),
            E("verification_error_handling", "verificationErrorHandling", str),
            E("proxy_verstat_to_cnam_subscribe", "proxyVerstatToCNAMSubscribe", bool),
            E(
                "use_unknown_headers_from_cnam_notify",
                "useUnknownHeadersFromCNAMNotify",
                bool,
            ),
            E("use_ts24229_headers", "useTS24229Headers", bool),
            E(
                "enable_signing_for_unscreened_trunk_group_originations",
                "enableSigningForUnscreenedTrunkGroupOriginations",
                bool,
            ),
            E(
                "enable_tagging_for_unscreened_trunk_group_originations",
                "enableTaggingForUnscreenedTrunkGroupOriginations",
                bool,
            ),
            E(
                "unscreened_trunk_group_origination_attestation_level",
                "unscreenedTrunkGroupOriginationAttestationLevel",
                str,
            ),
            E("verify_gets_calls", "verifyGETSCalls", bool),
        )


class SystemSubscriberGetCallProcessingParametersRequest(OCIRequest):
    """
    Get the system call processing configuration for all subscribers The response is
    either a `SystemSubscriberGetCallProcessingParametersResponse()` or an
    `ErrorResponse()`.

    Replaced By: `SystemSubscriberGetCallProcessingParametersRequest14sp3()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSubscriberGetCallProcessingParametersRequest14sp3(OCIRequest):
    """
    Get the system call processing configuration for all subscribers The response is
    either a `SystemSubscriberGetCallProcessingParametersResponse14sp3()` or an
    `ErrorResponse()`.

    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSubscriberGetCallProcessingParametersRequest14sp7(OCIRequest):
    """
    Get the system call processing configuration for all subscribers The response is
    either a `SystemSubscriberGetCallProcessingParametersResponse14sp7()` or an
    `ErrorResponse()`.

    Replaced By : `SystemSubscriberGetCallProcessingParametersRequest15sp2()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSubscriberGetCallProcessingParametersRequest15(OCIRequest):
    """
    Get the system call processing configuration for all subscribers The response is
    either a `SystemSubscriberGetCallProcessingParametersResponse15()` or an
    `ErrorResponse()`.

    Replaced By: `SystemSubscriberGetCallProcessingParametersRequest15sp2()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSubscriberGetCallProcessingParametersRequest15sp2(OCIRequest):
    """
    Get the system call processing configuration for all subscribers The response is
    either a `SystemSubscriberGetCallProcessingParametersResponse15sp2()` or an
    `ErrorResponse()`.

    Replaced by: `SystemSubscriberGetCallProcessingParametersRequest17()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSubscriberGetCallProcessingParametersRequest17(OCIRequest):
    """
    Get the system call processing configuration for all subscribers The response is
    either a `SystemSubscriberGetCallProcessingParametersResponse17()` or an
    `ErrorResponse()`.

    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSubscriberGetCallProcessingParametersRequest17sp3(OCIRequest):
    """
    Get the system call processing configuration for all subscribers The response is
    either a `SystemSubscriberGetCallProcessingParametersResponse17sp3()` or an
    `ErrorResponse()`.

    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSubscriberGetCallProcessingParametersRequest17sp4(OCIRequest):
    """
    Get the system call processing configuration for all subscribers The response is
    either a `SystemSubscriberGetCallProcessingParametersResponse17sp4()` or an
    `ErrorResponse()`.

    Replaced by `SystemSubscriberGetCallProcessingParametersRequest18sp1()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSubscriberGetCallProcessingParametersRequest18sp1(OCIRequest):
    """
    Get the system call processing configuration for all subscribers The response is
    either a `SystemSubscriberGetCallProcessingParametersResponse18sp1()` or an
    `ErrorResponse()`.

    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSubscriberGetLoginParametersRequest(OCIRequest):
    """
    Get the system login configuration for all subscribers.

    The response is either a `SystemSubscriberGetLoginParametersResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSubscriberGetProvisioningParametersRequest(OCIRequest):
    """
    Get the system provisioning configuration for all subscribers The response is either a
    `SystemSubscriberGetProvisioningParametersResponse()` or an `ErrorResponse()`.

    Replaced by: `SystemSubscriberGetProvisioningParametersRequest24()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSubscriberGetProvisioningParametersRequest24(OCIRequest):
    """
    Get the system provisioning configuration for all subscribers The response is either a
    `SystemSubscriberGetProvisioningParametersResponse24()` or an `ErrorResponse()`.

    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSubscriberModifyCallProcessingParametersRequest(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 AS data mode and ignored in the XS data mode:
    userCallingLineIdSelection isExtendedCallingLineIdActive isRingTimeOutActive
    ringTimeoutSeconds allowEmergencyRemoteOfficeOriginations

    Replaced By: `SystemSubscriberModifyCallProcessingParametersRequest14sp7()`

    Attributes:
        user_calling_line_id_selection (str): userCallingLineIdSelection *Optional*
        is_extended_calling_line_id_active (bool): isExtendedCallingLineIdActive
            *Optional*
        is_ring_time_out_active (bool): isRingTimeOutActive *Optional*
        ring_timeout_seconds (int): ringTimeoutSeconds *Optional*
        allow_emergency_remote_office_originations (bool):
            allowEmergencyRemoteOfficeOriginations *Optional*
        max_no_answer_number_of_rings (int): maxNoAnswerNumberOfRings *Optional*
    """

    __slots__: List[str] = [
        "user_calling_line_id_selection",
        "is_extended_calling_line_id_active",
        "is_ring_time_out_active",
        "ring_timeout_seconds",
        "allow_emergency_remote_office_originations",
        "max_no_answer_number_of_rings",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_calling_line_id_selection", "userCallingLineIdSelection", str),
            E(
                "is_extended_calling_line_id_active",
                "isExtendedCallingLineIdActive",
                bool,
            ),
            E("is_ring_time_out_active", "isRingTimeOutActive", bool),
            E("ring_timeout_seconds", "ringTimeoutSeconds", int),
            E(
                "allow_emergency_remote_office_originations",
                "allowEmergencyRemoteOfficeOriginations",
                bool,
            ),
            E("max_no_answer_number_of_rings", "maxNoAnswerNumberOfRings", int),
        )


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 (bool): isExtendedCallingLineIdActive
            *Optional*
        is_ring_time_out_active (bool): isRingTimeOutActive *Optional*
        ring_timeout_seconds (int): ringTimeoutSeconds *Optional*
        allow_emergency_remote_office_originations (bool):
            allowEmergencyRemoteOfficeOriginations *Optional*
        max_no_answer_number_of_rings (int): maxNoAnswerNumberOfRings *Optional*
        min_no_answer_number_of_rings (int): minNoAnswerNumberOfRings *Optional*
        incoming_call_to_user_alias_mode (str): incomingCallToUserAliasMode *Optional*
        bypass_termination_loop_detection (bool): bypassTerminationLoopDetection
            *Optional*
        honor_clid_blocking_for_emergency_calls (bool): honorCLIDBlockingForEmergencyCalls
            *Optional*
        use_unicode_identity_name (bool): useUnicodeIdentityName *Optional*
    """

    __slots__: List[str] = [
        "is_extended_calling_line_id_active",
        "is_ring_time_out_active",
        "ring_timeout_seconds",
        "allow_emergency_remote_office_originations",
        "max_no_answer_number_of_rings",
        "min_no_answer_number_of_rings",
        "incoming_call_to_user_alias_mode",
        "bypass_termination_loop_detection",
        "honor_clid_blocking_for_emergency_calls",
        "use_unicode_identity_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "is_extended_calling_line_id_active",
                "isExtendedCallingLineIdActive",
                bool,
            ),
            E("is_ring_time_out_active", "isRingTimeOutActive", bool),
            E("ring_timeout_seconds", "ringTimeoutSeconds", int),
            E(
                "allow_emergency_remote_office_originations",
                "allowEmergencyRemoteOfficeOriginations",
                bool,
            ),
            E("max_no_answer_number_of_rings", "maxNoAnswerNumberOfRings", int),
            E("min_no_answer_number_of_rings", "minNoAnswerNumberOfRings", int),
            E("incoming_call_to_user_alias_mode", "incomingCallToUserAliasMode", str),
            E(
                "bypass_termination_loop_detection",
                "bypassTerminationLoopDetection",
                bool,
            ),
            E(
                "honor_clid_blocking_for_emergency_calls",
                "honorCLIDBlockingForEmergencyCalls",
                bool,
            ),
            E("use_unicode_identity_name", "useUnicodeIdentityName", bool),
        )


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 (int): maxFailedLoginAttempts *Optional*
        min_login_id_length (int): minLoginIdLength *Optional*
    """

    __slots__: List[str] = [
        "max_failed_login_attempts",
        "min_login_id_length",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("max_failed_login_attempts", "maxFailedLoginAttempts", int),
            E("min_login_id_length", "minLoginIdLength", int),
        )


class SystemSubscriberModifyProvisioningParametersRequest(OCIRequest):
    """
    Modify the system provisioning configuration for all subscribers.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        configurable_clid_normalization (bool): configurableCLIDNormalization *Optional*
        include_default_domain (bool): includeDefaultDomain *Optional*
    """

    __slots__: List[str] = [
        "configurable_clid_normalization",
        "include_default_domain",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("configurable_clid_normalization", "configurableCLIDNormalization", bool),
            E("include_default_domain", "includeDefaultDomain", bool),
        )


class SystemSystemServiceCallProcessingPoliciesGetRequest(OCIRequest):
    """
    Request the data associated with Call Processing Policy for system service instances.

    The response is either `SystemSystemServiceCallProcessingPoliciesGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
    """

    __slots__: List[str] = [
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
        )


class SystemSystemServiceDnGetAvailableListRequest(OCIRequest):
    """
    Request a list of system service DNs not yet in use.

    The response is either `SystemSystemServiceDnGetAvailableListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSystemServiceDnGetSummaryListRequest(OCIRequest):
    """
    Request a summary table of all System Service DNs.

    The response is either `SystemSystemServiceDnGetSummaryListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSystemServiceDnGetUsageListRequest(OCIRequest):
    """
    Request a list of System Service DN utilization.

    The response is either `SystemSystemServiceDnGetUsageListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSystemVoicePortalDeleteRequest(OCIRequest):
    """
    Request to delete a system voice portal instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        system_voice_portal_id (str): systemVoicePortalId
    """

    __slots__: List[str] = [
        "system_voice_portal_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_voice_portal_id", "systemVoicePortalId", str, is_required=True),
        )


class SystemSystemVoicePortalGetListRequest(OCIRequest):
    """
    Request to get the list of the system voice portals.

    The response is either SystemSystemVoicePortalGetListResponce or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemSystemVoicePortalGetRequest(OCIRequest):
    """
    Request to get a system voice portal instance.

    The response is either `SystemSystemVoicePortalGetResponse()` or `ErrorResponse()`.
    Replaced by: `SystemSystemVoicePortalGetRequest21sp1()`.

    Attributes:
        system_voice_portal_id (str): systemVoicePortalId
    """

    __slots__: List[str] = [
        "system_voice_portal_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_voice_portal_id", "systemVoicePortalId", str, is_required=True),
        )


class SystemSystemVoicePortalGetRequest21sp1(OCIRequest):
    """
    Request to get a system voice portal instance.

    The response is either `SystemSystemVoicePortalGetResponse21sp1()` or
    `ErrorResponse()`. Replaced by: `SystemSystemVoicePortalGetRequest23()`.

    Attributes:
        system_voice_portal_id (str): systemVoicePortalId
    """

    __slots__: List[str] = [
        "system_voice_portal_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_voice_portal_id", "systemVoicePortalId", str, is_required=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): systemVoicePortalId
    """

    __slots__: List[str] = [
        "system_voice_portal_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_voice_portal_id", "systemVoicePortalId", str, is_required=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): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=True),)


class SystemThirdPartyEmergencyCallingGetRequest(OCIRequest):
    """
    Get the third-party emergency call service settings for the system.

    The response is either a `SystemThirdPartyEmergencyCallingGetResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemThirdPartyEmergencyCallingGetRequest24()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemThirdPartyEmergencyCallingGetRequest24(OCIRequest):
    """
    Get the third-party emergency call service settings for the system.

    The response is either a `SystemThirdPartyEmergencyCallingGetResponse24()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (str): primaryHELDServerURL *Optional*
        secondary_held_server_url (str): secondaryHELDServerURL *Optional*
        emergency_route_net_address (str): emergencyRouteNetAddress *Optional*
        emergency_route_port (int): emergencyRoutePort *Optional*
        emergency_route_transport (str): emergencyRouteTransport *Optional*
    """

    __slots__: List[str] = [
        "primary_held_server_url",
        "secondary_held_server_url",
        "emergency_route_net_address",
        "emergency_route_port",
        "emergency_route_transport",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("primary_held_server_url", "primaryHELDServerURL", str),
            E("secondary_held_server_url", "secondaryHELDServerURL", str),
            E("emergency_route_net_address", "emergencyRouteNetAddress", str),
            E("emergency_route_port", "emergencyRoutePort", int),
            E("emergency_route_transport", "emergencyRouteTransport", str),
        )


class SystemThirdPartyIMPGetRequest(OCIRequest):
    """
    Get the system Third-Party IMP service attributes.

    The response is either `SystemThirdPartyIMPGetResponse()` or `ErrorResponse()`.
    Replaced by `SystemThirdPartyIMPGetRequest19()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemThirdPartyIMPGetRequest19(OCIRequest):
    """
    Get the system Third-Party IMP service attributes.

    The response is either `SystemThirdPartyIMPGetResponse19()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemThirdPartyIMPModifyRequest(OCIRequest):
    """
    Modify the system Third-Party IMP service attributes.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_net_address (str): serviceNetAddress *Optional*
        service_port (int): servicePort *Optional*
        bosh_url (str): boshURL *Optional*
    """

    __slots__: List[str] = [
        "service_net_address",
        "service_port",
        "bosh_url",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_net_address", "serviceNetAddress", str),
            E("service_port", "servicePort", int),
            E("bosh_url", "boshURL", str),
        )


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): phoneNumber
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "phone_number",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("phone_number", "phoneNumber", str, is_required=True),
            E("description", "description", str),
        )


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): phoneNumber
    """

    __slots__: List[str] = [
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("phone_number", "phoneNumber", str, is_required=True),)


class SystemThirdPartyVoiceMailSupportGetRequest(OCIRequest):
    """
    Request the system level data associated with Third-party Voice Mail Support.

    The response is either a `SystemThirdPartyVoiceMailSupportGetResponse()` or an
    `ErrorResponse()`. Replaced by: `SystemThirdPartyVoiceMailSupportGetRequest17sp4()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemThirdPartyVoiceMailSupportGetRequest17sp4(OCIRequest):
    """
    Request the system level data associated with Third-party Voice Mail Support.

    The response is either a `SystemThirdPartyVoiceMailSupportGetResponse17sp4()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): phoneNumber
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "phone_number",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("phone_number", "phoneNumber", str, is_required=True),
            E("description", "description", str),
        )


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 (bool): overrideAltCallerIdForVMRetrieval
            *Optional*
        strip_diversion_on_vm_destination_retrieval (bool):
            stripDiversionOnVMDestinationRetrieval *Optional*
    """

    __slots__: List[str] = [
        "override_alt_caller_id_for_vm_retrieval",
        "strip_diversion_on_vm_destination_retrieval",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "override_alt_caller_id_for_vm_retrieval",
                "overrideAltCallerIdForVMRetrieval",
                bool,
            ),
            E(
                "strip_diversion_on_vm_destination_retrieval",
                "stripDiversionOnVMDestinationRetrieval",
                bool,
            ),
        )


class SystemTimeScheduleDeleteRequest(OCIRequest):
    """
    Delete a system time schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        time_schedule_name (str): timeScheduleName
    """

    __slots__: List[str] = [
        "time_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("time_schedule_name", "timeScheduleName", str, is_required=True),)


class SystemTimeScheduleGetListRequest(OCIRequest):
    """
    Request a list of all system time schedules.

    The response is either a `SystemTimeScheduleGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTimeScheduleGetRequest(OCIRequest):
    """
    Request to get a system time schedule.

    The response is either a `SystemTimeScheduleGetResponse()` or an `ErrorResponse()`.

    Attributes:
        time_schedule_name (str): timeScheduleName
    """

    __slots__: List[str] = [
        "time_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("time_schedule_name", "timeScheduleName", str, is_required=True),)


class SystemTimeZoneGetListRequest(OCIRequest):
    """
    Requests the list of time zone names.

    The response is either `SystemTimeZoneGetListResponse()` or `ErrorResponse()`.
    Replaced by: `SystemTimeZoneGetListRequest20()` in AS data mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTreatmentMappingAccessSIPStatusAddRequest(OCIRequest):
    """
    Add an Access SIP Status Code Mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        sip_status_code (int): sipStatusCode
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "sip_status_code",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("sip_status_code", "sipStatusCode", int, is_required=True),
            E("treatment_id", "treatmentId", str, is_required=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): sipStatusCode
    """

    __slots__: List[str] = [
        "sip_status_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("sip_status_code", "sipStatusCode", int, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): sipStatusCode
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "sip_status_code",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("sip_status_code", "sipStatusCode", int, is_required=True),
            E("treatment_id", "treatmentId", str),
        )


class SystemTreatmentMappingCallBlockingServiceAddRequest(OCIRequest):
    """
    Add a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceAddRequest22()` in AS data mode

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceAddRequest22(OCIRequest):
    """
    Add a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceAddRequest22V2()` in AS data mode

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceAddRequest22V2(OCIRequest):
    """
    Add a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceAddRequest23()` in AS data mode

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceAddRequest22V3(OCIRequest):
    """
    Add a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceAddRequest23(OCIRequest):
    """
    Add a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceAddRequest23V2()` in AS data mode.

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceAddRequest23V2(OCIRequest):
    """
    Add a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceAddRequest23V3(OCIRequest):
    """
    Add a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceDeleteRequest(OCIRequest):
    """
    Delete a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceDeleteRequest22()` in AS data mode

    Attributes:
        call_blocking_service (str): callBlockingService
    """

    __slots__: List[str] = [
        "call_blocking_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceDeleteRequest22(OCIRequest):
    """
    Delete a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceDeleteRequest22V2()` in AS data mode

    Attributes:
        call_blocking_service (str): callBlockingService
    """

    __slots__: List[str] = [
        "call_blocking_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceDeleteRequest22V2(OCIRequest):
    """
    Delete a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceDeleteRequest23()` in AS data mode

    Attributes:
        call_blocking_service (str): callBlockingService
    """

    __slots__: List[str] = [
        "call_blocking_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceDeleteRequest22V3(OCIRequest):
    """
    Delete a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        call_blocking_service (str): callBlockingService
    """

    __slots__: List[str] = [
        "call_blocking_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceDeleteRequest23(OCIRequest):
    """
    Delete a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceDeleteRequest23V2()` in AS data mode.

    Attributes:
        call_blocking_service (str): callBlockingService
    """

    __slots__: List[str] = [
        "call_blocking_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceDeleteRequest23V2(OCIRequest):
    """
    Delete a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        call_blocking_service (str): callBlockingService
    """

    __slots__: List[str] = [
        "call_blocking_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceDeleteRequest23V3(OCIRequest):
    """
    Delete a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        call_blocking_service (str): callBlockingService
    """

    __slots__: List[str] = [
        "call_blocking_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
        )


class SystemTreatmentMappingCallBlockingServiceGetListRequest(OCIRequest):
    """
    Requests a table of all the existing Call Blocking Service Mappings in the system.

    The response is either a `SystemTreatmentMappingCallBlockingServicesGetListResponse()`
    or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceGetListRequest19sp1()` in AS data mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTreatmentMappingCallBlockingServiceGetListRequest19sp1(OCIRequest):
    """
    Requests a table of all the existing Call Blocking Service Mappings in the system.

    The response is either a
    `SystemTreatmentMappingCallBlockingServicesGetListResponse19sp1()` or an
    `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceGetListRequest22()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTreatmentMappingCallBlockingServiceGetListRequest22(OCIRequest):
    """
    Requests a table of all the existing Call Blocking Service Mappings in the system.

    The response is either a
    `SystemTreatmentMappingCallBlockingServicesGetListResponse22()` or an
    `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceGetListRequest23()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTreatmentMappingCallBlockingServiceGetListRequest22V2(OCIRequest):
    """
    Requests a table of all the existing Call Blocking Service Mappings in the system.

    The response is either a
    `SystemTreatmentMappingCallBlockingServicesGetListResponse22V2()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTreatmentMappingCallBlockingServiceGetListRequest23(OCIRequest):
    """
    Requests a table of all the existing Call Blocking Service Mappings in the system.

    The response is either a
    `SystemTreatmentMappingCallBlockingServicesGetListResponse23()` or an
    `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceGetListRequest23V2()` in AS data mode.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTreatmentMappingCallBlockingServiceGetListRequest23V2(OCIRequest):
    """
    Requests a table of all the existing Call Blocking Service Mappings in the system.

    The response is either a
    `SystemTreatmentMappingCallBlockingServicesGetListResponse23V2()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTreatmentMappingCallBlockingServiceGetListRequest23V3(OCIRequest):
    """
    Requests a table of all the existing Call Blocking Service Mappings in the system.

    The response is either a
    `SystemTreatmentMappingCallBlockingServicesGetListResponse23V3()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTreatmentMappingCallBlockingServiceModifyRequest(OCIRequest):
    """
    Modify the fields for a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceModifyRequest22()` in AS data mode

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str),
        )


class SystemTreatmentMappingCallBlockingServiceModifyRequest22(OCIRequest):
    """
    Modify the fields for a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceModifyRequest22V2()` in AS data mode

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str),
        )


class SystemTreatmentMappingCallBlockingServiceModifyRequest22V2(OCIRequest):
    """
    Modify the fields for a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceModifyRequest23()` in AS data mode

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str),
        )


class SystemTreatmentMappingCallBlockingServiceModifyRequest22V3(OCIRequest):
    """
    Modify the fields for a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str),
        )


class SystemTreatmentMappingCallBlockingServiceModifyRequest23(OCIRequest):
    """
    Modify the fields for a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemTreatmentMappingCallBlockingServiceModifyRequest23V2()` in AS data mode.

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str),
        )


class SystemTreatmentMappingCallBlockingServiceModifyRequest23V2(OCIRequest):
    """
    Modify the fields for a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str),
        )


class SystemTreatmentMappingCallBlockingServiceModifyRequest23V3(OCIRequest):
    """
    Modify the fields for a Call Blocking Service mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        call_blocking_service (str): callBlockingService
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "call_blocking_service",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("call_blocking_service", "callBlockingService", str, is_required=True),
            E("treatment_id", "treatmentId", str),
        )


class SystemTreatmentMappingInternalReleaseCauseAddRequest(OCIRequest):
    """
    Add an Internal Release Cause mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        internal_release_cause (str): internalReleaseCause
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "internal_release_cause",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("internal_release_cause", "internalReleaseCause", str, is_required=True),
            E("treatment_id", "treatmentId", str, is_required=True),
        )


class SystemTreatmentMappingInternalReleaseCauseDeleteRequest(OCIRequest):
    """
    Delete an Internal Release Cause mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        internal_release_cause (str): internalReleaseCause
    """

    __slots__: List[str] = [
        "internal_release_cause",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("internal_release_cause", "internalReleaseCause", str, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): internalReleaseCause
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "internal_release_cause",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("internal_release_cause", "internalReleaseCause", str, is_required=True),
            E("treatment_id", "treatmentId", str),
        )


class SystemTreatmentMappingNetworkSIPStatusAddRequest(OCIRequest):
    """
    Add a Network SIP Status Code mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        sip_status_code (int): sipStatusCode
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "sip_status_code",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("sip_status_code", "sipStatusCode", int, is_required=True),
            E("treatment_id", "treatmentId", str, is_required=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): sipStatusCode
    """

    __slots__: List[str] = [
        "sip_status_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("sip_status_code", "sipStatusCode", int, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): sipStatusCode
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "sip_status_code",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("sip_status_code", "sipStatusCode", int, is_required=True),
            E("treatment_id", "treatmentId", str),
        )


class SystemTreatmentMappingNetworkServerTreatmentAddRequest(OCIRequest):
    """
    Add a Network Server Treatment mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        ns_treatment (str): nsTreatment
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "ns_treatment",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("ns_treatment", "nsTreatment", str, is_required=True),
            E("treatment_id", "treatmentId", str, is_required=True),
        )


class SystemTreatmentMappingNetworkServerTreatmentDeleteRequest(OCIRequest):
    """
    Delete a NS Treatment mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        ns_treatment (str): nsTreatment
    """

    __slots__: List[str] = [
        "ns_treatment",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("ns_treatment", "nsTreatment", str, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): nsTreatment
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "ns_treatment",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("ns_treatment", "nsTreatment", str, is_required=True),
            E("treatment_id", "treatmentId", str),
        )


class SystemTreatmentMappingQ850CauseAddRequest(OCIRequest):
    """
    Add a Q850 Cause Value mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        q850_cause_value (int): q850CauseValue
        treatment_id (str): treatmentId
    """

    __slots__: List[str] = [
        "q850_cause_value",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("q850_cause_value", "q850CauseValue", int, is_required=True),
            E("treatment_id", "treatmentId", str, is_required=True),
        )


class SystemTreatmentMappingQ850CauseDeleteRequest(OCIRequest):
    """
    Delete a Q850 Cause Value mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        q850_cause_value (int): q850CauseValue
    """

    __slots__: List[str] = [
        "q850_cause_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("q850_cause_value", "q850CauseValue", int, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTreatmentMappingQ850CauseModifyRequest(OCIRequest):
    """
    Modify the fields for a Q850CauseValue mapping.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        q850_cause_value (int): q850CauseValue
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "q850_cause_value",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("q850_cause_value", "q850CauseValue", int, is_required=True),
            E("treatment_id", "treatmentId", str),
        )


class SystemTrunkGroupGetRequest(OCIRequest):
    """
    Request the system level data associated with the Trunk Group service.

    The response is either `SystemTrunkGroupGetResponse()` or `ErrorResponse()`. Replaced
    by: `SystemTrunkGroupGetRequest19sp1()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTrunkGroupGetRequest19sp1(OCIRequest):
    """
    Request the system level data associated with the Trunk Group service.

    The response is either `SystemTrunkGroupGetResponse19sp1()` or `ErrorResponse()`.
    Replaced by: `SystemTrunkGroupGetRequest21()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTrunkGroupGetRequest21(OCIRequest):
    """
    Request the system level data associated with the Trunk Group service.

    The response is either `SystemTrunkGroupGetResponse21()` or `ErrorResponse()`.
    Replaced by: `SystemTrunkGroupGetRequest22()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTrunkGroupGetRequest22(OCIRequest):
    """
    Request the system level data associated with the Trunk Group service.

    The response is either `SystemTrunkGroupGetResponse22()` or `ErrorResponse()`.
    Replaced by: `SystemTrunkGroupGetRequest23()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTrunkGroupGetRequest23(OCIRequest):
    """
    Request the system level data associated with the Trunk Group service.

    The response is either `SystemTrunkGroupGetResponse23()` or `ErrorResponse()`.
    Replaced by: `SystemTrunkGroupGetRequest24()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTrunkGroupGetRequest24(OCIRequest):
    """
    Request the system level data associated with the Trunk Group service.

    The response is either `SystemTrunkGroupGetResponse24()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool):
            enforceCLIDServiceAssignmentForPilotUser *Optional*
        terminate_unreachable_trigger_detection_on_receipt_of18x (bool):
            terminateUnreachableTriggerDetectionOnReceiptOf18x *Optional*
        pilot_user_calling_line_asserted_identity_policy (str):
            pilotUserCallingLineAssertedIdentityPolicy *Optional*
        enforce_out_of_dialog_pbx_redirection_policies (bool):
            enforceOutOfDialogPBXRedirectionPolicies *Optional*
        unscreened_redirection_handling (str): unscreenedRedirectionHandling *Optional*
        enable_holdover_of_highwater_call_counts (bool):
            enableHoldoverOfHighwaterCallCounts *Optional*
        holdover_period (int): holdoverPeriod *Optional*
        time_zone_offset_minutes (int): timeZoneOffsetMinutes *Optional*
        clid_source_for_screened_calls_policy (str): clidSourceForScreenedCallsPolicy
            *Optional*
        user_lookup_policy (str): userLookupPolicy *Optional*
        out_of_dialog_pbx_redirection_clid_mapping (str):
            outOfDialogPBXRedirectionCLIDMapping *Optional*
        enforce_out_of_dialog_pbx_redirection_trunk_group_capacity (bool):
            enforceOutOfDialogPBXRedirectionTrunkGroupCapacity *Optional*
        implicit_registration_set_support_policy (str):
            implicitRegistrationSetSupportPolicy *Optional*
        sip_identity_for_pilot_and_proxy_trunk_modes_policy (str):
            sipIdentityForPilotAndProxyTrunkModesPolicy *Optional*
        support_connected_identity_policy (str): supportConnectedIdentityPolicy *Optional*
        use_unmapped_sessions_for_trunk_users (bool): useUnmappedSessionsForTrunkUsers
            *Optional*
        allow_pai_lookup_for_out_of_dialog_pbx_redirection (bool):
            allowPAILookupForOutOfDialogPBXRedirection *Optional*
        out_of_dialog_pbx_redirection_originator_lookup_policy (str):
            outOfDialogPBXRedirectionOriginatorLookupPolicy *Optional*
        allow_trunk_identity_for_all_originations (bool):
            allowTrunkIdentityForAllOriginations *Optional*
        use_most_recent_entry_on_deflection (bool): useMostRecentEntryOnDeflection
            *Optional*
    """

    __slots__: List[str] = [
        "enforce_clid_service_assignment_for_pilot_user",
        "terminate_unreachable_trigger_detection_on_receipt_of18x",
        "pilot_user_calling_line_asserted_identity_policy",
        "enforce_out_of_dialog_pbx_redirection_policies",
        "unscreened_redirection_handling",
        "enable_holdover_of_highwater_call_counts",
        "holdover_period",
        "time_zone_offset_minutes",
        "clid_source_for_screened_calls_policy",
        "user_lookup_policy",
        "out_of_dialog_pbx_redirection_clid_mapping",
        "enforce_out_of_dialog_pbx_redirection_trunk_group_capacity",
        "implicit_registration_set_support_policy",
        "sip_identity_for_pilot_and_proxy_trunk_modes_policy",
        "support_connected_identity_policy",
        "use_unmapped_sessions_for_trunk_users",
        "allow_pai_lookup_for_out_of_dialog_pbx_redirection",
        "out_of_dialog_pbx_redirection_originator_lookup_policy",
        "allow_trunk_identity_for_all_originations",
        "use_most_recent_entry_on_deflection",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "enforce_clid_service_assignment_for_pilot_user",
                "enforceCLIDServiceAssignmentForPilotUser",
                bool,
            ),
            E(
                "terminate_unreachable_trigger_detection_on_receipt_of18x",
                "terminateUnreachableTriggerDetectionOnReceiptOf18x",
                bool,
            ),
            E(
                "pilot_user_calling_line_asserted_identity_policy",
                "pilotUserCallingLineAssertedIdentityPolicy",
                str,
            ),
            E(
                "enforce_out_of_dialog_pbx_redirection_policies",
                "enforceOutOfDialogPBXRedirectionPolicies",
                bool,
            ),
            E("unscreened_redirection_handling", "unscreenedRedirectionHandling", str),
            E(
                "enable_holdover_of_highwater_call_counts",
                "enableHoldoverOfHighwaterCallCounts",
                bool,
            ),
            E("holdover_period", "holdoverPeriod", int),
            E("time_zone_offset_minutes", "timeZoneOffsetMinutes", int),
            E(
                "clid_source_for_screened_calls_policy",
                "clidSourceForScreenedCallsPolicy",
                str,
            ),
            E("user_lookup_policy", "userLookupPolicy", str),
            E(
                "out_of_dialog_pbx_redirection_clid_mapping",
                "outOfDialogPBXRedirectionCLIDMapping",
                str,
            ),
            E(
                "enforce_out_of_dialog_pbx_redirection_trunk_group_capacity",
                "enforceOutOfDialogPBXRedirectionTrunkGroupCapacity",
                bool,
            ),
            E(
                "implicit_registration_set_support_policy",
                "implicitRegistrationSetSupportPolicy",
                str,
            ),
            E(
                "sip_identity_for_pilot_and_proxy_trunk_modes_policy",
                "sipIdentityForPilotAndProxyTrunkModesPolicy",
                str,
            ),
            E(
                "support_connected_identity_policy",
                "supportConnectedIdentityPolicy",
                str,
            ),
            E(
                "use_unmapped_sessions_for_trunk_users",
                "useUnmappedSessionsForTrunkUsers",
                bool,
            ),
            E(
                "allow_pai_lookup_for_out_of_dialog_pbx_redirection",
                "allowPAILookupForOutOfDialogPBXRedirection",
                bool,
            ),
            E(
                "out_of_dialog_pbx_redirection_originator_lookup_policy",
                "outOfDialogPBXRedirectionOriginatorLookupPolicy",
                str,
            ),
            E(
                "allow_trunk_identity_for_all_originations",
                "allowTrunkIdentityForAllOriginations",
                bool,
            ),
            E(
                "use_most_recent_entry_on_deflection",
                "useMostRecentEntryOnDeflection",
                bool,
            ),
        )


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]): statusCode
    """

    __slots__: List[str] = [
        "status_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("status_code", "statusCode", str, is_required=True, is_array=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]): statusCode
    """

    __slots__: List[str] = [
        "status_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("status_code", "statusCode", str, is_required=True, is_array=True),)


class SystemTrunkGroupOptionsMessageResponseStatusCodeGetListRequest(OCIRequest):
    """
    Get the list of system level successful SIP OPTIONS message respoonse status codes.

    The response is either
    `SystemTrunkGroupOptionsMessageResponseStatusCodeGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTrunkGroupUserCreationTaskGetListRequest(OCIRequest):
    """
    Get the list of user creation tasks in the system.

    The response is either `SystemTrunkGroupUserCreationTaskGetListResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemTrunkGroupUserCreationTaskGetListRequest14sp4(OCIRequest):
    """
    Get the list of user creation tasks in the system.

    The response is either `SystemTrunkGroupUserCreationTaskGetListResponse14sp4()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): phoneNumber
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "phone_number",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("phone_number", "phoneNumber", str, is_required=True),
            E("description", "description", str),
        )


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): phoneNumber
    """

    __slots__: List[str] = [
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("phone_number", "phoneNumber", str, is_required=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): phoneNumber
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "phone_number",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("phone_number", "phoneNumber", str, is_required=True),
            E("description", "description", str),
        )


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): netAddress
        port (int): port *Optional*
        transport_protocol (str): transportProtocol
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "transport_protocol",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("transport_protocol", "transportProtocol", str, is_required=True),
            E("description", "description", str),
        )


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): netAddress
    """

    __slots__: List[str] = [
        "net_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("net_address", "netAddress", str, is_required=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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): netAddress
        port (int): port *Optional*
        transport_protocol (str): transportProtocol *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "net_address",
        "port",
        "transport_protocol",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int),
            E("transport_protocol", "transportProtocol", str),
            E("description", "description", str),
        )


class SystemVideoServerParametersGetRequest(OCIRequest):
    """
    Request to get the list of video server system parameters.

    The response is either `SystemVideoServerParametersGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemVideoServerParametersModifyRequest(OCIRequest):
    """
    Request to modify video server system parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        video_server_response_timer_milliseconds (int):
            videoServerResponseTimerMilliseconds *Optional*
        video_server_selection_route_timer_milliseconds (int):
            videoServerSelectionRouteTimerMilliseconds *Optional*
        use_static_video_server_device (bool): useStaticVideoServerDevice *Optional*
    """

    __slots__: List[str] = [
        "video_server_response_timer_milliseconds",
        "video_server_selection_route_timer_milliseconds",
        "use_static_video_server_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "video_server_response_timer_milliseconds",
                "videoServerResponseTimerMilliseconds",
                int,
            ),
            E(
                "video_server_selection_route_timer_milliseconds",
                "videoServerSelectionRouteTimerMilliseconds",
                int,
            ),
            E("use_static_video_server_device", "useStaticVideoServerDevice", bool),
        )


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): virtualOnNetCallTypeName
        virtual_on_net_call_type_cdr_value (str): virtualOnNetCallTypeCdrValue
    """

    __slots__: List[str] = [
        "virtual_on_net_call_type_name",
        "virtual_on_net_call_type_cdr_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "virtual_on_net_call_type_name",
                "virtualOnNetCallTypeName",
                str,
                is_required=True,
            ),
            E(
                "virtual_on_net_call_type_cdr_value",
                "virtualOnNetCallTypeCdrValue",
                str,
                is_required=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): virtualOnNetCallTypeName
    """

    __slots__: List[str] = [
        "virtual_on_net_call_type_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "virtual_on_net_call_type_name",
                "virtualOnNetCallTypeName",
                str,
                is_required=True,
            ),
        )


class SystemVirtualOnNetCallTypeGetListRequest(OCIRequest):
    """
    Get the list Virtual On-Net Call Types in the system.

    The response is either a `SystemVirtualOnNetCallTypeGetListResponse()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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): virtualOnNetCallTypeName
        virtual_on_net_call_type_cdr_value (str): virtualOnNetCallTypeCdrValue *Optional*
    """

    __slots__: List[str] = [
        "virtual_on_net_call_type_name",
        "virtual_on_net_call_type_cdr_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "virtual_on_net_call_type_name",
                "virtualOnNetCallTypeName",
                str,
                is_required=True,
            ),
            E(
                "virtual_on_net_call_type_cdr_value",
                "virtualOnNetCallTypeCdrValue",
                str,
            ),
        )


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): deviceName
    """

    __slots__: List[str] = [
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("device_name", "deviceName", str, is_required=True),)


class SystemVoiceMessageSummaryUpdateGetRequest(OCIRequest):
    """
    Requests system voice mail message summary update parameter settings.

    The response is either `SystemVoiceMessageSummaryUpdateGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


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 (bool):
            sendSavedAndUrgentMWIOnNotification *Optional*
        send_message_summary_update_on_register (bool): sendMessageSummaryUpdateOnRegister
            *Optional*
        min_time_between_mwi_on_register (int): minTimeBetweenMWIOnRegister *Optional*
    """

    __slots__: List[str] = [
        "send_saved_and_urgent_mwi_on_notification",
        "send_message_summary_update_on_register",
        "min_time_between_mwi_on_register",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "send_saved_and_urgent_mwi_on_notification",
                "sendSavedAndUrgentMWIOnNotification",
                bool,
            ),
            E(
                "send_message_summary_update_on_register",
                "sendMessageSummaryUpdateOnRegister",
                bool,
            ),
            E("min_time_between_mwi_on_register", "minTimeBetweenMWIOnRegister", int),
        )


class SystemVoiceMessagingGroupGetPasscodeRulesRequest14(OCIRequest):
    """
    Requests the system voice portal passcode rules setting.

    The response is either `SystemVoiceMessagingGroupGetPasscodeRulesResponse14()` or
    `ErrorResponse()`.

    Replaced By: `SystemPortalPasscodeRulesGetRequest()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemVoiceMessagingGroupGetRequest14(OCIRequest):
    """
    Request the system level data associated with Voice Messaging.

    The response is either a `SystemVoiceMessagingGroupGetResponse14()` or an
    `ErrorResponse()`. Replaced by: `SystemVoiceMessagingGroupGetRequest16()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemVoiceMessagingGroupGetRequest16(OCIRequest):
    """
    Request the system level data associated with Voice Messaging.

    The response is either a `SystemVoiceMessagingGroupGetResponse16()` or an
    `ErrorResponse()`. Replaced by: `SystemVoiceMessagingGroupGetRequest16sp2()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemVoiceMessagingGroupGetRequest16sp2(OCIRequest):
    """
    Request the system level data associated with Voice Messaging.

    The response is either a `SystemVoiceMessagingGroupGetResponse16sp2()` or an
    `ErrorResponse()`. Replaced by: `SystemVoiceMessagingGroupGetRequest20()` in AS data
    mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemVoiceMessagingGroupGetRequest20(OCIRequest):
    """
    Request the system level data associated with Voice Messaging.

    The response is either a `SystemVoiceMessagingGroupGetResponse20()` or an
    `ErrorResponse()`. Replaced by: `SystemVoiceMessagingGroupGetRequest21()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemVoiceMessagingGroupGetRequest21(OCIRequest):
    """
    Request the system level data associated with Voice Messaging.

    The response is either a `SystemVoiceMessagingGroupGetResponse21()` or an
    `ErrorResponse()`. Replaced by: `SystemVoiceMessagingGroupGetRequest22()` in AS data
    mode
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemVoiceMessagingGroupGetRequest22(OCIRequest):
    """
    Response to `SystemVoiceMessagingGroupGetRequest22()`.

    Replaced by: `SystemVoiceMessagingGroupGetRequest22V2()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemVoiceMessagingGroupGetRequest22V2(OCIRequest):
    """
    Request the system level data associated with Voice Messaging.

    The response is either a `SystemVoiceMessagingGroupGetResponse22V2()` or an
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemVoiceMessagingGroupGetVoicePortalMenusRequest14(OCIRequest):
    """
    Requests the system voice portal Menus setting.

    The response is either `SystemVoiceMessagingGroupGetVoicePortalMenusResponse14()` or
    `ErrorResponse()`.

    Attributes:
        get_default_menu_keys (bool): getDefaultMenuKeys
    """

    __slots__: List[str] = [
        "get_default_menu_keys",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("get_default_menu_keys", "getDefaultMenuKeys", bool, is_required=True),
        )


class SystemVoiceMessagingGroupGetVoicePortalMenusRequest18(OCIRequest):
    """
    Requests the system voice portal Menus setting.

    The response is either `SystemVoiceMessagingGroupGetVoicePortalMenusResponse18()` or
    `ErrorResponse()`. Replaced by
    `SystemVoiceMessagingGroupGetVoicePortalMenusRequest19()`

    Attributes:
        get_default_menu_keys (bool): getDefaultMenuKeys
    """

    __slots__: List[str] = [
        "get_default_menu_keys",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("get_default_menu_keys", "getDefaultMenuKeys", bool, is_required=True),
        )


class SystemVoiceMessagingGroupGetVoicePortalMenusRequest18sp1(OCIRequest):
    """
    Requests the system voice portal Menus setting.

    The response is either `SystemVoiceMessagingGroupGetVoicePortalMenusResponse18sp1()`
    or `ErrorResponse()`. Replaced by
    `SystemVoiceMessagingGroupGetVoicePortalMenusRequest19sp1()`

    Attributes:
        get_default_menu_keys (bool): getDefaultMenuKeys
    """

    __slots__: List[str] = [
        "get_default_menu_keys",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("get_default_menu_keys", "getDefaultMenuKeys", bool, is_required=True),
        )


class SystemVoiceMessagingGroupGetVoicePortalMenusRequest19(OCIRequest):
    """
    Requests the system voice portal Menus setting.

    The response is either `SystemVoiceMessagingGroupGetVoicePortalMenusResponse19()` or
    `ErrorResponse()`. Replaced by:
    `SystemVoiceMessagingGroupGetVoicePortalMenusRequest19sp1()`

    Attributes:
        get_default_menu_keys (bool): getDefaultMenuKeys
    """

    __slots__: List[str] = [
        "get_default_menu_keys",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("get_default_menu_keys", "getDefaultMenuKeys", bool, is_required=True),
        )


class SystemVoiceMessagingGroupGetVoicePortalMenusRequest19sp1(OCIRequest):
    """
    Requests the system voice portal Menus setting.

    The response is either `SystemVoiceMessagingGroupGetVoicePortalMenusResponse19sp1()`
    or `ErrorResponse()`. Replaced by
    `SystemVoiceMessagingGroupGetVoicePortalMenusRequest20()`

    Attributes:
        get_default_menu_keys (bool): getDefaultMenuKeys
    """

    __slots__: List[str] = [
        "get_default_menu_keys",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("get_default_menu_keys", "getDefaultMenuKeys", bool, is_required=True),
        )


class SystemVoiceMessagingGroupGetVoicePortalMenusRequest20(OCIRequest):
    """
    Requests the system voice portal Menus setting.

    The response is either `SystemVoiceMessagingGroupGetVoicePortalMenusResponse20()` or
    `ErrorResponse()`.

    Attributes:
        get_default_menu_keys (bool): getDefaultMenuKeys
    """

    __slots__: List[str] = [
        "get_default_menu_keys",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("get_default_menu_keys", "getDefaultMenuKeys", bool, is_required=True),
        )


class SystemVoiceMessagingGroupGetVoicePortalMenusRequest21(OCIRequest):
    """
    Requests the system voice portal Menus setting.

    The response is either `SystemVoiceMessagingGroupGetVoicePortalMenusResponse21()` or
    `ErrorResponse()`.

    Attributes:
        get_default_menu_keys (bool): getDefaultMenuKeys
    """

    __slots__: List[str] = [
        "get_default_menu_keys",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("get_default_menu_keys", "getDefaultMenuKeys", bool, is_required=True),
        )


class SystemVoiceMessagingGroupModifyPasscodeRulesRequest(OCIRequest):
    """
    Request to modify the system voice portal passcode rules setting.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `SystemPortalPasscodeRulesModifyRequest()`

    Attributes:
        disallow_repeated_digits (bool): disallowRepeatedDigits *Optional*
        disallow_user_number (bool): disallowUserNumber *Optional*
        disallow_reversed_user_number (bool): disallowReversedUserNumber *Optional*
        disallow_old_passcode (bool): disallowOldPasscode *Optional*
        disallow_reversed_old_passcode (bool): disallowReversedOldPasscode *Optional*
        min_code_length (int): minCodeLength *Optional*
        max_code_length (int): maxCodeLength *Optional*
        disable_login_after_max_failed_login_attempts (bool):
            disableLoginAfterMaxFailedLoginAttempts *Optional*
        max_failed_login_attempts (int): maxFailedLoginAttempts *Optional*
        expire_password (bool): expirePassword *Optional*
        passcode_expires_days (int): passcodeExpiresDays *Optional*
        send_login_disabled_notify_email (bool): sendLoginDisabledNotifyEmail *Optional*
        login_disabled_notify_email_address (str): loginDisabledNotifyEmailAddress
            *Optional*
        default_password (str): defaultPassword *Optional*
    """

    __slots__: List[str] = [
        "disallow_repeated_digits",
        "disallow_user_number",
        "disallow_reversed_user_number",
        "disallow_old_passcode",
        "disallow_reversed_old_passcode",
        "min_code_length",
        "max_code_length",
        "disable_login_after_max_failed_login_attempts",
        "max_failed_login_attempts",
        "expire_password",
        "passcode_expires_days",
        "send_login_disabled_notify_email",
        "login_disabled_notify_email_address",
        "default_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("disallow_repeated_digits", "disallowRepeatedDigits", bool),
            E("disallow_user_number", "disallowUserNumber", bool),
            E("disallow_reversed_user_number", "disallowReversedUserNumber", bool),
            E("disallow_old_passcode", "disallowOldPasscode", bool),
            E("disallow_reversed_old_passcode", "disallowReversedOldPasscode", bool),
            E("min_code_length", "minCodeLength", int),
            E("max_code_length", "maxCodeLength", int),
            E(
                "disable_login_after_max_failed_login_attempts",
                "disableLoginAfterMaxFailedLoginAttempts",
                bool,
            ),
            E("max_failed_login_attempts", "maxFailedLoginAttempts", int),
            E("expire_password", "expirePassword", bool),
            E("passcode_expires_days", "passcodeExpiresDays", int),
            E("send_login_disabled_notify_email", "sendLoginDisabledNotifyEmail", bool),
            E(
                "login_disabled_notify_email_address",
                "loginDisabledNotifyEmailAddress",
                str,
            ),
            E("default_password", "defaultPassword", str),
        )


class SystemVoiceMessagingGroupModifyRequest(OCIRequest):
    """
    Modify the system level data associated with Voice Messaging.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        real_delete_for_imap (bool): realDeleteForImap *Optional*
        use_dn_in_mail_body (bool): useDnInMailBody *Optional*
        use_short_subject_line (bool): useShortSubjectLine *Optional*
        max_greeting_length_minutes (int): maxGreetingLengthMinutes *Optional*
        max_message_length_minutes (int): maxMessageLengthMinutes *Optional*
        max_mailbox_length_minutes (int): maxMailboxLengthMinutes *Optional*
        does_message_age (bool): doesMessageAge *Optional*
        hold_period_days (int): holdPeriodDays *Optional*
        mail_server_net_address (str): mailServerNetAddress *Optional*
        mail_server_protocol (str): mailServerProtocol *Optional*
        default_delivery_from_address (str): defaultDeliveryFromAddress *Optional*
        default_notification_from_address (str): defaultNotificationFromAddress *Optional*
        default_voice_portal_lockout_from_address (str):
            defaultVoicePortalLockoutFromAddress *Optional*
        use_outgoing_mwi_on_smdi (bool): useOutgoingMWIOnSMDI *Optional*
        mwi_delay_in_seconds (int): mwiDelayInSeconds *Optional*
        voice_portal_scope (str): voicePortalScope *Optional*
        network_wide_messaging (bool): networkWideMessaging *Optional*
        use_external_routing (bool): useExternalRouting *Optional*
        default_external_routing_address (str): defaultExternalRoutingAddress *Optional*
    """

    __slots__: List[str] = [
        "real_delete_for_imap",
        "use_dn_in_mail_body",
        "use_short_subject_line",
        "max_greeting_length_minutes",
        "max_message_length_minutes",
        "max_mailbox_length_minutes",
        "does_message_age",
        "hold_period_days",
        "mail_server_net_address",
        "mail_server_protocol",
        "default_delivery_from_address",
        "default_notification_from_address",
        "default_voice_portal_lockout_from_address",
        "use_outgoing_mwi_on_smdi",
        "mwi_delay_in_seconds",
        "voice_portal_scope",
        "network_wide_messaging",
        "use_external_routing",
        "default_external_routing_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("real_delete_for_imap", "realDeleteForImap", bool),
            E("use_dn_in_mail_body", "useDnInMailBody", bool),
            E("use_short_subject_line", "useShortSubjectLine", bool),
            E("max_greeting_length_minutes", "maxGreetingLengthMinutes", int),
            E("max_message_length_minutes", "maxMessageLengthMinutes", int),
            E("max_mailbox_length_minutes", "maxMailboxLengthMinutes", int),
            E("does_message_age", "doesMessageAge", bool),
            E("hold_period_days", "holdPeriodDays", int),
            E("mail_server_net_address", "mailServerNetAddress", str),
            E("mail_server_protocol", "mailServerProtocol", str),
            E("default_delivery_from_address", "defaultDeliveryFromAddress", str),
            E(
                "default_notification_from_address",
                "defaultNotificationFromAddress",
                str,
            ),
            E(
                "default_voice_portal_lockout_from_address",
                "defaultVoicePortalLockoutFromAddress",
                str,
            ),
            E("use_outgoing_mwi_on_smdi", "useOutgoingMWIOnSMDI", bool),
            E("mwi_delay_in_seconds", "mwiDelayInSeconds", int),
            E("voice_portal_scope", "voicePortalScope", str),
            E("network_wide_messaging", "networkWideMessaging", bool),
            E("use_external_routing", "useExternalRouting", bool),
            E("default_external_routing_address", "defaultExternalRoutingAddress", str),
        )


class SystemVoiceMessagingGroupModifyRequest16(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/Amplify data mode: realDeleteForImap useDnInMailBody
    useShortSubjectLine maxMessageLengthMinutes maxMailboxLengthMinutes doesMessageAge
    holdPeriodDays mailServerNetAddress mailServerProtocol defaultDeliveryFromAddress
    defaultNotificationFromAddress useOutgoingMWIOnSMDI mwiDelayInSeconds voicePortalScope
    enterpriseVoicePortalLicensed networkWideMessaging useExternalRouting
    defaultExternalRoutingAddress vmOnlySystem, element is ignored in Amplify data mode.
    clientInitiatedMailServerSessionTimeoutMinutes recordingAudioFileFormat
    allowVoicePortalAccessFromVMDepositMenu The following elements are only used in AS
    data mode and ignored in XS data mode: storageSelection vmBucketName

    Attributes:
        real_delete_for_imap (bool): realDeleteForImap *Optional*
        use_dn_in_mail_body (bool): useDnInMailBody *Optional*
        use_short_subject_line (bool): useShortSubjectLine *Optional*
        max_message_length_minutes (int): maxMessageLengthMinutes *Optional*
        max_mailbox_length_minutes (int): maxMailboxLengthMinutes *Optional*
        does_message_age (bool): doesMessageAge *Optional*
        hold_period_days (int): holdPeriodDays *Optional*
        mail_server_net_address (str): mailServerNetAddress *Optional*
        mail_server_protocol (str): mailServerProtocol *Optional*
        default_delivery_from_address (str): defaultDeliveryFromAddress *Optional*
        default_notification_from_address (str): defaultNotificationFromAddress *Optional*
        default_voice_portal_lockout_from_address (str):
            defaultVoicePortalLockoutFromAddress *Optional*
        use_outgoing_mwi_on_smdi (bool): useOutgoingMWIOnSMDI *Optional*
        mwi_delay_in_seconds (int): mwiDelayInSeconds *Optional*
        voice_portal_scope (str): voicePortalScope *Optional*
        network_wide_messaging (bool): networkWideMessaging *Optional*
        use_external_routing (bool): useExternalRouting *Optional*
        default_external_routing_address (str): defaultExternalRoutingAddress *Optional*
        vm_only_system (bool): vmOnlySystem *Optional*
        client_initiated_mail_server_session_timeout_minutes (int):
            clientInitiatedMailServerSessionTimeoutMinutes *Optional*
        recording_audio_file_format (str): recordingAudioFileFormat *Optional*
        allow_voice_portal_access_from_vm_deposit_menu (bool):
            allowVoicePortalAccessFromVMDepositMenu *Optional*
        storage_selection (str): storageSelection *Optional*
        vm_bucket_name (str): vmBucketName *Optional*
    """

    __slots__: List[str] = [
        "real_delete_for_imap",
        "use_dn_in_mail_body",
        "use_short_subject_line",
        "max_message_length_minutes",
        "max_mailbox_length_minutes",
        "does_message_age",
        "hold_period_days",
        "mail_server_net_address",
        "mail_server_protocol",
        "default_delivery_from_address",
        "default_notification_from_address",
        "default_voice_portal_lockout_from_address",
        "use_outgoing_mwi_on_smdi",
        "mwi_delay_in_seconds",
        "voice_portal_scope",
        "network_wide_messaging",
        "use_external_routing",
        "default_external_routing_address",
        "vm_only_system",
        "client_initiated_mail_server_session_timeout_minutes",
        "recording_audio_file_format",
        "allow_voice_portal_access_from_vm_deposit_menu",
        "storage_selection",
        "vm_bucket_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("real_delete_for_imap", "realDeleteForImap", bool),
            E("use_dn_in_mail_body", "useDnInMailBody", bool),
            E("use_short_subject_line", "useShortSubjectLine", bool),
            E("max_message_length_minutes", "maxMessageLengthMinutes", int),
            E("max_mailbox_length_minutes", "maxMailboxLengthMinutes", int),
            E("does_message_age", "doesMessageAge", bool),
            E("hold_period_days", "holdPeriodDays", int),
            E("mail_server_net_address", "mailServerNetAddress", str),
            E("mail_server_protocol", "mailServerProtocol", str),
            E("default_delivery_from_address", "defaultDeliveryFromAddress", str),
            E(
                "default_notification_from_address",
                "defaultNotificationFromAddress",
                str,
            ),
            E(
                "default_voice_portal_lockout_from_address",
                "defaultVoicePortalLockoutFromAddress",
                str,
            ),
            E("use_outgoing_mwi_on_smdi", "useOutgoingMWIOnSMDI", bool),
            E("mwi_delay_in_seconds", "mwiDelayInSeconds", int),
            E("voice_portal_scope", "voicePortalScope", str),
            E("network_wide_messaging", "networkWideMessaging", bool),
            E("use_external_routing", "useExternalRouting", bool),
            E("default_external_routing_address", "defaultExternalRoutingAddress", str),
            E("vm_only_system", "vmOnlySystem", bool),
            E(
                "client_initiated_mail_server_session_timeout_minutes",
                "clientInitiatedMailServerSessionTimeoutMinutes",
                int,
            ),
            E("recording_audio_file_format", "recordingAudioFileFormat", str),
            E(
                "allow_voice_portal_access_from_vm_deposit_menu",
                "allowVoicePortalAccessFromVMDepositMenu",
                bool,
            ),
            E("storage_selection", "storageSelection", str),
            E("vm_bucket_name", "vmBucketName", str),
        )


class SystemVoiceMessagingGroupModifyVoicePortalMenusRequest(OCIRequest):
    """
    Request to modify the system voice portal menus setting.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        use_voice_portal_customization (bool): useVoicePortalCustomization *Optional*
        voice_portal_main_menu_keys (OCI.voicePortalMainMenuKeys): voicePortalMainMenuKeys
            *Optional*
        voice_messaging_menu_keys (OCI.voiceMessagingMenuKeys): voiceMessagingMenuKeys
            *Optional*
        play_greeting_menu_keys (OCI.playGreetingMenuKeys): playGreetingMenuKeys
            *Optional*
        change_busy_or_no_answer_greeting_menu_keys
            (OCI.changeBusyOrNoAnswerGreetingMenuKeys):
            changeBusyOrNoAnswerGreetingMenuKeys *Optional*
        change_extended_away_greeting_menu_keys (OCI.changeExtendedAwayGreetingMenuKeys):
            changeExtendedAwayGreetingMenuKeys *Optional*
        record_new_greeting_or_personalized_name_menu_keys
            (OCI.recordNewGreetingOrPersonalizedNameMenuKeys):
            recordNewGreetingOrPersonalizedNameMenuKeys *Optional*
        delete_all_messages_menu_keys (OCI.deleteAllMessagesMenuKeys):
            deleteAllMessagesMenuKeys *Optional*
        comm_pilot_express_profile_menu_keys (OCI.commPilotExpressProfileMenuKeys):
            commPilotExpressProfileMenuKeys *Optional*
        personalized_name_menu_keys (OCI.personalizedNameMenuKeys):
            personalizedNameMenuKeys *Optional*
        call_forwarding_options_menu_keys (OCI.callForwardingOptionsMenuKeys):
            callForwardingOptionsMenuKeys *Optional*
        change_call_forwarding_destination_menu_keys
            (OCI.changeCallForwardingDestinationMenuKeys):
            changeCallForwardingDestinationMenuKeys *Optional*
        voice_portal_calling_menu_keys (OCI.voicePortalCallingMenuKeys):
            voicePortalCallingMenuKeys *Optional*
        hoteling_menu_keys (OCI.hotelingMenuKeys): hotelingMenuKeys *Optional*
        passcode_menu_keys (OCI.passcodeMenuKeys): passcodeMenuKeys *Optional*
        play_messages_menu_keys (OCI.playMessagesMenuKeys): playMessagesMenuKeys
            *Optional*
        play_message_menu_keys (OCI.playMessageMenuKeys): playMessageMenuKeys *Optional*
        additional_message_options_menu_keys (OCI.additionalMessageOptionsMenuKeys):
            additionalMessageOptionsMenuKeys *Optional*
        forward_or_compose_message_menu_keys (OCI.forwardOrComposeMessageMenuKeys):
            forwardOrComposeMessageMenuKeys *Optional*
        reply_message_menu_keys (OCI.replyMessageMenuKeys): replyMessageMenuKeys
            *Optional*
        send_to_distribution_list_menu_keys (OCI.sendToDistributionListMenuKeys):
            sendToDistributionListMenuKeys *Optional*
        select_distribution_list_menu_keys (OCI.selectDistributionListMenuKeys):
            selectDistributionListMenuKeys *Optional*
        review_selected_distribution_list_menu_keys
            (OCI.reviewSelectedDistributionListMenuKeys):
            reviewSelectedDistributionListMenuKeys *Optional*
        send_message_to_selected_distribution_list_menu_keys
            (OCI.sendMessageToSelectedDistributionListMenuKeys):
            sendMessageToSelectedDistributionListMenuKeys *Optional*
        send_to_all_group_members_menu_keys (OCI.sendToAllGroupMembersMenuKeys):
            sendToAllGroupMembersMenuKeys *Optional*
        send_to_person_menu_keys (OCI.sendToPersonMenuKeys): sendToPersonMenuKeys
            *Optional*
        change_current_introduction_or_message_or_reply_menu_keys
            (OCI.changeCurrentIntroductionOrMessageOrReplyMenuKeys):
            changeCurrentIntroductionOrMessageOrReplyMenuKeys *Optional*
        voice_portal_login_menu_keys (OCI.voicePortalLoginMenuKeys):
            voicePortalLoginMenuKeys *Optional*
        fax_messaging_menu_keys (OCI.faxMessagingMenuKeys): faxMessagingMenuKeys
            *Optional*
        message_deposit_menu_keys (OCI.messageDepositMenuKeys): messageDepositMenuKeys
            *Optional*
        disable_message_deposit_menu_keys (OCI.disableMessageDepositMenuKeys):
            disableMessageDepositMenuKeys *Optional*
        greeting_only_forwarding_destination_menu_keys
            (OCI.greetingOnlyForwardingDestinationMenuKeys):
            greetingOnlyForwardingDestinationMenuKeys *Optional*
    """

    __slots__: List[str] = [
        "use_voice_portal_customization",
        "voice_portal_main_menu_keys",
        "voice_messaging_menu_keys",
        "play_greeting_menu_keys",
        "change_busy_or_no_answer_greeting_menu_keys",
        "change_extended_away_greeting_menu_keys",
        "record_new_greeting_or_personalized_name_menu_keys",
        "delete_all_messages_menu_keys",
        "comm_pilot_express_profile_menu_keys",
        "personalized_name_menu_keys",
        "call_forwarding_options_menu_keys",
        "change_call_forwarding_destination_menu_keys",
        "voice_portal_calling_menu_keys",
        "hoteling_menu_keys",
        "passcode_menu_keys",
        "play_messages_menu_keys",
        "play_message_menu_keys",
        "additional_message_options_menu_keys",
        "forward_or_compose_message_menu_keys",
        "reply_message_menu_keys",
        "send_to_distribution_list_menu_keys",
        "select_distribution_list_menu_keys",
        "review_selected_distribution_list_menu_keys",
        "send_message_to_selected_distribution_list_menu_keys",
        "send_to_all_group_members_menu_keys",
        "send_to_person_menu_keys",
        "change_current_introduction_or_message_or_reply_menu_keys",
        "voice_portal_login_menu_keys",
        "fax_messaging_menu_keys",
        "message_deposit_menu_keys",
        "disable_message_deposit_menu_keys",
        "greeting_only_forwarding_destination_menu_keys",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("use_voice_portal_customization", "useVoicePortalCustomization", bool),
            E(
                "voice_portal_main_menu_keys",
                "voicePortalMainMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "voice_messaging_menu_keys",
                "voiceMessagingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "play_greeting_menu_keys",
                "playGreetingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "change_busy_or_no_answer_greeting_menu_keys",
                "changeBusyOrNoAnswerGreetingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "change_extended_away_greeting_menu_keys",
                "changeExtendedAwayGreetingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "record_new_greeting_or_personalized_name_menu_keys",
                "recordNewGreetingOrPersonalizedNameMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "delete_all_messages_menu_keys",
                "deleteAllMessagesMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "comm_pilot_express_profile_menu_keys",
                "commPilotExpressProfileMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "personalized_name_menu_keys",
                "personalizedNameMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "call_forwarding_options_menu_keys",
                "callForwardingOptionsMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "change_call_forwarding_destination_menu_keys",
                "changeCallForwardingDestinationMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "voice_portal_calling_menu_keys",
                "voicePortalCallingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "hoteling_menu_keys",
                "hotelingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "passcode_menu_keys",
                "passcodeMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "play_messages_menu_keys",
                "playMessagesMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "play_message_menu_keys",
                "playMessageMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "additional_message_options_menu_keys",
                "additionalMessageOptionsMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "forward_or_compose_message_menu_keys",
                "forwardOrComposeMessageMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "reply_message_menu_keys",
                "replyMessageMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "send_to_distribution_list_menu_keys",
                "sendToDistributionListMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "select_distribution_list_menu_keys",
                "selectDistributionListMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "review_selected_distribution_list_menu_keys",
                "reviewSelectedDistributionListMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "send_message_to_selected_distribution_list_menu_keys",
                "sendMessageToSelectedDistributionListMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "send_to_all_group_members_menu_keys",
                "sendToAllGroupMembersMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "send_to_person_menu_keys",
                "sendToPersonMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "change_current_introduction_or_message_or_reply_menu_keys",
                "changeCurrentIntroductionOrMessageOrReplyMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "voice_portal_login_menu_keys",
                "voicePortalLoginMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "fax_messaging_menu_keys",
                "faxMessagingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "message_deposit_menu_keys",
                "messageDepositMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "disable_message_deposit_menu_keys",
                "disableMessageDepositMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "greeting_only_forwarding_destination_menu_keys",
                "greetingOnlyForwardingDestinationMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
        )


class SystemVoiceMessagingGroupModifyVoicePortalMenusRequest19(OCIRequest):
    """
    Request to modify the system voice portal menus setting.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        use_voice_portal_customization (bool): useVoicePortalCustomization *Optional*
        voice_portal_main_menu_keys (OCI.voicePortalMainMenuKeys): voicePortalMainMenuKeys
            *Optional*
        announcement_menu_keys (OCI.announcementMenuKeys): announcementMenuKeys *Optional*
        announcement_recording_menu_keys (OCI.announcementRecordingMenuKeys):
            announcementRecordingMenuKeys *Optional*
        greetings_menu_keys (OCI.greetingsMenuKeys): greetingsMenuKeys *Optional*
        conference_greeting_menu_keys (OCI.conferenceGreetingMenuKeys):
            conferenceGreetingMenuKeys *Optional*
        voice_messaging_menu_keys (OCI.voiceMessagingMenuKeys): voiceMessagingMenuKeys
            *Optional*
        play_greeting_menu_keys (OCI.playGreetingMenuKeys): playGreetingMenuKeys
            *Optional*
        change_busy_or_no_answer_greeting_menu_keys
            (OCI.changeBusyOrNoAnswerGreetingMenuKeys):
            changeBusyOrNoAnswerGreetingMenuKeys *Optional*
        change_extended_away_greeting_menu_keys (OCI.changeExtendedAwayGreetingMenuKeys):
            changeExtendedAwayGreetingMenuKeys *Optional*
        record_new_greeting_or_personalized_name_menu_keys
            (OCI.recordNewGreetingOrPersonalizedNameMenuKeys):
            recordNewGreetingOrPersonalizedNameMenuKeys *Optional*
        delete_all_messages_menu_keys (OCI.deleteAllMessagesMenuKeys):
            deleteAllMessagesMenuKeys *Optional*
        comm_pilot_express_profile_menu_keys (OCI.commPilotExpressProfileMenuKeys):
            commPilotExpressProfileMenuKeys *Optional*
        personalized_name_menu_keys (OCI.personalizedNameMenuKeys):
            personalizedNameMenuKeys *Optional*
        call_forwarding_options_menu_keys (OCI.callForwardingOptionsMenuKeys):
            callForwardingOptionsMenuKeys *Optional*
        change_call_forwarding_destination_menu_keys
            (OCI.changeCallForwardingDestinationMenuKeys):
            changeCallForwardingDestinationMenuKeys *Optional*
        voice_portal_calling_menu_keys (OCI.voicePortalCallingMenuKeys):
            voicePortalCallingMenuKeys *Optional*
        hoteling_menu_keys (OCI.hotelingMenuKeys): hotelingMenuKeys *Optional*
        passcode_menu_keys (OCI.passcodeMenuKeys): passcodeMenuKeys *Optional*
        play_messages_menu_keys (OCI.playMessagesMenuKeys): playMessagesMenuKeys
            *Optional*
        play_message_menu_keys (OCI.playMessageMenuKeys): playMessageMenuKeys *Optional*
        additional_message_options_menu_keys (OCI.additionalMessageOptionsMenuKeys):
            additionalMessageOptionsMenuKeys *Optional*
        forward_or_compose_message_menu_keys (OCI.forwardOrComposeMessageMenuKeys):
            forwardOrComposeMessageMenuKeys *Optional*
        reply_message_menu_keys (OCI.replyMessageMenuKeys): replyMessageMenuKeys
            *Optional*
        send_to_distribution_list_menu_keys (OCI.sendToDistributionListMenuKeys):
            sendToDistributionListMenuKeys *Optional*
        select_distribution_list_menu_keys (OCI.selectDistributionListMenuKeys):
            selectDistributionListMenuKeys *Optional*
        review_selected_distribution_list_menu_keys
            (OCI.reviewSelectedDistributionListMenuKeys):
            reviewSelectedDistributionListMenuKeys *Optional*
        send_message_to_selected_distribution_list_menu_keys
            (OCI.sendMessageToSelectedDistributionListMenuKeys):
            sendMessageToSelectedDistributionListMenuKeys *Optional*
        send_to_all_group_members_menu_keys (OCI.sendToAllGroupMembersMenuKeys):
            sendToAllGroupMembersMenuKeys *Optional*
        send_to_person_menu_keys (OCI.sendToPersonMenuKeys): sendToPersonMenuKeys
            *Optional*
        change_current_introduction_or_message_or_reply_menu_keys
            (OCI.changeCurrentIntroductionOrMessageOrReplyMenuKeys):
            changeCurrentIntroductionOrMessageOrReplyMenuKeys *Optional*
        voice_portal_login_menu_keys (OCI.voicePortalLoginMenuKeys):
            voicePortalLoginMenuKeys *Optional*
        fax_messaging_menu_keys (OCI.faxMessagingMenuKeys): faxMessagingMenuKeys
            *Optional*
        message_deposit_menu_keys (OCI.messageDepositMenuKeys): messageDepositMenuKeys
            *Optional*
        disable_message_deposit_menu_keys (OCI.disableMessageDepositMenuKeys):
            disableMessageDepositMenuKeys *Optional*
        greeting_only_forwarding_destination_menu_keys
            (OCI.greetingOnlyForwardingDestinationMenuKeys):
            greetingOnlyForwardingDestinationMenuKeys *Optional*
        personal_assistant_menu_keys (OCI.personalAssistantMenuKeys):
            personalAssistantMenuKeys *Optional*
    """

    __slots__: List[str] = [
        "use_voice_portal_customization",
        "voice_portal_main_menu_keys",
        "announcement_menu_keys",
        "announcement_recording_menu_keys",
        "greetings_menu_keys",
        "conference_greeting_menu_keys",
        "voice_messaging_menu_keys",
        "play_greeting_menu_keys",
        "change_busy_or_no_answer_greeting_menu_keys",
        "change_extended_away_greeting_menu_keys",
        "record_new_greeting_or_personalized_name_menu_keys",
        "delete_all_messages_menu_keys",
        "comm_pilot_express_profile_menu_keys",
        "personalized_name_menu_keys",
        "call_forwarding_options_menu_keys",
        "change_call_forwarding_destination_menu_keys",
        "voice_portal_calling_menu_keys",
        "hoteling_menu_keys",
        "passcode_menu_keys",
        "play_messages_menu_keys",
        "play_message_menu_keys",
        "additional_message_options_menu_keys",
        "forward_or_compose_message_menu_keys",
        "reply_message_menu_keys",
        "send_to_distribution_list_menu_keys",
        "select_distribution_list_menu_keys",
        "review_selected_distribution_list_menu_keys",
        "send_message_to_selected_distribution_list_menu_keys",
        "send_to_all_group_members_menu_keys",
        "send_to_person_menu_keys",
        "change_current_introduction_or_message_or_reply_menu_keys",
        "voice_portal_login_menu_keys",
        "fax_messaging_menu_keys",
        "message_deposit_menu_keys",
        "disable_message_deposit_menu_keys",
        "greeting_only_forwarding_destination_menu_keys",
        "personal_assistant_menu_keys",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("use_voice_portal_customization", "useVoicePortalCustomization", bool),
            E(
                "voice_portal_main_menu_keys",
                "voicePortalMainMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "announcement_menu_keys",
                "announcementMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "announcement_recording_menu_keys",
                "announcementRecordingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "greetings_menu_keys",
                "greetingsMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "conference_greeting_menu_keys",
                "conferenceGreetingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "voice_messaging_menu_keys",
                "voiceMessagingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "play_greeting_menu_keys",
                "playGreetingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "change_busy_or_no_answer_greeting_menu_keys",
                "changeBusyOrNoAnswerGreetingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "change_extended_away_greeting_menu_keys",
                "changeExtendedAwayGreetingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "record_new_greeting_or_personalized_name_menu_keys",
                "recordNewGreetingOrPersonalizedNameMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "delete_all_messages_menu_keys",
                "deleteAllMessagesMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "comm_pilot_express_profile_menu_keys",
                "commPilotExpressProfileMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "personalized_name_menu_keys",
                "personalizedNameMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "call_forwarding_options_menu_keys",
                "callForwardingOptionsMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "change_call_forwarding_destination_menu_keys",
                "changeCallForwardingDestinationMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "voice_portal_calling_menu_keys",
                "voicePortalCallingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "hoteling_menu_keys",
                "hotelingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "passcode_menu_keys",
                "passcodeMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "play_messages_menu_keys",
                "playMessagesMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "play_message_menu_keys",
                "playMessageMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "additional_message_options_menu_keys",
                "additionalMessageOptionsMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "forward_or_compose_message_menu_keys",
                "forwardOrComposeMessageMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "reply_message_menu_keys",
                "replyMessageMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "send_to_distribution_list_menu_keys",
                "sendToDistributionListMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "select_distribution_list_menu_keys",
                "selectDistributionListMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "review_selected_distribution_list_menu_keys",
                "reviewSelectedDistributionListMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "send_message_to_selected_distribution_list_menu_keys",
                "sendMessageToSelectedDistributionListMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "send_to_all_group_members_menu_keys",
                "sendToAllGroupMembersMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "send_to_person_menu_keys",
                "sendToPersonMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "change_current_introduction_or_message_or_reply_menu_keys",
                "changeCurrentIntroductionOrMessageOrReplyMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "voice_portal_login_menu_keys",
                "voicePortalLoginMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "fax_messaging_menu_keys",
                "faxMessagingMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "message_deposit_menu_keys",
                "messageDepositMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "disable_message_deposit_menu_keys",
                "disableMessageDepositMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "greeting_only_forwarding_destination_menu_keys",
                "greetingOnlyForwardingDestinationMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
            E(
                "personal_assistant_menu_keys",
                "personalAssistantMenuKeys",
                str,
                is_complex=True,
            ),  # unknown
        )


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]): xsiApplicationId
    """

    __slots__: List[str] = [
        "xsi_application_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "xsi_application_id",
                "xsiApplicationId",
                str,
                is_required=True,
                is_array=True,
            ),
        )


class SystemXsiApplicationIdGetListRequest(OCIRequest):
    """
    Get the system Xsi application Id white lists.

    The response is either `SystemXsiApplicationIdGetListResponse()` or `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemXsiApplicationIdModifyRequest(OCIRequest):
    """
    Modify the system Xsi applicaiton Id description.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        xsi_application_id (str): xsiApplicationId
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "xsi_application_id",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("xsi_application_id", "xsiApplicationId", str, is_required=True),
            E("description", "description", str),
        )


class SystemXsiApplicationIdParameterGetRequest(OCIRequest):
    """
    Request to get the Xsi application Id system parameters.

    The response is either `SystemXsiApplictionIdParameterGetResponse()` or
    `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemXsiApplicationIdParameterModifyRequest(OCIRequest):
    """
    Request to modify Xsi application system parameter.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        screen_xsi_application_id (bool): screenXsiApplicationId *Optional*
    """

    __slots__: List[str] = [
        "screen_xsi_application_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("screen_xsi_application_id", "screenXsiApplicationId", bool),)


class SystemXsiPolicyProfileAddRequest(OCIRequest):
    """
    Add the system Xsi policy profile entry.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        level (str): level
        description (str): description *Optional*
        max_target_subscription (int): maxTargetSubscription
    """

    __slots__: List[str] = [
        "name",
        "level",
        "description",
        "max_target_subscription",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("level", "level", str, is_required=True),
            E("description", "description", str),
            E(
                "max_target_subscription",
                "maxTargetSubscription",
                int,
                is_required=True,
            ),
        )


class SystemXsiPolicyProfileGetListRequest(OCIRequest):
    """
    Get the system Xsi policy profile list.

    The response is either `SystemXsiPolicyProfileGetListResponse()` or `ErrorResponse()`.

    Attributes:
        xsi_policy_profile_level (str): xsiPolicyProfileLevel *Optional*
    """

    __slots__: List[str] = [
        "xsi_policy_profile_level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("xsi_policy_profile_level", "xsiPolicyProfileLevel", str),)


class SystemZoneCallingRestrictionsZoneAddRequest(OCIRequest):
    """
    Add a zone.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemZoneAddRequest()`

    Attributes:
        zone_name (str): zoneName
        physical_location (str): physicalLocation *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "physical_location",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("physical_location", "physicalLocation", str),
        )


class SystemZoneCallingRestrictionsZoneDeleteRequest(OCIRequest):
    """
    Deletes a zone from the system The response is either a `SuccessResponse()` or an
    `ErrorResponse()`.

    Replaced by: `SystemZoneDeleteRequest()`

    Attributes:
        zone_name (str): zoneName
    """

    __slots__: List[str] = [
        "zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("zone_name", "zoneName", str, is_required=True),)


class SystemZoneCallingRestrictionsZoneGetListRequest(OCIRequest):
    """
    Gets a list of all zones defined in the system The response is
    `SystemZoneCallingRestrictionsZoneGetListResponse()` or an `ErrorResponse()`.

    Replaced by: `SystemZoneGetListRequest()`
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemZoneCallingRestrictionsZoneModifyRequest(OCIRequest):
    """
    Modifies attributes of a zone in the system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemZonePhysicalLocationAddListRequest()` and
    `SystemZonePhysicalLocationDeleteListRequest()`

    Attributes:
        zone_name (str): zoneName
        physical_location (str): physicalLocation *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "physical_location",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("physical_location", "physicalLocation", str),
        )


class SystemZoneCallingZonePhysicalLocationGetRequest(OCIRequest):
    """
    Returns a zone calling physical location for a given zone.

    Response is `SystemZoneCallingZonePhysicalLocationGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        zone_name (str): zoneName
    """

    __slots__: List[str] = [
        "zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("zone_name", "zoneName", str, is_required=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): zoneName
        physical_location (str): physicalLocation *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "physical_location",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("physical_location", "physicalLocation", str),
        )


class SystemZoneDeleteRequest(OCIRequest):
    """
    Delete a Zone.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        zone_name (str): zoneName
    """

    __slots__: List[str] = [
        "zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("zone_name", "zoneName", str, is_required=True),)


class SystemZoneGetListRequest(OCIRequest):
    """
    Get the list of all Zones.

    The response is either a `SystemZoneGetListResponse()` or an `ErrorResponse()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class SystemZoneLocationBasedPhysicalLocationAddListRequest(OCIRequest):
    """
    Adds a list of physical locations to a zone The response is `SuccessResponse()` or an
    `ErrorResponse()`.


    Attributes:
        zone_name (str): zoneName
        physical_location (List[str]): physicalLocation *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "physical_location",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("physical_location", "physicalLocation", str, is_array=True),
        )


class SystemZoneLocationBasedPhysicalLocationDeleteListRequest(OCIRequest):
    """
    Deletes a list of physical addresses from a zone The response is `SuccessResponse()`
    or an `ErrorResponse()`.


    Attributes:
        zone_name (str): zoneName
        physical_location (List[str]): physicalLocation *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "physical_location",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("physical_location", "physicalLocation", str, is_array=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        enable_tutorial (bool): enableTutorial *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "enable_tutorial",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("enable_tutorial", "enableTutorial", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        aoc_type (str): aocType *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "aoc_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("aoc_type", "aocType", str),
        )


class UserAlternateNumbersGetRequest(OCIRequest):
    """
    Request the user level data associated with Alternate Numbers.

    The response is either a `UserAlternateNumbersGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserAlternateNumbersGetRequest17(OCIRequest):
    """
    Request the user level data associated with Alternate Numbers.

    The response is either a `UserAlternateNumbersGetResponse17()` or an
    `ErrorResponse()`. Replaced by: `UserAlternateNumbersGetRequest21()` in AS data mode

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        alternate_user_id (str): alternateUserId
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "alternate_user_id",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("alternate_user_id", "alternateUserId", str, is_required=True),
            E("description", "description", str),
        )


class UserAlternateUserIdDeleteRequest(OCIRequest):
    """
    Request to delete an alternate user id of a user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        alternate_user_id (str): alternateUserId
    """

    __slots__: List[str] = [
        "user_id",
        "alternate_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("alternate_user_id", "alternateUserId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        alternate_user_id (str): alternateUserId
        new_alternate_user_id (str): newAlternateUserId *Optional*
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "alternate_user_id",
        "new_alternate_user_id",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("alternate_user_id", "alternateUserId", str, is_required=True),
            E("new_alternate_user_id", "newAlternateUserId", str),
            E("description", "description", str),
        )


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): userId
        announcement_file_type (str): announcementFileType *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "announcement_file_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("announcement_file_type", "announcementFileType", str),
        )


class UserAnnouncementRepositoryGetSettingsRequest(OCIRequest):
    """
    Return the disk space being used.


    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


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 (str): userId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str),)


class UserAuthenticationGetRequest(OCIRequest):
    """
    Get the user's authentication service information.

    The response is either a `UserAuthenticationGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserAuthenticationModifyRequest(OCIRequest):
    """
    Modify the user's authentication service information.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        user_name (str): userName *Optional*
        new_password (str): newPassword *Optional*
        password (OCI.password): password *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "user_name",
        "new_password",
        "password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("user_name", "userName", str),
            E("new_password", "newPassword", str),
            E("password", "password", str, is_complex=True),  # unknown
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


class UserAutomaticCollectCallGetRequest(OCIRequest):
    """
    Get user Automatic Collect Call service settings.

    The response is either `UserAutomaticCollectCallGetResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserAutomaticCollectCallModifyRequest(OCIRequest):
    """
    Modify user Automatic Collect Call service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        enable_automatic_collect_call (bool): enableAutomaticCollectCall *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "enable_automatic_collect_call",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("enable_automatic_collect_call", "enableAutomaticCollectCall", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        recall_timer_seconds (int): recallTimerSeconds *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "recall_timer_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("recall_timer_seconds", "recallTimerSeconds", int),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


class UserBasicCallLogsGetListRequest(OCIRequest):
    """
    Request user's call logs.

    If the callLogType is not specified, all types of calls are returned.

    The response is either a `UserBasicCallLogsGetListResponse()` or an `ErrorResponse()`.

    Replaced By: `UserBasicCallLogsGetListRequest14sp4()`

    Attributes:
        user_id (str): userId
        call_log_type (str): callLogType *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_log_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_log_type", "callLogType", str),
        )


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): userId
        call_log_type (str): callLogType *Optional*
        format_name_and_number (bool): formatNameAndNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_log_type",
        "format_name_and_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_log_type", "callLogType", str),
            E("format_name_and_number", "formatNameAndNumber", bool),
        )


class UserBroadWorksAnywhereAddPhoneNumberRequest(OCIRequest):
    """
    Add a broadworks Anywhere phone number.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
        description (str): description *Optional*
        is_active (bool): isActive
        outbound_alternate_number (str): outboundAlternateNumber *Optional*
        broadworks_call_control (bool): broadworksCallControl
        use_diversion_inhibitor (bool): useDiversionInhibitor
        answer_confirmation_required (bool): answerConfirmationRequired
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "description",
        "is_active",
        "outbound_alternate_number",
        "broadworks_call_control",
        "use_diversion_inhibitor",
        "answer_confirmation_required",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E("description", "description", str),
            E("is_active", "isActive", bool, is_required=True),
            E("outbound_alternate_number", "outboundAlternateNumber", str),
            E(
                "broadworks_call_control",
                "broadworksCallControl",
                bool,
                is_required=True,
            ),
            E(
                "use_diversion_inhibitor",
                "useDiversionInhibitor",
                bool,
                is_required=True,
            ),
            E(
                "answer_confirmation_required",
                "answerConfirmationRequired",
                bool,
                is_required=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): userId
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=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): userId
        phone_number (str): phoneNumber
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserBroadWorksAnywhereGetAvailablePortalListRequest(OCIRequest):
    """
    Get a list of all the available BroadWorks Anywhere portal instances for a specific
    user The response is either `UserBroadWorksAnywhereGetAvailableListResponse()` or
    `ErrorResponse()`.

    Replaced by `UserBroadWorksAnywhereGetAvailablePortalListRequest21sp1()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserBroadWorksAnywhereGetPhoneNumberRequest(OCIRequest):
    """
    Get a broadworks anywhere phone number The response is
    `UserBroadWorksAnywhereGetPhoneNumberResponse()`.


    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
        )


class UserBroadWorksAnywhereGetRequest(OCIRequest):
    """
    Get the list of all the BroadWorks Anywhere phone numbers for the user.

    The response is either a `UserBroadWorksAnywhereGetResponse()` or an
    `ErrorResponse()`. Replaced by: `UserBroadWorksAnywhereGetRequest16sp2()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserBroadWorksAnywhereGetSelectiveCriteriaRequest(OCIRequest):
    """
    Get a criteria for the user's BroadWorks Anywhere phone number.

    The response is either a `UserBroadWorksAnywhereGetSelectiveCriteriaResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserBroadWorksAnywhereGetSelectiveCriteriaRequest16(OCIRequest):
    """
    Get a criteria for the user's BroadWorks Anywhere phone number.

    The response is either a `UserBroadWorksAnywhereGetSelectiveCriteriaResponse16()` or
    an `ErrorResponse()`. Replaced by:
    `UserBroadWorksAnywhereGetSelectiveCriteriaRequest21()` in AS data mode

    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        phone_number (str): phoneNumber
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        alert_all_locations_for_click_to_dial_calls (bool):
            alertAllLocationsForClickToDialCalls *Optional*
        alert_all_locations_for_group_paging_calls (bool):
            alertAllLocationsForGroupPagingCalls *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "alert_all_locations_for_click_to_dial_calls",
        "alert_all_locations_for_group_paging_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "alert_all_locations_for_click_to_dial_calls",
                "alertAllLocationsForClickToDialCalls",
                bool,
            ),
            E(
                "alert_all_locations_for_group_paging_calls",
                "alertAllLocationsForGroupPagingCalls",
                bool,
            ),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserBroadWorksMobilityGetRequest(OCIRequest):
    """
    Get the user's broadworks mobility service settings.

    The response is either a `UserBroadWorksMobilityGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserBroadWorksMobilityGetRequest21(OCIRequest):
    """
    Get the user's BroadWorks Mobility service settings.

    The response is either a `UserBroadWorksMobilityGetResponse21()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        mobile_number (str): mobileNumber
        delete_existing_devices (bool): deleteExistingDevices *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
        "delete_existing_devices",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
            E("delete_existing_devices", "deleteExistingDevices", bool),
        )


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): userId
        mobile_number (str): mobileNumber
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
        )


class UserBroadWorksMobilityMobileIdentityGetRequest(OCIRequest):
    """
    Get the settings for a user's specified mobile identity.

    The response is either a `UserBroadWorksMobilityMobileIdentityGetResponse()` or an
    `ErrorResponse()`. Replaced by:
    `UserBroadWorksMobilityMobileIdentityGetRequest21sp1()`.

    Attributes:
        user_id (str): userId
        mobile_number (str): mobileNumber
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
        )


class UserBroadWorksMobilityMobileIdentityGetRequest21sp1(OCIRequest):
    """
    Get the settings for a user's specified mobile identity.

    The response is either a `UserBroadWorksMobilityMobileIdentityGetResponse21sp1()` or
    an `ErrorResponse()`. Replaced by:
    UserBroadWorksMobilityMobileIdentityGetRequest21sp1V2.

    Attributes:
        user_id (str): userId
        mobile_number (str): mobileNumber
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
        )


class UserBroadWorksMobilityMobileIdentityGetRequest22(OCIRequest):
    """
    Get the settings for a user's specified mobile identity.

    The response is either a `UserBroadWorksMobilityMobileIdentityGetResponse22()` or an
    `ErrorResponse()`. Replaced by `UserBroadWorksMobilityMobileIdentityGetRequest22V2()`.

    Attributes:
        user_id (str): userId
        mobile_number (str): mobileNumber
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
        )


class UserBroadWorksMobilityMobileIdentityGetRequest22V2(OCIRequest):
    """
    Get the settings for a user's specified mobile identity.

    The response is either a `UserBroadWorksMobilityMobileIdentityGetResponse22V2()` or an
    `ErrorResponse()`.

    Replaced By: `UserBroadWorksMobilityMobileIdentityGetRequest22V3()`

    Attributes:
        user_id (str): userId
        mobile_number (str): mobileNumber
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=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): userId
        mobile_number (str): mobileNumber
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
        )


class UserBroadWorksMobilityModifyRequest(OCIRequest):
    """
    Modify the user's broadworks mobility service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        phones_to_ring (str): phonesToRing *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        alert_click_to_dial_calls (bool): alertClickToDialCalls *Optional*
        alert_group_paging_calls (bool): alertGroupPagingCalls *Optional*
        enable_diversion_inhibitor (bool): enableDiversionInhibitor *Optional*
        require_answer_confirmation (bool): requireAnswerConfirmation *Optional*
        broadworks_call_control (bool): broadworksCallControl *Optional*
        use_setting_level (str): useSettingLevel *Optional*
        deny_call_originations (bool): denyCallOriginations *Optional*
        deny_call_terminations (bool): denyCallTerminations *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "phones_to_ring",
        "mobile_phone_number",
        "alert_click_to_dial_calls",
        "alert_group_paging_calls",
        "enable_diversion_inhibitor",
        "require_answer_confirmation",
        "broadworks_call_control",
        "use_setting_level",
        "deny_call_originations",
        "deny_call_terminations",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("phones_to_ring", "phonesToRing", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("alert_click_to_dial_calls", "alertClickToDialCalls", bool),
            E("alert_group_paging_calls", "alertGroupPagingCalls", bool),
            E("enable_diversion_inhibitor", "enableDiversionInhibitor", bool),
            E("require_answer_confirmation", "requireAnswerConfirmation", bool),
            E("broadworks_call_control", "broadworksCallControl", bool),
            E("use_setting_level", "useSettingLevel", str),
            E("deny_call_originations", "denyCallOriginations", bool),
            E("deny_call_terminations", "denyCallTerminations", bool),
        )


class UserBroadWorksMobilityModifyRequest20(OCIRequest):
    """
    Modify the user's broadworks mobility service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. If the request
    modifies the mobilePhoneNumber and the new number does not belong to the appropriate
    Mobile Subscriber Directory Numbers pool, the request is rejected.  For a service
    provider the number must belong to the group Mobile Subscriber Directory Numbers pool.
    For an enterprise user, the number must belong to the enterprise Mobile Subscriber
    Directory Numbers pool.  If the request is executed by a user and modifies the
    mobilePhoneNumber, the request is rejected.

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        phones_to_ring (str): phonesToRing *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        alert_click_to_dial_calls (bool): alertClickToDialCalls *Optional*
        alert_group_paging_calls (bool): alertGroupPagingCalls *Optional*
        enable_diversion_inhibitor (bool): enableDiversionInhibitor *Optional*
        require_answer_confirmation (bool): requireAnswerConfirmation *Optional*
        broadworks_call_control (bool): broadworksCallControl *Optional*
        use_setting_level (str): useSettingLevel *Optional*
        deny_call_originations (bool): denyCallOriginations *Optional*
        deny_call_terminations (bool): denyCallTerminations *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "phones_to_ring",
        "mobile_phone_number",
        "alert_click_to_dial_calls",
        "alert_group_paging_calls",
        "enable_diversion_inhibitor",
        "require_answer_confirmation",
        "broadworks_call_control",
        "use_setting_level",
        "deny_call_originations",
        "deny_call_terminations",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("phones_to_ring", "phonesToRing", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("alert_click_to_dial_calls", "alertClickToDialCalls", bool),
            E("alert_group_paging_calls", "alertGroupPagingCalls", bool),
            E("enable_diversion_inhibitor", "enableDiversionInhibitor", bool),
            E("require_answer_confirmation", "requireAnswerConfirmation", bool),
            E("broadworks_call_control", "broadworksCallControl", bool),
            E("use_setting_level", "useSettingLevel", str),
            E("deny_call_originations", "denyCallOriginations", bool),
            E("deny_call_terminations", "denyCallTerminations", bool),
        )


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): userId
        monitored_user_id (List[str]): monitoredUserId
    """

    __slots__: List[str] = [
        "user_id",
        "monitored_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "monitored_user_id",
                "monitoredUserId",
                str,
                is_required=True,
                is_array=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): userId
        monitored_user_id (List[str]): monitoredUserId
    """

    __slots__: List[str] = [
        "user_id",
        "monitored_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "monitored_user_id",
                "monitoredUserId",
                str,
                is_required=True,
                is_array=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserBroadWorksReceptionistOfficeGetRequest(OCIRequest):
    """
    Request the Receptionist Office parameters.

    The response is either a `UserBroadWorksReceptionistOfficeGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserBroadWorksReceptionistSmallBusinessGetRequest(OCIRequest):
    """
    Request the Receptionist Small Business parameters.

    The response is either a `UserBroadWorksReceptionistSmallBusinessGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserBusyLampFieldGetRequest(OCIRequest):
    """
    Request the settings for the busy lamp field service.

    The response is either a `UserBusyLampFieldGetResponse()` or an `ErrorResponse()`.
    Replaced by: `UserBusyLampFieldGetRequest16sp2()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): supervisorUserId
        service_user_id (str): serviceUserId
        agent_user_id (List[str]): agentUserId
    """

    __slots__: List[str] = [
        "supervisor_user_id",
        "service_user_id",
        "agent_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("supervisor_user_id", "supervisorUserId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("agent_user_id", "agentUserId", str, is_required=True, is_array=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): agentUserId
    """

    __slots__: List[str] = [
        "agent_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("agent_user_id", "agentUserId", str, is_required=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): agentUserId
    """

    __slots__: List[str] = [
        "agent_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("agent_user_id", "agentUserId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): supervisorUserId
        service_user_id (str): serviceUserId
        agent_user_id (List[str]): agentUserId
    """

    __slots__: List[str] = [
        "supervisor_user_id",
        "service_user_id",
        "agent_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("supervisor_user_id", "supervisorUserId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("agent_user_id", "agentUserId", str, is_required=True, is_array=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): supervisorUserId
        name (str): name
    """

    __slots__: List[str] = [
        "supervisor_user_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("supervisor_user_id", "supervisorUserId", str, is_required=True),
            E("name", "name", str, is_required=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): supervisorUserId
        name (str): name
    """

    __slots__: List[str] = [
        "supervisor_user_id",
        "name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("supervisor_user_id", "supervisorUserId", str, is_required=True),
            E("name", "name", str, is_required=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): agentUserId
        service_user_id (str): serviceUserId
    """

    __slots__: List[str] = [
        "agent_user_id",
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("agent_user_id", "agentUserId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): agentUserId
    """

    __slots__: List[str] = [
        "agent_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("agent_user_id", "agentUserId", str, is_required=True),)


class UserCallCenterGetListRequest(OCIRequest):
    """
    Get the list of call centers the specified user belongs to.

    The response is either a `UserCallCenterGetListResponse()` or an `ErrorResponse()`.

    Replaced By: `UserCallCenterGetRequest()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallCenterGetRequest(OCIRequest):
    """
    Get the user's ACD state and the list of call centers the specified user belongs to.

    The response is either a `UserCallCenterGetResponse()` or an `ErrorResponse()`.

    Replaced By: `UserCallCenterGetRequest16()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallCenterGetRequest16(OCIRequest):
    """
    Get the user's call center settings and the list of call centers the specified user
    belongs to.

    The response is either a `UserCallCenterGetResponse16()` or an `ErrorResponse()`.
    Replaced by: `UserCallCenterGetRequest17()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallCenterGetRequest17(OCIRequest):
    """
    Get the user's call center settings and the list of call centers the specified user
    belongs to.

    The response is either a `UserCallCenterGetResponse17()` or an `ErrorResponse()`.
    Replaced by `UserCallCenterGetRequest17sp4()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallCenterGetRequest17sp4(OCIRequest):
    """
    Get the user's call center settings and the list of call centers the specified user
    belongs to.

    The response is either a `UserCallCenterGetResponse17sp4()` or an `ErrorResponse()`.
    Replaced by `UserCallCenterGetRequest19()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallCenterGetRequest19(OCIRequest):
    """
    Get the user's call center settings and the list of call centers the specified user
    belongs to.

    The response is either a `UserCallCenterGetResponse19()` or an `ErrorResponse()`.
    Replaced by `UserCallCenterGetRequest23()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): supervisorUserId
    """

    __slots__: List[str] = [
        "supervisor_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("supervisor_user_id", "supervisorUserId", str, is_required=True),)


class UserCallCenterMonitoringGetRequest(OCIRequest):
    """
    Request the user's Call Center Monitoring settings.

    The response is either a `UserCallCenterMonitoringGetResponse()` or an
    `ErrorResponse()`. Replaced by `UserCallCenterMonitoringGetRequest23()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        play_tone_to_agent_for_silent_monitoring (bool):
            playToneToAgentForSilentMonitoring *Optional*
        play_tone_to_agent_for_supervisor_coaching (bool):
            playToneToAgentForSupervisorCoaching *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "play_tone_to_agent_for_silent_monitoring",
        "play_tone_to_agent_for_supervisor_coaching",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "play_tone_to_agent_for_silent_monitoring",
                "playToneToAgentForSilentMonitoring",
                bool,
            ),
            E(
                "play_tone_to_agent_for_supervisor_coaching",
                "playToneToAgentForSupervisorCoaching",
                bool,
            ),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        is_ring_splash_active (bool): isRingSplashActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "forward_to_phone_number",
        "is_ring_splash_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("is_ring_splash_active", "isRingSplashActive", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        is_ring_splash_active (bool): isRingSplashActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "forward_to_phone_number",
        "is_ring_splash_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("is_ring_splash_active", "isRingSplashActive", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "forward_to_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        number_of_rings (int): numberOfRings *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "forward_to_phone_number",
        "number_of_rings",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("number_of_rings", "numberOfRings", int),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "forward_to_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
        )


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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserCallForwardingSelectiveGetCriteriaRequest(OCIRequest):
    """
    Get a criteria for the user's call forwarding selective service.

    The response is either a `UserCallForwardingSelectiveGetCriteriaResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserCallForwardingSelectiveGetCriteriaRequest16(OCIRequest):
    """
    Get a criteria for the user's call forwarding selective service.

    The response is either a `UserCallForwardingSelectiveGetCriteriaResponse16()` or an
    `ErrorResponse()`. Replaced by: `UserCallForwardingSelectiveGetCriteriaRequest21()` in
    AS data mode

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserCallForwardingSelectiveGetRequest(OCIRequest):
    """
    Get the user's call forwarding selective service setting.

    The response is either a `UserCallForwardingSelectiveGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallLogsClearRequest(OCIRequest):
    """
    Clear a user's call logs associated with Basic Call Logs and Enhanced Call Logs
    features.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `UserCallLogsClearRequest14sp4()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        delete_all_call_logs (bool): deleteAllCallLogs *Optional*
        delete_specified_call_logs (OCI.deleteSpecifiedCallLogs): deleteSpecifiedCallLogs
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "delete_all_call_logs",
        "delete_specified_call_logs",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("delete_all_call_logs", "deleteAllCallLogs", bool),
            E(
                "delete_specified_call_logs",
                "deleteSpecifiedCallLogs",
                str,
                is_complex=True,
            ),  # unknown
        )


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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserCallNotifyGetCriteriaRequest(OCIRequest):
    """
    Get a criteria for the user's call notify service.

    The response is either a `UserCallNotifyGetCriteriaResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserCallNotifyGetCriteriaRequest16(OCIRequest):
    """
    Get a criteria for the user's call notify service.

    The response is either a `UserCallNotifyGetCriteriaResponse16()` or an
    `ErrorResponse()`. Replaced by: `UserCallNotifyGetCriteriaRequest21()` in AS data mode

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallPoliciesGetRequest(OCIRequest):
    """
    Request the user level data associated with Call Policies.

    The response is either a `UserCallPoliciesGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallPoliciesGetRequest17(OCIRequest):
    """
    Request the user level data associated with Call Policies.

    The response is either a `UserCallPoliciesGetResponse17()` or an `ErrorResponse()`.
    Replaced by: `UserCallPoliciesGetRequest19sp1()` in AS data mode

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        redirected_calls_colp_privacy (str): redirectedCallsCOLPPrivacy *Optional*
        call_being_forwarded_response_call_type (str): callBeingForwardedResponseCallType
            *Optional*
        calling_line_identity_for_redirected_calls (str):
            callingLineIdentityForRedirectedCalls *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "redirected_calls_colp_privacy",
        "call_being_forwarded_response_call_type",
        "calling_line_identity_for_redirected_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("redirected_calls_colp_privacy", "redirectedCallsCOLPPrivacy", str),
            E(
                "call_being_forwarded_response_call_type",
                "callBeingForwardedResponseCallType",
                str,
            ),
            E(
                "calling_line_identity_for_redirected_calls",
                "callingLineIdentityForRedirectedCalls",
                str,
            ),
        )


class UserCallProcessingGetPolicyRequest14(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse14()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest14sp1(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse14sp1()` or an
    `ErrorResponse()`.

    Replaced By: `UserCallProcessingGetPolicyRequest14sp7()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest14sp7(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse14sp7()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest16(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse16()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest16sp2(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse16()` or an
    `ErrorResponse()`. Replaced by: `UserCallProcessingGetPolicyRequest17sp4()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest17(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse17()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest17sp3(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse17sp3()` or an
    `ErrorResponse()`. Replaced by: UserCallProcessingGetPolicyRequest17Sp4

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest17sp4(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse17sp4()` or an
    `ErrorResponse()`. Replaced by: `UserCallProcessingGetPolicyRequest18()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest18(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse18()` or an
    `ErrorResponse()`. Replaced by: `UserCallProcessingGetPolicyRequest19sp1()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest19sp1(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse19sp1()` or an
    `ErrorResponse()`. Replaced by: `UserCallProcessingGetPolicyRequest21sp1()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest21sp1(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse21sp1()` or an
    `ErrorResponse()`. Replaced by: `UserCallProcessingGetPolicyRequest21sp2()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest21sp2(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse21sp2()` or an
    `ErrorResponse()`. Replaced by: `UserCallProcessingGetPolicyRequest22()` in AS data
    mode

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest22(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse22()` or an
    `ErrorResponse()`. Replaced by: `UserCallProcessingGetPolicyRequest22V2()` in AS data
    mode.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingGetPolicyRequest22V2(OCIRequest):
    """
    Request the user level data associated with Call Processing Policy.

    The response is either a `UserCallProcessingGetPolicyResponse22V2()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallProcessingModifyPolicyRequest14(OCIRequest):
    """
    Modify the user level data associated with Call Processing Policy.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `UserCallProcessingModifyPolicyRequest14sp7()`

    Attributes:
        user_id (str): userId
        use_user_setting (bool): useUserSetting *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        media_policy_selection (str): mediaPolicySelection *Optional*
        supported_media_set_name (str): supportedMediaSetName *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_user_setting",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "media_policy_selection",
        "supported_media_set_name",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_user_setting", "useUserSetting", bool),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E("media_policy_selection", "mediaPolicySelection", str),
            E("supported_media_set_name", "supportedMediaSetName", str),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
        )


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 The following elements are only used in XS data
    mode and ignored in AS data mode: useUserTranslationRoutingSetting routeOverrideDomain
    routeOverridePrefix

    Attributes:
        user_id (str): userId
        use_user_clid_setting (bool): useUserCLIDSetting *Optional*
        use_user_media_setting (bool): useUserMediaSetting *Optional*
        use_user_call_limits_setting (bool): useUserCallLimitsSetting *Optional*
        use_user_dclid_setting (bool): useUserDCLIDSetting *Optional*
        use_user_translation_routing_setting (bool): useUserTranslationRoutingSetting
            *Optional*
        use_max_simultaneous_calls (bool): useMaxSimultaneousCalls *Optional*
        max_simultaneous_calls (int): maxSimultaneousCalls *Optional*
        use_max_simultaneous_video_calls (bool): useMaxSimultaneousVideoCalls *Optional*
        max_simultaneous_video_calls (int): maxSimultaneousVideoCalls *Optional*
        use_max_call_time_for_answered_calls (bool): useMaxCallTimeForAnsweredCalls
            *Optional*
        max_call_time_for_answered_calls_minutes (int): maxCallTimeForAnsweredCallsMinutes
            *Optional*
        use_max_call_time_for_unanswered_calls (bool): useMaxCallTimeForUnansweredCalls
            *Optional*
        max_call_time_for_unanswered_calls_minutes (int):
            maxCallTimeForUnansweredCallsMinutes *Optional*
        media_policy_selection (str): mediaPolicySelection *Optional*
        supported_media_set_name (str): supportedMediaSetName *Optional*
        use_max_concurrent_redirected_calls (bool): useMaxConcurrentRedirectedCalls
            *Optional*
        max_concurrent_redirected_calls (int): maxConcurrentRedirectedCalls *Optional*
        use_max_find_me_follow_me_depth (bool): useMaxFindMeFollowMeDepth *Optional*
        max_find_me_follow_me_depth (int): maxFindMeFollowMeDepth *Optional*
        max_redirection_depth (int): maxRedirectionDepth *Optional*
        use_max_concurrent_find_me_follow_me_invocations (bool):
            useMaxConcurrentFindMeFollowMeInvocations *Optional*
        max_concurrent_find_me_follow_me_invocations (int):
            maxConcurrentFindMeFollowMeInvocations *Optional*
        clid_policy (str): clidPolicy *Optional*
        emergency_clid_policy (str): emergencyClidPolicy *Optional*
        allow_alternate_numbers_for_redirecting_identity (bool):
            allowAlternateNumbersForRedirectingIdentity *Optional*
        use_group_name (bool): useGroupName *Optional*
        enable_dialable_caller_id (bool): enableDialableCallerID *Optional*
        block_calling_name_for_external_calls (bool): blockCallingNameForExternalCalls
            *Optional*
        allow_configurable_clid_for_redirecting_identity (bool):
            allowConfigurableCLIDForRedirectingIdentity *Optional*
        allow_department_clid_name_override (bool): allowDepartmentCLIDNameOverride
            *Optional*
        use_user_phone_list_lookup_setting (bool): useUserPhoneListLookupSetting
            *Optional*
        enable_phone_list_lookup (bool): enablePhoneListLookup *Optional*
        use_max_concurrent_terminating_alerting_requests (bool):
            useMaxConcurrentTerminatingAlertingRequests *Optional*
        max_concurrent_terminating_alerting_requests (int):
            maxConcurrentTerminatingAlertingRequests *Optional*
        include_redirections_in_maximum_number_of_concurrent_calls (bool):
            includeRedirectionsInMaximumNumberOfConcurrentCalls *Optional*
        route_override_domain (str): routeOverrideDomain *Optional*
        route_override_prefix (str): routeOverridePrefix *Optional*
        allow_mobile_dn_for_redirecting_identity (bool):
            allowMobileDNForRedirectingIdentity *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_user_clid_setting",
        "use_user_media_setting",
        "use_user_call_limits_setting",
        "use_user_dclid_setting",
        "use_user_translation_routing_setting",
        "use_max_simultaneous_calls",
        "max_simultaneous_calls",
        "use_max_simultaneous_video_calls",
        "max_simultaneous_video_calls",
        "use_max_call_time_for_answered_calls",
        "max_call_time_for_answered_calls_minutes",
        "use_max_call_time_for_unanswered_calls",
        "max_call_time_for_unanswered_calls_minutes",
        "media_policy_selection",
        "supported_media_set_name",
        "use_max_concurrent_redirected_calls",
        "max_concurrent_redirected_calls",
        "use_max_find_me_follow_me_depth",
        "max_find_me_follow_me_depth",
        "max_redirection_depth",
        "use_max_concurrent_find_me_follow_me_invocations",
        "max_concurrent_find_me_follow_me_invocations",
        "clid_policy",
        "emergency_clid_policy",
        "allow_alternate_numbers_for_redirecting_identity",
        "use_group_name",
        "enable_dialable_caller_id",
        "block_calling_name_for_external_calls",
        "allow_configurable_clid_for_redirecting_identity",
        "allow_department_clid_name_override",
        "use_user_phone_list_lookup_setting",
        "enable_phone_list_lookup",
        "use_max_concurrent_terminating_alerting_requests",
        "max_concurrent_terminating_alerting_requests",
        "include_redirections_in_maximum_number_of_concurrent_calls",
        "route_override_domain",
        "route_override_prefix",
        "allow_mobile_dn_for_redirecting_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_user_clid_setting", "useUserCLIDSetting", bool),
            E("use_user_media_setting", "useUserMediaSetting", bool),
            E("use_user_call_limits_setting", "useUserCallLimitsSetting", bool),
            E("use_user_dclid_setting", "useUserDCLIDSetting", bool),
            E(
                "use_user_translation_routing_setting",
                "useUserTranslationRoutingSetting",
                bool,
            ),
            E("use_max_simultaneous_calls", "useMaxSimultaneousCalls", bool),
            E("max_simultaneous_calls", "maxSimultaneousCalls", int),
            E("use_max_simultaneous_video_calls", "useMaxSimultaneousVideoCalls", bool),
            E("max_simultaneous_video_calls", "maxSimultaneousVideoCalls", int),
            E(
                "use_max_call_time_for_answered_calls",
                "useMaxCallTimeForAnsweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_answered_calls_minutes",
                "maxCallTimeForAnsweredCallsMinutes",
                int,
            ),
            E(
                "use_max_call_time_for_unanswered_calls",
                "useMaxCallTimeForUnansweredCalls",
                bool,
            ),
            E(
                "max_call_time_for_unanswered_calls_minutes",
                "maxCallTimeForUnansweredCallsMinutes",
                int,
            ),
            E("media_policy_selection", "mediaPolicySelection", str),
            E("supported_media_set_name", "supportedMediaSetName", str),
            E(
                "use_max_concurrent_redirected_calls",
                "useMaxConcurrentRedirectedCalls",
                bool,
            ),
            E("max_concurrent_redirected_calls", "maxConcurrentRedirectedCalls", int),
            E("use_max_find_me_follow_me_depth", "useMaxFindMeFollowMeDepth", bool),
            E("max_find_me_follow_me_depth", "maxFindMeFollowMeDepth", int),
            E("max_redirection_depth", "maxRedirectionDepth", int),
            E(
                "use_max_concurrent_find_me_follow_me_invocations",
                "useMaxConcurrentFindMeFollowMeInvocations",
                bool,
            ),
            E(
                "max_concurrent_find_me_follow_me_invocations",
                "maxConcurrentFindMeFollowMeInvocations",
                int,
            ),
            E("clid_policy", "clidPolicy", str),
            E("emergency_clid_policy", "emergencyClidPolicy", str),
            E(
                "allow_alternate_numbers_for_redirecting_identity",
                "allowAlternateNumbersForRedirectingIdentity",
                bool,
            ),
            E("use_group_name", "useGroupName", bool),
            E("enable_dialable_caller_id", "enableDialableCallerID", bool),
            E(
                "block_calling_name_for_external_calls",
                "blockCallingNameForExternalCalls",
                bool,
            ),
            E(
                "allow_configurable_clid_for_redirecting_identity",
                "allowConfigurableCLIDForRedirectingIdentity",
                bool,
            ),
            E(
                "allow_department_clid_name_override",
                "allowDepartmentCLIDNameOverride",
                bool,
            ),
            E(
                "use_user_phone_list_lookup_setting",
                "useUserPhoneListLookupSetting",
                bool,
            ),
            E("enable_phone_list_lookup", "enablePhoneListLookup", bool),
            E(
                "use_max_concurrent_terminating_alerting_requests",
                "useMaxConcurrentTerminatingAlertingRequests",
                bool,
            ),
            E(
                "max_concurrent_terminating_alerting_requests",
                "maxConcurrentTerminatingAlertingRequests",
                int,
            ),
            E(
                "include_redirections_in_maximum_number_of_concurrent_calls",
                "includeRedirectionsInMaximumNumberOfConcurrentCalls",
                bool,
            ),
            E("route_override_domain", "routeOverrideDomain", str),
            E("route_override_prefix", "routeOverridePrefix", str),
            E(
                "allow_mobile_dn_for_redirecting_identity",
                "allowMobileDNForRedirectingIdentity",
                bool,
            ),
        )


class UserCallRecordingGetRequest(OCIRequest):
    """
    Get the Call Recording attributes for a user.

    The response is either a `UserCallRecordingGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallRecordingGetRequest20(OCIRequest):
    """
    Get the Call Recording attributes for a user.

    The response is either a `UserCallRecordingGetResponse20()` or an `ErrorResponse()`.
    The following parameters are not returned for service instance: -
    pauseResumeNotification - enableCallRecordingAnnouncement -
    enableRecordCallRepeatWarningTone - recordCallRepeatWarningToneTimerSeconds Replaced
    by: `UserCallRecordingGetRequest23()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        recording_option (str): recordingOption *Optional*
        pause_resume_notification (str): pauseResumeNotification *Optional*
        enable_call_recording_announcement (bool): enableCallRecordingAnnouncement
            *Optional*
        enable_record_call_repeat_warning_tone (bool): enableRecordCallRepeatWarningTone
            *Optional*
        record_call_repeat_warning_tone_timer_seconds (int):
            recordCallRepeatWarningToneTimerSeconds *Optional*
        enable_voice_mail_recording (bool): enableVoiceMailRecording *Optional*
        media_stream (str): mediaStream *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "recording_option",
        "pause_resume_notification",
        "enable_call_recording_announcement",
        "enable_record_call_repeat_warning_tone",
        "record_call_repeat_warning_tone_timer_seconds",
        "enable_voice_mail_recording",
        "media_stream",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("recording_option", "recordingOption", str),
            E("pause_resume_notification", "pauseResumeNotification", str),
            E(
                "enable_call_recording_announcement",
                "enableCallRecordingAnnouncement",
                bool,
            ),
            E(
                "enable_record_call_repeat_warning_tone",
                "enableRecordCallRepeatWarningTone",
                bool,
            ),
            E(
                "record_call_repeat_warning_tone_timer_seconds",
                "recordCallRepeatWarningToneTimerSeconds",
                int,
            ),
            E("enable_voice_mail_recording", "enableVoiceMailRecording", bool),
            E("media_stream", "mediaStream", str),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallTransferGetRequest(OCIRequest):
    """
    Request the user level data associated with Call Transfer.

    The response is either a `UserCallTransferGetResponse()` or an `ErrorResponse()`.

    Replaced By: UserCallTransferGetRequest14Sp4

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_recall_active (bool): isRecallActive *Optional*
        recall_number_of_rings (int): recallNumberOfRings *Optional*
        use_diversion_inhibitor_for_blind_transfer (bool):
            useDiversionInhibitorForBlindTransfer *Optional*
        use_diversion_inhibitor_for_consultative_calls (bool):
            useDiversionInhibitorForConsultativeCalls *Optional*
        enable_busy_camp_on (bool): enableBusyCampOn *Optional*
        busy_camp_on_seconds (int): busyCampOnSeconds *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_recall_active",
        "recall_number_of_rings",
        "use_diversion_inhibitor_for_blind_transfer",
        "use_diversion_inhibitor_for_consultative_calls",
        "enable_busy_camp_on",
        "busy_camp_on_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_recall_active", "isRecallActive", bool),
            E("recall_number_of_rings", "recallNumberOfRings", int),
            E(
                "use_diversion_inhibitor_for_blind_transfer",
                "useDiversionInhibitorForBlindTransfer",
                bool,
            ),
            E(
                "use_diversion_inhibitor_for_consultative_calls",
                "useDiversionInhibitorForConsultativeCalls",
                bool,
            ),
            E("enable_busy_camp_on", "enableBusyCampOn", bool),
            E("busy_camp_on_seconds", "busyCampOnSeconds", int),
        )


class UserCallWaitingGetRequest(OCIRequest):
    """
    Request the user level data associated with Call Waiting.

    The response is either a `UserCallWaitingGetResponse()` or an `ErrorResponse()`.
    Replaced by: `UserCallWaitingGetRequest17sp4()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        disable_calling_line_id_delivery (bool): disableCallingLineIdDelivery *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "disable_calling_line_id_delivery",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("disable_calling_line_id_delivery", "disableCallingLineIdDelivery", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active_for_external_calls (bool): isActiveForExternalCalls *Optional*
        is_active_for_internal_calls (bool): isActiveForInternalCalls *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active_for_external_calls",
        "is_active_for_internal_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active_for_external_calls", "isActiveForExternalCalls", bool),
            E("is_active_for_internal_calls", "isActiveForInternalCalls", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active_for_external_calls (bool): isActiveForExternalCalls *Optional*
        is_active_for_internal_calls (bool): isActiveForInternalCalls *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active_for_external_calls",
        "is_active_for_internal_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active_for_external_calls", "isActiveForExternalCalls", bool),
            E("is_active_for_internal_calls", "isActiveForInternalCalls", bool),
        )


class UserCallingPartyCategoryGetRequest(OCIRequest):
    """
    Request the user level data associated with Calling Party Category.

    The response is either a `UserCallingPartyCategoryGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCallingPartyCategoryModifyRequest(OCIRequest):
    """
    Modify the user level data associated with Calling Party Category.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        category (str): category *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("category", "category", str),
        )


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): userId
        category (str): category *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("category", "category", str),
        )


class UserChargeNumberGetRequest(OCIRequest):
    """
    Request the user level data associated with Charge Number.

    The response is either a `UserChargeNumberGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        phone_number (str): phoneNumber *Optional*
        use_charge_number_for_enhanced_translations (bool):
            useChargeNumberForEnhancedTranslations *Optional*
        send_charge_number_to_network (bool): sendChargeNumberToNetwork *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "use_charge_number_for_enhanced_translations",
        "send_charge_number_to_network",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str),
            E(
                "use_charge_number_for_enhanced_translations",
                "useChargeNumberForEnhancedTranslations",
                bool,
            ),
            E("send_charge_number_to_network", "sendChargeNumberToNetwork", bool),
        )


class UserClassmarkGetRequest(OCIRequest):
    """
    Request the Class Mark data associated with User.

    The response is either a `UserClassmarkGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        classmark (str): classmark *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "classmark",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("classmark", "classmark", str),
        )


class UserCollaborateBridgeGetRequest(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 `UserCollaborateBridgeGetResponse()` or `ErrorResponse()`.
    Replaced by: `UserCollaborateBridgeGetRequest20sp1()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        room_id (str): roomId
    """

    __slots__: List[str] = [
        "user_id",
        "room_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("room_id", "roomId", str, is_required=True),
        )


class UserCollaborateInstantRoomAddRequest(OCIRequest):
    """
    Request to add collaborate instant room.

    The response is either a `UserCollaborateInstantRoomAddResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        room_name (str): roomName *Optional*
        use_room_id_as_room_name (bool): useRoomIdAsRoomName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "room_name",
        "use_room_id_as_room_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("room_name", "roomName", str),
            E("use_room_id_as_room_name", "useRoomIdAsRoomName", bool),
        )


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): userId
        room_id (str): roomId
    """

    __slots__: List[str] = [
        "user_id",
        "room_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("room_id", "roomId", str, is_required=True),
        )


class UserCollaborateInstantRoomParametersGetRequest(OCIRequest):
    """
    Request collaborate instant room settings.

    The response is either `UserCollaborateInstantRoomParametersGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCollaborateInstantRoomParametersModifyRequest(OCIRequest):
    """
    Request to modify collaborate instant room settings.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        attendee_notification (str): attendeeNotification *Optional*
        end_collaborate_room_session_on_owner_exit (bool):
            endCollaborateRoomSessionOnOwnerExit *Optional*
        owner_required (bool): ownerRequired *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "attendee_notification",
        "end_collaborate_room_session_on_owner_exit",
        "owner_required",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("attendee_notification", "attendeeNotification", str),
            E(
                "end_collaborate_room_session_on_owner_exit",
                "endCollaborateRoomSessionOnOwnerExit",
                bool,
            ),
            E("owner_required", "ownerRequired", bool),
        )


class UserCollaborateMyRoomGetRequest(OCIRequest):
    """
    Request collaborate room settings for MyRoom.

    The response is either `UserCollaboratMyRoomGetResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCollaborateMyRoomModifyRequest(OCIRequest):
    """
    Request to modify collaborate room settings for MyRoom.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        room_name (str): roomName *Optional*
        attendee_notification (str): attendeeNotification *Optional*
        end_collaborate_room_session_on_owner_exit (bool):
            endCollaborateRoomSessionOnOwnerExit *Optional*
        owner_required (bool): ownerRequired *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "room_name",
        "attendee_notification",
        "end_collaborate_room_session_on_owner_exit",
        "owner_required",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("room_name", "roomName", str),
            E("attendee_notification", "attendeeNotification", str),
            E(
                "end_collaborate_room_session_on_owner_exit",
                "endCollaborateRoomSessionOnOwnerExit",
                bool,
            ),
            E("owner_required", "ownerRequired", bool),
        )


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): userId
        room_id (str): roomId
    """

    __slots__: List[str] = [
        "user_id",
        "room_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("room_id", "roomId", str, is_required=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): userId
        room_id (str): roomId
    """

    __slots__: List[str] = [
        "user_id",
        "room_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("room_id", "roomId", str, is_required=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): userId
        room_id (str): roomId
    """

    __slots__: List[str] = [
        "user_id",
        "room_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("room_id", "roomId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        code (List[str]): code
    """

    __slots__: List[str] = [
        "user_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("code", "code", str, is_required=True, is_array=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        use_group_setting (bool): useGroupSetting *Optional*
        profile_name (str): profileName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_group_setting",
        "profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_group_setting", "useGroupSetting", bool),
            E("profile_name", "profileName", str),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        enable_profile (int): enableProfile *Optional*
        old_passcode (str): oldPasscode *Optional*
        new_passcode (str): newPasscode *Optional*
        reset_lockout (bool): resetLockout *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "enable_profile",
        "old_passcode",
        "new_passcode",
        "reset_lockout",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("enable_profile", "enableProfile", int),
            E("old_passcode", "oldPasscode", str),
            E("new_passcode", "newPasscode", str),
            E("reset_lockout", "resetLockout", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


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): userId
        delete_existing_devices (bool): deleteExistingDevices *Optional*
        unassign_phone_numbers (str): unassignPhoneNumbers *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "delete_existing_devices",
        "unassign_phone_numbers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("delete_existing_devices", "deleteExistingDevices", bool),
            E("unassign_phone_numbers", "unassignPhoneNumbers", str),
        )


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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserCustomRingbackUserGetCriteriaRequest(OCIRequest):
    """
    Get a criteria for the user's custom ringback service.

    The response is either a `UserCustomRingbackUserGetCriteriaResponse()` or an
    `ErrorResponse()`.

    Replaced By: UserCustomRingbackUserGetCriteriaRequest15Sp2

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserCustomRingbackUserGetCriteriaRequest15sp2(OCIRequest):
    """
    Get a criteria for the user's custom ringback service.

    The response is either a `UserCustomRingbackUserGetCriteriaResponse15sp2()` or an
    `ErrorResponse()`.

    Replaced By: `UserCustomRingbackUserGetCriteriaRequest16()`

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserCustomRingbackUserGetCriteriaRequest16(OCIRequest):
    """
    Get a criteria for the user's custom ringback service.

    The response is either a `UserCustomRingbackUserGetCriteriaResponse16()` or an
    `ErrorResponse()`. Replaced by: `UserCustomRingbackUserGetCriteriaRequest20()` in AS
    data mode

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserCustomRingbackUserGetCriteriaRequest20(OCIRequest):
    """
    Get a criteria for the user's custom ringback service.

    The response is either a `UserCustomRingbackUserGetCriteriaResponse20()` or an
    `ErrorResponse()`. Replaced by: `UserCustomRingbackUserGetCriteriaRequest21()`

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserDeleteRequest(OCIRequest):
    """
    Request to delete a user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserDevicePoliciesGetRequest(OCIRequest):
    """
    Request the user level data associated with Device Policy.

    The response is either a `UserDevicePoliciesGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserDevicePoliciesGetRequest19sp1(OCIRequest):
    """
    Request the user level data associated with Device Policy.

    The response is either a `UserDevicePoliciesGetResponse19sp1()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserDevicePoliciesGetRequest20(OCIRequest):
    """
    Request the user level data associated with Device Policy.

    The response is either a `UserDevicePoliciesGetResponse20()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        line_mode (str): lineMode *Optional*
        enable_device_feature_synchronization (bool): enableDeviceFeatureSynchronization
            *Optional*
        enable_dnd (bool): enableDnd *Optional*
        enable_call_forwarding_always (bool): enableCallForwardingAlways *Optional*
        enable_call_forwarding_busy (bool): enableCallForwardingBusy *Optional*
        enable_call_forwarding_no_answer (bool): enableCallForwardingNoAnswer *Optional*
        enable_acd (bool): enableAcd *Optional*
        enable_executive (bool): enableExecutive *Optional*
        enable_executive_assistant (bool): enableExecutiveAssistant *Optional*
        enable_security_classification (bool): enableSecurityClassification *Optional*
        enable_call_recording (bool): enableCallRecording *Optional*
        enable_call_decline (bool): enableCallDecline *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "line_mode",
        "enable_device_feature_synchronization",
        "enable_dnd",
        "enable_call_forwarding_always",
        "enable_call_forwarding_busy",
        "enable_call_forwarding_no_answer",
        "enable_acd",
        "enable_executive",
        "enable_executive_assistant",
        "enable_security_classification",
        "enable_call_recording",
        "enable_call_decline",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("line_mode", "lineMode", str),
            E(
                "enable_device_feature_synchronization",
                "enableDeviceFeatureSynchronization",
                bool,
            ),
            E("enable_dnd", "enableDnd", bool),
            E("enable_call_forwarding_always", "enableCallForwardingAlways", bool),
            E("enable_call_forwarding_busy", "enableCallForwardingBusy", bool),
            E("enable_call_forwarding_no_answer", "enableCallForwardingNoAnswer", bool),
            E("enable_acd", "enableAcd", bool),
            E("enable_executive", "enableExecutive", bool),
            E("enable_executive_assistant", "enableExecutiveAssistant", bool),
            E("enable_security_classification", "enableSecurityClassification", bool),
            E("enable_call_recording", "enableCallRecording", bool),
            E("enable_call_decline", "enableCallDecline", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserDirectedCallPickupWithBargeInGetRequest(OCIRequest):
    """
    Request the user level data associated with Directed Call Pickup With Barge In.

    The response is either a `UserDirectedCallPickupWithBargeInGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        enable_barge_in_warning_tone (bool): enableBargeInWarningTone *Optional*
        enable_automatic_target_selection (bool): enableAutomaticTargetSelection
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "enable_barge_in_warning_tone",
        "enable_automatic_target_selection",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("enable_barge_in_warning_tone", "enableBargeInWarningTone", bool),
            E(
                "enable_automatic_target_selection",
                "enableAutomaticTargetSelection",
                bool,
            ),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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.

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        ring_splash (bool): ringSplash *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "ring_splash",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("ring_splash", "ringSplash", bool),
        )


class UserEnhancedCallLogsGetListRequest(OCIRequest):
    """
    Request user's call logs.

    It is possible to get a subset of the total list of calls by specifying a starting
    offset and the number of calls to get.  If the callLogType is not specified, all types
    of calls are returned.

    The response is either a `UserEnhancedCallLogsGetListResponse()` or an
    `ErrorResponse()`.

    Replaced By: `UserEnhancedCallLogsGetListRequest14sp4()`

    Attributes:
        user_id (str): userId
        call_log_type (str): callLogType *Optional*
        starting_offset (int): startingOffset
        num_calls (int): numCalls
    """

    __slots__: List[str] = [
        "user_id",
        "call_log_type",
        "starting_offset",
        "num_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_log_type", "callLogType", str),
            E("starting_offset", "startingOffset", int, is_required=True),
            E("num_calls", "numCalls", int, is_required=True),
        )


class UserEnhancedCallLogsGetListRequest14sp4(OCIRequest):
    """
    Request user's call logs.

    It is possible to get a subset of the total list of calls by specifying a starting
    offset and the number of calls to get.  If the callLogType is not specified, all types
    of calls are returned.

    The response is either a `UserEnhancedCallLogsGetListResponse14sp4()` or an
    `ErrorResponse()`. Replaced by: `UserEnhancedCallLogsGetListRequest16()`

    Attributes:
        user_id (str): userId
        call_log_type (str): callLogType *Optional*
        starting_offset (int): startingOffset
        num_calls (int): numCalls
    """

    __slots__: List[str] = [
        "user_id",
        "call_log_type",
        "starting_offset",
        "num_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_log_type", "callLogType", str),
            E("starting_offset", "startingOffset", int, is_required=True),
            E("num_calls", "numCalls", int, is_required=True),
        )


class UserExecutiveAssistantGetRequest(OCIRequest):
    """
    Get the setting of an executive assistant.

    The response is either `UserExecutiveAssistantGetResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserExecutiveGetFilteringSelectiveCriteriaRequest(OCIRequest):
    """
    Get a filtering criteria for an executive user.

    Both executive and the executive assistant can run this command.

    The response is either `UserExecutiveGetSelectiveCriteriaResponse()` or
    `ErrorResponse()`. Replaced by:
    `UserExecutiveGetFilteringSelectiveCriteriaRequest21()`

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        enable_screening (bool): enableScreening *Optional*
        screening_alert_type (str): screeningAlertType *Optional*
        alert_broad_works_mobility_location (bool): alertBroadWorksMobilityLocation
            *Optional*
        alert_broad_works_anywhere_locations (bool): alertBroadWorksAnywhereLocations
            *Optional*
        alert_shared_call_appearance_locations (bool): alertSharedCallAppearanceLocations
            *Optional*
        alerting_mode (str): alertingMode *Optional*
        alerting_calling_line_id_name_mode (str): alertingCallingLineIdNameMode *Optional*
        alerting_custom_calling_line_id_name (str): alertingCustomCallingLineIdName
            *Optional*
        unicode_alerting_custom_calling_line_id_name (str):
            unicodeAlertingCustomCallingLineIdName *Optional*
        alerting_calling_line_id_phone_number_mode (str):
            alertingCallingLineIdPhoneNumberMode *Optional*
        alerting_custom_calling_line_id_phone_number (str):
            alertingCustomCallingLineIdPhoneNumber *Optional*
        call_push_recall_number_of_rings (int): callPushRecallNumberOfRings *Optional*
        next_assistant_number_of_rings (int): nextAssistantNumberOfRings *Optional*
        enable_rollover (bool): enableRollover *Optional*
        rollover_wait_time_seconds (int): rolloverWaitTimeSeconds *Optional*
        rollover_action (str): rolloverAction *Optional*
        rollover_forward_to_phone_number (str): rolloverForwardToPhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "enable_screening",
        "screening_alert_type",
        "alert_broad_works_mobility_location",
        "alert_broad_works_anywhere_locations",
        "alert_shared_call_appearance_locations",
        "alerting_mode",
        "alerting_calling_line_id_name_mode",
        "alerting_custom_calling_line_id_name",
        "unicode_alerting_custom_calling_line_id_name",
        "alerting_calling_line_id_phone_number_mode",
        "alerting_custom_calling_line_id_phone_number",
        "call_push_recall_number_of_rings",
        "next_assistant_number_of_rings",
        "enable_rollover",
        "rollover_wait_time_seconds",
        "rollover_action",
        "rollover_forward_to_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("enable_screening", "enableScreening", bool),
            E("screening_alert_type", "screeningAlertType", str),
            E(
                "alert_broad_works_mobility_location",
                "alertBroadWorksMobilityLocation",
                bool,
            ),
            E(
                "alert_broad_works_anywhere_locations",
                "alertBroadWorksAnywhereLocations",
                bool,
            ),
            E(
                "alert_shared_call_appearance_locations",
                "alertSharedCallAppearanceLocations",
                bool,
            ),
            E("alerting_mode", "alertingMode", str),
            E(
                "alerting_calling_line_id_name_mode",
                "alertingCallingLineIdNameMode",
                str,
            ),
            E(
                "alerting_custom_calling_line_id_name",
                "alertingCustomCallingLineIdName",
                str,
            ),
            E(
                "unicode_alerting_custom_calling_line_id_name",
                "unicodeAlertingCustomCallingLineIdName",
                str,
            ),
            E(
                "alerting_calling_line_id_phone_number_mode",
                "alertingCallingLineIdPhoneNumberMode",
                str,
            ),
            E(
                "alerting_custom_calling_line_id_phone_number",
                "alertingCustomCallingLineIdPhoneNumber",
                str,
            ),
            E("call_push_recall_number_of_rings", "callPushRecallNumberOfRings", int),
            E("next_assistant_number_of_rings", "nextAssistantNumberOfRings", int),
            E("enable_rollover", "enableRollover", bool),
            E("rollover_wait_time_seconds", "rolloverWaitTimeSeconds", int),
            E("rollover_action", "rolloverAction", str),
            E("rollover_forward_to_phone_number", "rolloverForwardToPhoneNumber", str),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        use_setting_level (str): useSettingLevel *Optional*
        sip_request_uri (str): sipRequestURI *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "use_setting_level",
        "sip_request_uri",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("use_setting_level", "useSettingLevel", str),
            E("sip_request_uri", "sipRequestURI", str),
        )


class UserFaxMessagingGetRequest(OCIRequest):
    """
    Request the user level data associated with Fax Messaging.

    The response is either a `UserFaxMessagingGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserFaxMessagingGetRequest17(OCIRequest):
    """
    Request the user level data associated with Fax Messaging.

    The response is either a `UserFaxMessagingGetResponse17()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserFeatureAccessCodeGetListRequest(OCIRequest):
    """
    Get the list of feature access codes for a user.

    The response is either a `UserFeatureAccessCodeGetListResponse()` or an
    `ErrorResponse()`. Replaced by: `UserFeatureAccessCodeGetListRequest20()` in AS data
    mode

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserFeatureAccessCodeGetListRequest20(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". Replaced by: `UserFeatureAccessCodeGetListRequest21()` in AS data
    mode

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserFlexibleSeatingGuestGetRequest(OCIRequest):
    """
    Request the user level data associated with flexible seating guest.

    The response is either a `UserFlexibleSeatingGuestGetResponse()` or an
    `ErrorResponse()`. Replaced by: `UserFlexibleSeatingGuestGetRequest22()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetLoginInfoRequest(OCIRequest):
    """
    `UserGetLoginInfoRequest()` is used to access login information for a user either by a
    userId or dn.

    The phone number may be any DN associated with a user.

    The response is a `UserGetLoginInfoResponse()` or an `ErrorResponse()` Replaced by
    `UserGetLoginInfoRequest22()`.

    Attributes:
        user_id (str): userId *Optional*
        phone_number (str): phoneNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("phone_number", "phoneNumber", str),
        )


class UserGetLoginInfoRequest21sp1(OCIRequest):
    """
    `UserGetLoginInfoRequest21sp1()` 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 `UserGetLoginInfoResponse21sp1()` or an `ErrorResponse()` Replaced
    by `UserGetLoginInfoRequest22V2()`.

    Attributes:
        user_id (str): userId *Optional*
        phone_number (str): phoneNumber *Optional*
        line_port (str): linePort *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "line_port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("phone_number", "phoneNumber", str),
            E("line_port", "linePort", str),
        )


class UserGetLoginInfoRequest22(OCIRequest):
    """
    `UserGetLoginInfoRequest22()` 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 `UserGetLoginInfoResponse22()` or an `ErrorResponse()` Replaced by
    `UserGetLoginInfoRequest22V2()`.

    Attributes:
        user_id (str): userId *Optional*
        phone_number (str): phoneNumber *Optional*
        line_port (str): linePort *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "line_port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("phone_number", "phoneNumber", str),
            E("line_port", "linePort", str),
        )


class UserGetLoginInfoRequest22V2(OCIRequest):
    """
    `UserGetLoginInfoRequest22V2()` 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 `UserGetLoginInfoResponse22V2()` or an `ErrorResponse()` Replaced by
    `UserGetLoginInfoRequest22V3()`.

    Attributes:
        user_id (str): userId *Optional*
        phone_number (str): phoneNumber *Optional*
        line_port (str): linePort *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "line_port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("phone_number", "phoneNumber", str),
            E("line_port", "linePort", str),
        )


class UserGetLoginInfoRequest22V3(OCIRequest):
    """
    `UserGetLoginInfoRequest22V3()` 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 `UserGetLoginInfoResponse22V3()` or an `ErrorResponse()`. The
    following elements are only used in AS data mode and ignored in XS and Amplify data
    mode.  loginRole

    Attributes:
        user_id (str): userId *Optional*
        login_role (str): loginRole *Optional*
        phone_number (str): phoneNumber *Optional*
        line_port (str): linePort *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "login_role",
        "phone_number",
        "line_port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("login_role", "loginRole", str),
            E("phone_number", "phoneNumber", str),
            E("line_port", "linePort", str),
        )


class UserGetLoginInfoRequest22V4(OCIRequest):
    """
    `UserGetLoginInfoRequest22V4()` 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 `UserGetLoginInfoResponse22V4()` or an `ErrorResponse()`. The
    following elements are only used in AS data mode and ignored in XS and Amplify data
    mode.  loginRole

    Attributes:
        user_id (str): userId *Optional*
        login_role (str): loginRole *Optional*
        phone_number (str): phoneNumber *Optional*
        line_port (str): linePort *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "login_role",
        "phone_number",
        "line_port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("login_role", "loginRole", str),
            E("phone_number", "phoneNumber", str),
            E("line_port", "linePort", str),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest14(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse14()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest14sp4(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse14sp4()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest14sp9(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse14sp4()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest15sp2(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse15sp2()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest17(OCIRequest):
    """
    Replaced By `UserGetRequest17sp4()` Request to get the user information.

    The response is either `UserGetResponse17()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest17sp3(OCIRequest):
    """
    Replaced By `UserGetRequest18()` Request to get the user information.

    The response is either `UserGetResponse17sp3()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest17sp4(OCIRequest):
    """
    Replaced By `UserGetRequest18()` Request to get the user information.

    The response is either `UserGetResponse17sp4()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest18(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse18()` or `ErrorResponse()`. Replaced by:
    `UserGetRequest19()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest19(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse19()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest20(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse20()` or `ErrorResponse()`. Replaced by:
    `UserGetRequest21()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest21(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse21()` or `ErrorResponse()`. Replaced by
    `UserGetRequest21sp1()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest21sp1(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse21sp1()` or `ErrorResponse()`. Replaced by
    `UserGetRequest22()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest22(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse22()` or `ErrorResponse()`. Replaced by
    `UserGetRequest22V2()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest22V2(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse22V2()` or `ErrorResponse()`. Replaced by
    `UserGetRequest22V3()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest22V3(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse22V3()` or `ErrorResponse()`. Replaced by:
    `UserGetRequest22V4()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest22V4(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse22V4()` or `ErrorResponse()`. Replaced by:
    `UserGetResponse22V5()` in AS data mode

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest22V5(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse22V5()` or `ErrorResponse()`. Replaced by:
    `UserGetRequest22V6()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest22V6(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse22V6()` or `ErrorResponse()`. Replaced by:
    `UserGetRequest22V7()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest22V7(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse22V7()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGetRequest22V8(OCIRequest):
    """
    Request to get the user information.

    The response is either `UserGetResponse22V8()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGroupNightForwardingGetRequest(OCIRequest):
    """
    Request to get the Group Night Forwarding user parameters.

    The response is either `UserGroupNightForwardingGetResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserGroupNightForwardingModifyRequest(OCIRequest):
    """
    Request to modify the Group Night Forwarding user parameters.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        night_forwarding (str): nightForwarding *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "night_forwarding",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("night_forwarding", "nightForwarding", str),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserHolidayScheduleDeleteRequest(OCIRequest):
    """
    Delete a holiday schedule from a user.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        holiday_schedule_name (str): holidayScheduleName
    """

    __slots__: List[str] = [
        "user_id",
        "holiday_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("holiday_schedule_name", "holidayScheduleName", str, is_required=True),
        )


class UserHolidayScheduleGetListRequest(OCIRequest):
    """
    Get a holiday schedule list for a user.

    The response is either a `UserHolidayScheduleGetListResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserHolidayScheduleGetRequest(OCIRequest):
    """
    Get a holiday schedule a user.

    The response is either a `UserHolidayScheduleGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        holiday_schedule_name (str): holidayScheduleName
    """

    __slots__: List[str] = [
        "user_id",
        "holiday_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("holiday_schedule_name", "holidayScheduleName", str, is_required=True),
        )


class UserHotelingGuestGetRequest14(OCIRequest):
    """
    Request the user level data associated with Hoteling Guest.

    The response is either a `UserHotelingGuestGetResponse14()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserHotelingGuestGetRequest14sp2(OCIRequest):
    """
    Request the user level data associated with Hoteling Guest.

    The response is either a `UserHotelingGuestGetResponse14()` or an `ErrorResponse()`.
    Replaced by: `UserHotelingGuestGetRequest14sp4()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserHotelingGuestModifyRequest(OCIRequest):
    """
    Modify the user level data associated with Hoteling Guest.

    There is no 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()`. Replaced by
    `UserHotelingGuestModifyRequest21()` in AS data mode

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        enable_association_limit (bool): enableAssociationLimit *Optional*
        association_limit_hours (int): associationLimitHours *Optional*
        host_user_id (str): hostUserId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "enable_association_limit",
        "association_limit_hours",
        "host_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("enable_association_limit", "enableAssociationLimit", bool),
            E("association_limit_hours", "associationLimitHours", int),
            E("host_user_id", "hostUserId", str),
        )


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): userId
        is_active (bool): isActive *Optional*
        enable_association_limit (bool): enableAssociationLimit *Optional*
        association_limit_hours (int): associationLimitHours *Optional*
        host_user_id (str): hostUserId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "enable_association_limit",
        "association_limit_hours",
        "host_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("enable_association_limit", "enableAssociationLimit", bool),
            E("association_limit_hours", "associationLimitHours", int),
            E("host_user_id", "hostUserId", str),
        )


class UserHotelingHostGetRequest14(OCIRequest):
    """
    Request the user level data associated with Hoteling Host.

    The response is either a `UserHotelingHostGetResponse14()` or an `ErrorResponse()`.
    Replaced by: `UserHotelingHostGetRequest14sp4()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserHotelingHostGetRequest14sp4(OCIRequest):
    """
    Request the user level data associated with Hoteling Host.

    The response is either a `UserHotelingHostGetResponse14sp4()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        enforce_association_limit (bool): enforceAssociationLimit *Optional*
        association_limit_hours (int): associationLimitHours *Optional*
        access_level (str): accessLevel *Optional*
        remove_guest_association (bool): removeGuestAssociation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "enforce_association_limit",
        "association_limit_hours",
        "access_level",
        "remove_guest_association",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("enforce_association_limit", "enforceAssociationLimit", bool),
            E("association_limit_hours", "associationLimitHours", int),
            E("access_level", "accessLevel", str),
            E("remove_guest_association", "removeGuestAssociation", bool),
        )


class UserINIntegrationGetRequest(OCIRequest):
    """
    Request to get the user level IN Integration service attributes Response is either
    `UserINIntegrationGetResponse()` or `ErrorResponse()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserINIntegrationModifyRequest(OCIRequest):
    """
    Request to modify the user level IN Integration service attributes Response is either
    `SuccessResponse()` or `ErrorResponse()`

    Attributes:
        user_id (str): userId
        originating_service_key (int): originatingServiceKey *Optional*
        terminating_service_key (int): terminatingServiceKey *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "originating_service_key",
        "terminating_service_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("originating_service_key", "originatingServiceKey", int),
            E("terminating_service_key", "terminatingServiceKey", int),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


class UserIncomingCallingPlanGetRequest(OCIRequest):
    """
    Request the user's incoming calling plan settings.

    The response is either a `UserIncomingCallingPlanGetListResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserIntegratedIMPGetRequest(OCIRequest):
    """
    Get the Integrated IMP specific service attribute for the user.

    The response is either `UserIMPGetResponse()` or `ErrorResponse()`. Replaced by:
    `UserIntegratedIMPGetRequest21sp1()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        imp_id (str): impId *Optional*
        is_alternate_imp_id (bool): isAlternateImpId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "imp_id",
        "is_alternate_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("imp_id", "impId", str),
            E("is_alternate_imp_id", "isAlternateImpId", bool),
        )


class UserInterceptUserGetRequest(OCIRequest):
    """
    Get the user's intercept user service settings.

    The response is either a `UserInterceptUserGetResponse()` or an `ErrorResponse()`.

    Replaced By: `UserInterceptUserGetRequest16()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserInterceptUserGetRequest16(OCIRequest):
    """
    Get the user's intercept user service settings.

    The response is either a `UserInterceptUserGetResponse16()` or an `ErrorResponse()`.

    Replaced By: `UserInterceptUserGetRequest16sp1()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserInterceptUserGetRequest16sp1(OCIRequest):
    """
    Get the user's intercept user service settings.

    The response is either a `UserInterceptUserGetResponse16sp1()` or an
    `ErrorResponse()`. Replaced by: `UserInterceptUserGetRequest21sp1()` in AS data mode

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


class UserLinePortGetListRequest(OCIRequest):
    """
    Request to get all user's configured line ports.


    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserMWIDeliveryToMobileEndpointGetRequest(OCIRequest):
    """
    Request the user level data associated with MWI Delivery to Mobile Endpoint service.

    The response is either a `UserMWIDeliveryToMobileEndpointGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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()`.

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "mobile_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("mobile_phone_number", "mobilePhoneNumber", str),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        bridge_id (str): bridgeId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "bridge_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("bridge_id", "bridgeId", str),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        new_group_id (str): newGroupId
        evaluate_only (bool): evaluateOnly *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "new_group_id",
        "evaluate_only",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("new_group_id", "newGroupId", str, is_required=True),
            E("evaluate_only", "evaluateOnly", bool),
        )


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): userId
        new_user_id (str): newUserId
    """

    __slots__: List[str] = [
        "user_id",
        "new_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("new_user_id", "newUserId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


class UserMusicOnHoldUserGetRequest(OCIRequest):
    """
    Request the user level data associated with Music On Hold User.

    The response is either a `UserMusicOnHoldUserGetResponse()` or an `ErrorResponse()`.

    Replaced By: `UserMusicOnHoldUserGetRequest16()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserMusicOnHoldUserGetRequest16(OCIRequest):
    """
    Request the user level data associated with Music On Hold User.

    The response is either a `UserMusicOnHoldUserGetResponse16()` or an `ErrorResponse()`.
    Replaced by: `UserMusicOnHoldUserGetRequest20()` in AS data mode

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserNumberPortabilityAnnouncementGetRequest(OCIRequest):
    """
    Get the Number Portability Announcement attributes for the user.

    The response is either `UserNumberPortabilityAnnouncementGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        enable (bool): enable *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "enable",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("enable", "enable", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        code (List[str]): code
    """

    __slots__: List[str] = [
        "user_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("code", "code", str, is_required=True, is_array=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserOutgoingCallingPlanAuthorizationCodeModifyRequest(OCIRequest):
    """
    Modify the authorization setting for a user.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        use_custom_settings (bool): useCustomSettings *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserOutgoingCallingPlanOriginatingGetRequest(OCIRequest):
    """
    Request the originating permissions for a user.

    The response is either a `UserOutgoingCallingPlanOriginatingGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        code (str): code *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("code", "code", str),
        )


class UserOutgoingCallingPlanTransferNumbersGetRequest(OCIRequest):
    """
    Request the transfer numbers for a user.

    The response is either a `UserOutgoingCallingPlanTransferNumbersGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        proxy_to_header_from_network (bool): proxyToHeaderFromNetwork *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "proxy_to_header_from_network",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("proxy_to_header_from_network", "proxyToHeaderFromNetwork", bool),
        )


class UserPasswordInfoGetRequest(OCIRequest):
    """
    Request the user's Web password information.

    The response is either a `UserPasswordInfoGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserPersonalAssistantExclusionNumberAddRequest(OCIRequest):
    """
    Add a User Personal Assistant Exclusion Number.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        exclusion_number (str): exclusionNumber
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "exclusion_number",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("exclusion_number", "exclusionNumber", str, is_required=True),
            E("description", "description", str),
        )


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): userId
        exclusion_number (List[str]): exclusionNumber
    """

    __slots__: List[str] = [
        "user_id",
        "exclusion_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "exclusion_number",
                "exclusionNumber",
                str,
                is_required=True,
                is_array=True,
            ),
        )


class UserPersonalAssistantExclusionNumberGetRequest(OCIRequest):
    """
    Get a Personal Assistant Exclusion Number.

    The response is either `UserPersonalAssistantExclusionNumberGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        exclusion_number (str): exclusionNumber
    """

    __slots__: List[str] = [
        "user_id",
        "exclusion_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("exclusion_number", "exclusionNumber", str, is_required=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): userId
        exclusion_number (str): exclusionNumber
        description (str): description *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "exclusion_number",
        "description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("exclusion_number", "exclusionNumber", str, is_required=True),
            E("description", "description", str),
        )


class UserPersonalAssistantGetRequest(OCIRequest):
    """
    Request to get the User Personal Assistant information.

    The response is either a `UserPersonalAssistantGetResponse()` or an `ErrorResponse()`.
    Replaced by: `UserPersonalAssistantGetRequest22()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserPersonalAssistantGetRequest22(OCIRequest):
    """
    Request to get the User Personal Assistant information.

    The response is either a `UserPersonalAssistantGetResponse22()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserPersonalAssistantModifyRequest(OCIRequest):
    """
    Modify the User Personal Assistant information.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        presence (str): presence *Optional*
        enable_transfer_to_attendant (bool): enableTransferToAttendant *Optional*
        attendant_number (str): attendantNumber *Optional*
        enable_ring_splash (bool): enableRingSplash *Optional*
        enable_expiration_time (bool): enableExpirationTime *Optional*
        expiration_time (str): expirationTime *Optional*
        alert_me_first (bool): alertMeFirst *Optional*
        alert_me_first_number_of_rings (int): alertMeFirstNumberOfRings *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "presence",
        "enable_transfer_to_attendant",
        "attendant_number",
        "enable_ring_splash",
        "enable_expiration_time",
        "expiration_time",
        "alert_me_first",
        "alert_me_first_number_of_rings",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("presence", "presence", str),
            E("enable_transfer_to_attendant", "enableTransferToAttendant", bool),
            E("attendant_number", "attendantNumber", str),
            E("enable_ring_splash", "enableRingSplash", bool),
            E("enable_expiration_time", "enableExpirationTime", bool),
            E("expiration_time", "expirationTime", str),
            E("alert_me_first", "alertMeFirst", bool),
            E("alert_me_first_number_of_rings", "alertMeFirstNumberOfRings", int),
        )


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): userId
        entry_name (List[str]): entryName
    """

    __slots__: List[str] = [
        "user_id",
        "entry_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("entry_name", "entryName", str, is_required=True, is_array=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): userId
        entry_name (str): entryName
        new_entry_name (str): newEntryName *Optional*
        phone_number (str): phoneNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "entry_name",
        "new_entry_name",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("entry_name", "entryName", str, is_required=True),
            E("new_entry_name", "newEntryName", str),
            E("phone_number", "phoneNumber", str),
        )


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): userId
        name_search_string (str): nameSearchString *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "name_search_string",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("name_search_string", "nameSearchString", str),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserPortalPasscodeGetInfoRequest(OCIRequest):
    """
    Request the user's portal passcode information.

    The response is either a `UserPortalPasscodeGetInfoResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        old_passcode (str): oldPasscode *Optional*
        new_passcode (str): newPasscode
    """

    __slots__: List[str] = [
        "user_id",
        "old_passcode",
        "new_passcode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("old_passcode", "oldPasscode", str),
            E("new_passcode", "newPasscode", str, is_required=True),
        )


class UserPortalPasscodeRulesGetRequest(OCIRequest):
    """
    Requests the effective passcode rules setting for a user.

    The response is either `UserPortalPasscodeRulesGetResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId *Optional*
        service_provider_id (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "service_provider_id",
        "group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
        )


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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserPreAlertingAnnouncementGetCriteriaRequest(OCIRequest):
    """
    Get a criteria for the user's pre-alerting service.

    The response is either a `UserPreAlertingAnnouncementGetCriteriaResponse()` or an
    `ErrorResponse()`. Replaced by: `UserPreAlertingAnnouncementGetCriteriaRequest21()` in
    AS data mode

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserPreAlertingAnnouncementGetRequest(OCIRequest):
    """
    Get the user's pre-alerting service setting.

    The response is either a `UserPreAlertingAnnouncementGetResponse()` or an
    `ErrorResponse()`. Replaced by: `UserPreAlertingAnnouncementGetRequest20()` in AS data
    mode

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


class UserPrimaryEndpointAdvancedSettingGetRequest(OCIRequest):
    """
    Get the Users Primary Endpoint setting.

    The response is either a `UserPrimaryEndpointAdvancedSettingGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        allow_origination (bool): allowOrigination *Optional*
        allow_termination (bool): allowTermination *Optional*
        allow_video (bool): allowVideo *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "allow_origination",
        "allow_termination",
        "allow_video",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("allow_origination", "allowOrigination", bool),
            E("allow_termination", "allowTermination", bool),
            E("allow_video", "allowVideo", bool),
        )


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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserPriorityAlertGetCriteriaRequest(OCIRequest):
    """
    Get a criteria for the user's priority alert service.

    The response is either a `UserPriorityAlertGetCriteriaResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserPriorityAlertGetCriteriaRequest16(OCIRequest):
    """
    Get a criteria for the user's priority alert service.

    The response is either a `UserPriorityAlertGetCriteriaResponse16()` or an
    `ErrorResponse()`. Replaced by: `UserPriorityAlertGetCriteriaRequest21()` in AS data
    mode

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserPrivacyGetRequest(OCIRequest):
    """
    Request the user level data associated with Privacy.

    The response is either a `UserPrivacyGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserPushNotificationGetRequest(OCIRequest):
    """
    Get the push notification settings for a user.

    The response is either `UserPushNotificationGetResponse()` or `ErrorResponse()`.
    Replaced by: `UserPushNotificationRequest24()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserPushNotificationGetRequest24(OCIRequest):
    """
    Get the push notification settings for a user.

    The response is either `UserPushNotificationGetResponse24()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserPushNotificationModifyRequest(OCIRequest):
    """
    Modify the push notification settings for a user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        send_push_notification_for_click_to_dial (bool):
            sendPushNotificationForClickToDial *Optional*
        send_push_notification_for_group_paging (bool): sendPushNotificationForGroupPaging
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "send_push_notification_for_click_to_dial",
        "send_push_notification_for_group_paging",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "send_push_notification_for_click_to_dial",
                "sendPushNotificationForClickToDial",
                bool,
            ),
            E(
                "send_push_notification_for_group_paging",
                "sendPushNotificationForGroupPaging",
                bool,
            ),
        )


class UserPushNotificationRegistrationDeleteRequest(OCIRequest):
    """
    Request to remove a push notification registration.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        registration_id (str): registrationId
    """

    __slots__: List[str] = [
        "registration_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("registration_id", "registrationId", str, is_required=True),)


class UserPushNotificationRegistrationGetListRequest(OCIRequest):
    """
    Request a table containing all of the push notification registrations for a user by
    either registration id or user id.

    The response is either `UserPushNotificationRegistrationGetListResponse()` or
    `ErrorResponse()`. Replaced by:
    `UserPushNotificationRegistrationGetListRequest21sp1()`

    Attributes:
        registration_id (str): registrationId *Optional*
        user_id (str): userId *Optional*
    """

    __slots__: List[str] = [
        "registration_id",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("registration_id", "registrationId", str),
            E("user_id", "userId", str),
        )


class UserPushNotificationRegistrationGetListRequest21sp1(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 `UserPushNotificationRegistrationGetListResponse21sp1()` or
    `ErrorResponse()`.

    Attributes:
        registration_id (str): registrationId *Optional*
        user_id (str): userId *Optional*
    """

    __slots__: List[str] = [
        "registration_id",
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("registration_id", "registrationId", str),
            E("user_id", "userId", str),
        )


class UserPushToTalkGetRequest(OCIRequest):
    """
    Request the push to talk service setting.

    The response is either a `UserPushToTalkGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        remote_office_phone_number (str): remoteOfficePhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "remote_office_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("remote_office_phone_number", "remoteOfficePhoneNumber", str),
        )


class UserResourcePriorityGetRequest(OCIRequest):
    """
    Get the Resource Priority settings of a user.

    The response is either `UserResourcePriorityGetResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserResourcePriorityModifyRequest(OCIRequest):
    """
    Modify the Resource Priority settings of a user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        use_default_resource_priority (bool): useDefaultResourcePriority *Optional*
        user_resource_priority (str): userResourcePriority *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_default_resource_priority",
        "user_resource_priority",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_default_resource_priority", "useDefaultResourcePriority", bool),
            E("user_resource_priority", "userResourcePriority", str),
        )


class UserRouteListGetRequest(OCIRequest):
    """
    Get the route list setting and the list of number ranges assigned to a user.

    The response is either `UserRouteListGetResponse()` or `ErrorResponse()`. Replaced by:
    `UserRouteListGetRequest22()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserRouteListGetRequest22(OCIRequest):
    """
    Get the route list setting and the list of number ranges assigned to a user.

    The response is either `UserRouteListGetResponse22()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): serviceUserId
    """

    __slots__: List[str] = [
        "service_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("service_user_id", "serviceUserId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        device_name (str): deviceName
        net_address (str): netAddress
        port (int): port
    """

    __slots__: List[str] = [
        "user_id",
        "device_name",
        "net_address",
        "port",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("net_address", "netAddress", str, is_required=True),
            E("port", "port", int, is_required=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): userId
        device_name (List[str]): deviceName
    """

    __slots__: List[str] = [
        "user_id",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True, is_array=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        message_desk_number (str): messageDeskNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "message_desk_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("message_desk_number", "messageDeskNumber", str),
        )


class UserScheduleAddRequest(OCIRequest):
    """
    Add a user schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        schedule_name (str): scheduleName
        schedule_type (str): scheduleType
    """

    __slots__: List[str] = [
        "user_id",
        "schedule_name",
        "schedule_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("schedule_name", "scheduleName", str, is_required=True),
            E("schedule_type", "scheduleType", str, is_required=True),
        )


class UserScheduleGetListRequest(OCIRequest):
    """
    Get the list of a user schedules.

    The list can be filtered by schedule type.

    The response is either a `UserScheduleGetListResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        schedule_type (str): scheduleType *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "schedule_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("schedule_type", "scheduleType", str),
        )


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): userId
        schedule_type (str): scheduleType *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "schedule_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("schedule_type", "scheduleType", str),
        )


class UserSecurityClassificationGetRequest(OCIRequest):
    """
    Get a user's Security Classifications configuration.

    The response is either `UserSecurityClassificationGetResponse()` or `ErrorResponse()`.

    Replaced By: `UserSecurityClassificationGetRequest22()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserSecurityClassificationGetRequest22(OCIRequest):
    """
    Get a user's Security Classifications configuration.

    The response is either `UserSecurityClassificationGetResponse22()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserSecurityClassificationModifyRequest(OCIRequest):
    """
    Modify a user's Security Classification configuration The response is either a
    `SuccessResponse()` or an `ErrorResponse()`.


    Attributes:
        user_id (str): userId
        security_classification (str): securityClassification
    """

    __slots__: List[str] = [
        "user_id",
        "security_classification",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "security_classification",
                "securityClassification",
                str,
                is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserSelectiveCallAcceptanceGetCriteriaRequest(OCIRequest):
    """
    Get a criteria for the user's selective call acceptance service.

    The response is either a `UserSelectiveCallAcceptanceGetCriteriaResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserSelectiveCallAcceptanceGetCriteriaRequest16(OCIRequest):
    """
    Get a criteria for the user's selective call acceptance service.

    The response is either a `UserSelectiveCallAcceptanceGetCriteriaResponse16()` or an
    `ErrorResponse()`. Replaced by: `UserSelectiveCallAcceptanceGetCriteriaRequest21()` in
    AS data mode

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserSelectiveCallRejectionGetCriteriaRequest(OCIRequest):
    """
    Get a criteria for the user's selective call rejection service.

    The response is either a `UserSelectiveCallRejectionGetCriteriaResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserSelectiveCallRejectionGetCriteriaRequest16(OCIRequest):
    """
    Get a criteria for the user's selective call rejection service.

    The response is either a `UserSelectiveCallRejectionGetCriteriaResponse16()` or an
    `ErrorResponse()`. Replaced by: `UserSelectiveCallRejectionGetCriteriaRequest16sp1()`

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserSelectiveCallRejectionGetCriteriaRequest16sp1(OCIRequest):
    """
    Get a criteria for the user's selective call rejection service.

    The response is either a `UserSelectiveCallRejectionGetCriteriaResponse16sp1()` or an
    `ErrorResponse()`. Replaced by: `UserSelectiveCallRejectionGetCriteriaRequest21()` in
    AS data mode

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserSequentialRingGetCriteriaRequest(OCIRequest):
    """
    Get a criteria for the user's sequential ring service.

    The response is either a `UserSequentialRingGetCriteriaResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserSequentialRingGetCriteriaRequest16(OCIRequest):
    """
    Get a criteria for the user's sequential ring service.

    The response is either a `UserSequentialRingGetCriteriaResponse16()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserSequentialRingGetRequest13mp16(OCIRequest):
    """
    Get the user's sequential ring service setting.

    The response is either a `UserSequentialRingGetResponse13mp16()` or an
    `ErrorResponse()`.

    Replaced By: `UserSequentialRingGetRequest14sp4()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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()`.

    Attributes:
        user_id (str): userId
        service_name (List[str]): serviceName *Optional*
        service_pack_name (List[str]): servicePackName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "service_name",
        "service_pack_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("service_name", "serviceName", str, is_array=True),
            E("service_pack_name", "servicePackName", str, is_array=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserServiceIsAssignedRequest(OCIRequest):
    """
    Request to determine if a UserService or service pack is assigned to the user.


    Attributes:
        user_id (str): userId
        service_name (str): serviceName *Optional*
        service_pack_name (str): servicePackName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "service_name",
        "service_pack_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("service_name", "serviceName", str),
            E("service_pack_name", "servicePackName", str),
        )


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): userId
        service_name (List[str]): serviceName *Optional*
        service_pack_name (List[str]): servicePackName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "service_name",
        "service_pack_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("service_name", "serviceName", str, is_array=True),
            E("service_pack_name", "servicePackName", str, is_array=True),
        )


class UserShInterfaceGetUserIdDataRequest(OCIRequest):
    """
    Returns the Sh non-transparent data stored against a userId.

    The response is either a `UserShInterfaceGetUserIdDataResponse()` or an
    `ErrorResponse()`. Replaced by: `UserShInterfaceGetUserIdDataRequest21sp1()` in AS
    data mode.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserSharedCallAppearanceGetRequest14(OCIRequest):
    """
    Get the user's Shared Call Appearance service setting.

    The response is either a `UserSharedCallAppearanceGetResponse14()` or an
    `ErrorResponse()`.

    Replaced By: `UserSharedCallAppearanceGetRequest14sp2()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserSharedCallAppearanceGetRequest14sp2(OCIRequest):
    """
    Get the user's Shared Call Appearance service setting.

    The response is either a `UserSharedCallAppearanceGetResponse14sp2()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserSharedCallAppearanceGetRequest16sp2(OCIRequest):
    """
    Get the user's Shared Call Appearance service setting.

    The response is either a `UserSharedCallAppearanceGetResponse16sp2()` or an
    `ErrorResponse()`. Replaced by: `UserSharedCallAppearanceGetRequest21sp1()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        alert_all_appearances_for_click_to_dial_calls (bool):
            alertAllAppearancesForClickToDialCalls *Optional*
        alert_all_appearances_for_group_paging_calls (bool):
            alertAllAppearancesForGroupPagingCalls *Optional*
        allow_sca_call_retrieve (bool): allowSCACallRetrieve *Optional*
        multiple_call_arrangement_is_active (bool): multipleCallArrangementIsActive
            *Optional*
        allow_bridging_between_locations (bool): allowBridgingBetweenLocations *Optional*
        bridge_warning_tone (str): bridgeWarningTone *Optional*
        enable_call_park_notification (bool): enableCallParkNotification *Optional*
        use_user_primary_with_alternate_calls_setting (bool):
            useUserPrimaryWithAlternateCallsSetting *Optional*
        allow_simultaneous_primary_and_alternate_calls (bool):
            allowSimultaneousPrimaryAndAlternateCalls *Optional*
        restrict_call_retrieve_of_primary_call (bool): restrictCallRetrieveOfPrimaryCall
            *Optional*
        restrict_call_bridging_of_primary_call (bool): restrictCallBridgingOfPrimaryCall
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "alert_all_appearances_for_click_to_dial_calls",
        "alert_all_appearances_for_group_paging_calls",
        "allow_sca_call_retrieve",
        "multiple_call_arrangement_is_active",
        "allow_bridging_between_locations",
        "bridge_warning_tone",
        "enable_call_park_notification",
        "use_user_primary_with_alternate_calls_setting",
        "allow_simultaneous_primary_and_alternate_calls",
        "restrict_call_retrieve_of_primary_call",
        "restrict_call_bridging_of_primary_call",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "alert_all_appearances_for_click_to_dial_calls",
                "alertAllAppearancesForClickToDialCalls",
                bool,
            ),
            E(
                "alert_all_appearances_for_group_paging_calls",
                "alertAllAppearancesForGroupPagingCalls",
                bool,
            ),
            E("allow_sca_call_retrieve", "allowSCACallRetrieve", bool),
            E(
                "multiple_call_arrangement_is_active",
                "multipleCallArrangementIsActive",
                bool,
            ),
            E(
                "allow_bridging_between_locations",
                "allowBridgingBetweenLocations",
                bool,
            ),
            E("bridge_warning_tone", "bridgeWarningTone", str),
            E("enable_call_park_notification", "enableCallParkNotification", bool),
            E(
                "use_user_primary_with_alternate_calls_setting",
                "useUserPrimaryWithAlternateCallsSetting",
                bool,
            ),
            E(
                "allow_simultaneous_primary_and_alternate_calls",
                "allowSimultaneousPrimaryAndAlternateCalls",
                bool,
            ),
            E(
                "restrict_call_retrieve_of_primary_call",
                "restrictCallRetrieveOfPrimaryCall",
                bool,
            ),
            E(
                "restrict_call_bridging_of_primary_call",
                "restrictCallBridgingOfPrimaryCall",
                bool,
            ),
        )


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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


class UserSimultaneousRingFamilyAddPhoneNumberRequest(OCIRequest):
    """
    Add a new phone number and set the answer confirmation setting.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
        answer_confirmation_required (bool): answerConfirmationRequired
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "answer_confirmation_required",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E(
                "answer_confirmation_required",
                "answerConfirmationRequired",
                bool,
                is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserSimultaneousRingFamilyDeletePhoneNumberRequest(OCIRequest):
    """
    Delete the phone number specified.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserSimultaneousRingFamilyGetPhoneNumberRequest(OCIRequest):
    """
    Get the answer confirmation setting for the phone number specified.

    The response is either a `UserSimultaneousRingFamilyGetPhoneNumberResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
        )


class UserSimultaneousRingFamilyGetRequest(OCIRequest):
    """
    Get the user's simultaneous ring service family setting.

    The response is either a `UserSimultaneousRingFamilyGetResponse()` or an
    `ErrorResponse()`.

    Replaced By: `UserSimultaneousRingFamilyGetRequest14sp4()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserSimultaneousRingFamilyGetRequest14sp4(OCIRequest):
    """
    Get the user's simultaneous ring service Family setting.

    The response is either a `UserSimultaneousRingFamilyGetResponse14sp4()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserSimultaneousRingFamilyModifyPhoneNumberRequest(OCIRequest):
    """
    Modify the require confirmation setting for the destination.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
        answer_confirmation_required (bool): answerConfirmationRequired *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "answer_confirmation_required",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E("answer_confirmation_required", "answerConfirmationRequired", bool),
        )


class UserSimultaneousRingFamilyModifyRequest14sp4(OCIRequest):
    """
    Modify the user's simultaneous ring family service setting.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        incoming_calls (str): incomingCalls *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "incoming_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("incoming_calls", "incomingCalls", str),
        )


class UserSimultaneousRingPersonalAddPhoneNumberRequest(OCIRequest):
    """
    Add a new phone number and set the answer confirmation setting.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
        answer_confirmation_required (bool): answerConfirmationRequired
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "answer_confirmation_required",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E(
                "answer_confirmation_required",
                "answerConfirmationRequired",
                bool,
                is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserSimultaneousRingPersonalDeletePhoneNumberRequest(OCIRequest):
    """
    Delete the phone number specified.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=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): userId
        criteria_name (str): criteriaName
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
        )


class UserSimultaneousRingPersonalGetPhoneNumberRequest(OCIRequest):
    """
    Get the answer confirmation setting for the phone number specified.

    The response is either a `UserSimultaneousRingPersonalGetPhoneNumberResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
        )


class UserSimultaneousRingPersonalGetRequest(OCIRequest):
    """
    Get the user's simultaneous ring service personal setting.

    The response is either a `UserSimultaneousRingPersonalGetResponse()` or an
    `ErrorResponse()`.

    Replaced By: `UserSimultaneousRingPersonalGetRequest14sp4()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserSimultaneousRingPersonalGetRequest14sp4(OCIRequest):
    """
    Get the user's simultaneous ring service personal setting.

    The response is either a `UserSimultaneousRingPersonalGetResponse14sp4()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserSimultaneousRingPersonalModifyPhoneNumberRequest(OCIRequest):
    """
    Modify the require confirmation setting for the destination.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
        answer_confirmation_required (bool): answerConfirmationRequired *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "answer_confirmation_required",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E("answer_confirmation_required", "answerConfirmationRequired", bool),
        )


class UserSimultaneousRingPersonalModifyRequest14sp4(OCIRequest):
    """
    Modify the user's simultaneous ring personal service setting.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        incoming_calls (str): incomingCalls *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "incoming_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("incoming_calls", "incomingCalls", str),
        )


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): userId
        device_level (str): deviceLevel
        device_name (str): deviceName
    """

    __slots__: List[str] = [
        "user_id",
        "device_level",
        "device_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("device_level", "deviceLevel", str, is_required=True),
            E("device_name", "deviceName", str, is_required=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): userId
        speed_code (List[int]): speedCode *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "speed_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("speed_code", "speedCode", int, is_array=True),
        )


class UserSpeedDial100GetListRequest(OCIRequest):
    """
    Get the speed dial 100 settings for a user.

    The response is either a `UserSpeedDial100GetListResponse()` or an `ErrorResponse()`.
    Replaced by: UserSpeedDial100GetListRequest17Sp1

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        speed_code (int): speedCode
    """

    __slots__: List[str] = [
        "user_id",
        "speed_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("speed_code", "speedCode", int, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        terminating_trunk_identity (str): terminatingTrunkIdentity *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "terminating_trunk_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("terminating_trunk_identity", "terminatingTrunkIdentity", str),
        )


class UserTerminatingClosedUserGroupGetRequest(OCIRequest):
    """
    Get user Terminating CUG service settings.

    The response is either `UserTerminatingClosedUserGroupGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserTerminatingClosedUserGroupModifyRequest(OCIRequest):
    """
    Modify user Terminating CUG service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        user_interlock_code (str): userInterlockCode *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "user_interlock_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("user_interlock_code", "userInterlockCode", str),
        )


class UserThirdPartyVoiceMailSupportGetRequest13mp16(OCIRequest):
    """
    Request the user level data associated with Third-Party Voice Mail Support.

    The response is either a `UserThirdPartyVoiceMailSupportGetResponse13mp16()` or an
    `ErrorResponse()`. Replaced by: `UserThirdPartyVoiceMailSupportGetRequest17()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        busy_redirect_to_voice_mail (bool): busyRedirectToVoiceMail *Optional*
        no_answer_redirect_to_voice_mail (bool): noAnswerRedirectToVoiceMail *Optional*
        server_selection (str): serverSelection *Optional*
        user_server (str): userServer *Optional*
        mailbox_id_type (str): mailboxIdType *Optional*
        mailbox_url (str): mailboxURL *Optional*
        no_answer_number_of_rings (int): noAnswerNumberOfRings *Optional*
        always_redirect_to_voice_mail (bool): alwaysRedirectToVoiceMail *Optional*
        out_of_primary_zone_redirect_to_voice_mail (bool):
            outOfPrimaryZoneRedirectToVoiceMail *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "busy_redirect_to_voice_mail",
        "no_answer_redirect_to_voice_mail",
        "server_selection",
        "user_server",
        "mailbox_id_type",
        "mailbox_url",
        "no_answer_number_of_rings",
        "always_redirect_to_voice_mail",
        "out_of_primary_zone_redirect_to_voice_mail",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("busy_redirect_to_voice_mail", "busyRedirectToVoiceMail", bool),
            E("no_answer_redirect_to_voice_mail", "noAnswerRedirectToVoiceMail", bool),
            E("server_selection", "serverSelection", str),
            E("user_server", "userServer", str),
            E("mailbox_id_type", "mailboxIdType", str),
            E("mailbox_url", "mailboxURL", str),
            E("no_answer_number_of_rings", "noAnswerNumberOfRings", int),
            E("always_redirect_to_voice_mail", "alwaysRedirectToVoiceMail", bool),
            E(
                "out_of_primary_zone_redirect_to_voice_mail",
                "outOfPrimaryZoneRedirectToVoiceMail",
                bool,
            ),
        )


class UserTimeScheduleDeleteRequest(OCIRequest):
    """
    Delete a user time schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        time_schedule_name (str): timeScheduleName
    """

    __slots__: List[str] = [
        "user_id",
        "time_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("time_schedule_name", "timeScheduleName", str, is_required=True),
        )


class UserTimeScheduleGetListRequest(OCIRequest):
    """
    Get all time schedules for a user.

    This includes the user's personal schedules and user's group's schedules.

    The response is either a `UserTimeScheduleGetListResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserTimeScheduleGetRequest(OCIRequest):
    """
    Request to get a user time schedule.

    The response is either a `UserTimeScheduleGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        time_schedule_name (str): timeScheduleName
    """

    __slots__: List[str] = [
        "user_id",
        "time_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("time_schedule_name", "timeScheduleName", str, is_required=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): userId
        is_active (bool): isActive *Optional*
        allow_activation_with_user_addresses (bool): allowActivationWithUserAddresses
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "allow_activation_with_user_addresses",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E(
                "allow_activation_with_user_addresses",
                "allowActivationWithUserAddresses",
                bool,
            ),
        )


class UserVideoAddOnGetRequest14(OCIRequest):
    """
    Get the user's Video Add-On service setting.

    The response is either a `UserVideoAddOnGetResponse14()` or an `ErrorResponse()`.
    Replaced by: `UserVideoAddOnGetRequest19()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserVideoAddOnGetRequest19(OCIRequest):
    """
    Get the user's Video Add-On service setting.

    The response is either a `UserVideoAddOnGetResponse19()` or an `ErrorResponse()`.
    Replaced by: `UserVideoAddOnGetRequest22()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        phone_number (List[str]): phoneNumber
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True, is_array=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): userId
        phone_number (List[str]): phoneNumber
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True, is_array=True),
        )


class UserVoiceMessagingUserGetAdvancedVoiceManagementRequest(OCIRequest):
    """
    Get the user's voice messaging advanced voice management service setting.

    The response is either a `UserVoiceMessagingUserGetAdvancedVoiceManagementResponse()`
    or an `ErrorResponse()`.

    Replaced By: `UserVoiceMessagingUserGetAdvancedVoiceManagementRequest14sp3()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        list_id (int): listId
    """

    __slots__: List[str] = [
        "user_id",
        "list_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("list_id", "listId", int, is_required=True),
        )


class UserVoiceMessagingUserGetGreetingRequest13mp16(OCIRequest):
    """
    Get the user's voice messaging greeting information.

    The response is either a `UserVoiceMessagingUserGetGreetingResponse13mp16()` or an
    `ErrorResponse()`.

    Replaced By: `UserVoiceMessagingUserGetGreetingRequest16()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserVoiceMessagingUserGetGreetingRequest16(OCIRequest):
    """
    Get the user's voice messaging greeting information.

    The response is either a `UserVoiceMessagingUserGetGreetingResponse16()` or an
    `ErrorResponse()`. Replaced by: `UserVoiceMessagingUserGetGreetingRequest18()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserVoiceMessagingUserGetGreetingRequest18(OCIRequest):
    """
    Get the user's voice messaging greeting information.

    The response is either a `UserVoiceMessagingUserGetGreetingResponse18()` or an
    `ErrorResponse()`. Replaced by `UserVoiceMessagingUserGetGreetingRequest18sp1()` in AS
    data mode

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserVoiceMessagingUserGetGreetingRequest18sp1(OCIRequest):
    """
    Get the user's voice messaging greeting information.

    The response is either a `UserVoiceMessagingUserGetGreetingResponse18sp1()` or an
    `ErrorResponse()`. Replaced by: `UserVoiceMessagingUserGetGreetingRequest20()` in AS
    data mode

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserVoiceMessagingUserGetVoiceManagementRequest13mp8(OCIRequest):
    """
    Get the user's voice messaging voice management service settings.

    The response is either a `UserVoiceMessagingUserGetVoiceManagementResponse13mp8()` or
    an `ErrorResponse()`. Replaced by:
    `UserVoiceMessagingUserGetVoiceManagementRequest17()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserVoiceMessagingUserGetVoiceManagementRequest17(OCIRequest):
    """
    Get the user's voice messaging voice management service settings.

    The response is either a `UserVoiceMessagingUserGetVoiceManagementResponse17()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserVoiceMessagingUserGetVoicePortalPasswordInfoRequest(OCIRequest):
    """
    Request the user's voice portal password information.

    The response is either a `UserVoiceMessagingUserGetVoicePortalPasswordInfoResponse()`
    or an `ErrorResponse()`.

    Replaced By: `UserPortalPasscodeGetInfoRequest()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserVoiceMessagingUserGetVoicePortalRequest(OCIRequest):
    """
    Get the user's voice messaging voice portal settings.

    The response is either a `UserVoiceMessagingUserGetVoicePortalResponse()` or an
    `ErrorResponse()`.

    Replaced By: `UserVoiceMessagingUserGetVoicePortalRequest16()`

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserVoiceMessagingUserGetVoicePortalRequest16(OCIRequest):
    """
    Get the user's voice messaging voice portal settings.

    The response is either a `UserVoiceMessagingUserGetVoicePortalResponse16()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        mail_server_selection (str): mailServerSelection *Optional*
        group_mail_server_email_address (str): groupMailServerEmailAddress *Optional*
        group_mail_server_user_id (str): groupMailServerUserId *Optional*
        group_mail_server_password (str): groupMailServerPassword *Optional*
        use_group_default_mail_server_full_mailbox_limit (bool):
            useGroupDefaultMailServerFullMailboxLimit *Optional*
        group_mail_server_full_mailbox_limit (int): groupMailServerFullMailboxLimit
            *Optional*
        personal_mail_server_net_address (str): personalMailServerNetAddress *Optional*
        personal_mail_server_protocol (str): personalMailServerProtocol *Optional*
        personal_mail_server_real_delete_for_imap (bool):
            personalMailServerRealDeleteForImap *Optional*
        personal_mail_server_email_address (str): personalMailServerEmailAddress
            *Optional*
        personal_mail_server_user_id (str): personalMailServerUserId *Optional*
        personal_mail_server_password (str): personalMailServerPassword *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "mail_server_selection",
        "group_mail_server_email_address",
        "group_mail_server_user_id",
        "group_mail_server_password",
        "use_group_default_mail_server_full_mailbox_limit",
        "group_mail_server_full_mailbox_limit",
        "personal_mail_server_net_address",
        "personal_mail_server_protocol",
        "personal_mail_server_real_delete_for_imap",
        "personal_mail_server_email_address",
        "personal_mail_server_user_id",
        "personal_mail_server_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mail_server_selection", "mailServerSelection", str),
            E("group_mail_server_email_address", "groupMailServerEmailAddress", str),
            E("group_mail_server_user_id", "groupMailServerUserId", str),
            E("group_mail_server_password", "groupMailServerPassword", str),
            E(
                "use_group_default_mail_server_full_mailbox_limit",
                "useGroupDefaultMailServerFullMailboxLimit",
                bool,
            ),
            E(
                "group_mail_server_full_mailbox_limit",
                "groupMailServerFullMailboxLimit",
                int,
            ),
            E("personal_mail_server_net_address", "personalMailServerNetAddress", str),
            E("personal_mail_server_protocol", "personalMailServerProtocol", str),
            E(
                "personal_mail_server_real_delete_for_imap",
                "personalMailServerRealDeleteForImap",
                bool,
            ),
            E(
                "personal_mail_server_email_address",
                "personalMailServerEmailAddress",
                str,
            ),
            E("personal_mail_server_user_id", "personalMailServerUserId", str),
            E("personal_mail_server_password", "personalMailServerPassword", str),
        )


class UserVoiceMessagingUserModifyVoiceManagementRequest(OCIRequest):
    """
    Modify the user's voice messaging voice management service setting.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        processing (str): processing *Optional*
        voice_message_delivery_email_address (str): voiceMessageDeliveryEmailAddress
            *Optional*
        use_phone_message_waiting_indicator (bool): usePhoneMessageWaitingIndicator
            *Optional*
        send_voice_message_notify_email (bool): sendVoiceMessageNotifyEmail *Optional*
        voice_message_notify_email_address (str): voiceMessageNotifyEmailAddress
            *Optional*
        send_carbon_copy_voice_message (bool): sendCarbonCopyVoiceMessage *Optional*
        voice_message_carbon_copy_email_address (str): voiceMessageCarbonCopyEmailAddress
            *Optional*
        transfer_on_zero_to_phone_number (bool): transferOnZeroToPhoneNumber *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        always_redirect_to_voice_mail (bool): alwaysRedirectToVoiceMail *Optional*
        busy_redirect_to_voice_mail (bool): busyRedirectToVoiceMail *Optional*
        no_answer_redirect_to_voice_mail (bool): noAnswerRedirectToVoiceMail *Optional*
        out_of_primary_zone_redirect_to_voice_mail (bool):
            outOfPrimaryZoneRedirectToVoiceMail *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "processing",
        "voice_message_delivery_email_address",
        "use_phone_message_waiting_indicator",
        "send_voice_message_notify_email",
        "voice_message_notify_email_address",
        "send_carbon_copy_voice_message",
        "voice_message_carbon_copy_email_address",
        "transfer_on_zero_to_phone_number",
        "transfer_phone_number",
        "always_redirect_to_voice_mail",
        "busy_redirect_to_voice_mail",
        "no_answer_redirect_to_voice_mail",
        "out_of_primary_zone_redirect_to_voice_mail",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("processing", "processing", str),
            E(
                "voice_message_delivery_email_address",
                "voiceMessageDeliveryEmailAddress",
                str,
            ),
            E(
                "use_phone_message_waiting_indicator",
                "usePhoneMessageWaitingIndicator",
                bool,
            ),
            E("send_voice_message_notify_email", "sendVoiceMessageNotifyEmail", bool),
            E(
                "voice_message_notify_email_address",
                "voiceMessageNotifyEmailAddress",
                str,
            ),
            E("send_carbon_copy_voice_message", "sendCarbonCopyVoiceMessage", bool),
            E(
                "voice_message_carbon_copy_email_address",
                "voiceMessageCarbonCopyEmailAddress",
                str,
            ),
            E("transfer_on_zero_to_phone_number", "transferOnZeroToPhoneNumber", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("always_redirect_to_voice_mail", "alwaysRedirectToVoiceMail", bool),
            E("busy_redirect_to_voice_mail", "busyRedirectToVoiceMail", bool),
            E("no_answer_redirect_to_voice_mail", "noAnswerRedirectToVoiceMail", bool),
            E(
                "out_of_primary_zone_redirect_to_voice_mail",
                "outOfPrimaryZoneRedirectToVoiceMail",
                bool,
            ),
        )


class UserVoiceMessagingUserModifyVoicePortalPasswordRequest(OCIRequest):
    """
    Modify the user's Voice Portal password The response is either a `SuccessResponse()`
    or an `ErrorResponse()`.

    Engineering Note: This command is used internally by Call Processing.

    Replaced By: `UserPortalPasscodeModifyRequest()`

    Attributes:
        user_id (str): userId
        old_password (str): oldPassword *Optional*
        new_password (str): newPassword
    """

    __slots__: List[str] = [
        "user_id",
        "old_password",
        "new_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("old_password", "oldPassword", str),
            E("new_password", "newPassword", str, is_required=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): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=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): userId
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
        )


class UserXsiPolicyProfileGetRequest(OCIRequest):
    """
    Get the user Xsi policy profile.

    The response is either a `UserXsiPolicyProfileGetResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserZoneCallingRestrictionsGetRequest(OCIRequest):
    """
    Gets the home zone for a user The response is either a
    `UserZoneCallingRestrictionsGetResponse()` or an `ErrorResponse()`.


    Attributes:
        user_id (str): userId
    """

    __slots__: List[str] = [
        "user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (E("user_id", "userId", str, is_required=True),)


class UserZoneCallingRestrictionsModifyRequest(OCIRequest):
    """
    Modify the home zone for a user The response is either a `SuccessResponse()` or an
    `ErrorResponse()`.


    Attributes:
        user_id (str): userId
        home_zone_name (str): homeZoneName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "home_zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("home_zone_name", "homeZoneName", str),
        )


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()`.
    """

    __slots__: List[str] = []

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return ()


class EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailablePagedSortedListRequest(
    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
    `EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailablePagedSortedListResponse()`
    or `ErrorResponse()`. Replaced by:
    `EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailablePagedSortedListRequest22()`

    Attributes:
        service_provider_id (str): serviceProviderId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_mobile_directory_number (OCI.sortByMobileDirectoryNumber):
            sortByMobileDirectoryNumber *Optional*
        search_criteria_mobile_subscriber_directory_number
            (List[OCI.searchCriteriaMobileSubscriberDirectoryNumber]):
            searchCriteriaMobileSubscriberDirectoryNumber *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_paging_control",
        "sort_by_mobile_directory_number",
        "search_criteria_mobile_subscriber_directory_number",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_mobile_directory_number",
                "sortByMobileDirectoryNumber",
                OCI.SortByMobileDirectoryNumber,
                is_complex=True,
            ),
            E(
                "search_criteria_mobile_subscriber_directory_number",
                "searchCriteriaMobileSubscriberDirectoryNumber",
                OCI.SearchCriteriaMobileSubscriberDirectoryNumber,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        include_total_number_of_rows (bool): includeTotalNumberOfRows *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_mobile_directory_number (OCI.sortByMobileDirectoryNumber):
            sortByMobileDirectoryNumber *Optional*
        search_criteria_mobile_subscriber_directory_number
            (List[OCI.searchCriteriaMobileSubscriberDirectoryNumber]):
            searchCriteriaMobileSubscriberDirectoryNumber *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "include_total_number_of_rows",
        "response_paging_control",
        "sort_by_mobile_directory_number",
        "search_criteria_mobile_subscriber_directory_number",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("include_total_number_of_rows", "includeTotalNumberOfRows", bool),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_mobile_directory_number",
                "sortByMobileDirectoryNumber",
                OCI.SortByMobileDirectoryNumber,
                is_complex=True,
            ),
            E(
                "search_criteria_mobile_subscriber_directory_number",
                "searchCriteriaMobileSubscriberDirectoryNumber",
                OCI.SearchCriteriaMobileSubscriberDirectoryNumber,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        profile_name (str): profileName
        new_profile_name (str): newProfileName *Optional*
        profile_description (str): profileDescription *Optional*
        threshold_current_call_state_idle_time_yellow (int):
            thresholdCurrentCallStateIdleTimeYellow *Optional*
        threshold_current_call_state_idle_time_red (int):
            thresholdCurrentCallStateIdleTimeRed *Optional*
        threshold_current_call_state_on_call_time_yellow (int):
            thresholdCurrentCallStateOnCallTimeYellow *Optional*
        threshold_current_call_state_on_call_time_red (int):
            thresholdCurrentCallStateOnCallTimeRed *Optional*
        threshold_current_agent_state_unavailable_time_yellow (int):
            thresholdCurrentAgentStateUnavailableTimeYellow *Optional*
        threshold_current_agent_state_unavailable_time_red (int):
            thresholdCurrentAgentStateUnavailableTimeRed *Optional*
        threshold_average_busy_in_time_yellow (int): thresholdAverageBusyInTimeYellow
            *Optional*
        threshold_average_busy_in_time_red (int): thresholdAverageBusyInTimeRed *Optional*
        threshold_average_busy_out_time_yellow (int): thresholdAverageBusyOutTimeYellow
            *Optional*
        threshold_average_busy_out_time_red (int): thresholdAverageBusyOutTimeRed
            *Optional*
        threshold_average_wrap_up_time_yellow (int): thresholdAverageWrapUpTimeYellow
            *Optional*
        threshold_average_wrap_up_time_red (int): thresholdAverageWrapUpTimeRed *Optional*
        enable_notification_email (bool): enableNotificationEmail *Optional*
        notification_email_address_list (OCI.notificationEmailAddressList):
            notificationEmailAddressList *Optional*
        agent_user_id_list (OCI.agentUserIdList): agentUserIdList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "profile_name",
        "new_profile_name",
        "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",
        "enable_notification_email",
        "notification_email_address_list",
        "agent_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=True),
            E("new_profile_name", "newProfileName", str),
            E("profile_description", "profileDescription", str),
            E(
                "threshold_current_call_state_idle_time_yellow",
                "thresholdCurrentCallStateIdleTimeYellow",
                int,
            ),
            E(
                "threshold_current_call_state_idle_time_red",
                "thresholdCurrentCallStateIdleTimeRed",
                int,
            ),
            E(
                "threshold_current_call_state_on_call_time_yellow",
                "thresholdCurrentCallStateOnCallTimeYellow",
                int,
            ),
            E(
                "threshold_current_call_state_on_call_time_red",
                "thresholdCurrentCallStateOnCallTimeRed",
                int,
            ),
            E(
                "threshold_current_agent_state_unavailable_time_yellow",
                "thresholdCurrentAgentStateUnavailableTimeYellow",
                int,
            ),
            E(
                "threshold_current_agent_state_unavailable_time_red",
                "thresholdCurrentAgentStateUnavailableTimeRed",
                int,
            ),
            E(
                "threshold_average_busy_in_time_yellow",
                "thresholdAverageBusyInTimeYellow",
                int,
            ),
            E(
                "threshold_average_busy_in_time_red",
                "thresholdAverageBusyInTimeRed",
                int,
            ),
            E(
                "threshold_average_busy_out_time_yellow",
                "thresholdAverageBusyOutTimeYellow",
                int,
            ),
            E(
                "threshold_average_busy_out_time_red",
                "thresholdAverageBusyOutTimeRed",
                int,
            ),
            E(
                "threshold_average_wrap_up_time_yellow",
                "thresholdAverageWrapUpTimeYellow",
                int,
            ),
            E(
                "threshold_average_wrap_up_time_red",
                "thresholdAverageWrapUpTimeRed",
                int,
            ),
            E("enable_notification_email", "enableNotificationEmail", bool),
            E(
                "notification_email_address_list",
                "notificationEmailAddressList",
                OCI.CallCenterAgentThresholdProfileReplacementNotificationEmailList,
                is_complex=True,
            ),
            E(
                "agent_user_id_list",
                "agentUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): serviceProviderId
        enable_agent_unavailable_codes (bool): enableAgentUnavailableCodes *Optional*
        default_agent_unavailable_code_on_dnd (str): defaultAgentUnavailableCodeOnDND
            *Optional*
        default_agent_unavailable_code_on_personal_calls (str):
            defaultAgentUnavailableCodeOnPersonalCalls *Optional*
        default_agent_unavailable_code_on_consecutive_bounces (str):
            defaultAgentUnavailableCodeOnConsecutiveBounces *Optional*
        default_agent_unavailable_code_on_not_reachable (str):
            defaultAgentUnavailableCodeOnNotReachable *Optional*
        force_use_of_agent_unavailable_codes (bool): forceUseOfAgentUnavailableCodes
            *Optional*
        default_agent_unavailable_code (str): defaultAgentUnavailableCode *Optional*
        code_state_list (List[OCI.codeStateList]): codeStateList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enable_agent_unavailable_codes",
        "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",
        "force_use_of_agent_unavailable_codes",
        "default_agent_unavailable_code",
        "code_state_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enable_agent_unavailable_codes", "enableAgentUnavailableCodes", bool),
            E(
                "default_agent_unavailable_code_on_dnd",
                "defaultAgentUnavailableCodeOnDND",
                str,
            ),
            E(
                "default_agent_unavailable_code_on_personal_calls",
                "defaultAgentUnavailableCodeOnPersonalCalls",
                str,
            ),
            E(
                "default_agent_unavailable_code_on_consecutive_bounces",
                "defaultAgentUnavailableCodeOnConsecutiveBounces",
                str,
            ),
            E(
                "default_agent_unavailable_code_on_not_reachable",
                "defaultAgentUnavailableCodeOnNotReachable",
                str,
            ),
            E(
                "force_use_of_agent_unavailable_codes",
                "forceUseOfAgentUnavailableCodes",
                bool,
            ),
            E("default_agent_unavailable_code", "defaultAgentUnavailableCode", str),
            E(
                "code_state_list",
                "codeStateList",
                OCI.CallCenterAgentUnavailableCodeStateModify,
                is_complex=True,
                is_array=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): serviceProviderId
        call_disposition_code_activation (List[OCI.callDispositionCodeActivation]):
            callDispositionCodeActivation *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "call_disposition_code_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "call_disposition_code_activation",
                "callDispositionCodeActivation",
                OCI.CallDispositionCodeActivation,
                is_complex=True,
                is_array=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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        is_premium_only (bool): isPremiumOnly *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_call_center_name (OCI.searchCriteriaCallCenterName):
            searchCriteriaCallCenterName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "is_premium_only",
        "response_size_limit",
        "search_criteria_exact_user_group",
        "search_criteria_call_center_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("is_premium_only", "isPremiumOnly", bool),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_call_center_name",
                "searchCriteriaCallCenterName",
                OCI.SearchCriteriaCallCenterName,
                is_complex=True,
            ),
        )


class EnterpriseCallCenterEnhancedReportingBrandingModifyRequest(OCIRequest):
    """
    Request to modify the enterprise branding configuration.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        branding_choice (str): brandingChoice *Optional*
        branding_file (OCI.brandingFile): brandingFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "branding_choice",
        "branding_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("branding_choice", "brandingChoice", str),
            E(
                "branding_file",
                "brandingFile",
                OCI.LabeledFileResource,
                is_complex=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): serviceProviderId
        name (str): name
        description (str): description *Optional*
        data_template (str): dataTemplate
        filter_number (int): filterNumber *Optional*
        xslt_template (OCI.xsltTemplate): xsltTemplate
        scope (str): scope
        is_enabled (bool): isEnabled
        is_realtime_report (bool): isRealtimeReport *Optional*
        call_completion_threshold_param (str): callCompletionThresholdParam *Optional*
        short_duration_threshold_param (str): shortDurationThresholdParam *Optional*
        service_level_threshold_param (str): serviceLevelThresholdParam *Optional*
        service_level_inclusions_param (str): serviceLevelInclusionsParam *Optional*
        service_level_objective_threshold_param (str): serviceLevelObjectiveThresholdParam
            *Optional*
        abandoned_call_threshold_param (str): abandonedCallThresholdParam *Optional*
        service_level_threshold_param_number (int): serviceLevelThresholdParamNumber
            *Optional*
        abandoned_call_threshold_param_number (int): abandonedCallThresholdParamNumber
            *Optional*
        filter_value (List[str]): filterValue *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "description",
        "data_template",
        "filter_number",
        "xslt_template",
        "scope",
        "is_enabled",
        "is_realtime_report",
        "call_completion_threshold_param",
        "short_duration_threshold_param",
        "service_level_threshold_param",
        "service_level_inclusions_param",
        "service_level_objective_threshold_param",
        "abandoned_call_threshold_param",
        "service_level_threshold_param_number",
        "abandoned_call_threshold_param_number",
        "filter_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("data_template", "dataTemplate", str, is_required=True),
            E("filter_number", "filterNumber", int),
            E(
                "xslt_template",
                "xsltTemplate",
                OCI.LabeledFileResource,
                is_complex=True,
                is_required=True,
            ),
            E("scope", "scope", str, is_required=True),
            E("is_enabled", "isEnabled", bool, is_required=True),
            E("is_realtime_report", "isRealtimeReport", bool),
            E("call_completion_threshold_param", "callCompletionThresholdParam", str),
            E("short_duration_threshold_param", "shortDurationThresholdParam", str),
            E("service_level_threshold_param", "serviceLevelThresholdParam", str),
            E("service_level_inclusions_param", "serviceLevelInclusionsParam", str),
            E(
                "service_level_objective_threshold_param",
                "serviceLevelObjectiveThresholdParam",
                str,
            ),
            E("abandoned_call_threshold_param", "abandonedCallThresholdParam", str),
            E(
                "service_level_threshold_param_number",
                "serviceLevelThresholdParamNumber",
                int,
            ),
            E(
                "abandoned_call_threshold_param_number",
                "abandonedCallThresholdParamNumber",
                int,
            ),
            E("filter_value", "filterValue", str, is_array=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): serviceProviderId
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        xslt_template (OCI.xsltTemplate): xsltTemplate *Optional*
        scope (str): scope *Optional*
        is_enabled (bool): isEnabled *Optional*
        is_realtime_report (bool): isRealtimeReport *Optional*
        filter_number (int): filterNumber *Optional*
        filter_value (OCI.filterValue): filterValue *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "new_name",
        "description",
        "xslt_template",
        "scope",
        "is_enabled",
        "is_realtime_report",
        "filter_number",
        "filter_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E(
                "xslt_template",
                "xsltTemplate",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E("scope", "scope", str),
            E("is_enabled", "isEnabled", bool),
            E("is_realtime_report", "isRealtimeReport", bool),
            E("filter_number", "filterNumber", int),
            E(
                "filter_value",
                "filterValue",
                OCI.CallCenterReportDataTemplateQueryFilterValueReplacementList,
                is_complex=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): serviceProviderId
        routing_policy (str): routingPolicy *Optional*
        routing_priority_order (List[OCI.routingPriorityOrder]): routingPriorityOrder
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "routing_policy",
        "routing_priority_order",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("routing_policy", "routingPolicy", str),
            E(
                "routing_priority_order",
                "routingPriorityOrder",
                OCI.CallCenterRoutingPriorityOrder,
                is_complex=True,
                is_array=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): serviceProviderId
        entry (List[OCI.entry]): entry
    """

    __slots__: List[str] = [
        "service_provider_id",
        "entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "entry",
                "entry",
                OCI.PhoneListEntry,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        search_criteria_enterprise_common_phone_list_name
            (List[OCI.searchCriteriaEnterpriseCommonPhoneListName]):
            searchCriteriaEnterpriseCommonPhoneListName *Optional*
        search_criteria_enterprise_common_phone_list_number
            (List[OCI.searchCriteriaEnterpriseCommonPhoneListNumber]):
            searchCriteriaEnterpriseCommonPhoneListNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_mode_or",
        "search_criteria_enterprise_common_phone_list_name",
        "search_criteria_enterprise_common_phone_list_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "search_criteria_enterprise_common_phone_list_name",
                "searchCriteriaEnterpriseCommonPhoneListName",
                OCI.SearchCriteriaEnterpriseCommonPhoneListName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_enterprise_common_phone_list_number",
                "searchCriteriaEnterpriseCommonPhoneListNumber",
                OCI.SearchCriteriaEnterpriseCommonPhoneListNumber,
                is_complex=True,
                is_array=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): serviceProviderId
        code (List[OCI.code]): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "code",
                "code",
                OCI.CommunicationBarringAuthorizationCodeConfiguration,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_communication_barring_authorization_code
            (List[OCI.searchCriteriaCommunicationBarringAuthorizationCode]):
            searchCriteriaCommunicationBarringAuthorizationCode *Optional*
        search_criteria_communication_barring_authorization_code_description
            (List[OCI.searchCriteriaCommunicationBarringAuthorizationCodeDescription]):
            searchCriteriaCommunicationBarringAuthorizationCodeDescription *Optional*
        search_criteria_network_class_of_service_name
            (List[OCI.searchCriteriaNetworkClassOfServiceName]):
            searchCriteriaNetworkClassOfServiceName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_communication_barring_authorization_code",
        "search_criteria_communication_barring_authorization_code_description",
        "search_criteria_network_class_of_service_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_communication_barring_authorization_code",
                "searchCriteriaCommunicationBarringAuthorizationCode",
                OCI.SearchCriteriaCommunicationBarringAuthorizationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_communication_barring_authorization_code_description",
                "searchCriteriaCommunicationBarringAuthorizationCodeDescription",
                OCI.SearchCriteriaCommunicationBarringAuthorizationCodeDescription,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_network_class_of_service_name",
                "searchCriteriaNetworkClassOfServiceName",
                OCI.SearchCriteriaNetworkClassOfServiceName,
                is_complex=True,
                is_array=True,
            ),
        )


class EnterpriseDepartmentAddRequest(OCIRequest):
    """
    Add a department to enterprise.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        enterprise_id (str): enterpriseId
        department_name (str): departmentName
        parent_department_key (OCI.parentDepartmentKey): parentDepartmentKey *Optional*
    """

    __slots__: List[str] = [
        "enterprise_id",
        "department_name",
        "parent_department_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enterprise_id", "enterpriseId", str, is_required=True),
            E("department_name", "departmentName", str, is_required=True),
            E(
                "parent_department_key",
                "parentDepartmentKey",
                OCI.EnterpriseDepartmentKey,
                is_complex=True,
            ),
        )


class EnterpriseDepartmentModifyRequest(OCIRequest):
    """
    Modify a department of an enterprise.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        enterprise_id (str): enterpriseId
        department_name (str): departmentName
        new_department_name (str): newDepartmentName *Optional*
        new_parent_department_key (OCI.newParentDepartmentKey): newParentDepartmentKey
            *Optional*
    """

    __slots__: List[str] = [
        "enterprise_id",
        "department_name",
        "new_department_name",
        "new_parent_department_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enterprise_id", "enterpriseId", str, is_required=True),
            E("department_name", "departmentName", str, is_required=True),
            E("new_department_name", "newDepartmentName", str),
            E(
                "new_parent_department_key",
                "newParentDepartmentKey",
                OCI.EnterpriseDepartmentKey,
                is_complex=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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_trunk_group_name (List[OCI.searchCriteriaTrunkGroupName]):
            searchCriteriaTrunkGroupName *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_trunk_group_name",
        "search_criteria_group_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_trunk_group_name",
                "searchCriteriaTrunkGroupName",
                OCI.SearchCriteriaTrunkGroupName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=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): serviceProviderId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_trunk_group_name (OCI.sortByTrunkGroupName): sortByTrunkGroupName
            *Optional*
        search_criteria_trunk_group_name (List[OCI.searchCriteriaTrunkGroupName]):
            searchCriteriaTrunkGroupName *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_paging_control",
        "sort_by_trunk_group_name",
        "search_criteria_trunk_group_name",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_trunk_group_name",
                "sortByTrunkGroupName",
                OCI.SortByTrunkGroupName,
                is_complex=True,
            ),
            E(
                "search_criteria_trunk_group_name",
                "searchCriteriaTrunkGroupName",
                OCI.SearchCriteriaTrunkGroupName,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_device_type (OCI.searchCriteriaExactDeviceType):
            searchCriteriaExactDeviceType *Optional*
        search_criteria_exact_device_level (OCI.searchCriteriaExactDeviceLevel):
            searchCriteriaExactDeviceLevel *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_group_id",
        "search_criteria_exact_device_type",
        "search_criteria_exact_device_level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_device_type",
                "searchCriteriaExactDeviceType",
                OCI.SearchCriteriaExactDeviceType,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_level",
                "searchCriteriaExactDeviceLevel",
                OCI.SearchCriteriaExactDeviceLevel,
                is_complex=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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_virtual_on_net_call_type_name
            (OCI.searchCriteriaExactVirtualOnNetCallTypeName):
            searchCriteriaExactVirtualOnNetCallTypeName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_exact_virtual_on_net_call_type_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_virtual_on_net_call_type_name",
                "searchCriteriaExactVirtualOnNetCallTypeName",
                OCI.SearchCriteriaExactVirtualOnNetCallTypeName,
                is_complex=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): serviceProviderId
        location_dialing_code (str): locationDialingCode
        min_extension_length (int): minExtensionLength
        max_extension_length (int): maxExtensionLength
        description (str): description *Optional*
        route_group_id (str): routeGroupId *Optional*
        policy_selection (str): policySelection
        digit_manipulation (List[OCI.digitManipulation]): digitManipulation *Optional*
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "location_dialing_code",
        "min_extension_length",
        "max_extension_length",
        "description",
        "route_group_id",
        "policy_selection",
        "digit_manipulation",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("location_dialing_code", "locationDialingCode", str, is_required=True),
            E("min_extension_length", "minExtensionLength", int, is_required=True),
            E("max_extension_length", "maxExtensionLength", int, is_required=True),
            E("description", "description", str),
            E("route_group_id", "routeGroupId", str),
            E("policy_selection", "policySelection", str, is_required=True),
            E(
                "digit_manipulation",
                "digitManipulation",
                OCI.EnterpriseVoiceVPNDigitManipulation,
                is_complex=True,
                is_array=True,
            ),
            E("treatment_id", "treatmentId", str),
        )


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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_exact_policy_selection (OCI.searchCriteriaExactPolicySelection):
            searchCriteriaExactPolicySelection *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_group_location_code",
        "search_criteria_exact_policy_selection",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_policy_selection",
                "searchCriteriaExactPolicySelection",
                OCI.SearchCriteriaExactPolicySelection,
                is_complex=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): serviceProviderId
        location_dialing_code (str): locationDialingCode
        min_extension_length (int): minExtensionLength *Optional*
        max_extension_length (int): maxExtensionLength *Optional*
        description (str): description *Optional*
        route_group_id (str): routeGroupId *Optional*
        policy_selection (str): policySelection *Optional*
        digit_manipulation (List[OCI.digitManipulation]): digitManipulation *Optional*
        treatment_id (str): treatmentId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "location_dialing_code",
        "min_extension_length",
        "max_extension_length",
        "description",
        "route_group_id",
        "policy_selection",
        "digit_manipulation",
        "treatment_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("location_dialing_code", "locationDialingCode", str, is_required=True),
            E("min_extension_length", "minExtensionLength", int),
            E("max_extension_length", "maxExtensionLength", int),
            E("description", "description", str),
            E("route_group_id", "routeGroupId", str),
            E("policy_selection", "policySelection", str),
            E(
                "digit_manipulation",
                "digitManipulation",
                OCI.EnterpriseVoiceVPNDigitManipulation,
                is_complex=True,
                is_array=True,
            ),
            E("treatment_id", "treatmentId", str),
        )


class GroupAccessDeviceAddRequest14(OCIRequest):
    """
    Request to add a group access device.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `GroupAccessDeviceAddRequest22()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        device_type (str): deviceType
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        mobility_manager_provisioning_url (str): mobilityManagerProvisioningURL *Optional*
        mobility_manager_provisioning_user_name (str): mobilityManagerProvisioningUserName
            *Optional*
        mobility_manager_provisioning_password (str): mobilityManagerProvisioningPassword
            *Optional*
        mobility_manager_default_originating_service_key (int):
            mobilityManagerDefaultOriginatingServiceKey *Optional*
        mobility_manager_default_terminating_service_key (int):
            mobilityManagerDefaultTerminatingServiceKey *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "device_type",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "mobility_manager_provisioning_url",
        "mobility_manager_provisioning_user_name",
        "mobility_manager_provisioning_password",
        "mobility_manager_default_originating_service_key",
        "mobility_manager_default_terminating_service_key",
        "use_custom_user_name_password",
        "access_device_credentials",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E(
                "mobility_manager_provisioning_url",
                "mobilityManagerProvisioningURL",
                str,
            ),
            E(
                "mobility_manager_provisioning_user_name",
                "mobilityManagerProvisioningUserName",
                str,
            ),
            E(
                "mobility_manager_provisioning_password",
                "mobilityManagerProvisioningPassword",
                str,
            ),
            E(
                "mobility_manager_default_originating_service_key",
                "mobilityManagerDefaultOriginatingServiceKey",
                int,
            ),
            E(
                "mobility_manager_default_terminating_service_key",
                "mobilityManagerDefaultTerminatingServiceKey",
                int,
            ),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=True,
            ),
        )


class GroupAccessDeviceAddRequest22(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: hotlineContact
    useHotline groupExternalId deviceExternalId Replaced by:
    `GroupAccessDeviceAddRequest22V2()`

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        device_name (str): deviceName *Optional*
        group_external_id (str): groupExternalId *Optional*
        device_external_id (str): deviceExternalId *Optional*
        device_type (str): deviceType
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        mobility_manager_provisioning_url (str): mobilityManagerProvisioningURL *Optional*
        mobility_manager_provisioning_user_name (str): mobilityManagerProvisioningUserName
            *Optional*
        mobility_manager_provisioning_password (str): mobilityManagerProvisioningPassword
            *Optional*
        mobility_manager_default_originating_service_key (int):
            mobilityManagerDefaultOriginatingServiceKey *Optional*
        mobility_manager_default_terminating_service_key (int):
            mobilityManagerDefaultTerminatingServiceKey *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
        use_hotline (bool): useHotline
        hotline_contact (str): hotlineContact *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "group_external_id",
        "device_external_id",
        "device_type",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "mobility_manager_provisioning_url",
        "mobility_manager_provisioning_user_name",
        "mobility_manager_provisioning_password",
        "mobility_manager_default_originating_service_key",
        "mobility_manager_default_terminating_service_key",
        "use_custom_user_name_password",
        "access_device_credentials",
        "use_hotline",
        "hotline_contact",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("device_name", "deviceName", str),
            E("group_external_id", "groupExternalId", str),
            E("device_external_id", "deviceExternalId", str),
            E("device_type", "deviceType", str, is_required=True),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E(
                "mobility_manager_provisioning_url",
                "mobilityManagerProvisioningURL",
                str,
            ),
            E(
                "mobility_manager_provisioning_user_name",
                "mobilityManagerProvisioningUserName",
                str,
            ),
            E(
                "mobility_manager_provisioning_password",
                "mobilityManagerProvisioningPassword",
                str,
            ),
            E(
                "mobility_manager_default_originating_service_key",
                "mobilityManagerDefaultOriginatingServiceKey",
                int,
            ),
            E(
                "mobility_manager_default_terminating_service_key",
                "mobilityManagerDefaultTerminatingServiceKey",
                int,
            ),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=True,
            ),
            E("use_hotline", "useHotline", bool, is_required=True),
            E("hotline_contact", "hotlineContact", str),
        )


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

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        device_name (str): deviceName *Optional*
        group_external_id (str): groupExternalId *Optional*
        device_external_id (str): deviceExternalId *Optional*
        device_type (str): deviceType
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "group_external_id",
        "device_external_id",
        "device_type",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "use_custom_user_name_password",
        "access_device_credentials",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("device_name", "deviceName", str),
            E("group_external_id", "groupExternalId", str),
            E("device_external_id", "deviceExternalId", str),
            E("device_type", "deviceType", str, is_required=True),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        access_device (OCI.accessDevice): accessDevice
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "access_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "access_device",
                "accessDevice",
                OCI.AccessDevice,
                is_complex=True,
                is_required=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        tag (List[OCI.tag]): tag
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "tag",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E(
                "tag",
                "tag",
                OCI.DeviceManagementTag,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class GroupAccessDeviceFileModifyRequest(OCIRequest):
    """
    Request to modify a specified group access device file.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `GroupAccessDeviceFileModifyRequest14sp8()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        file_type (str): fileType
        file_source (str): fileSource *Optional*
        upload_file (OCI.uploadFile): uploadFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "file_type",
        "file_source",
        "upload_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("file_type", "fileType", str, is_required=True),
            E("file_source", "fileSource", str),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        file_format (str): fileFormat
        file_source (str): fileSource *Optional*
        upload_file (OCI.uploadFile): uploadFile *Optional*
        extended_capture_enabled (bool): extendedCaptureEnabled *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "file_format",
        "file_source",
        "upload_file",
        "extended_capture_enabled",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("file_source", "fileSource", str),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E("extended_capture_enabled", "extendedCaptureEnabled", bool),
        )


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 (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        group_external_id (str): groupExternalId *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_exact_device_type (OCI.searchCriteriaExactDeviceType):
            searchCriteriaExactDeviceType *Optional*
        search_criteria_access_device_version
            (List[OCI.searchCriteriaAccessDeviceVersion]):
            searchCriteriaAccessDeviceVersion *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_external_id",
        "response_size_limit",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_exact_device_type",
        "search_criteria_access_device_version",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("group_external_id", "groupExternalId", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_device_type",
                "searchCriteriaExactDeviceType",
                OCI.SearchCriteriaExactDeviceType,
                is_complex=True,
            ),
            E(
                "search_criteria_access_device_version",
                "searchCriteriaAccessDeviceVersion",
                OCI.SearchCriteriaAccessDeviceVersion,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupAccessDeviceGetPagedSortedListRequest(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.  Replaced by
    `GroupAccessDeviceGetPagedSortedListRequest22()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_device_name (OCI.sortByDeviceName): sortByDeviceName *Optional*
        sort_by_device_type (OCI.sortByDeviceType): sortByDeviceType *Optional*
        sort_by_device_net_address (OCI.sortByDeviceNetAddress): sortByDeviceNetAddress
            *Optional*
        sort_by_device_mac_address (OCI.sortByDeviceMACAddress): sortByDeviceMACAddress
            *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_exact_device_type (List[OCI.searchCriteriaExactDeviceType]):
            searchCriteriaExactDeviceType *Optional*
        search_criteria_access_device_version
            (List[OCI.searchCriteriaAccessDeviceVersion]):
            searchCriteriaAccessDeviceVersion *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        get_visual_device_management_api_devices_only (bool):
            getVisualDeviceManagementAPIDevicesOnly *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_by_device_name",
        "sort_by_device_type",
        "sort_by_device_net_address",
        "sort_by_device_mac_address",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_exact_device_type",
        "search_criteria_access_device_version",
        "search_criteria_mode_or",
        "get_visual_device_management_api_devices_only",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_device_name",
                "sortByDeviceName",
                OCI.SortByDeviceName,
                is_complex=True,
            ),
            E(
                "sort_by_device_type",
                "sortByDeviceType",
                OCI.SortByDeviceType,
                is_complex=True,
            ),
            E(
                "sort_by_device_net_address",
                "sortByDeviceNetAddress",
                OCI.SortByDeviceNetAddress,
                is_complex=True,
            ),
            E(
                "sort_by_device_mac_address",
                "sortByDeviceMACAddress",
                OCI.SortByDeviceMACAddress,
                is_complex=True,
            ),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_device_type",
                "searchCriteriaExactDeviceType",
                OCI.SearchCriteriaExactDeviceType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_access_device_version",
                "searchCriteriaAccessDeviceVersion",
                OCI.SearchCriteriaAccessDeviceVersion,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "get_visual_device_management_api_devices_only",
                "getVisualDeviceManagementAPIDevicesOnly",
                bool,
            ),
        )


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". It can be linked to only one tree
    device.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        leaf_device_key (List[OCI.leafDeviceKey]): leafDeviceKey
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "leaf_device_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E(
                "leaf_device_key",
                "leafDeviceKey",
                OCI.AccessDeviceKey,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class GroupAccessDeviceModifyRequest14(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: hotlineContact
    useHotline deviceExternalId Replaced by: `GroupAccessDeviceModifyRequest22()`

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        configuration_mode (str): configurationMode *Optional*
        configuration_file (OCI.configurationFile): configurationFile *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        mobility_manager_provisioning_url (str): mobilityManagerProvisioningURL *Optional*
        mobility_manager_provisioning_user_name (str): mobilityManagerProvisioningUserName
            *Optional*
        mobility_manager_provisioning_password (str): mobilityManagerProvisioningPassword
            *Optional*
        mobility_manager_default_originating_service_key (int):
            mobilityManagerDefaultOriginatingServiceKey *Optional*
        mobility_manager_default_terminating_service_key (int):
            mobilityManagerDefaultTerminatingServiceKey *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
        hotline_contact (str): hotlineContact *Optional*
        use_hotline (bool): useHotline *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "device_external_id",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "configuration_mode",
        "configuration_file",
        "physical_location",
        "transport_protocol",
        "mobility_manager_provisioning_url",
        "mobility_manager_provisioning_user_name",
        "mobility_manager_provisioning_password",
        "mobility_manager_default_originating_service_key",
        "mobility_manager_default_terminating_service_key",
        "use_custom_user_name_password",
        "access_device_credentials",
        "hotline_contact",
        "use_hotline",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("configuration_mode", "configurationMode", str),
            E(
                "configuration_file",
                "configurationFile",
                OCI.FileResource,
                is_complex=True,
            ),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E(
                "mobility_manager_provisioning_url",
                "mobilityManagerProvisioningURL",
                str,
            ),
            E(
                "mobility_manager_provisioning_user_name",
                "mobilityManagerProvisioningUserName",
                str,
            ),
            E(
                "mobility_manager_provisioning_password",
                "mobilityManagerProvisioningPassword",
                str,
            ),
            E(
                "mobility_manager_default_originating_service_key",
                "mobilityManagerDefaultOriginatingServiceKey",
                int,
            ),
            E(
                "mobility_manager_default_terminating_service_key",
                "mobilityManagerDefaultTerminatingServiceKey",
                int,
            ),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=True,
            ),
            E("hotline_contact", "hotlineContact", str),
            E("use_hotline", "useHotline", bool),
        )


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

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        configuration_mode (str): configurationMode *Optional*
        configuration_file (OCI.configurationFile): configurationFile *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "device_external_id",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "configuration_mode",
        "configuration_file",
        "physical_location",
        "transport_protocol",
        "use_custom_user_name_password",
        "access_device_credentials",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("configuration_mode", "configurationMode", str),
            E(
                "configuration_file",
                "configurationFile",
                OCI.FileResource,
                is_complex=True,
            ),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=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". It can be linked to only one tree
    device.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        leaf_device_key (List[OCI.leafDeviceKey]): leafDeviceKey
    """

    __slots__: List[str] = [
        "leaf_device_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "leaf_device_key",
                "leafDeviceKey",
                OCI.AccessDeviceKey,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        code_entry (List[OCI.codeEntry]): codeEntry
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code_entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "code_entry",
                "codeEntry",
                OCI.AccountAuthorizationCodeEntry,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        code_type (str): codeType *Optional*
        number_of_digits (int): numberOfDigits *Optional*
        allow_local_and_toll_free_calls (bool): allowLocalAndTollFreeCalls *Optional*
        mandatory_usage_user_id_list (OCI.mandatoryUsageUserIdList):
            mandatoryUsageUserIdList *Optional*
        optional_usage_user_id_list (OCI.optionalUsageUserIdList): optionalUsageUserIdList
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code_type",
        "number_of_digits",
        "allow_local_and_toll_free_calls",
        "mandatory_usage_user_id_list",
        "optional_usage_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("code_type", "codeType", str),
            E("number_of_digits", "numberOfDigits", int),
            E("allow_local_and_toll_free_calls", "allowLocalAndTollFreeCalls", bool),
            E(
                "mandatory_usage_user_id_list",
                "mandatoryUsageUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E(
                "optional_usage_user_id_list",
                "optionalUsageUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
        )


class GroupAddRequest(OCIRequest):
    """
    Add a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. The following
    elements are only used in Amplify data mode and ignored in AS and XS data mode:
    servicePolicy, callProcessingSliceId, provisioningSliceId, subscriberPartition.  When
    the callProcessingSliceId or provisioningSliceId is not specified in the
    AmplifyDataMode, the default slice Id is assigned to the Group.  Only Provisioning
    admin and above can change the callProcessingSliceId, provisioningSliceId, and
    subscriberPartition.  The following elements are only used in Amplify and 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 Amplify and AS data mode: defaultUserCallingLineIdPhoneNumber.
    Replaced by: `GroupConsolidatedAddRequest()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        default_domain (str): defaultDomain
        user_limit (int): userLimit
        group_name (str): groupName *Optional*
        calling_line_id_name (str): callingLineIdName *Optional*
        time_zone (str): timeZone *Optional*
        location_dialing_code (str): locationDialingCode *Optional*
        contact (OCI.contact): contact *Optional*
        address (OCI.address): address *Optional*
        service_policy (str): servicePolicy *Optional*
        call_processing_slice_id (str): callProcessingSliceId *Optional*
        provisioning_slice_id (str): provisioningSliceId *Optional*
        subscriber_partition (str): subscriberPartition *Optional*
        preferred_data_center (str): preferredDataCenter *Optional*
        default_user_calling_line_id_phone_number (str):
            defaultUserCallingLineIdPhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "default_domain",
        "user_limit",
        "group_name",
        "calling_line_id_name",
        "time_zone",
        "location_dialing_code",
        "contact",
        "address",
        "service_policy",
        "call_processing_slice_id",
        "provisioning_slice_id",
        "subscriber_partition",
        "preferred_data_center",
        "default_user_calling_line_id_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("default_domain", "defaultDomain", str, is_required=True),
            E("user_limit", "userLimit", int, is_required=True),
            E("group_name", "groupName", str),
            E("calling_line_id_name", "callingLineIdName", str),
            E("time_zone", "timeZone", str),
            E("location_dialing_code", "locationDialingCode", str),
            E("contact", "contact", OCI.Contact, is_complex=True),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("service_policy", "servicePolicy", str),
            E("call_processing_slice_id", "callProcessingSliceId", str),
            E("provisioning_slice_id", "provisioningSliceId", str),
            E("subscriber_partition", "subscriberPartition", str),
            E("preferred_data_center", "preferredDataCenter", str),
            E(
                "default_user_calling_line_id_phone_number",
                "defaultUserCallingLineIdPhoneNumber",
                str,
            ),
        )


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 (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        announcement_file_name (str): announcementFileName *Optional*
        group_external_id (str): groupExternalId *Optional*
        announcement_file_external_id (str): announcementFileExternalId *Optional*
        announcement_file (OCI.announcementFile): announcementFile
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "announcement_file_name",
        "group_external_id",
        "announcement_file_external_id",
        "announcement_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("announcement_file_name", "announcementFileName", str),
            E("group_external_id", "groupExternalId", str),
            E("announcement_file_external_id", "announcementFileExternalId", str),
            E(
                "announcement_file",
                "announcementFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
                is_required=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 (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        announcement_file_key (List[OCI.announcementFileKey]): announcementFileKey
            *Optional*
        group_external_id (str): groupExternalId *Optional*
        announcement_file_external_id (List[str]): announcementFileExternalId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "announcement_file_key",
        "group_external_id",
        "announcement_file_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E(
                "announcement_file_key",
                "announcementFileKey",
                OCI.AnnouncementFileKey,
                is_complex=True,
                is_array=True,
            ),
            E("group_external_id", "groupExternalId", str),
            E(
                "announcement_file_external_id",
                "announcementFileExternalId",
                str,
                is_array=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 (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        group_external_id (str): groupExternalId *Optional*
        announcement_file_type (str): announcementFileType *Optional*
        include_announcement_table (bool): includeAnnouncementTable
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_announcement_file_name
            (List[OCI.searchCriteriaAnnouncementFileName]):
            searchCriteriaAnnouncementFileName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_external_id",
        "announcement_file_type",
        "include_announcement_table",
        "response_size_limit",
        "search_criteria_announcement_file_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("group_external_id", "groupExternalId", str),
            E("announcement_file_type", "announcementFileType", str),
            E(
                "include_announcement_table",
                "includeAnnouncementTable",
                bool,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_announcement_file_name",
                "searchCriteriaAnnouncementFileName",
                OCI.SearchCriteriaAnnouncementFileName,
                is_complex=True,
                is_array=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 (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        group_external_id (str): groupExternalId *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_announcement_file_name (OCI.sortByAnnouncementFileName):
            sortByAnnouncementFileName *Optional*
        sort_by_announcement_file_size (OCI.sortByAnnouncementFileSize):
            sortByAnnouncementFileSize *Optional*
        search_criteria_announcement_file_name
            (List[OCI.searchCriteriaAnnouncementFileName]):
            searchCriteriaAnnouncementFileName *Optional*
        search_criteria_exact_announcement_file_type
            (OCI.searchCriteriaExactAnnouncementFileType):
            searchCriteriaExactAnnouncementFileType *Optional*
        search_criteria_exact_media_file_type
            (List[OCI.searchCriteriaExactMediaFileType]): searchCriteriaExactMediaFileType
            *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_external_id",
        "response_paging_control",
        "sort_by_announcement_file_name",
        "sort_by_announcement_file_size",
        "search_criteria_announcement_file_name",
        "search_criteria_exact_announcement_file_type",
        "search_criteria_exact_media_file_type",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("group_external_id", "groupExternalId", str),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_announcement_file_name",
                "sortByAnnouncementFileName",
                OCI.SortByAnnouncementFileName,
                is_complex=True,
            ),
            E(
                "sort_by_announcement_file_size",
                "sortByAnnouncementFileSize",
                OCI.SortByAnnouncementFileSize,
                is_complex=True,
            ),
            E(
                "search_criteria_announcement_file_name",
                "searchCriteriaAnnouncementFileName",
                OCI.SearchCriteriaAnnouncementFileName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_announcement_file_type",
                "searchCriteriaExactAnnouncementFileType",
                OCI.SearchCriteriaExactAnnouncementFileType,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_media_file_type",
                "searchCriteriaExactMediaFileType",
                OCI.SearchCriteriaExactMediaFileType,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


class GroupAnnouncementFileGetRequest(OCIRequest):
    """
    Request to get the announcement repository file information.

    The response is either `GroupAnnouncementFileGetResponse()` or `ErrorResponse()`.
    Replaced by: `GroupAnnouncementFileGetRequest22()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        announcement_file_key (OCI.announcementFileKey): announcementFileKey
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "announcement_file_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "announcement_file_key",
                "announcementFileKey",
                OCI.AnnouncementFileKey,
                is_complex=True,
                is_required=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 (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        announcement_file_key (OCI.announcementFileKey): announcementFileKey *Optional*
        announcement_file_external_id (str): announcementFileExternalId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "announcement_file_key",
        "announcement_file_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E(
                "announcement_file_key",
                "announcementFileKey",
                OCI.AnnouncementFileKey,
                is_complex=True,
            ),
            E("announcement_file_external_id", "announcementFileExternalId", str),
        )


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 (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        announcement_file_key (OCI.announcementFileKey): announcementFileKey *Optional*
        announcement_file_external_id (str): announcementFileExternalId *Optional*
        new_announcement_file_name (str): newAnnouncementFileName *Optional*
        announcement_file (OCI.announcementFile): announcementFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "announcement_file_key",
        "announcement_file_external_id",
        "new_announcement_file_name",
        "announcement_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E(
                "announcement_file_key",
                "announcementFileKey",
                OCI.AnnouncementFileKey,
                is_complex=True,
            ),
            E("announcement_file_external_id", "announcementFileExternalId", str),
            E("new_announcement_file_name", "newAnnouncementFileName", str),
            E(
                "announcement_file",
                "announcementFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
        )


class GroupAutoAttendantModifyActiveInstanceListRequest(OCIRequest):
    """
    Request to set the active status of Auto Attendant instances.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_activation (List[OCI.serviceActivation]): serviceActivation *Optional*
    """

    __slots__: List[str] = [
        "service_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_activation",
                "serviceActivation",
                OCI.ServiceActivation,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupBroadWorksAnywhereModifyActiveInstanceListRequest(OCIRequest):
    """
    Request to set the active status of BroadWorks Anywhere instances.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_activation (List[OCI.serviceActivation]): serviceActivation *Optional*
    """

    __slots__: List[str] = [
        "service_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_activation",
                "serviceActivation",
                OCI.ServiceActivation,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        use_setting_level (str): useSettingLevel *Optional*
        enable_location_services (bool): enableLocationServices *Optional*
        enable_msrn_lookup (bool): enableMSRNLookup *Optional*
        enable_mobile_state_checking (bool): enableMobileStateChecking *Optional*
        deny_call_originations (bool): denyCallOriginations *Optional*
        deny_call_terminations (bool): denyCallTerminations *Optional*
        enable_announcement_suppression (bool): enableAnnouncementSuppression *Optional*
        enable_internal_clid_delivery (bool): enableInternalCLIDDelivery *Optional*
        enable_internal_clid_delivery_access_locations (bool):
            enableInternalCLIDDeliveryAccessLocations *Optional*
        enable_enhanced_unreachable_state_checking (bool):
            enableEnhancedUnreachableStateChecking *Optional*
        enable_network_call_barring_status_check (bool):
            enableNetworkCallBarringStatusCheck *Optional*
        network_translation_index (str): networkTranslationIndex *Optional*
        enable_pbx_route_policy (bool): enablePBXRoutePolicy *Optional*
        pbx_route_identity (OCI.pbxRouteIdentity): pbxRouteIdentity *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_setting_level",
        "enable_location_services",
        "enable_msrn_lookup",
        "enable_mobile_state_checking",
        "deny_call_originations",
        "deny_call_terminations",
        "enable_announcement_suppression",
        "enable_internal_clid_delivery",
        "enable_internal_clid_delivery_access_locations",
        "enable_enhanced_unreachable_state_checking",
        "enable_network_call_barring_status_check",
        "network_translation_index",
        "enable_pbx_route_policy",
        "pbx_route_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_setting_level", "useSettingLevel", str),
            E("enable_location_services", "enableLocationServices", bool),
            E("enable_msrn_lookup", "enableMSRNLookup", bool),
            E("enable_mobile_state_checking", "enableMobileStateChecking", bool),
            E("deny_call_originations", "denyCallOriginations", bool),
            E("deny_call_terminations", "denyCallTerminations", bool),
            E("enable_announcement_suppression", "enableAnnouncementSuppression", bool),
            E("enable_internal_clid_delivery", "enableInternalCLIDDelivery", bool),
            E(
                "enable_internal_clid_delivery_access_locations",
                "enableInternalCLIDDeliveryAccessLocations",
                bool,
            ),
            E(
                "enable_enhanced_unreachable_state_checking",
                "enableEnhancedUnreachableStateChecking",
                bool,
            ),
            E(
                "enable_network_call_barring_status_check",
                "enableNetworkCallBarringStatusCheck",
                bool,
            ),
            E("network_translation_index", "networkTranslationIndex", str),
            E("enable_pbx_route_policy", "enablePBXRoutePolicy", bool),
            E(
                "pbx_route_identity",
                "pbxRouteIdentity",
                OCI.TrunkGroupKey,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
        config_file (OCI.configFile): configFile
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
        "config_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E(
                "config_file",
                "configFile",
                OCI.FileResource,
                is_complex=True,
                is_required=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        new_name (str): newName *Optional*
        max_active_calls_allowed (int): maxActiveCallsAllowed *Optional*
        max_incoming_active_calls_allowed (int): maxIncomingActiveCallsAllowed *Optional*
        max_outgoing_active_calls_allowed (int): maxOutgoingActiveCallsAllowed *Optional*
        become_default_group_for_new_users (bool): becomeDefaultGroupForNewUsers
            *Optional*
        user_id_list (OCI.userIdList): userIdList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "new_name",
        "max_active_calls_allowed",
        "max_incoming_active_calls_allowed",
        "max_outgoing_active_calls_allowed",
        "become_default_group_for_new_users",
        "user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("max_active_calls_allowed", "maxActiveCallsAllowed", int),
            E(
                "max_incoming_active_calls_allowed",
                "maxIncomingActiveCallsAllowed",
                int,
            ),
            E(
                "max_outgoing_active_calls_allowed",
                "maxOutgoingActiveCallsAllowed",
                int,
            ),
            E(
                "become_default_group_for_new_users",
                "becomeDefaultGroupForNewUsers",
                bool,
            ),
            E("user_id_list", "userIdList", OCI.ReplacementUserIdList, is_complex=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): serviceUserId
        agent_user_id (List[str]): agentUserId *Optional*
        agent_skill_list (List[OCI.agentSkillList]): agentSkillList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "agent_user_id",
        "agent_skill_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("agent_user_id", "agentUserId", str, is_array=True),
            E(
                "agent_skill_list",
                "agentSkillList",
                OCI.CallCenterSkillAgentList,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupCallCenterAddDNISRequest(OCIRequest):
    """
    Add a Call Center DNIS The response is either a `SuccessResponse()` or an
    `ErrorResponse()`.


    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
        dnis_phone_number (str): dnisPhoneNumber *Optional*
        extension (str): extension *Optional*
        use_custom_clid_settings (bool): useCustomCLIDSettings
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        use_custom_dnis_announcement_settings (bool): useCustomDnisAnnouncementSettings
        priority (str): priority
        allow_outgoing_acd_call (bool): allowOutgoingACDCall
    """

    __slots__: List[str] = [
        "dnis_key",
        "dnis_phone_number",
        "extension",
        "use_custom_clid_settings",
        "calling_line_id_phone_number",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "use_custom_dnis_announcement_settings",
        "priority",
        "allow_outgoing_acd_call",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
            E("dnis_phone_number", "dnisPhoneNumber", str),
            E("extension", "extension", str),
            E(
                "use_custom_clid_settings",
                "useCustomCLIDSettings",
                bool,
                is_required=True,
            ),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E(
                "use_custom_dnis_announcement_settings",
                "useCustomDnisAnnouncementSettings",
                bool,
                is_required=True,
            ),
            E("priority", "priority", str, is_required=True),
            E(
                "allow_outgoing_acd_call",
                "allowOutgoingACDCall",
                bool,
                is_required=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): serviceProviderId
        group_id (str): groupId
        profile_name (str): profileName
        new_profile_name (str): newProfileName *Optional*
        profile_description (str): profileDescription *Optional*
        threshold_current_call_state_idle_time_yellow (int):
            thresholdCurrentCallStateIdleTimeYellow *Optional*
        threshold_current_call_state_idle_time_red (int):
            thresholdCurrentCallStateIdleTimeRed *Optional*
        threshold_current_call_state_on_call_time_yellow (int):
            thresholdCurrentCallStateOnCallTimeYellow *Optional*
        threshold_current_call_state_on_call_time_red (int):
            thresholdCurrentCallStateOnCallTimeRed *Optional*
        threshold_current_agent_state_unavailable_time_yellow (int):
            thresholdCurrentAgentStateUnavailableTimeYellow *Optional*
        threshold_current_agent_state_unavailable_time_red (int):
            thresholdCurrentAgentStateUnavailableTimeRed *Optional*
        threshold_average_busy_in_time_yellow (int): thresholdAverageBusyInTimeYellow
            *Optional*
        threshold_average_busy_in_time_red (int): thresholdAverageBusyInTimeRed *Optional*
        threshold_average_busy_out_time_yellow (int): thresholdAverageBusyOutTimeYellow
            *Optional*
        threshold_average_busy_out_time_red (int): thresholdAverageBusyOutTimeRed
            *Optional*
        threshold_average_wrap_up_time_yellow (int): thresholdAverageWrapUpTimeYellow
            *Optional*
        threshold_average_wrap_up_time_red (int): thresholdAverageWrapUpTimeRed *Optional*
        enable_notification_email (bool): enableNotificationEmail *Optional*
        notification_email_address_list (OCI.notificationEmailAddressList):
            notificationEmailAddressList *Optional*
        agent_user_id_list (OCI.agentUserIdList): agentUserIdList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "profile_name",
        "new_profile_name",
        "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",
        "enable_notification_email",
        "notification_email_address_list",
        "agent_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=True),
            E("new_profile_name", "newProfileName", str),
            E("profile_description", "profileDescription", str),
            E(
                "threshold_current_call_state_idle_time_yellow",
                "thresholdCurrentCallStateIdleTimeYellow",
                int,
            ),
            E(
                "threshold_current_call_state_idle_time_red",
                "thresholdCurrentCallStateIdleTimeRed",
                int,
            ),
            E(
                "threshold_current_call_state_on_call_time_yellow",
                "thresholdCurrentCallStateOnCallTimeYellow",
                int,
            ),
            E(
                "threshold_current_call_state_on_call_time_red",
                "thresholdCurrentCallStateOnCallTimeRed",
                int,
            ),
            E(
                "threshold_current_agent_state_unavailable_time_yellow",
                "thresholdCurrentAgentStateUnavailableTimeYellow",
                int,
            ),
            E(
                "threshold_current_agent_state_unavailable_time_red",
                "thresholdCurrentAgentStateUnavailableTimeRed",
                int,
            ),
            E(
                "threshold_average_busy_in_time_yellow",
                "thresholdAverageBusyInTimeYellow",
                int,
            ),
            E(
                "threshold_average_busy_in_time_red",
                "thresholdAverageBusyInTimeRed",
                int,
            ),
            E(
                "threshold_average_busy_out_time_yellow",
                "thresholdAverageBusyOutTimeYellow",
                int,
            ),
            E(
                "threshold_average_busy_out_time_red",
                "thresholdAverageBusyOutTimeRed",
                int,
            ),
            E(
                "threshold_average_wrap_up_time_yellow",
                "thresholdAverageWrapUpTimeYellow",
                int,
            ),
            E(
                "threshold_average_wrap_up_time_red",
                "thresholdAverageWrapUpTimeRed",
                int,
            ),
            E("enable_notification_email", "enableNotificationEmail", bool),
            E(
                "notification_email_address_list",
                "notificationEmailAddressList",
                OCI.CallCenterAgentThresholdProfileReplacementNotificationEmailList,
                is_complex=True,
            ),
            E(
                "agent_user_id_list",
                "agentUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        enable_agent_unavailable_codes (bool): enableAgentUnavailableCodes *Optional*
        default_agent_unavailable_code_on_dnd (str): defaultAgentUnavailableCodeOnDND
            *Optional*
        default_agent_unavailable_code_on_personal_calls (str):
            defaultAgentUnavailableCodeOnPersonalCalls *Optional*
        default_agent_unavailable_code_on_consecutive_bounces (str):
            defaultAgentUnavailableCodeOnConsecutiveBounces *Optional*
        default_agent_unavailable_code_on_not_reachable (str):
            defaultAgentUnavailableCodeOnNotReachable *Optional*
        force_use_of_agent_unavailable_codes (bool): forceUseOfAgentUnavailableCodes
            *Optional*
        default_agent_unavailable_code (str): defaultAgentUnavailableCode *Optional*
        code_state_list (List[OCI.codeStateList]): codeStateList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enable_agent_unavailable_codes",
        "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",
        "force_use_of_agent_unavailable_codes",
        "default_agent_unavailable_code",
        "code_state_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enable_agent_unavailable_codes", "enableAgentUnavailableCodes", bool),
            E(
                "default_agent_unavailable_code_on_dnd",
                "defaultAgentUnavailableCodeOnDND",
                str,
            ),
            E(
                "default_agent_unavailable_code_on_personal_calls",
                "defaultAgentUnavailableCodeOnPersonalCalls",
                str,
            ),
            E(
                "default_agent_unavailable_code_on_consecutive_bounces",
                "defaultAgentUnavailableCodeOnConsecutiveBounces",
                str,
            ),
            E(
                "default_agent_unavailable_code_on_not_reachable",
                "defaultAgentUnavailableCodeOnNotReachable",
                str,
            ),
            E(
                "force_use_of_agent_unavailable_codes",
                "forceUseOfAgentUnavailableCodes",
                bool,
            ),
            E("default_agent_unavailable_code", "defaultAgentUnavailableCode", str),
            E(
                "code_state_list",
                "codeStateList",
                OCI.CallCenterAgentUnavailableCodeStateModify,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        call_disposition_code_activation (List[OCI.callDispositionCodeActivation]):
            callDispositionCodeActivation *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "call_disposition_code_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "call_disposition_code_activation",
                "callDispositionCodeActivation",
                OCI.CallDispositionCodeActivation,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        is_premium_only (bool): isPremiumOnly *Optional*
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_call_center_name (OCI.searchCriteriaCallCenterName):
            searchCriteriaCallCenterName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "is_premium_only",
        "group_id",
        "response_size_limit",
        "search_criteria_call_center_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("is_premium_only", "isPremiumOnly", bool),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_call_center_name",
                "searchCriteriaCallCenterName",
                OCI.SearchCriteriaCallCenterName,
                is_complex=True,
            ),
        )


class GroupCallCenterDeleteDNISRequest(OCIRequest):
    """
    Delete a call center's DNIS.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupCallCenterEnhancedReportingBrandingModifyRequest(OCIRequest):
    """
    Request to modify the group branding configuration.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        branding_choice (str): brandingChoice *Optional*
        branding_file (OCI.brandingFile): brandingFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "branding_choice",
        "branding_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("branding_choice", "brandingChoice", str),
            E(
                "branding_file",
                "brandingFile",
                OCI.LabeledFileResource,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        description (str): description *Optional*
        data_template (str): dataTemplate
        filter_number (int): filterNumber *Optional*
        xslt_template (OCI.xsltTemplate): xsltTemplate
        scope (str): scope
        is_enabled (bool): isEnabled
        is_realtime_report (bool): isRealtimeReport *Optional*
        call_completion_threshold_param (str): callCompletionThresholdParam *Optional*
        short_duration_threshold_param (str): shortDurationThresholdParam *Optional*
        service_level_threshold_param (str): serviceLevelThresholdParam *Optional*
        service_level_inclusions_param (str): serviceLevelInclusionsParam *Optional*
        service_level_objective_threshold_param (str): serviceLevelObjectiveThresholdParam
            *Optional*
        abandoned_call_threshold_param (str): abandonedCallThresholdParam *Optional*
        service_level_threshold_param_number (int): serviceLevelThresholdParamNumber
            *Optional*
        abandoned_call_threshold_param_number (int): abandonedCallThresholdParamNumber
            *Optional*
        filter_value (List[str]): filterValue *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "description",
        "data_template",
        "filter_number",
        "xslt_template",
        "scope",
        "is_enabled",
        "is_realtime_report",
        "call_completion_threshold_param",
        "short_duration_threshold_param",
        "service_level_threshold_param",
        "service_level_inclusions_param",
        "service_level_objective_threshold_param",
        "abandoned_call_threshold_param",
        "service_level_threshold_param_number",
        "abandoned_call_threshold_param_number",
        "filter_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("data_template", "dataTemplate", str, is_required=True),
            E("filter_number", "filterNumber", int),
            E(
                "xslt_template",
                "xsltTemplate",
                OCI.LabeledFileResource,
                is_complex=True,
                is_required=True,
            ),
            E("scope", "scope", str, is_required=True),
            E("is_enabled", "isEnabled", bool, is_required=True),
            E("is_realtime_report", "isRealtimeReport", bool),
            E("call_completion_threshold_param", "callCompletionThresholdParam", str),
            E("short_duration_threshold_param", "shortDurationThresholdParam", str),
            E("service_level_threshold_param", "serviceLevelThresholdParam", str),
            E("service_level_inclusions_param", "serviceLevelInclusionsParam", str),
            E(
                "service_level_objective_threshold_param",
                "serviceLevelObjectiveThresholdParam",
                str,
            ),
            E("abandoned_call_threshold_param", "abandonedCallThresholdParam", str),
            E(
                "service_level_threshold_param_number",
                "serviceLevelThresholdParamNumber",
                int,
            ),
            E(
                "abandoned_call_threshold_param_number",
                "abandonedCallThresholdParamNumber",
                int,
            ),
            E("filter_value", "filterValue", str, is_array=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        xslt_template (OCI.xsltTemplate): xsltTemplate *Optional*
        scope (str): scope *Optional*
        is_enabled (bool): isEnabled *Optional*
        is_realtime_report (bool): isRealtimeReport *Optional*
        filter_number (int): filterNumber *Optional*
        filter_value (OCI.filterValue): filterValue *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "new_name",
        "description",
        "xslt_template",
        "scope",
        "is_enabled",
        "is_realtime_report",
        "filter_number",
        "filter_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E(
                "xslt_template",
                "xsltTemplate",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E("scope", "scope", str),
            E("is_enabled", "isEnabled", bool),
            E("is_realtime_report", "isRealtimeReport", bool),
            E("filter_number", "filterNumber", int),
            E(
                "filter_value",
                "filterValue",
                OCI.CallCenterReportDataTemplateQueryFilterValueReplacementList,
                is_complex=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): serviceUserId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_skill_level (List[OCI.searchCriteriaExactSkillLevel]):
            searchCriteriaExactSkillLevel *Optional*
        search_criteria_exact_user_group (List[OCI.searchCriteriaExactUserGroup]):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "response_paging_control",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_email_address",
        "search_criteria_exact_skill_level",
        "search_criteria_exact_user_group",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_skill_level",
                "searchCriteriaExactSkillLevel",
                OCI.SearchCriteriaExactSkillLevel,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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 (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupCallCenterGetDNISAnnouncementRequest(OCIRequest):
    """
    Get a call center's DNIS Announcements The response is either a
    `GroupCallCenterGetDNISAnnouncementRequest()` or an `ErrorResponse()`.

    Replaced by `GroupCallCenterGetDNISAnnouncementRequest17sp4()`

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupCallCenterGetDNISAnnouncementRequest17sp4(OCIRequest):
    """
    Get a call center's DNIS Announcements The response is either a
    `GroupCallCenterGetDNISAnnouncementRequest17sp4()` or an `ErrorResponse()`.

    Replaced by: `GroupCallCenterGetDNISAnnouncementRequest19()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupCallCenterGetDNISAnnouncementRequest19(OCIRequest):
    """
    Get a call center's DNIS Announcements The response is either a
    `GroupCallCenterGetDNISAnnouncementRequest19()` or an `ErrorResponse()`.


    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupCallCenterGetDNISAnnouncementRequest20(OCIRequest):
    """
    Get a call center's DNIS Announcements The response is either a
    `GroupCallCenterGetDNISAnnouncementResponse20()` or an `ErrorResponse()`.

    Replaced by: `GroupCallCenterGetDNISAnnouncementRequest22()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupCallCenterGetDNISAnnouncementRequest22(OCIRequest):
    """
    Get a call center's DNIS Announcements The response is either a
    `GroupCallCenterGetDNISAnnouncementRequest22()` or an `ErrorResponse()`.


    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupCallCenterGetDNISRequest(OCIRequest):
    """
    Get a call center's DNIS.

    The response is either a `GroupCallCenterGetDNISRequest()` or an `ErrorResponse()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupCallCenterGetInstanceStatisticsRequest14sp9(OCIRequest):
    """
    Get Call Center queue and agent statistics.

    The response is either `GroupCallCenterGetInstanceStatisticsResponse14sp9()` or
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        statistics_range (OCI.statisticsRange): statisticsRange
    """

    __slots__: List[str] = [
        "service_user_id",
        "statistics_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "statistics_range",
                "statisticsRange",
                OCI.CallCenterStatisticsRange,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupCallCenterModifyActiveInstanceListRequest(OCIRequest):
    """
    Request to set the active status of Call Center instances.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_activation (List[OCI.serviceActivation]): serviceActivation *Optional*
    """

    __slots__: List[str] = [
        "service_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_activation",
                "serviceActivation",
                OCI.ServiceActivation,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupCallCenterModifyAnnouncementRequest(OCIRequest):
    """
    Modify a call center's announcement settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        entrance_message_selection (str): entranceMessageSelection *Optional*
        entrance_message_audio_file (OCI.entranceMessageAudioFile):
            entranceMessageAudioFile *Optional*
        entrance_message_video_file (OCI.entranceMessageVideoFile):
            entranceMessageVideoFile *Optional*
        periodic_comfort_message_selection (str): periodicComfortMessageSelection
            *Optional*
        periodic_comfort_message_audio_file (OCI.periodicComfortMessageAudioFile):
            periodicComfortMessageAudioFile *Optional*
        periodic_comfort_message_video_file (OCI.periodicComfortMessageVideoFile):
            periodicComfortMessageVideoFile *Optional*
        on_hold_message_selection (str): onHoldMessageSelection *Optional*
        on_hold_message_audio_file (OCI.onHoldMessageAudioFile): onHoldMessageAudioFile
            *Optional*
        on_hold_message_video_file (OCI.onHoldMessageVideoFile): onHoldMessageVideoFile
            *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "entrance_message_selection",
        "entrance_message_audio_file",
        "entrance_message_video_file",
        "periodic_comfort_message_selection",
        "periodic_comfort_message_audio_file",
        "periodic_comfort_message_video_file",
        "on_hold_message_selection",
        "on_hold_message_audio_file",
        "on_hold_message_video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("entrance_message_selection", "entranceMessageSelection", str),
            E(
                "entrance_message_audio_file",
                "entranceMessageAudioFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "entrance_message_video_file",
                "entranceMessageVideoFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "periodic_comfort_message_selection",
                "periodicComfortMessageSelection",
                str,
            ),
            E(
                "periodic_comfort_message_audio_file",
                "periodicComfortMessageAudioFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "periodic_comfort_message_video_file",
                "periodicComfortMessageVideoFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E("on_hold_message_selection", "onHoldMessageSelection", str),
            E(
                "on_hold_message_audio_file",
                "onHoldMessageAudioFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "on_hold_message_video_file",
                "onHoldMessageVideoFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
        )


class GroupCallCenterModifyAnnouncementRequest14sp6(OCIRequest):
    """
    Modify a call center's announcement settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `GroupCallCenterModifyAnnouncementRequest16()`

    Attributes:
        service_user_id (str): serviceUserId
        entrance_message_selection (str): entranceMessageSelection *Optional*
        entrance_message_audio_file (OCI.entranceMessageAudioFile):
            entranceMessageAudioFile *Optional*
        entrance_message_video_file (OCI.entranceMessageVideoFile):
            entranceMessageVideoFile *Optional*
        periodic_comfort_message_selection (str): periodicComfortMessageSelection
            *Optional*
        periodic_comfort_message_audio_file (OCI.periodicComfortMessageAudioFile):
            periodicComfortMessageAudioFile *Optional*
        periodic_comfort_message_video_file (OCI.periodicComfortMessageVideoFile):
            periodicComfortMessageVideoFile *Optional*
        on_hold_source (OCI.onHoldSource): onHoldSource *Optional*
        on_hold_use_alternate_source_for_internal_calls (bool):
            onHoldUseAlternateSourceForInternalCalls *Optional*
        on_hold_internal_source (OCI.onHoldInternalSource): onHoldInternalSource
            *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "entrance_message_selection",
        "entrance_message_audio_file",
        "entrance_message_video_file",
        "periodic_comfort_message_selection",
        "periodic_comfort_message_audio_file",
        "periodic_comfort_message_video_file",
        "on_hold_source",
        "on_hold_use_alternate_source_for_internal_calls",
        "on_hold_internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("entrance_message_selection", "entranceMessageSelection", str),
            E(
                "entrance_message_audio_file",
                "entranceMessageAudioFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "entrance_message_video_file",
                "entranceMessageVideoFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "periodic_comfort_message_selection",
                "periodicComfortMessageSelection",
                str,
            ),
            E(
                "periodic_comfort_message_audio_file",
                "periodicComfortMessageAudioFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "periodic_comfort_message_video_file",
                "periodicComfortMessageVideoFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "on_hold_source",
                "onHoldSource",
                OCI.CallCenterMusicOnHoldSourceModify,
                is_complex=True,
            ),
            E(
                "on_hold_use_alternate_source_for_internal_calls",
                "onHoldUseAlternateSourceForInternalCalls",
                bool,
            ),
            E(
                "on_hold_internal_source",
                "onHoldInternalSource",
                OCI.CallCenterMusicOnHoldSourceModify,
                is_complex=True,
            ),
        )


class GroupCallCenterModifyDNISRequest(OCIRequest):
    """
    Modify a call center's DNIS settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
        new_dnis_name (str): newDNISName *Optional*
        dnis_phone_number (str): dnisPhoneNumber *Optional*
        extension (str): extension *Optional*
        use_custom_clid_settings (bool): useCustomCLIDSettings *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        use_custom_dnis_announcement_settings (bool): useCustomDnisAnnouncementSettings
            *Optional*
        priority (str): priority *Optional*
        allow_outgoing_acd_call (bool): allowOutgoingACDCall *Optional*
    """

    __slots__: List[str] = [
        "dnis_key",
        "new_dnis_name",
        "dnis_phone_number",
        "extension",
        "use_custom_clid_settings",
        "calling_line_id_phone_number",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "use_custom_dnis_announcement_settings",
        "priority",
        "allow_outgoing_acd_call",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
            E("new_dnis_name", "newDNISName", str),
            E("dnis_phone_number", "dnisPhoneNumber", str),
            E("extension", "extension", str),
            E("use_custom_clid_settings", "useCustomCLIDSettings", bool),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E(
                "use_custom_dnis_announcement_settings",
                "useCustomDnisAnnouncementSettings",
                bool,
            ),
            E("priority", "priority", str),
            E("allow_outgoing_acd_call", "allowOutgoingACDCall", bool),
        )


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): serviceUserId
        agent_weight (List[OCI.agentWeight]): agentWeight *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "agent_weight",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "agent_weight",
                "agentWeight",
                OCI.HuntAgentWeight,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        routing_policy (str): routingPolicy *Optional*
        routing_priority_order (List[OCI.routingPriorityOrder]): routingPriorityOrder
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "routing_policy",
        "routing_priority_order",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("routing_policy", "routingPolicy", str),
            E(
                "routing_priority_order",
                "routingPriorityOrder",
                OCI.CallCenterRoutingPriorityOrder,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupCallCenterModifySupervisorListRequest(OCIRequest):
    """
    Replaces a list of users as supervisors for a call center.

    Also allows the modification of the reporting server URL address.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Element
    "reportingServerURL"" will always be ignored.

    Replaced By: `GroupCallCenterSupervisorReportingModifyRequest()`

    Attributes:
        service_user_id (str): serviceUserId
        reporting_server_url (str): reportingServerURL *Optional*
        supervisor_user_id_list (OCI.supervisorUserIdList): supervisorUserIdList
            *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "reporting_server_url",
        "supervisor_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("reporting_server_url", "reportingServerURL", str),
            E(
                "supervisor_user_id_list",
                "supervisorUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): serviceUserId
        supervisor_user_id_list (OCI.supervisorUserIdList): supervisorUserIdList
            *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "supervisor_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "supervisor_user_id_list",
                "supervisorUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): serviceUserId
        enable_call_disposition_codes (bool): enableCallDispositionCodes *Optional*
        include_organization_codes (bool): includeOrganizationCodes *Optional*
        force_use_of_call_disposition_codes (bool): forceUseOfCallDispositionCodes
            *Optional*
        default_call_disposition_code (OCI.defaultCallDispositionCode):
            defaultCallDispositionCode *Optional*
        call_disposition_code_activation (List[OCI.callDispositionCodeActivation]):
            callDispositionCodeActivation *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "enable_call_disposition_codes",
        "include_organization_codes",
        "force_use_of_call_disposition_codes",
        "default_call_disposition_code",
        "call_disposition_code_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("enable_call_disposition_codes", "enableCallDispositionCodes", bool),
            E("include_organization_codes", "includeOrganizationCodes", bool),
            E(
                "force_use_of_call_disposition_codes",
                "forceUseOfCallDispositionCodes",
                bool,
            ),
            E(
                "default_call_disposition_code",
                "defaultCallDispositionCode",
                OCI.CallDispositionCodeWithLevel,
                is_complex=True,
            ),
            E(
                "call_disposition_code_activation",
                "callDispositionCodeActivation",
                OCI.CallDispositionCodeActivation,
                is_complex=True,
                is_array=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): serviceUserId
        is_active (bool): isActive *Optional*
        threshold_current_calls_in_queue_yellow (int): thresholdCurrentCallsInQueueYellow
            *Optional*
        threshold_current_calls_in_queue_red (int): thresholdCurrentCallsInQueueRed
            *Optional*
        threshold_current_longest_waiting_call_yellow (int):
            thresholdCurrentLongestWaitingCallYellow *Optional*
        threshold_current_longest_waiting_call_red (int):
            thresholdCurrentLongestWaitingCallRed *Optional*
        threshold_average_estimated_wait_time_yellow (int):
            thresholdAverageEstimatedWaitTimeYellow *Optional*
        threshold_average_estimated_wait_time_red (int):
            thresholdAverageEstimatedWaitTimeRed *Optional*
        threshold_average_handling_time_yellow (int): thresholdAverageHandlingTimeYellow
            *Optional*
        threshold_average_handling_time_red (int): thresholdAverageHandlingTimeRed
            *Optional*
        threshold_average_speed_of_answer_yellow (int):
            thresholdAverageSpeedOfAnswerYellow *Optional*
        threshold_average_speed_of_answer_red (int): thresholdAverageSpeedOfAnswerRed
            *Optional*
        enable_notification_email (bool): enableNotificationEmail *Optional*
        notification_email_address_list (OCI.notificationEmailAddressList):
            notificationEmailAddressList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "is_active",
        "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",
        "enable_notification_email",
        "notification_email_address_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("is_active", "isActive", bool),
            E(
                "threshold_current_calls_in_queue_yellow",
                "thresholdCurrentCallsInQueueYellow",
                int,
            ),
            E(
                "threshold_current_calls_in_queue_red",
                "thresholdCurrentCallsInQueueRed",
                int,
            ),
            E(
                "threshold_current_longest_waiting_call_yellow",
                "thresholdCurrentLongestWaitingCallYellow",
                int,
            ),
            E(
                "threshold_current_longest_waiting_call_red",
                "thresholdCurrentLongestWaitingCallRed",
                int,
            ),
            E(
                "threshold_average_estimated_wait_time_yellow",
                "thresholdAverageEstimatedWaitTimeYellow",
                int,
            ),
            E(
                "threshold_average_estimated_wait_time_red",
                "thresholdAverageEstimatedWaitTimeRed",
                int,
            ),
            E(
                "threshold_average_handling_time_yellow",
                "thresholdAverageHandlingTimeYellow",
                int,
            ),
            E(
                "threshold_average_handling_time_red",
                "thresholdAverageHandlingTimeRed",
                int,
            ),
            E(
                "threshold_average_speed_of_answer_yellow",
                "thresholdAverageSpeedOfAnswerYellow",
                int,
            ),
            E(
                "threshold_average_speed_of_answer_red",
                "thresholdAverageSpeedOfAnswerRed",
                int,
            ),
            E("enable_notification_email", "enableNotificationEmail", bool),
            E(
                "notification_email_address_list",
                "notificationEmailAddressList",
                OCI.CallCenterQueueThresholdReplacementNotificationEmailList,
                is_complex=True,
            ),
        )


class GroupCallCenterSupervisorReportingModifyRequest(OCIRequest):
    """
    Replaces a list of users as supervisors for a call center.

    Also allows the modification of the reporting server URL address.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `GroupCallCenterModifySupervisorListRequest16()`

    Attributes:
        service_user_id (str): serviceUserId
        reporting_server_name (str): reportingServerName *Optional*
        supervisor_user_id_list (OCI.supervisorUserIdList): supervisorUserIdList
            *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "reporting_server_name",
        "supervisor_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("reporting_server_name", "reportingServerName", str),
            E(
                "supervisor_user_id_list",
                "supervisorUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_call_park_name (OCI.sortByCallParkName): sortByCallParkName *Optional*
        search_criteria_call_park_name (List[OCI.searchCriteriaCallParkName]):
            searchCriteriaCallParkName *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_by_call_park_name",
        "search_criteria_call_park_name",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_call_park_name",
                "sortByCallParkName",
                OCI.SortByCallParkName,
                is_complex=True,
            ),
            E(
                "search_criteria_call_park_name",
                "searchCriteriaCallParkName",
                OCI.SearchCriteriaCallParkName,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        name (str): name
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "response_paging_control",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_email_address",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        name (str): name
        new_name (str): newName *Optional*
        user_id_list (OCI.userIdList): userIdList *Optional*
        recall_alternate_user_id (str): recallAlternateUserId *Optional*
        recall_to (str): recallTo *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "new_name",
        "user_id_list",
        "recall_alternate_user_id",
        "recall_to",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("user_id_list", "userIdList", OCI.ReplacementUserIdList, is_complex=True),
            E("recall_alternate_user_id", "recallAlternateUserId", str),
            E("recall_to", "recallTo", str),
        )


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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_call_pickup_name (OCI.sortByCallPickupName): sortByCallPickupName
            *Optional*
        search_criteria_call_pickup_name (List[OCI.searchCriteriaCallPickupName]):
            searchCriteriaCallPickupName *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_by_call_pickup_name",
        "search_criteria_call_pickup_name",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_call_pickup_name",
                "sortByCallPickupName",
                OCI.SortByCallPickupName,
                is_complex=True,
            ),
            E(
                "search_criteria_call_pickup_name",
                "searchCriteriaCallPickupName",
                OCI.SearchCriteriaCallPickupName,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        name (str): name
        new_name (str): newName *Optional*
        user_id_list (OCI.userIdList): userIdList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "new_name",
        "user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("user_id_list", "userIdList", OCI.ReplacementUserIdList, is_complex=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): serviceProviderId
        group_id (str): groupId
        entry (List[OCI.entry]): entry
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "entry",
                "entry",
                OCI.PhoneListEntry,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        search_criteria_group_common_phone_list_name
            (List[OCI.searchCriteriaGroupCommonPhoneListName]):
            searchCriteriaGroupCommonPhoneListName *Optional*
        search_criteria_group_common_phone_list_number
            (List[OCI.searchCriteriaGroupCommonPhoneListNumber]):
            searchCriteriaGroupCommonPhoneListNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_mode_or",
        "search_criteria_group_common_phone_list_name",
        "search_criteria_group_common_phone_list_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "search_criteria_group_common_phone_list_name",
                "searchCriteriaGroupCommonPhoneListName",
                OCI.SearchCriteriaGroupCommonPhoneListName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_common_phone_list_number",
                "searchCriteriaGroupCommonPhoneListNumber",
                OCI.SearchCriteriaGroupCommonPhoneListNumber,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupCommunicationBarringAuthorizationCodeAddListRequest(OCIRequest):
    """
    Add a list of Communication Barring Authorization codes to a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `GroupCommunicationBarringAuthorizationCodeAddListRequest21sp1()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        code (List[OCI.code]): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "code",
                "code",
                OCI.CommunicationBarringAuthorizationCodeEntry,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        code (List[OCI.code]): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "code",
                "code",
                OCI.CommunicationBarringAuthorizationCodeConfiguration,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_communication_barring_authorization_code
            (List[OCI.searchCriteriaCommunicationBarringAuthorizationCode]):
            searchCriteriaCommunicationBarringAuthorizationCode *Optional*
        search_criteria_communication_barring_authorization_code_description
            (List[OCI.searchCriteriaCommunicationBarringAuthorizationCodeDescription]):
            searchCriteriaCommunicationBarringAuthorizationCodeDescription *Optional*
        search_criteria_network_class_of_service_name
            (List[OCI.searchCriteriaNetworkClassOfServiceName]):
            searchCriteriaNetworkClassOfServiceName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_communication_barring_authorization_code",
        "search_criteria_communication_barring_authorization_code_description",
        "search_criteria_network_class_of_service_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_communication_barring_authorization_code",
                "searchCriteriaCommunicationBarringAuthorizationCode",
                OCI.SearchCriteriaCommunicationBarringAuthorizationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_communication_barring_authorization_code_description",
                "searchCriteriaCommunicationBarringAuthorizationCodeDescription",
                OCI.SearchCriteriaCommunicationBarringAuthorizationCodeDescription,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_network_class_of_service_name",
                "searchCriteriaNetworkClassOfServiceName",
                OCI.SearchCriteriaNetworkClassOfServiceName,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        profile_name (OCI.profileName): profileName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "profile_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "profile_name",
                "profileName",
                OCI.CommunicationBarringProfileReplacementList,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        phone_number (List[OCI.phoneNumber]): phoneNumber *Optional*
        dn_range (List[OCI.dnRange]): dnRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "phone_number",
        "dn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "phone_number",
                "phoneNumber",
                OCI.ActivatableDN,
                is_complex=True,
                is_array=True,
            ),
            E(
                "dn_range",
                "dnRange",
                OCI.ActivatableDNRange,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupCustomContactDirectoryAddRequest17(OCIRequest):
    """
    Adds a Custom Contact Directory to a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        entry (List[OCI.entry]): entry *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "entry",
                "entry",
                OCI.CustomContactDirectoryEntry,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupCustomContactDirectoryModifyRequest(OCIRequest):
    """
    Adds a Custom Contact Directory to a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replace by:
    `GroupCustomContactDirectoryModifyRequest17()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        new_name (str): newName *Optional*
        user_id_list (OCI.userIdList): userIdList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "new_name",
        "user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("user_id_list", "userIdList", OCI.ReplacementUserIdList, is_complex=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): serviceProviderId
        group_id (str): groupId
        department_name (str): departmentName
        parent_department_key (OCI.parentDepartmentKey): parentDepartmentKey *Optional*
        calling_line_id_name (str): callingLineIdName *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department_name",
        "parent_department_key",
        "calling_line_id_name",
        "calling_line_id_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department_name", "departmentName", str, is_required=True),
            E(
                "parent_department_key",
                "parentDepartmentKey",
                OCI.DepartmentKey,
                is_complex=True,
            ),
            E("calling_line_id_name", "callingLineIdName", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
        )


class GroupDepartmentAdminAddRequest(OCIRequest):
    """
    Add a department administrator to a group department.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        department_key (OCI.departmentKey): departmentKey
        user_id (str): userId
        first_name (str): firstName *Optional*
        last_name (str): lastName *Optional*
        password (str): password *Optional*
        language (str): language *Optional*
    """

    __slots__: List[str] = [
        "department_key",
        "user_id",
        "first_name",
        "last_name",
        "password",
        "language",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "department_key",
                "departmentKey",
                OCI.GroupDepartmentKey,
                is_complex=True,
                is_required=True,
            ),
            E("user_id", "userId", str, is_required=True),
            E("first_name", "firstName", str),
            E("last_name", "lastName", str),
            E("password", "password", str),
            E("language", "language", str),
        )


class GroupDepartmentAdminGetListRequest(OCIRequest):
    """
    Get a list of department administrators for the department.

    The response is either a `GroupDepartmentAdminGetListResponse()` or an
    `ErrorResponse()`.

    Attributes:
        department_key (OCI.departmentKey): departmentKey
    """

    __slots__: List[str] = [
        "department_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "department_key",
                "departmentKey",
                OCI.GroupDepartmentKey,
                is_complex=True,
                is_required=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): serviceProviderId
        group_id (str): groupId
        department_name (str): departmentName
        new_department_name (str): newDepartmentName *Optional*
        new_parent_department_key (OCI.newParentDepartmentKey): newParentDepartmentKey
            *Optional*
        calling_line_id_name (str): callingLineIdName *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department_name",
        "new_department_name",
        "new_parent_department_key",
        "calling_line_id_name",
        "calling_line_id_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department_name", "departmentName", str, is_required=True),
            E("new_department_name", "newDepartmentName", str),
            E(
                "new_parent_department_key",
                "newParentDepartmentKey",
                OCI.DepartmentKey,
                is_complex=True,
            ),
            E("calling_line_id_name", "callingLineIdName", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
        )


class GroupDeviceManagementEventGetListRequest(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 `GroupDeviceManagementEventGetListResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        event_queue_type (str): eventQueueType *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_exact_device_management_event_status_in_progress_or_pending
            (OCI.searchCriteriaExactDeviceManagementEventStatusInProgressOrPending):
            searchCriteriaExactDeviceManagementEventStatusInProgressOrPending *Optional*
        search_criteria_exact_device_management_event_status_completed
            (OCI.searchCriteriaExactDeviceManagementEventStatusCompleted):
            searchCriteriaExactDeviceManagementEventStatusCompleted *Optional*
        search_criteria_exact_device_management_event_action
            (OCI.searchCriteriaExactDeviceManagementEventAction):
            searchCriteriaExactDeviceManagementEventAction *Optional*
        search_criteria_exact_device_management_event_level
            (OCI.searchCriteriaExactDeviceManagementEventLevel):
            searchCriteriaExactDeviceManagementEventLevel *Optional*
        search_criteria_exact_device_management_event_type
            (OCI.searchCriteriaExactDeviceManagementEventType):
            searchCriteriaExactDeviceManagementEventType *Optional*
        search_criteria_device_management_event_additional_info
            (List[OCI.searchCriteriaDeviceManagementEventAdditionalInfo]):
            searchCriteriaDeviceManagementEventAdditionalInfo *Optional*
        search_criteria_device_management_event_login_id
            (List[OCI.searchCriteriaDeviceManagementEventLoginId]):
            searchCriteriaDeviceManagementEventLoginId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "event_queue_type",
        "response_size_limit",
        "search_criteria_exact_device_management_event_status_in_progress_or_pending",
        "search_criteria_exact_device_management_event_status_completed",
        "search_criteria_exact_device_management_event_action",
        "search_criteria_exact_device_management_event_level",
        "search_criteria_exact_device_management_event_type",
        "search_criteria_device_management_event_additional_info",
        "search_criteria_device_management_event_login_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("event_queue_type", "eventQueueType", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_exact_device_management_event_status_in_progress_or_pending",
                "searchCriteriaExactDeviceManagementEventStatusInProgressOrPending",
                OCI.SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_status_completed",
                "searchCriteriaExactDeviceManagementEventStatusCompleted",
                OCI.SearchCriteriaExactDeviceManagementEventStatusCompleted,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_action",
                "searchCriteriaExactDeviceManagementEventAction",
                OCI.SearchCriteriaExactDeviceManagementEventAction,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_level",
                "searchCriteriaExactDeviceManagementEventLevel",
                OCI.SearchCriteriaExactDeviceManagementEventLevel,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_type",
                "searchCriteriaExactDeviceManagementEventType",
                OCI.SearchCriteriaExactDeviceManagementEventType,
                is_complex=True,
            ),
            E(
                "search_criteria_device_management_event_additional_info",
                "searchCriteriaDeviceManagementEventAdditionalInfo",
                OCI.SearchCriteriaDeviceManagementEventAdditionalInfo,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_management_event_login_id",
                "searchCriteriaDeviceManagementEventLoginId",
                OCI.SearchCriteriaDeviceManagementEventLoginId,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        event_queue_type (str): eventQueueType *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_exact_device_management_event_status_in_progress_or_pending
            (OCI.searchCriteriaExactDeviceManagementEventStatusInProgressOrPending):
            searchCriteriaExactDeviceManagementEventStatusInProgressOrPending *Optional*
        search_criteria_exact_device_management_event_status_completed
            (OCI.searchCriteriaExactDeviceManagementEventStatusCompleted):
            searchCriteriaExactDeviceManagementEventStatusCompleted *Optional*
        search_criteria_exact_device_management_event_action
            (OCI.searchCriteriaExactDeviceManagementEventAction):
            searchCriteriaExactDeviceManagementEventAction *Optional*
        search_criteria_exact_device_management_event_level
            (OCI.searchCriteriaExactDeviceManagementEventLevel):
            searchCriteriaExactDeviceManagementEventLevel *Optional*
        search_criteria_exact_device_management_event_type
            (OCI.searchCriteriaExactDeviceManagementEventType):
            searchCriteriaExactDeviceManagementEventType *Optional*
        search_criteria_device_management_event_additional_info
            (List[OCI.searchCriteriaDeviceManagementEventAdditionalInfo]):
            searchCriteriaDeviceManagementEventAdditionalInfo *Optional*
        search_criteria_device_management_event_login_id
            (List[OCI.searchCriteriaDeviceManagementEventLoginId]):
            searchCriteriaDeviceManagementEventLoginId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "event_queue_type",
        "response_size_limit",
        "search_criteria_exact_device_management_event_status_in_progress_or_pending",
        "search_criteria_exact_device_management_event_status_completed",
        "search_criteria_exact_device_management_event_action",
        "search_criteria_exact_device_management_event_level",
        "search_criteria_exact_device_management_event_type",
        "search_criteria_device_management_event_additional_info",
        "search_criteria_device_management_event_login_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("event_queue_type", "eventQueueType", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_exact_device_management_event_status_in_progress_or_pending",
                "searchCriteriaExactDeviceManagementEventStatusInProgressOrPending",
                OCI.SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_status_completed",
                "searchCriteriaExactDeviceManagementEventStatusCompleted",
                OCI.SearchCriteriaExactDeviceManagementEventStatusCompleted,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_action",
                "searchCriteriaExactDeviceManagementEventAction",
                OCI.SearchCriteriaExactDeviceManagementEventAction,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_level",
                "searchCriteriaExactDeviceManagementEventLevel",
                OCI.SearchCriteriaExactDeviceManagementEventLevel,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_type",
                "searchCriteriaExactDeviceManagementEventType",
                OCI.SearchCriteriaExactDeviceManagementEventType,
                is_complex=True,
            ),
            E(
                "search_criteria_device_management_event_additional_info",
                "searchCriteriaDeviceManagementEventAdditionalInfo",
                OCI.SearchCriteriaDeviceManagementEventAdditionalInfo,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_management_event_login_id",
                "searchCriteriaDeviceManagementEventLoginId",
                OCI.SearchCriteriaDeviceManagementEventLoginId,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupDeviceTypeFileModifyRequest(OCIRequest):
    """
    Request to modify a specified device type file for a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `GroupDeviceTypeFileModifyRequest14sp8()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
        file_type (str): fileType
        file_source (str): fileSource *Optional*
        upload_file (OCI.uploadFile): uploadFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
        "file_type",
        "file_source",
        "upload_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("file_type", "fileType", str, is_required=True),
            E("file_source", "fileSource", str),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=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): serviceProviderId
        group_id (str): groupId
        device_type (str): deviceType
        file_format (str): fileFormat
        file_source (str): fileSource *Optional*
        upload_file (OCI.uploadFile): uploadFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_type",
        "file_format",
        "file_source",
        "upload_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("file_source", "fileSource", str),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
        )


class GroupDialableCallerIDCriteriaModifyRequest(OCIRequest):
    """
    Modify a Dialable Caller ID Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        prefix_digits (str): prefixDigits *Optional*
        match_call_type (OCI.matchCallType): matchCallType *Optional*
        match_alternate_call_indicator (OCI.matchAlternateCallIndicator):
            matchAlternateCallIndicator *Optional*
        match_local_category (bool): matchLocalCategory *Optional*
        match_national_category (bool): matchNationalCategory *Optional*
        match_interlata_category (bool): matchInterlataCategory *Optional*
        match_intralata_category (bool): matchIntralataCategory *Optional*
        match_international_category (bool): matchInternationalCategory *Optional*
        match_private_category (bool): matchPrivateCategory *Optional*
        match_emergency_category (bool): matchEmergencyCategory *Optional*
        match_other_category (bool): matchOtherCategory *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "new_name",
        "description",
        "prefix_digits",
        "match_call_type",
        "match_alternate_call_indicator",
        "match_local_category",
        "match_national_category",
        "match_interlata_category",
        "match_intralata_category",
        "match_international_category",
        "match_private_category",
        "match_emergency_category",
        "match_other_category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E("prefix_digits", "prefixDigits", str),
            E(
                "match_call_type",
                "matchCallType",
                OCI.ReplacementCommunicationBarringCallTypeList,
                is_complex=True,
            ),
            E(
                "match_alternate_call_indicator",
                "matchAlternateCallIndicator",
                OCI.ReplacementCommunicationBarringAlternateCallIndicatorList,
                is_complex=True,
            ),
            E("match_local_category", "matchLocalCategory", bool),
            E("match_national_category", "matchNationalCategory", bool),
            E("match_interlata_category", "matchInterlataCategory", bool),
            E("match_intralata_category", "matchIntralataCategory", bool),
            E("match_international_category", "matchInternationalCategory", bool),
            E("match_private_category", "matchPrivateCategory", bool),
            E("match_emergency_category", "matchEmergencyCategory", bool),
            E("match_other_category", "matchOtherCategory", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        use_group_criteria (bool): useGroupCriteria *Optional*
        ns_screening_failure_policy (str): nsScreeningFailurePolicy *Optional*
        criteria_priority_order (List[OCI.criteriaPriorityOrder]): criteriaPriorityOrder
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_group_criteria",
        "ns_screening_failure_policy",
        "criteria_priority_order",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_group_criteria", "useGroupCriteria", bool),
            E("ns_screening_failure_policy", "nsScreeningFailurePolicy", str),
            E(
                "criteria_priority_order",
                "criteriaPriorityOrder",
                OCI.DialableCallerIDCriteriaPriorityOrder,
                is_complex=True,
                is_array=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): serviceUserId
        agent_user_id_list (OCI.agentUserIdList): agentUserIdList *Optional*
        use_terminate_call_to_agent_first (bool): useTerminateCallToAgentFirst *Optional*
        use_original_agent_services_for_busy_and_no_answer_calls (bool):
            useOriginalAgentServicesForBusyAndNoAnswerCalls *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "agent_user_id_list",
        "use_terminate_call_to_agent_first",
        "use_original_agent_services_for_busy_and_no_answer_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "agent_user_id_list",
                "agentUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E(
                "use_terminate_call_to_agent_first",
                "useTerminateCallToAgentFirst",
                bool,
            ),
            E(
                "use_original_agent_services_for_busy_and_no_answer_calls",
                "useOriginalAgentServicesForBusyAndNoAnswerCalls",
                bool,
            ),
        )


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): serviceProviderId
        group_id (str): groupId
        phone_number (List[str]): phoneNumber *Optional*
        dn_range (List[OCI.dnRange]): dnRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "phone_number",
        "dn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_array=True),
            E("dn_range", "dnRange", OCI.DNRange, is_complex=True, is_array=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): serviceProviderId
        group_id (str): groupId
        phone_number (List[str]): phoneNumber *Optional*
        dn_range (List[OCI.dnRange]): dnRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "phone_number",
        "dn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_array=True),
            E("dn_range", "dnRange", OCI.DNRange, is_complex=True, is_array=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): serviceProviderId
        group_id (str): groupId
        phone_number (List[str]): phoneNumber *Optional*
        dn_range (List[OCI.dnRange]): dnRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "phone_number",
        "dn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_array=True),
            E("dn_range", "dnRange", OCI.DNRange, is_complex=True, is_array=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): serviceProviderId
        group_id (str): groupId
        department_key (OCI.departmentKey): departmentKey *Optional*
        phone_number (List[str]): phoneNumber *Optional*
        dn_range (List[OCI.dnRange]): dnRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department_key",
        "phone_number",
        "dn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department_key", "departmentKey", OCI.DepartmentKey, is_complex=True),
            E("phone_number", "phoneNumber", str, is_array=True),
            E("dn_range", "dnRange", OCI.DNRange, is_complex=True, is_array=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): serviceProviderId
        group_id (str): groupId
        phone_number (List[str]): phoneNumber *Optional*
        dn_range (List[OCI.dnRange]): dnRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "phone_number",
        "dn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_array=True),
            E("dn_range", "dnRange", OCI.DNRange, is_complex=True, is_array=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): serviceProviderId
        group_id (str): groupId
        home_zone_ip_address (List[str]): homeZoneIpAddress *Optional*
        home_zone_ip_address_range (List[OCI.homeZoneIpAddressRange]):
            homeZoneIpAddressRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "home_zone_ip_address",
        "home_zone_ip_address_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("home_zone_ip_address", "homeZoneIpAddress", str, is_array=True),
            E(
                "home_zone_ip_address_range",
                "homeZoneIpAddressRange",
                OCI.IPAddressRange,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        home_zone_ip_address (List[str]): homeZoneIpAddress *Optional*
        home_zone_ip_address_range (List[OCI.homeZoneIpAddressRange]):
            homeZoneIpAddressRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "home_zone_ip_address",
        "home_zone_ip_address_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("home_zone_ip_address", "homeZoneIpAddress", str, is_array=True),
            E(
                "home_zone_ip_address_range",
                "homeZoneIpAddressRange",
                OCI.IPAddressRange,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_trunk_group_name (List[OCI.searchCriteriaTrunkGroupName]):
            searchCriteriaTrunkGroupName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_trunk_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_trunk_group_name",
                "searchCriteriaTrunkGroupName",
                OCI.SearchCriteriaTrunkGroupName,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        enable_exchange_integration (bool): enableExchangeIntegration *Optional*
        exchange_url (str): exchangeURL *Optional*
        exchange_credentials (OCI.exchangeCredentials): exchangeCredentials *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enable_exchange_integration",
        "exchange_url",
        "exchange_credentials",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enable_exchange_integration", "enableExchangeIntegration", bool),
            E("exchange_url", "exchangeURL", str),
            E(
                "exchange_credentials",
                "exchangeCredentials",
                OCI.ExchangeUserNamePassword,
                is_complex=True,
            ),
        )


class GroupFeatureAccessCodeModifyListRequest(OCIRequest):
    """
    Modify a list of feature access codes for a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `GroupFeatureAccessCodeModifyRequest()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        feature_access_code (List[OCI.featureAccessCode]): featureAccessCode *Optional*
        restore_default_codes (bool): restoreDefaultCodes *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "feature_access_code",
        "restore_default_codes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "feature_access_code",
                "featureAccessCode",
                OCI.FeatureAccessCodeEntry,
                is_complex=True,
                is_array=True,
            ),
            E("restore_default_codes", "restoreDefaultCodes", bool),
        )


class GroupFeatureAccessCodeModifyRequest(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.  Replaced by:
    `GroupFeatureAccessCodeModifyRequest21()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        use_feature_access_code_level (str): useFeatureAccessCodeLevel *Optional*
        restore_default_codes (bool): restoreDefaultCodes *Optional*
        feature_access_code (List[OCI.featureAccessCode]): featureAccessCode *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_feature_access_code_level",
        "restore_default_codes",
        "feature_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_feature_access_code_level", "useFeatureAccessCodeLevel", str),
            E("restore_default_codes", "restoreDefaultCodes", bool),
            E(
                "feature_access_code",
                "featureAccessCode",
                OCI.FeatureAccessCodeEntry,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupFeatureAccessCodeModifyRequest20(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". Replaced by:
    `GroupFeatureAccessCodeModifyRequest21()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        use_feature_access_code_level (str): useFeatureAccessCodeLevel *Optional*
        restore_default_codes (bool): restoreDefaultCodes *Optional*
        feature_access_code (List[OCI.featureAccessCode]): featureAccessCode *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_feature_access_code_level",
        "restore_default_codes",
        "feature_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_feature_access_code_level", "useFeatureAccessCodeLevel", str),
            E("restore_default_codes", "restoreDefaultCodes", bool),
            E(
                "feature_access_code",
                "featureAccessCode",
                OCI.FeatureAccessCodeEntry,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        use_feature_access_code_level (str): useFeatureAccessCodeLevel *Optional*
        restore_default_codes (bool): restoreDefaultCodes *Optional*
        feature_access_code (List[OCI.featureAccessCode]): featureAccessCode *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_feature_access_code_level",
        "restore_default_codes",
        "feature_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_feature_access_code_level", "useFeatureAccessCodeLevel", str),
            E("restore_default_codes", "restoreDefaultCodes", bool),
            E(
                "feature_access_code",
                "featureAccessCode",
                OCI.FeatureAccessCodeModifyEntry,
                is_complex=True,
                is_array=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): serviceUserId
        alerting_group_name (str): alertingGroupName
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
        call_to_number (List[OCI.callToNumber]): callToNumber *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "alerting_group_name",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
        "call_to_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("alerting_group_name", "alertingGroupName", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool, is_required=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
            E(
                "call_to_number",
                "callToNumber",
                OCI.CallToNumber,
                is_complex=True,
                is_array=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 (List[OCI.serviceActivation]): serviceActivation *Optional*
    """

    __slots__: List[str] = [
        "service_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_activation",
                "serviceActivation",
                OCI.ServiceActivation,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupFindMeFollowMeModifyAlertingGroupRequest(OCIRequest):
    """
    Modify a Find-me/Follow-me alerting group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        alerting_group_name (str): alertingGroupName
        new_alerting_group_name (str): newAlertingGroupName *Optional*
        alerting_group_description (str): alertingGroupDescription *Optional*
        use_diversion_inhibitor (bool): useDiversionInhibitor *Optional*
        answer_confirmation_required (bool): answerConfirmationRequired *Optional*
        number_of_rings (int): numberOfRings *Optional*
        phone_number_or_user_list (OCI.phoneNumberOrUserList): phoneNumberOrUserList
            *Optional*
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "alerting_group_name",
        "new_alerting_group_name",
        "alerting_group_description",
        "use_diversion_inhibitor",
        "answer_confirmation_required",
        "number_of_rings",
        "phone_number_or_user_list",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("alerting_group_name", "alertingGroupName", str, is_required=True),
            E("new_alerting_group_name", "newAlertingGroupName", str),
            E("alerting_group_description", "alertingGroupDescription", str),
            E("use_diversion_inhibitor", "useDiversionInhibitor", bool),
            E("answer_confirmation_required", "answerConfirmationRequired", bool),
            E("number_of_rings", "numberOfRings", int),
            E(
                "phone_number_or_user_list",
                "phoneNumberOrUserList",
                OCI.FindMeFollowMeAlertingGroupReplacementOutgoingDNSIPURIorUserIdList,
                is_complex=True,
            ),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=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 (List[OCI.serviceActivation]): serviceActivation *Optional*
    """

    __slots__: List[str] = [
        "service_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_activation",
                "serviceActivation",
                OCI.ServiceActivation,
                is_complex=True,
                is_array=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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=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 (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
        search_criteria_exact_service_provider (OCI.searchCriteriaExactServiceProvider):
            searchCriteriaExactServiceProvider *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_group_name",
        "search_criteria_exact_service_provider",
        "search_criteria_service_provider_id",
        "search_criteria_reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_service_provider",
                "searchCriteriaExactServiceProvider",
                OCI.SearchCriteriaExactServiceProvider,
                is_complex=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        night_forwarding (str): nightForwarding *Optional*
        business_hours (OCI.businessHours): businessHours *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "night_forwarding",
        "business_hours",
        "holiday_schedule",
        "forward_to_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("night_forwarding", "nightForwarding", str),
            E("business_hours", "businessHours", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
        )


class GroupGroupPagingModifyActiveInstanceListRequest(OCIRequest):
    """
    Request to set the active status of Group Paging instances.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_activation (List[OCI.serviceActivation]): serviceActivation *Optional*
    """

    __slots__: List[str] = [
        "service_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_activation",
                "serviceActivation",
                OCI.ServiceActivation,
                is_complex=True,
                is_array=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): serviceUserId
        originator_user_id_list (OCI.originatorUserIdList): originatorUserIdList
            *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "originator_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "originator_user_id_list",
                "originatorUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): serviceUserId
        target_user_id_list (OCI.targetUserIdList): targetUserIdList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "target_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "target_user_id_list",
                "targetUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
        )


class GroupHolidayScheduleAddRequest(OCIRequest):
    """
    Add a holiday schedule to a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        holiday_schedule_name (str): holidayScheduleName
        holiday01 (OCI.holiday01): holiday01 *Optional*
        holiday02 (OCI.holiday02): holiday02 *Optional*
        holiday03 (OCI.holiday03): holiday03 *Optional*
        holiday04 (OCI.holiday04): holiday04 *Optional*
        holiday05 (OCI.holiday05): holiday05 *Optional*
        holiday06 (OCI.holiday06): holiday06 *Optional*
        holiday07 (OCI.holiday07): holiday07 *Optional*
        holiday08 (OCI.holiday08): holiday08 *Optional*
        holiday09 (OCI.holiday09): holiday09 *Optional*
        holiday10 (OCI.holiday10): holiday10 *Optional*
        holiday11 (OCI.holiday11): holiday11 *Optional*
        holiday12 (OCI.holiday12): holiday12 *Optional*
        holiday13 (OCI.holiday13): holiday13 *Optional*
        holiday14 (OCI.holiday14): holiday14 *Optional*
        holiday15 (OCI.holiday15): holiday15 *Optional*
        holiday16 (OCI.holiday16): holiday16 *Optional*
        holiday17 (OCI.holiday17): holiday17 *Optional*
        holiday18 (OCI.holiday18): holiday18 *Optional*
        holiday19 (OCI.holiday19): holiday19 *Optional*
        holiday20 (OCI.holiday20): holiday20 *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "holiday_schedule_name",
        "holiday01",
        "holiday02",
        "holiday03",
        "holiday04",
        "holiday05",
        "holiday06",
        "holiday07",
        "holiday08",
        "holiday09",
        "holiday10",
        "holiday11",
        "holiday12",
        "holiday13",
        "holiday14",
        "holiday15",
        "holiday16",
        "holiday17",
        "holiday18",
        "holiday19",
        "holiday20",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("holiday_schedule_name", "holidayScheduleName", str, is_required=True),
            E("holiday01", "holiday01", OCI.Holiday, is_complex=True),
            E("holiday02", "holiday02", OCI.Holiday, is_complex=True),
            E("holiday03", "holiday03", OCI.Holiday, is_complex=True),
            E("holiday04", "holiday04", OCI.Holiday, is_complex=True),
            E("holiday05", "holiday05", OCI.Holiday, is_complex=True),
            E("holiday06", "holiday06", OCI.Holiday, is_complex=True),
            E("holiday07", "holiday07", OCI.Holiday, is_complex=True),
            E("holiday08", "holiday08", OCI.Holiday, is_complex=True),
            E("holiday09", "holiday09", OCI.Holiday, is_complex=True),
            E("holiday10", "holiday10", OCI.Holiday, is_complex=True),
            E("holiday11", "holiday11", OCI.Holiday, is_complex=True),
            E("holiday12", "holiday12", OCI.Holiday, is_complex=True),
            E("holiday13", "holiday13", OCI.Holiday, is_complex=True),
            E("holiday14", "holiday14", OCI.Holiday, is_complex=True),
            E("holiday15", "holiday15", OCI.Holiday, is_complex=True),
            E("holiday16", "holiday16", OCI.Holiday, is_complex=True),
            E("holiday17", "holiday17", OCI.Holiday, is_complex=True),
            E("holiday18", "holiday18", OCI.Holiday, is_complex=True),
            E("holiday19", "holiday19", OCI.Holiday, is_complex=True),
            E("holiday20", "holiday20", OCI.Holiday, is_complex=True),
        )


class GroupHolidayScheduleModifyRequest(OCIRequest):
    """
    Modify a holiday schedule in a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        holiday_schedule_name (str): holidayScheduleName
        new_holiday_schedule_name (str): newHolidayScheduleName *Optional*
        holiday01 (OCI.holiday01): holiday01 *Optional*
        holiday02 (OCI.holiday02): holiday02 *Optional*
        holiday03 (OCI.holiday03): holiday03 *Optional*
        holiday04 (OCI.holiday04): holiday04 *Optional*
        holiday05 (OCI.holiday05): holiday05 *Optional*
        holiday06 (OCI.holiday06): holiday06 *Optional*
        holiday07 (OCI.holiday07): holiday07 *Optional*
        holiday08 (OCI.holiday08): holiday08 *Optional*
        holiday09 (OCI.holiday09): holiday09 *Optional*
        holiday10 (OCI.holiday10): holiday10 *Optional*
        holiday11 (OCI.holiday11): holiday11 *Optional*
        holiday12 (OCI.holiday12): holiday12 *Optional*
        holiday13 (OCI.holiday13): holiday13 *Optional*
        holiday14 (OCI.holiday14): holiday14 *Optional*
        holiday15 (OCI.holiday15): holiday15 *Optional*
        holiday16 (OCI.holiday16): holiday16 *Optional*
        holiday17 (OCI.holiday17): holiday17 *Optional*
        holiday18 (OCI.holiday18): holiday18 *Optional*
        holiday19 (OCI.holiday19): holiday19 *Optional*
        holiday20 (OCI.holiday20): holiday20 *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "holiday_schedule_name",
        "new_holiday_schedule_name",
        "holiday01",
        "holiday02",
        "holiday03",
        "holiday04",
        "holiday05",
        "holiday06",
        "holiday07",
        "holiday08",
        "holiday09",
        "holiday10",
        "holiday11",
        "holiday12",
        "holiday13",
        "holiday14",
        "holiday15",
        "holiday16",
        "holiday17",
        "holiday18",
        "holiday19",
        "holiday20",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("holiday_schedule_name", "holidayScheduleName", str, is_required=True),
            E("new_holiday_schedule_name", "newHolidayScheduleName", str),
            E("holiday01", "holiday01", OCI.Holiday, is_complex=True),
            E("holiday02", "holiday02", OCI.Holiday, is_complex=True),
            E("holiday03", "holiday03", OCI.Holiday, is_complex=True),
            E("holiday04", "holiday04", OCI.Holiday, is_complex=True),
            E("holiday05", "holiday05", OCI.Holiday, is_complex=True),
            E("holiday06", "holiday06", OCI.Holiday, is_complex=True),
            E("holiday07", "holiday07", OCI.Holiday, is_complex=True),
            E("holiday08", "holiday08", OCI.Holiday, is_complex=True),
            E("holiday09", "holiday09", OCI.Holiday, is_complex=True),
            E("holiday10", "holiday10", OCI.Holiday, is_complex=True),
            E("holiday11", "holiday11", OCI.Holiday, is_complex=True),
            E("holiday12", "holiday12", OCI.Holiday, is_complex=True),
            E("holiday13", "holiday13", OCI.Holiday, is_complex=True),
            E("holiday14", "holiday14", OCI.Holiday, is_complex=True),
            E("holiday15", "holiday15", OCI.Holiday, is_complex=True),
            E("holiday16", "holiday16", OCI.Holiday, is_complex=True),
            E("holiday17", "holiday17", OCI.Holiday, is_complex=True),
            E("holiday18", "holiday18", OCI.Holiday, is_complex=True),
            E("holiday19", "holiday19", OCI.Holiday, is_complex=True),
            E("holiday20", "holiday20", OCI.Holiday, is_complex=True),
        )


class GroupHuntGroupModifyActiveInstanceListRequest(OCIRequest):
    """
    Request to set the active status of Hunt Group instances.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_activation (List[OCI.serviceActivation]): serviceActivation *Optional*
    """

    __slots__: List[str] = [
        "service_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_activation",
                "serviceActivation",
                OCI.ServiceActivation,
                is_complex=True,
                is_array=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): serviceUserId
        agent_weight (List[OCI.agentWeight]): agentWeight *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "agent_weight",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "agent_weight",
                "agentWeight",
                OCI.HuntAgentWeight,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        imrn (List[str]): imrn *Optional*
        imrn_range (List[OCI.imrnRange]): imrnRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "imrn",
        "imrn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("imrn", "imrn", str, is_array=True),
            E("imrn_range", "imrnRange", OCI.DNRange, is_complex=True, is_array=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): serviceProviderId
        group_id (str): groupId
        imrn (List[str]): imrn *Optional*
        imrn_range (List[OCI.imrnRange]): imrnRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "imrn",
        "imrn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("imrn", "imrn", str, is_array=True),
            E("imrn_range", "imrnRange", OCI.DNRange, is_complex=True, is_array=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 (List[OCI.serviceActivation]): serviceActivation *Optional*
    """

    __slots__: List[str] = [
        "service_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_activation",
                "serviceActivation",
                OCI.ServiceActivation,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupInterceptGroupModifyRequest(OCIRequest):
    """
    Modify the group's intercept group service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `GroupInterceptGroupModifyRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_active (bool): isActive *Optional*
        announcement_selection (str): announcementSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        play_new_phone_number (bool): playNewPhoneNumber *Optional*
        new_phone_number (str): newPhoneNumber *Optional*
        transfer_on_zero_to_phone_number (bool): transferOnZeroToPhoneNumber *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_active",
        "announcement_selection",
        "audio_file",
        "video_file",
        "play_new_phone_number",
        "new_phone_number",
        "transfer_on_zero_to_phone_number",
        "transfer_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("announcement_selection", "announcementSelection", str),
            E("audio_file", "audioFile", OCI.LabeledFileResource, is_complex=True),
            E("video_file", "videoFile", OCI.LabeledFileResource, is_complex=True),
            E("play_new_phone_number", "playNewPhoneNumber", bool),
            E("new_phone_number", "newPhoneNumber", str),
            E("transfer_on_zero_to_phone_number", "transferOnZeroToPhoneNumber", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
        )


class GroupInterceptGroupModifyRequest16(OCIRequest):
    """
    Modify the group's intercept group service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `GroupInterceptGroupModifyResponse21sp1()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_active (bool): isActive *Optional*
        announcement_selection (str): announcementSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        play_new_phone_number (bool): playNewPhoneNumber *Optional*
        new_phone_number (str): newPhoneNumber *Optional*
        transfer_on_zero_to_phone_number (bool): transferOnZeroToPhoneNumber *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        reroute_outbound_calls (bool): rerouteOutboundCalls *Optional*
        outbound_reroute_phone_number (str): outboundReroutePhoneNumber *Optional*
        allow_outbound_local_calls (bool): allowOutboundLocalCalls *Optional*
        inbound_call_mode (str): inboundCallMode *Optional*
        alternate_blocking_announcement (bool): alternateBlockingAnnouncement *Optional*
        route_to_voice_mail (bool): routeToVoiceMail *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_active",
        "announcement_selection",
        "audio_file",
        "video_file",
        "play_new_phone_number",
        "new_phone_number",
        "transfer_on_zero_to_phone_number",
        "transfer_phone_number",
        "reroute_outbound_calls",
        "outbound_reroute_phone_number",
        "allow_outbound_local_calls",
        "inbound_call_mode",
        "alternate_blocking_announcement",
        "route_to_voice_mail",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("announcement_selection", "announcementSelection", str),
            E("audio_file", "audioFile", OCI.LabeledMediaFileResource, is_complex=True),
            E("video_file", "videoFile", OCI.LabeledMediaFileResource, is_complex=True),
            E("play_new_phone_number", "playNewPhoneNumber", bool),
            E("new_phone_number", "newPhoneNumber", str),
            E("transfer_on_zero_to_phone_number", "transferOnZeroToPhoneNumber", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("reroute_outbound_calls", "rerouteOutboundCalls", bool),
            E("outbound_reroute_phone_number", "outboundReroutePhoneNumber", str),
            E("allow_outbound_local_calls", "allowOutboundLocalCalls", bool),
            E("inbound_call_mode", "inboundCallMode", str),
            E("alternate_blocking_announcement", "alternateBlockingAnnouncement", bool),
            E("route_to_voice_mail", "routeToVoiceMail", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        is_active (bool): isActive *Optional*
        announcement_selection (str): announcementSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        inbound_call_mode (str): inboundCallMode *Optional*
        alternate_blocking_announcement (bool): alternateBlockingAnnouncement *Optional*
        exempt_inbound_mobility_calls (bool): exemptInboundMobilityCalls *Optional*
        disable_parallel_ringing_to_network_locations (bool):
            disableParallelRingingToNetworkLocations *Optional*
        route_to_voice_mail (bool): routeToVoiceMail *Optional*
        play_new_phone_number (bool): playNewPhoneNumber *Optional*
        new_phone_number (str): newPhoneNumber *Optional*
        transfer_on_zero_to_phone_number (bool): transferOnZeroToPhoneNumber *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        outbound_call_mode (str): outboundCallMode *Optional*
        exempt_outbound_mobility_calls (bool): exemptOutboundMobilityCalls *Optional*
        reroute_outbound_calls (bool): rerouteOutboundCalls *Optional*
        outbound_reroute_phone_number (str): outboundReroutePhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_active",
        "announcement_selection",
        "audio_file",
        "video_file",
        "inbound_call_mode",
        "alternate_blocking_announcement",
        "exempt_inbound_mobility_calls",
        "disable_parallel_ringing_to_network_locations",
        "route_to_voice_mail",
        "play_new_phone_number",
        "new_phone_number",
        "transfer_on_zero_to_phone_number",
        "transfer_phone_number",
        "outbound_call_mode",
        "exempt_outbound_mobility_calls",
        "reroute_outbound_calls",
        "outbound_reroute_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("announcement_selection", "announcementSelection", str),
            E("audio_file", "audioFile", OCI.LabeledMediaFileResource, is_complex=True),
            E("video_file", "videoFile", OCI.LabeledMediaFileResource, is_complex=True),
            E("inbound_call_mode", "inboundCallMode", str),
            E("alternate_blocking_announcement", "alternateBlockingAnnouncement", bool),
            E("exempt_inbound_mobility_calls", "exemptInboundMobilityCalls", bool),
            E(
                "disable_parallel_ringing_to_network_locations",
                "disableParallelRingingToNetworkLocations",
                bool,
            ),
            E("route_to_voice_mail", "routeToVoiceMail", bool),
            E("play_new_phone_number", "playNewPhoneNumber", bool),
            E("new_phone_number", "newPhoneNumber", str),
            E("transfer_on_zero_to_phone_number", "transferOnZeroToPhoneNumber", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("outbound_call_mode", "outboundCallMode", str),
            E("exempt_outbound_mobility_calls", "exemptOutboundMobilityCalls", bool),
            E("reroute_outbound_calls", "rerouteOutboundCalls", bool),
            E("outbound_reroute_phone_number", "outboundReroutePhoneNumber", str),
        )


class GroupMWIDeliveryToMobileEndpointModifyRequest(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): serviceProviderId
        group_id (str): groupId
        use_setting_level (str): useSettingLevel *Optional*
        template_activation (List[OCI.templateActivation]): templateActivation *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "use_setting_level",
        "template_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("use_setting_level", "useSettingLevel", str),
            E(
                "template_activation",
                "templateActivation",
                OCI.MWIDeliveryToMobileEndpointTemplateActivation,
                is_complex=True,
                is_array=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 (List[OCI.serviceActivation]): serviceActivation *Optional*
    """

    __slots__: List[str] = [
        "service_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_activation",
                "serviceActivation",
                OCI.ServiceActivation,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        allocated_ports (OCI.allocatedPorts): allocatedPorts *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "allocated_ports",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "allocated_ports",
                "allocatedPorts",
                OCI.MeetMeConferencingConferencePorts,
                is_complex=True,
            ),
        )


class GroupModifyRequest(OCIRequest):
    """
    Modify the profile for a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. The following
    elements are only used in Amplify data mode and ignored in AS and XS data mode:
    servicePolicy, callProcessingSliceId, provisioningSliceId, subscriberPartition.  When
    the callProcessingSliceId or provisioningSliceId is set to nillable, it will be
    assigned to the default Slice.  Only Provisioning admin and above can change the
    callProcessingSliceId, provisioningSliceId, and subscriberPartition.  The following
    elements are only used in Amplify and 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 Amplify and 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): serviceProviderId
        group_id (str): groupId
        default_domain (str): defaultDomain *Optional*
        user_limit (int): userLimit *Optional*
        group_name (str): groupName *Optional*
        calling_line_id_name (str): callingLineIdName *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        time_zone (str): timeZone *Optional*
        location_dialing_code (str): locationDialingCode *Optional*
        contact (OCI.contact): contact *Optional*
        address (OCI.address): address *Optional*
        service_policy (str): servicePolicy *Optional*
        call_processing_slice_id (str): callProcessingSliceId *Optional*
        provisioning_slice_id (str): provisioningSliceId *Optional*
        subscriber_partition (str): subscriberPartition *Optional*
        preferred_data_center (str): preferredDataCenter *Optional*
        default_user_calling_line_id_phone_number (str):
            defaultUserCallingLineIdPhoneNumber *Optional*
        extension_length_settings (OCI.extensionLengthSettings): extensionLengthSettings
            *Optional*
        dial_plan_access_code (OCI.dialPlanAccessCode): dialPlanAccessCode *Optional*
        dial_plan_policy (OCI.dialPlanPolicy): dialPlanPolicy *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "default_domain",
        "user_limit",
        "group_name",
        "calling_line_id_name",
        "calling_line_id_phone_number",
        "time_zone",
        "location_dialing_code",
        "contact",
        "address",
        "service_policy",
        "call_processing_slice_id",
        "provisioning_slice_id",
        "subscriber_partition",
        "preferred_data_center",
        "default_user_calling_line_id_phone_number",
        "extension_length_settings",
        "dial_plan_access_code",
        "dial_plan_policy",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("default_domain", "defaultDomain", str),
            E("user_limit", "userLimit", int),
            E("group_name", "groupName", str),
            E("calling_line_id_name", "callingLineIdName", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("time_zone", "timeZone", str),
            E("location_dialing_code", "locationDialingCode", str),
            E("contact", "contact", OCI.Contact, is_complex=True),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("service_policy", "servicePolicy", str),
            E("call_processing_slice_id", "callProcessingSliceId", str),
            E("provisioning_slice_id", "provisioningSliceId", str),
            E("subscriber_partition", "subscriberPartition", str),
            E("preferred_data_center", "preferredDataCenter", str),
            E(
                "default_user_calling_line_id_phone_number",
                "defaultUserCallingLineIdPhoneNumber",
                str,
            ),
            E(
                "extension_length_settings",
                "extensionLengthSettings",
                OCI.GroupExtensionLengthSettings,
                is_complex=True,
            ),
            E(
                "dial_plan_access_code",
                "dialPlanAccessCode",
                OCI.DialPlanPolicyAccessCode,
                is_complex=True,
            ),
            E(
                "dial_plan_policy",
                "dialPlanPolicy",
                OCI.DialPlanPolicy,
                is_complex=True,
            ),
        )


class GroupMusicOnHoldAddInstanceRequest14sp6(OCIRequest):
    """
    Add a Music on Hold Instance to a department.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `GroupMusicOnHoldAddInstanceRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department
        is_active_during_call_hold (bool): isActiveDuringCallHold
        is_active_during_call_park (bool): isActiveDuringCallPark
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn
        source (OCI.source): source
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
        internal_source (OCI.internalSource): internalSource *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "department",
                "department",
                OCI.DepartmentKey,
                is_complex=True,
                is_required=True,
            ),
            E(
                "is_active_during_call_hold",
                "isActiveDuringCallHold",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_call_park",
                "isActiveDuringCallPark",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_busy_camp_on",
                "isActiveDuringBusyCampOn",
                bool,
                is_required=True,
            ),
            E(
                "source",
                "source",
                OCI.MusicOnHoldSourceAdd,
                is_complex=True,
                is_required=True,
            ),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
                is_required=True,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldSourceAdd,
                is_complex=True,
            ),
        )


class GroupMusicOnHoldAddInstanceRequest16(OCIRequest):
    """
    Add a Music on Hold Instance to a department.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department
        is_active_during_call_hold (bool): isActiveDuringCallHold
        is_active_during_call_park (bool): isActiveDuringCallPark
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn
        source (OCI.source): source
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
        internal_source (OCI.internalSource): internalSource *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "department",
                "department",
                OCI.DepartmentKey,
                is_complex=True,
                is_required=True,
            ),
            E(
                "is_active_during_call_hold",
                "isActiveDuringCallHold",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_call_park",
                "isActiveDuringCallPark",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_busy_camp_on",
                "isActiveDuringBusyCampOn",
                bool,
                is_required=True,
            ),
            E(
                "source",
                "source",
                OCI.MusicOnHoldSourceAdd16,
                is_complex=True,
                is_required=True,
            ),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
                is_required=True,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldSourceAdd16,
                is_complex=True,
            ),
        )


class GroupMusicOnHoldAddInstanceRequest20(OCIRequest):
    """
    Add a Music on Hold Instance to a department.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `GroupMusicOnHoldAddInstanceRequest21()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department
        is_active_during_call_hold (bool): isActiveDuringCallHold
        is_active_during_call_park (bool): isActiveDuringCallPark
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn
        source (OCI.source): source
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
        internal_source (OCI.internalSource): internalSource *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "department",
                "department",
                OCI.DepartmentKey,
                is_complex=True,
                is_required=True,
            ),
            E(
                "is_active_during_call_hold",
                "isActiveDuringCallHold",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_call_park",
                "isActiveDuringCallPark",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_busy_camp_on",
                "isActiveDuringBusyCampOn",
                bool,
                is_required=True,
            ),
            E(
                "source",
                "source",
                OCI.MusicOnHoldSourceAdd20,
                is_complex=True,
                is_required=True,
            ),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
                is_required=True,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldSourceAdd20,
                is_complex=True,
            ),
        )


class GroupMusicOnHoldAddInstanceRequest21(OCIRequest):
    """
    Add a Music on Hold Instance to a department.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by
    `GroupMusicOnHoldAddInstanceRequest22()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department
        is_active_during_call_hold (bool): isActiveDuringCallHold
        is_active_during_call_park (bool): isActiveDuringCallPark
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn
        source (OCI.source): source
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
        internal_source (OCI.internalSource): internalSource *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "department",
                "department",
                OCI.DepartmentKey,
                is_complex=True,
                is_required=True,
            ),
            E(
                "is_active_during_call_hold",
                "isActiveDuringCallHold",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_call_park",
                "isActiveDuringCallPark",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_busy_camp_on",
                "isActiveDuringBusyCampOn",
                bool,
                is_required=True,
            ),
            E(
                "source",
                "source",
                OCI.MusicOnHoldSourceAdd21,
                is_complex=True,
                is_required=True,
            ),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
                is_required=True,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldSourceAdd21,
                is_complex=True,
            ),
        )


class GroupMusicOnHoldAddInstanceRequest22(OCIRequest):
    """
    Add a Music on Hold Instance to a department.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by
    `GroupMusicOnHoldAddInstanceRequest23()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department
        is_active_during_call_hold (bool): isActiveDuringCallHold
        is_active_during_call_park (bool): isActiveDuringCallPark
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn
        source (OCI.source): source
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
        internal_source (OCI.internalSource): internalSource *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "department",
                "department",
                OCI.DepartmentKey,
                is_complex=True,
                is_required=True,
            ),
            E(
                "is_active_during_call_hold",
                "isActiveDuringCallHold",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_call_park",
                "isActiveDuringCallPark",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_busy_camp_on",
                "isActiveDuringBusyCampOn",
                bool,
                is_required=True,
            ),
            E(
                "source",
                "source",
                OCI.MusicOnHoldSourceAdd22,
                is_complex=True,
                is_required=True,
            ),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
                is_required=True,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldSourceAdd22,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department
        is_active_during_call_hold (bool): isActiveDuringCallHold
        is_active_during_call_park (bool): isActiveDuringCallPark
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn
        source (OCI.source): source
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
        internal_source (OCI.internalSource): internalSource *Optional*
        use_dynamic_moh_during_call_hold (bool): useDynamicMOHDuringCallHold
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
        "use_dynamic_moh_during_call_hold",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "department",
                "department",
                OCI.DepartmentKey,
                is_complex=True,
                is_required=True,
            ),
            E(
                "is_active_during_call_hold",
                "isActiveDuringCallHold",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_call_park",
                "isActiveDuringCallPark",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_busy_camp_on",
                "isActiveDuringBusyCampOn",
                bool,
                is_required=True,
            ),
            E(
                "source",
                "source",
                OCI.MusicOnHoldSourceAdd22,
                is_complex=True,
                is_required=True,
            ),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
                is_required=True,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldSourceAdd22,
                is_complex=True,
            ),
            E(
                "use_dynamic_moh_during_call_hold",
                "useDynamicMOHDuringCallHold",
                bool,
                is_required=True,
            ),
        )


class GroupMusicOnHoldDeleteInstanceRequest(OCIRequest):
    """
    Delete a Music On Hold department instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "department",
                "department",
                OCI.DepartmentKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupMusicOnHoldGetInstanceRequest14(OCIRequest):
    """
    Get a Music On Hold data for a group or department instance.

    The response is either `GroupMusicOnHoldGetInstanceResponse14()` or `ErrorResponse()`.

    Replaced By: GroupMusicOnHoldGetInstanceRequest14Sp4

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
        )


class GroupMusicOnHoldGetInstanceRequest14sp4(OCIRequest):
    """
    Get a Music On Hold data for a group or department instance.

    The response is either `GroupMusicOnHoldGetInstanceResponse14sp4()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
        )


class GroupMusicOnHoldGetInstanceRequest14sp6(OCIRequest):
    """
    Get a Music On Hold data for a group or department instance.

    The response is either `GroupMusicOnHoldGetInstanceResponse14sp6()` or
    `ErrorResponse()`.

    Replaced By: `GroupMusicOnHoldGetInstanceRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
        )


class GroupMusicOnHoldGetInstanceRequest16(OCIRequest):
    """
    Get a Music On Hold data for a group or department instance.

    The response is either `GroupMusicOnHoldGetInstanceResponse16()` or `ErrorResponse()`.
    Replaced by: `GroupMusicOnHoldGetInstanceRequest19()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
        )


class GroupMusicOnHoldGetInstanceRequest19(OCIRequest):
    """
    Get a Music On Hold data for a group or department instance.

    The response is either `GroupMusicOnHoldGetInstanceResponse19()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
        )


class GroupMusicOnHoldGetInstanceRequest20(OCIRequest):
    """
    Get a Music On Hold data for a group or department instance.

    The response is either `GroupMusicOnHoldGetInstanceResponse20()` or `ErrorResponse()`.
    Replaced by: `GroupMusicOnHoldGetInstanceRequest21()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
        )


class GroupMusicOnHoldGetInstanceRequest21(OCIRequest):
    """
    Get a Music On Hold data for a group or department instance.

    The response is either `GroupMusicOnHoldGetInstanceResponse21()` or `ErrorResponse()`.
    Replaced by `GroupMusicOnHoldGetInstanceRequest22()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
        )


class GroupMusicOnHoldGetInstanceRequest22(OCIRequest):
    """
    Get a Music On Hold data for a group or department instance.

    The response is either `GroupMusicOnHoldGetInstanceResponse22()` or `ErrorResponse()`.
    Replaced by: `GroupMusicOnHoldGetInstanceRequest22V2()` in AS mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
        )


class GroupMusicOnHoldGetInstanceRequest22V2(OCIRequest):
    """
    Get a Music On Hold data for a group or department instance.

    The response is either `GroupMusicOnHoldGetInstanceResponse22V2()` or
    `ErrorResponse()`. Replaced by: `GroupMusicOnHoldGetInstanceRequest23()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
        )


class GroupMusicOnHoldGetInstanceRequest22V3(OCIRequest):
    """
    Get a Music On Hold data for a group or department instance.

    The response is either `GroupMusicOnHoldGetInstanceResponse22V3()` or
    `ErrorResponse()`. Replaced by: `GroupMusicOnHoldGetInstanceRequest23V2()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
        )


class GroupMusicOnHoldGetInstanceRequest23(OCIRequest):
    """
    Get a Music On Hold data for a group or department instance.

    The response is either `GroupMusicOnHoldGetInstanceResponse23()` or `ErrorResponse()`.
    Replaced by: `GroupMusicOnHoldGetInstanceRequest23V2()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=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): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
        )


class GroupMusicOnHoldModifyInstanceRequest14sp6(OCIRequest):
    """
    Modify data for a group or department Music On Hold Instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `GroupMusicOnHoldModifyInstanceRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
        is_active_during_call_hold (bool): isActiveDuringCallHold *Optional*
        is_active_during_call_park (bool): isActiveDuringCallPark *Optional*
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn *Optional*
        source (OCI.source): source *Optional*
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
            *Optional*
        internal_source (OCI.internalSource): internalSource *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("is_active_during_call_hold", "isActiveDuringCallHold", bool),
            E("is_active_during_call_park", "isActiveDuringCallPark", bool),
            E("is_active_during_busy_camp_on", "isActiveDuringBusyCampOn", bool),
            E("source", "source", OCI.MusicOnHoldSourceModify, is_complex=True),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldSourceModify,
                is_complex=True,
            ),
        )


class GroupMusicOnHoldModifyInstanceRequest16(OCIRequest):
    """
    Modify data for a group or department Music On Hold Instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
        is_active_during_call_hold (bool): isActiveDuringCallHold *Optional*
        is_active_during_call_park (bool): isActiveDuringCallPark *Optional*
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn *Optional*
        source (OCI.source): source *Optional*
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
            *Optional*
        internal_source (OCI.internalSource): internalSource *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("is_active_during_call_hold", "isActiveDuringCallHold", bool),
            E("is_active_during_call_park", "isActiveDuringCallPark", bool),
            E("is_active_during_busy_camp_on", "isActiveDuringBusyCampOn", bool),
            E("source", "source", OCI.MusicOnHoldSourceModify16, is_complex=True),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldSourceModify16,
                is_complex=True,
            ),
        )


class GroupMusicOnHoldModifyInstanceRequest20(OCIRequest):
    """
    Modify data for a group or department Music On Hold Instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `GroupMusicOnHoldModifyInstanceRequest21()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
        is_active_during_call_hold (bool): isActiveDuringCallHold *Optional*
        is_active_during_call_park (bool): isActiveDuringCallPark *Optional*
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn *Optional*
        source (OCI.source): source *Optional*
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
            *Optional*
        internal_source (OCI.internalSource): internalSource *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("is_active_during_call_hold", "isActiveDuringCallHold", bool),
            E("is_active_during_call_park", "isActiveDuringCallPark", bool),
            E("is_active_during_busy_camp_on", "isActiveDuringBusyCampOn", bool),
            E("source", "source", OCI.MusicOnHoldSourceModify20, is_complex=True),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldSourceModify20,
                is_complex=True,
            ),
        )


class GroupMusicOnHoldModifyInstanceRequest21(OCIRequest):
    """
    Modify data for a group or department Music On Hold Instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
        is_active_during_call_hold (bool): isActiveDuringCallHold *Optional*
        is_active_during_call_park (bool): isActiveDuringCallPark *Optional*
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn *Optional*
        source (OCI.source): source *Optional*
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
            *Optional*
        internal_source (OCI.internalSource): internalSource *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("is_active_during_call_hold", "isActiveDuringCallHold", bool),
            E("is_active_during_call_park", "isActiveDuringCallPark", bool),
            E("is_active_during_busy_camp_on", "isActiveDuringBusyCampOn", bool),
            E("source", "source", OCI.MusicOnHoldSourceModify21, is_complex=True),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldSourceModify21,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
        is_active_during_call_hold (bool): isActiveDuringCallHold *Optional*
        is_active_during_call_park (bool): isActiveDuringCallPark *Optional*
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn *Optional*
        source (OCI.source): source *Optional*
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
            *Optional*
        internal_source (OCI.internalSource): internalSource *Optional*
        use_dynamic_moh_during_call_hold (bool): useDynamicMOHDuringCallHold *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
        "use_dynamic_moh_during_call_hold",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("is_active_during_call_hold", "isActiveDuringCallHold", bool),
            E("is_active_during_call_park", "isActiveDuringCallPark", bool),
            E("is_active_during_busy_camp_on", "isActiveDuringBusyCampOn", bool),
            E("source", "source", OCI.MusicOnHoldSourceModify22, is_complex=True),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldSourceModify22,
                is_complex=True,
            ),
            E("use_dynamic_moh_during_call_hold", "useDynamicMOHDuringCallHold", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        network_class_of_service (List[str]): networkClassOfService *Optional*
        default_network_class_of_service (OCI.defaultNetworkClassOfService):
            defaultNetworkClassOfService
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "network_class_of_service",
        "default_network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("network_class_of_service", "networkClassOfService", str, is_array=True),
            E(
                "default_network_class_of_service",
                "defaultNetworkClassOfService",
                OCI.DefaultNetworkClassOfService,
                is_complex=True,
                is_required=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): serviceProviderId
        group_id (str): groupId
        network_class_of_service (List[str]): networkClassOfService *Optional*
        default_network_class_of_service (OCI.defaultNetworkClassOfService):
            defaultNetworkClassOfService
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "network_class_of_service",
        "default_network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("network_class_of_service", "networkClassOfService", str, is_array=True),
            E(
                "default_network_class_of_service",
                "defaultNetworkClassOfService",
                OCI.DefaultNetworkClassOfService,
                is_complex=True,
                is_required=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): serviceProviderId
        group_id (str): groupId
        department_key (OCI.departmentKey): departmentKey *Optional*
        code_entry (List[OCI.codeEntry]): codeEntry
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department_key",
        "code_entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department_key", "departmentKey", OCI.DepartmentKey, is_complex=True),
            E(
                "code_entry",
                "codeEntry",
                OCI.OutgoingCallingPlanAuthorizationCodeEntry,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        department_key (OCI.departmentKey): departmentKey *Optional*
        code (List[str]): code
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department_key",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department_key", "departmentKey", OCI.DepartmentKey, is_complex=True),
            E("code", "code", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
        department_key (OCI.departmentKey): departmentKey *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department_key", "departmentKey", OCI.DepartmentKey, is_complex=True),
        )


class GroupPreferredCarrierGroupModifyRequest(OCIRequest):
    """
    Modifies the currently configured carriers for a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        intra_lata_carrier (OCI.intraLataCarrier): intraLataCarrier *Optional*
        inter_lata_carrier (OCI.interLataCarrier): interLataCarrier *Optional*
        international_carrier (OCI.internationalCarrier): internationalCarrier *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "intra_lata_carrier",
        "inter_lata_carrier",
        "international_carrier",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "intra_lata_carrier",
                "intraLataCarrier",
                OCI.GroupPreferredCarrierNameModify,
                is_complex=True,
            ),
            E(
                "inter_lata_carrier",
                "interLataCarrier",
                OCI.GroupPreferredCarrierNameModify,
                is_complex=True,
            ),
            E(
                "international_carrier",
                "internationalCarrier",
                OCI.GroupPreferredCarrierNameModify,
                is_complex=True,
            ),
        )


class GroupRoutePointAddDNISRequest(OCIRequest):
    """
    Add a Route Point DNIS.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
        dnis_phone_number (str): dnisPhoneNumber *Optional*
        extension (str): extension *Optional*
        use_custom_clid_settings (bool): useCustomCLIDSettings
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        use_custom_dnis_announcement_settings (bool): useCustomDnisAnnouncementSettings
        allow_outgoing_acd_call (bool): allowOutgoingACDCall
    """

    __slots__: List[str] = [
        "dnis_key",
        "dnis_phone_number",
        "extension",
        "use_custom_clid_settings",
        "calling_line_id_phone_number",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "use_custom_dnis_announcement_settings",
        "allow_outgoing_acd_call",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
            E("dnis_phone_number", "dnisPhoneNumber", str),
            E("extension", "extension", str),
            E(
                "use_custom_clid_settings",
                "useCustomCLIDSettings",
                bool,
                is_required=True,
            ),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E(
                "use_custom_dnis_announcement_settings",
                "useCustomDnisAnnouncementSettings",
                bool,
                is_required=True,
            ),
            E(
                "allow_outgoing_acd_call",
                "allowOutgoingACDCall",
                bool,
                is_required=True,
            ),
        )


class GroupRoutePointDeleteDNISRequest(OCIRequest):
    """
    Delete a route point's DNIS.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=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): serviceProviderId
        group_id (str): groupId
        external_system (str): externalSystem
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_route_point_name (List[OCI.searchCriteriaRoutePointName]):
            searchCriteriaRoutePointName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "external_system",
        "response_size_limit",
        "search_criteria_route_point_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("external_system", "externalSystem", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_route_point_name",
                "searchCriteriaRoutePointName",
                OCI.SearchCriteriaRoutePointName,
                is_complex=True,
                is_array=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 (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupRoutePointGetDNISAnnouncementRequest(OCIRequest):
    """
    Get a route point's DNIS Announcements The response is either a
    `GroupRoutePointGetDNISAnnouncementResponse()` or an `ErrorResponse()`.

    Replaced by: `GroupRoutePointGetDNISAnnouncementRequest19()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupRoutePointGetDNISAnnouncementRequest19(OCIRequest):
    """
    Get a route point's DNIS Announcements The response is either a
    `GroupRoutePointGetDNISAnnouncementResponse19()` or an `ErrorResponse()`.


    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupRoutePointGetDNISAnnouncementRequest20(OCIRequest):
    """
    Get a route point's DNIS Announcements The response is either a
    `GroupRoutePointGetDNISAnnouncementResponse20()` or an `ErrorResponse()`.

    Replaced by: `GroupRoutePointGetDNISAnnouncementRequest22()`

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupRoutePointGetDNISAnnouncementRequest22(OCIRequest):
    """
    Get a route point's DNIS Announcements The response is either a
    `GroupRoutePointGetDNISAnnouncementResponse22()` or an `ErrorResponse()`.


    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
        )


class GroupRoutePointGetDNISRequest(OCIRequest):
    """
    Get a route point's DNIS.

    The response is either a `GroupRoutePointGetDNISResponse()` or an `ErrorResponse()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
    """

    __slots__: List[str] = [
        "dnis_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=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): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_route_point_name (List[OCI.searchCriteriaRoutePointName]):
            searchCriteriaRoutePointName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
        "response_size_limit",
        "search_criteria_route_point_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_route_point_name",
                "searchCriteriaRoutePointName",
                OCI.SearchCriteriaRoutePointName,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupRoutePointModifyActiveInstanceListRequest(OCIRequest):
    """
    Request to set the active status of Route Point instances.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_activation (List[OCI.serviceActivation]): serviceActivation *Optional*
    """

    __slots__: List[str] = [
        "service_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_activation",
                "serviceActivation",
                OCI.ServiceActivation,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupRoutePointModifyDNISRequest(OCIRequest):
    """
    Modify a route point's DNIS settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
        new_dnis_name (str): newDNISName *Optional*
        dnis_phone_number (str): dnisPhoneNumber *Optional*
        extension (str): extension *Optional*
        use_custom_clid_settings (bool): useCustomCLIDSettings *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        use_custom_dnis_announcement_settings (bool): useCustomDnisAnnouncementSettings
            *Optional*
        allow_outgoing_acd_call (bool): allowOutgoingACDCall *Optional*
    """

    __slots__: List[str] = [
        "dnis_key",
        "new_dnis_name",
        "dnis_phone_number",
        "extension",
        "use_custom_clid_settings",
        "calling_line_id_phone_number",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "use_custom_dnis_announcement_settings",
        "allow_outgoing_acd_call",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
            E("new_dnis_name", "newDNISName", str),
            E("dnis_phone_number", "dnisPhoneNumber", str),
            E("extension", "extension", str),
            E("use_custom_clid_settings", "useCustomCLIDSettings", bool),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E(
                "use_custom_dnis_announcement_settings",
                "useCustomDnisAnnouncementSettings",
                bool,
            ),
            E("allow_outgoing_acd_call", "allowOutgoingACDCall", bool),
        )


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): serviceUserId
        enable_call_disposition_codes (bool): enableCallDispositionCodes *Optional*
        include_organization_codes (bool): includeOrganizationCodes *Optional*
        force_use_of_call_disposition_codes (bool): forceUseOfCallDispositionCodes
            *Optional*
        default_call_disposition_code (OCI.defaultCallDispositionCode):
            defaultCallDispositionCode *Optional*
        call_disposition_code_activation (List[OCI.callDispositionCodeActivation]):
            callDispositionCodeActivation *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "enable_call_disposition_codes",
        "include_organization_codes",
        "force_use_of_call_disposition_codes",
        "default_call_disposition_code",
        "call_disposition_code_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("enable_call_disposition_codes", "enableCallDispositionCodes", bool),
            E("include_organization_codes", "includeOrganizationCodes", bool),
            E(
                "force_use_of_call_disposition_codes",
                "forceUseOfCallDispositionCodes",
                bool,
            ),
            E(
                "default_call_disposition_code",
                "defaultCallDispositionCode",
                OCI.CallDispositionCodeWithLevel,
                is_complex=True,
            ),
            E(
                "call_disposition_code_activation",
                "callDispositionCodeActivation",
                OCI.CallDispositionCodeActivation,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (str): eventName
        start_date (str): startDate
        all_day_event (bool): allDayEvent *Optional*
        start_time (OCI.startTime): startTime *Optional*
        end_time (OCI.endTime): endTime *Optional*
        end_date (str): endDate
        recurrence (OCI.recurrence): recurrence *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "schedule_key",
        "event_name",
        "start_date",
        "all_day_event",
        "start_time",
        "end_time",
        "end_date",
        "recurrence",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=True),
            E("start_date", "startDate", str, is_required=True),
            E("all_day_event", "allDayEvent", bool),
            E("start_time", "startTime", OCI.HourMinute, is_complex=True),
            E("end_time", "endTime", OCI.HourMinute, is_complex=True),
            E("end_date", "endDate", str, is_required=True),
            E("recurrence", "recurrence", OCI.Recurrence, is_complex=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): serviceProviderId
        group_id (str): groupId
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (List[str]): eventName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "schedule_key",
        "event_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=True, is_array=True),
        )


class GroupScheduleDeleteListRequest(OCIRequest):
    """
    Delete a list of group schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        schedule_key (List[OCI.scheduleKey]): scheduleKey
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "schedule_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        schedule_key (OCI.scheduleKey): scheduleKey
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "schedule_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=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): serviceProviderId
        group_id (str): groupId
        schedule_key (OCI.scheduleKey): scheduleKey
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "schedule_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=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): serviceProviderId
        group_id (str): groupId
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (str): eventName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "schedule_key",
        "event_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_schedule_name (OCI.sortByScheduleName): sortByScheduleName *Optional*
        search_criteria_schedule_name (List[OCI.searchCriteriaScheduleName]):
            searchCriteriaScheduleName *Optional*
        search_criteria_exact_schedule_type (List[OCI.searchCriteriaExactScheduleType]):
            searchCriteriaExactScheduleType *Optional*
        search_criteria_exact_schedule_level (List[OCI.searchCriteriaExactScheduleLevel]):
            searchCriteriaExactScheduleLevel *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_by_schedule_name",
        "search_criteria_schedule_name",
        "search_criteria_exact_schedule_type",
        "search_criteria_exact_schedule_level",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_schedule_name",
                "sortByScheduleName",
                OCI.SortByScheduleName,
                is_complex=True,
            ),
            E(
                "search_criteria_schedule_name",
                "searchCriteriaScheduleName",
                OCI.SearchCriteriaScheduleName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_schedule_type",
                "searchCriteriaExactScheduleType",
                OCI.SearchCriteriaExactScheduleType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_schedule_level",
                "searchCriteriaExactScheduleLevel",
                OCI.SearchCriteriaExactScheduleLevel,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (str): eventName
        new_event_name (str): newEventName *Optional*
        start_date (str): startDate *Optional*
        all_day_event (bool): allDayEvent *Optional*
        start_time (OCI.startTime): startTime *Optional*
        end_time (OCI.endTime): endTime *Optional*
        end_date (str): endDate *Optional*
        recurrence (OCI.recurrence): recurrence *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "schedule_key",
        "event_name",
        "new_event_name",
        "start_date",
        "all_day_event",
        "start_time",
        "end_time",
        "end_date",
        "recurrence",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=True),
            E("new_event_name", "newEventName", str),
            E("start_date", "startDate", str),
            E("all_day_event", "allDayEvent", bool),
            E("start_time", "startTime", OCI.HourMinute, is_complex=True),
            E("end_time", "endTime", OCI.HourMinute, is_complex=True),
            E("end_date", "endDate", str),
            E("recurrence", "recurrence", OCI.Recurrence, is_complex=True),
        )


class GroupScheduleModifyRequest(OCIRequest):
    """
    Modify a group schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        schedule_key (OCI.scheduleKey): scheduleKey
        new_schedule_name (str): newScheduleName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "schedule_key",
        "new_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("new_schedule_name", "newScheduleName", str),
        )


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): serviceProviderId
        group_id (str): groupId
        schedule_key (OCI.scheduleKey): scheduleKey
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "schedule_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        new_name (str): newName *Optional*
        user_id_list (OCI.userIdList): userIdList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "new_name",
        "user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("user_id_list", "userIdList", OCI.ReplacementUserIdList, is_complex=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_exact_device_type (OCI.searchCriteriaExactDeviceType):
            searchCriteriaExactDeviceType *Optional*
        search_criteria_exact_device_level (OCI.searchCriteriaExactDeviceLevel):
            searchCriteriaExactDeviceLevel *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_exact_device_type",
        "search_criteria_exact_device_level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_device_type",
                "searchCriteriaExactDeviceType",
                OCI.SearchCriteriaExactDeviceType,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_level",
                "searchCriteriaExactDeviceLevel",
                OCI.SearchCriteriaExactDeviceLevel,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        devices (List[OCI.devices]): devices
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "devices",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "devices",
                "devices",
                OCI.AccessDevice,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class GroupSessionAdmissionControlGroupAddRequest(OCIRequest):
    """
    Request to add a session admission control group for the group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        max_session (int): maxSession
        max_user_originating_sessions (int): maxUserOriginatingSessions *Optional*
        max_user_terminating_sessions (int): maxUserTerminatingSessions *Optional*
        reserved_session (int): reservedSession
        reserved_user_originating_sessions (int): reservedUserOriginatingSessions
            *Optional*
        reserved_user_terminating_sessions (int): reservedUserTerminatingSessions
            *Optional*
        become_default_group (bool): becomeDefaultGroup
        count_intra_sac_group_sessions (bool): countIntraSACGroupSessions
        devices (List[OCI.devices]): devices *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "max_session",
        "max_user_originating_sessions",
        "max_user_terminating_sessions",
        "reserved_session",
        "reserved_user_originating_sessions",
        "reserved_user_terminating_sessions",
        "become_default_group",
        "count_intra_sac_group_sessions",
        "devices",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("max_session", "maxSession", int, is_required=True),
            E("max_user_originating_sessions", "maxUserOriginatingSessions", int),
            E("max_user_terminating_sessions", "maxUserTerminatingSessions", int),
            E("reserved_session", "reservedSession", int, is_required=True),
            E(
                "reserved_user_originating_sessions",
                "reservedUserOriginatingSessions",
                int,
            ),
            E(
                "reserved_user_terminating_sessions",
                "reservedUserTerminatingSessions",
                int,
            ),
            E("become_default_group", "becomeDefaultGroup", bool, is_required=True),
            E(
                "count_intra_sac_group_sessions",
                "countIntraSACGroupSessions",
                bool,
                is_required=True,
            ),
            E("devices", "devices", OCI.AccessDevice, is_complex=True, is_array=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        max_session (int): maxSession
        max_user_originating_sessions (int): maxUserOriginatingSessions *Optional*
        max_user_terminating_sessions (int): maxUserTerminatingSessions *Optional*
        reserved_session (int): reservedSession
        reserved_user_originating_sessions (int): reservedUserOriginatingSessions
            *Optional*
        reserved_user_terminating_sessions (int): reservedUserTerminatingSessions
            *Optional*
        become_default_group (bool): becomeDefaultGroup
        count_intra_sac_group_sessions (bool): countIntraSACGroupSessions
        devices (List[OCI.devices]): devices *Optional*
        block_emergency_and_repair_calls_due_to_sac_limits (bool):
            blockEmergencyAndRepairCallsDueToSACLimits
        media_group_name (str): mediaGroupName *Optional*
        access_info_pattern (str): accessInfoPattern *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "max_session",
        "max_user_originating_sessions",
        "max_user_terminating_sessions",
        "reserved_session",
        "reserved_user_originating_sessions",
        "reserved_user_terminating_sessions",
        "become_default_group",
        "count_intra_sac_group_sessions",
        "devices",
        "block_emergency_and_repair_calls_due_to_sac_limits",
        "media_group_name",
        "access_info_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("max_session", "maxSession", int, is_required=True),
            E("max_user_originating_sessions", "maxUserOriginatingSessions", int),
            E("max_user_terminating_sessions", "maxUserTerminatingSessions", int),
            E("reserved_session", "reservedSession", int, is_required=True),
            E(
                "reserved_user_originating_sessions",
                "reservedUserOriginatingSessions",
                int,
            ),
            E(
                "reserved_user_terminating_sessions",
                "reservedUserTerminatingSessions",
                int,
            ),
            E("become_default_group", "becomeDefaultGroup", bool, is_required=True),
            E(
                "count_intra_sac_group_sessions",
                "countIntraSACGroupSessions",
                bool,
                is_required=True,
            ),
            E("devices", "devices", OCI.AccessDevice, is_complex=True, is_array=True),
            E(
                "block_emergency_and_repair_calls_due_to_sac_limits",
                "blockEmergencyAndRepairCallsDueToSACLimits",
                bool,
                is_required=True,
            ),
            E("media_group_name", "mediaGroupName", str),
            E("access_info_pattern", "accessInfoPattern", str),
        )


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): serviceProviderId
        group_id (str): groupId
        name (str): name
        devices (List[OCI.devices]): devices
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "devices",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "devices",
                "devices",
                OCI.AccessDevice,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class GroupTimeScheduleAddRequest(OCIRequest):
    """
    Add a time schedule to a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        time_schedule_name (str): timeScheduleName
        time_interval01 (OCI.timeInterval01): timeInterval01 *Optional*
        time_interval02 (OCI.timeInterval02): timeInterval02 *Optional*
        time_interval03 (OCI.timeInterval03): timeInterval03 *Optional*
        time_interval04 (OCI.timeInterval04): timeInterval04 *Optional*
        time_interval05 (OCI.timeInterval05): timeInterval05 *Optional*
        time_interval06 (OCI.timeInterval06): timeInterval06 *Optional*
        time_interval07 (OCI.timeInterval07): timeInterval07 *Optional*
        time_interval08 (OCI.timeInterval08): timeInterval08 *Optional*
        time_interval09 (OCI.timeInterval09): timeInterval09 *Optional*
        time_interval10 (OCI.timeInterval10): timeInterval10 *Optional*
        time_interval11 (OCI.timeInterval11): timeInterval11 *Optional*
        time_interval12 (OCI.timeInterval12): timeInterval12 *Optional*
        time_interval13 (OCI.timeInterval13): timeInterval13 *Optional*
        time_interval14 (OCI.timeInterval14): timeInterval14 *Optional*
        time_interval15 (OCI.timeInterval15): timeInterval15 *Optional*
        time_interval16 (OCI.timeInterval16): timeInterval16 *Optional*
        time_interval17 (OCI.timeInterval17): timeInterval17 *Optional*
        time_interval18 (OCI.timeInterval18): timeInterval18 *Optional*
        time_interval19 (OCI.timeInterval19): timeInterval19 *Optional*
        time_interval20 (OCI.timeInterval20): timeInterval20 *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "time_schedule_name",
        "time_interval01",
        "time_interval02",
        "time_interval03",
        "time_interval04",
        "time_interval05",
        "time_interval06",
        "time_interval07",
        "time_interval08",
        "time_interval09",
        "time_interval10",
        "time_interval11",
        "time_interval12",
        "time_interval13",
        "time_interval14",
        "time_interval15",
        "time_interval16",
        "time_interval17",
        "time_interval18",
        "time_interval19",
        "time_interval20",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("time_schedule_name", "timeScheduleName", str, is_required=True),
            E("time_interval01", "timeInterval01", OCI.TimeInterval, is_complex=True),
            E("time_interval02", "timeInterval02", OCI.TimeInterval, is_complex=True),
            E("time_interval03", "timeInterval03", OCI.TimeInterval, is_complex=True),
            E("time_interval04", "timeInterval04", OCI.TimeInterval, is_complex=True),
            E("time_interval05", "timeInterval05", OCI.TimeInterval, is_complex=True),
            E("time_interval06", "timeInterval06", OCI.TimeInterval, is_complex=True),
            E("time_interval07", "timeInterval07", OCI.TimeInterval, is_complex=True),
            E("time_interval08", "timeInterval08", OCI.TimeInterval, is_complex=True),
            E("time_interval09", "timeInterval09", OCI.TimeInterval, is_complex=True),
            E("time_interval10", "timeInterval10", OCI.TimeInterval, is_complex=True),
            E("time_interval11", "timeInterval11", OCI.TimeInterval, is_complex=True),
            E("time_interval12", "timeInterval12", OCI.TimeInterval, is_complex=True),
            E("time_interval13", "timeInterval13", OCI.TimeInterval, is_complex=True),
            E("time_interval14", "timeInterval14", OCI.TimeInterval, is_complex=True),
            E("time_interval15", "timeInterval15", OCI.TimeInterval, is_complex=True),
            E("time_interval16", "timeInterval16", OCI.TimeInterval, is_complex=True),
            E("time_interval17", "timeInterval17", OCI.TimeInterval, is_complex=True),
            E("time_interval18", "timeInterval18", OCI.TimeInterval, is_complex=True),
            E("time_interval19", "timeInterval19", OCI.TimeInterval, is_complex=True),
            E("time_interval20", "timeInterval20", OCI.TimeInterval, is_complex=True),
        )


class GroupTimeScheduleModifyRequest(OCIRequest):
    """
    Modify a specified time schedule in a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        time_schedule_name (str): timeScheduleName
        new_time_schedule_name (str): newTimeScheduleName *Optional*
        time_interval01 (OCI.timeInterval01): timeInterval01 *Optional*
        time_interval02 (OCI.timeInterval02): timeInterval02 *Optional*
        time_interval03 (OCI.timeInterval03): timeInterval03 *Optional*
        time_interval04 (OCI.timeInterval04): timeInterval04 *Optional*
        time_interval05 (OCI.timeInterval05): timeInterval05 *Optional*
        time_interval06 (OCI.timeInterval06): timeInterval06 *Optional*
        time_interval07 (OCI.timeInterval07): timeInterval07 *Optional*
        time_interval08 (OCI.timeInterval08): timeInterval08 *Optional*
        time_interval09 (OCI.timeInterval09): timeInterval09 *Optional*
        time_interval10 (OCI.timeInterval10): timeInterval10 *Optional*
        time_interval11 (OCI.timeInterval11): timeInterval11 *Optional*
        time_interval12 (OCI.timeInterval12): timeInterval12 *Optional*
        time_interval13 (OCI.timeInterval13): timeInterval13 *Optional*
        time_interval14 (OCI.timeInterval14): timeInterval14 *Optional*
        time_interval15 (OCI.timeInterval15): timeInterval15 *Optional*
        time_interval16 (OCI.timeInterval16): timeInterval16 *Optional*
        time_interval17 (OCI.timeInterval17): timeInterval17 *Optional*
        time_interval18 (OCI.timeInterval18): timeInterval18 *Optional*
        time_interval19 (OCI.timeInterval19): timeInterval19 *Optional*
        time_interval20 (OCI.timeInterval20): timeInterval20 *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "time_schedule_name",
        "new_time_schedule_name",
        "time_interval01",
        "time_interval02",
        "time_interval03",
        "time_interval04",
        "time_interval05",
        "time_interval06",
        "time_interval07",
        "time_interval08",
        "time_interval09",
        "time_interval10",
        "time_interval11",
        "time_interval12",
        "time_interval13",
        "time_interval14",
        "time_interval15",
        "time_interval16",
        "time_interval17",
        "time_interval18",
        "time_interval19",
        "time_interval20",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("time_schedule_name", "timeScheduleName", str, is_required=True),
            E("new_time_schedule_name", "newTimeScheduleName", str),
            E("time_interval01", "timeInterval01", OCI.TimeInterval, is_complex=True),
            E("time_interval02", "timeInterval02", OCI.TimeInterval, is_complex=True),
            E("time_interval03", "timeInterval03", OCI.TimeInterval, is_complex=True),
            E("time_interval04", "timeInterval04", OCI.TimeInterval, is_complex=True),
            E("time_interval05", "timeInterval05", OCI.TimeInterval, is_complex=True),
            E("time_interval06", "timeInterval06", OCI.TimeInterval, is_complex=True),
            E("time_interval07", "timeInterval07", OCI.TimeInterval, is_complex=True),
            E("time_interval08", "timeInterval08", OCI.TimeInterval, is_complex=True),
            E("time_interval09", "timeInterval09", OCI.TimeInterval, is_complex=True),
            E("time_interval10", "timeInterval10", OCI.TimeInterval, is_complex=True),
            E("time_interval11", "timeInterval11", OCI.TimeInterval, is_complex=True),
            E("time_interval12", "timeInterval12", OCI.TimeInterval, is_complex=True),
            E("time_interval13", "timeInterval13", OCI.TimeInterval, is_complex=True),
            E("time_interval14", "timeInterval14", OCI.TimeInterval, is_complex=True),
            E("time_interval15", "timeInterval15", OCI.TimeInterval, is_complex=True),
            E("time_interval16", "timeInterval16", OCI.TimeInterval, is_complex=True),
            E("time_interval17", "timeInterval17", OCI.TimeInterval, is_complex=True),
            E("time_interval18", "timeInterval18", OCI.TimeInterval, is_complex=True),
            E("time_interval19", "timeInterval19", OCI.TimeInterval, is_complex=True),
            E("time_interval20", "timeInterval20", OCI.TimeInterval, is_complex=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 (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest14sp4(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse14sp4()` or an
    `ErrorResponse()`.

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest14sp5(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse14sp5()` 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".

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest14sp9(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse14sp9()` 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".

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest15(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse15()` 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".

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest15sp2(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse15sp2()` 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".

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest17(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse17()` 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".

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest17sp3(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse17sp3()` 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".
    Replaced by: `GroupTrunkGroupGetInstanceRequest17sp4()`

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest17sp4(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse17sp4()` 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 (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest19(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse19()` 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". Replaced by
    `GroupTrunkGroupGetInstanceRequest19sp1()`.

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest19V2(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse19V2()` 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". Replaced by
    GroupTrunkGroupGetInstanceRequest19sp1V2.

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest19sp1(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse19sp1()` 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". Replaced by
    GroupTrunkGroupGetInstanceRequest19sp1V2.

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest20sp1(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse20sp1()` 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". Replaced by:
    `GroupTrunkGroupGetInstanceRequest21()`

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupGetInstanceRequest21(OCIRequest):
    """
    Get a Trunk Group Instance's profile.

    The response is either a `GroupTrunkGroupGetInstanceResponse21()` 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". Replaced by:
    `GroupTrunkGroupGetInstanceResponse23()`

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=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 (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupModifyInstanceRequest14sp4(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 response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
        new_name (str): newName *Optional*
        pilot_user_id (str): pilotUserId *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls *Optional*
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting *Optional*
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
            *Optional*
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
            *Optional*
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        unreachable_destination_trap_initial_calls (int):
            unreachableDestinationTrapInitialCalls *Optional*
        unreachable_destination_trap_offset_calls (int):
            unreachableDestinationTrapOffsetCalls *Optional*
        invitation_timeout (int): invitationTimeout *Optional*
        require_authentication (bool): requireAuthentication *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id_list (OCI.hostedUserIdList): hostedUserIdList *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        include_trunk_group_identity (bool): includeTrunkGroupIdentity *Optional*
        include_dtg_identity (bool): includeDtgIdentity *Optional*
        enable_network_address_identity (bool): enableNetworkAddressIdentity *Optional*
        allow_unscreened_calls (bool): allowUnscreenedCalls *Optional*
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls *Optional*
        use_pilot_user_calling_line_identity (bool): usePilotUserCallingLineIdentity
            *Optional*
        use_pilot_user_charge_number (bool): usePilotUserChargeNumber *Optional*
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
    """

    __slots__: List[str] = [
        "trunk_group_key",
        "new_name",
        "pilot_user_id",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "unreachable_destination_trap_initial_calls",
        "unreachable_destination_trap_offset_calls",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id_list",
        "trunk_group_identity",
        "otg_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "use_pilot_user_calling_line_identity",
        "use_pilot_user_charge_number",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
            E("new_name", "newName", str),
            E("pilot_user_id", "pilotUserId", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "unreachable_destination_trap_initial_calls",
                "unreachableDestinationTrapInitialCalls",
                int,
            ),
            E(
                "unreachable_destination_trap_offset_calls",
                "unreachableDestinationTrapOffsetCalls",
                int,
            ),
            E("invitation_timeout", "invitationTimeout", int),
            E("require_authentication", "requireAuthentication", bool),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E(
                "hosted_user_id_list",
                "hostedUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E("include_trunk_group_identity", "includeTrunkGroupIdentity", bool),
            E("include_dtg_identity", "includeDtgIdentity", bool),
            E("enable_network_address_identity", "enableNetworkAddressIdentity", bool),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
            ),
            E(
                "use_pilot_user_calling_line_identity",
                "usePilotUserCallingLineIdentity",
                bool,
            ),
            E("use_pilot_user_charge_number", "usePilotUserChargeNumber", bool),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
        )


class GroupTrunkGroupModifyInstanceRequest15(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.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by
    `GroupTrunkGroupModifyInstanceRequest19sp1()`.

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
        new_name (str): newName *Optional*
        pilot_user_id (str): pilotUserId *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls *Optional*
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting *Optional*
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
            *Optional*
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
            *Optional*
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout *Optional*
        require_authentication (bool): requireAuthentication *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id_list (OCI.hostedUserIdList): hostedUserIdList *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        allow_termination_to_trunk_group_identity (bool):
            allowTerminationToTrunkGroupIdentity *Optional*
        allow_termination_to_dtg_identity (bool): allowTerminationToDtgIdentity *Optional*
        include_trunk_group_identity (bool): includeTrunkGroupIdentity *Optional*
        include_dtg_identity (bool): includeDtgIdentity *Optional*
        include_trunk_group_identity_for_network_calls (bool):
            includeTrunkGroupIdentityForNetworkCalls *Optional*
        include_otg_identity_for_network_calls (bool): includeOtgIdentityForNetworkCalls
            *Optional*
        enable_network_address_identity (bool): enableNetworkAddressIdentity *Optional*
        allow_unscreened_calls (bool): allowUnscreenedCalls *Optional*
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls *Optional*
        pilot_user_calling_line_identity_policy (str): pilotUserCallingLineIdentityPolicy
            *Optional*
        pilot_user_charge_number_policy (str): pilotUserChargeNumberPolicy *Optional*
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
        peering_domain (str): peeringDomain *Optional*
        route_to_peering_domain (bool): routeToPeeringDomain *Optional*
        prefix_enabled (bool): prefixEnabled *Optional*
        prefix (str): prefix *Optional*
        stateful_rerouting_enabled (bool): statefulReroutingEnabled *Optional*
        send_continuous_options_message (bool): sendContinuousOptionsMessage *Optional*
        continuous_options_sending_interval_seconds (int):
            continuousOptionsSendingIntervalSeconds *Optional*
        failure_options_sending_interval_seconds (int):
            failureOptionsSendingIntervalSeconds *Optional*
        failure_threshold_counter (int): failureThresholdCounter *Optional*
        success_threshold_counter (int): successThresholdCounter *Optional*
        invite_failure_threshold_counter (int): inviteFailureThresholdCounter *Optional*
        invite_failure_threshold_window_seconds (int): inviteFailureThresholdWindowSeconds
            *Optional*
        pilot_user_calling_line_asserted_identity_policy (str):
            pilotUserCallingLineAssertedIdentityPolicy *Optional*
        use_system_calling_line_asserted_identity_policy (bool):
            useSystemCallingLineAssertedIdentityPolicy *Optional*
        pilot_user_call_optimization_policy (str): pilotUserCallOptimizationPolicy
            *Optional*
    """

    __slots__: List[str] = [
        "trunk_group_key",
        "new_name",
        "pilot_user_id",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id_list",
        "trunk_group_identity",
        "otg_dtg_identity",
        "allow_termination_to_trunk_group_identity",
        "allow_termination_to_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "include_trunk_group_identity_for_network_calls",
        "include_otg_identity_for_network_calls",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "pilot_user_calling_line_identity_policy",
        "pilot_user_charge_number_policy",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
        "peering_domain",
        "route_to_peering_domain",
        "prefix_enabled",
        "prefix",
        "stateful_rerouting_enabled",
        "send_continuous_options_message",
        "continuous_options_sending_interval_seconds",
        "failure_options_sending_interval_seconds",
        "failure_threshold_counter",
        "success_threshold_counter",
        "invite_failure_threshold_counter",
        "invite_failure_threshold_window_seconds",
        "pilot_user_calling_line_asserted_identity_policy",
        "use_system_calling_line_asserted_identity_policy",
        "pilot_user_call_optimization_policy",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
            E("new_name", "newName", str),
            E("pilot_user_id", "pilotUserId", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int),
            E("require_authentication", "requireAuthentication", bool),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E(
                "hosted_user_id_list",
                "hostedUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "allow_termination_to_trunk_group_identity",
                "allowTerminationToTrunkGroupIdentity",
                bool,
            ),
            E(
                "allow_termination_to_dtg_identity",
                "allowTerminationToDtgIdentity",
                bool,
            ),
            E("include_trunk_group_identity", "includeTrunkGroupIdentity", bool),
            E("include_dtg_identity", "includeDtgIdentity", bool),
            E(
                "include_trunk_group_identity_for_network_calls",
                "includeTrunkGroupIdentityForNetworkCalls",
                bool,
            ),
            E(
                "include_otg_identity_for_network_calls",
                "includeOtgIdentityForNetworkCalls",
                bool,
            ),
            E("enable_network_address_identity", "enableNetworkAddressIdentity", bool),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
            ),
            E(
                "pilot_user_calling_line_identity_policy",
                "pilotUserCallingLineIdentityPolicy",
                str,
            ),
            E("pilot_user_charge_number_policy", "pilotUserChargeNumberPolicy", str),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("peering_domain", "peeringDomain", str),
            E("route_to_peering_domain", "routeToPeeringDomain", bool),
            E("prefix_enabled", "prefixEnabled", bool),
            E("prefix", "prefix", str),
            E("stateful_rerouting_enabled", "statefulReroutingEnabled", bool),
            E("send_continuous_options_message", "sendContinuousOptionsMessage", bool),
            E(
                "continuous_options_sending_interval_seconds",
                "continuousOptionsSendingIntervalSeconds",
                int,
            ),
            E(
                "failure_options_sending_interval_seconds",
                "failureOptionsSendingIntervalSeconds",
                int,
            ),
            E("failure_threshold_counter", "failureThresholdCounter", int),
            E("success_threshold_counter", "successThresholdCounter", int),
            E("invite_failure_threshold_counter", "inviteFailureThresholdCounter", int),
            E(
                "invite_failure_threshold_window_seconds",
                "inviteFailureThresholdWindowSeconds",
                int,
            ),
            E(
                "pilot_user_calling_line_asserted_identity_policy",
                "pilotUserCallingLineAssertedIdentityPolicy",
                str,
            ),
            E(
                "use_system_calling_line_asserted_identity_policy",
                "useSystemCallingLineAssertedIdentityPolicy",
                bool,
            ),
            E(
                "pilot_user_call_optimization_policy",
                "pilotUserCallOptimizationPolicy",
                str,
            ),
        )


class GroupTrunkGroupModifyInstanceRequest19sp1(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()`. Replaced by:
    `GroupTrunkGroupModifyInstanceRequest20sp1()`

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
        new_name (str): newName *Optional*
        pilot_user_id (str): pilotUserId *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls *Optional*
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting *Optional*
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
            *Optional*
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
            *Optional*
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout *Optional*
        require_authentication (bool): requireAuthentication *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id_list (OCI.hostedUserIdList): hostedUserIdList *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        allow_termination_to_trunk_group_identity (bool):
            allowTerminationToTrunkGroupIdentity *Optional*
        allow_termination_to_dtg_identity (bool): allowTerminationToDtgIdentity *Optional*
        include_trunk_group_identity (bool): includeTrunkGroupIdentity *Optional*
        include_dtg_identity (bool): includeDtgIdentity *Optional*
        include_trunk_group_identity_for_network_calls (bool):
            includeTrunkGroupIdentityForNetworkCalls *Optional*
        include_otg_identity_for_network_calls (bool): includeOtgIdentityForNetworkCalls
            *Optional*
        enable_network_address_identity (bool): enableNetworkAddressIdentity *Optional*
        allow_unscreened_calls (bool): allowUnscreenedCalls *Optional*
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls *Optional*
        pilot_user_calling_line_identity_for_external_calls_policy (str):
            pilotUserCallingLineIdentityForExternalCallsPolicy *Optional*
        pilot_user_charge_number_policy (str): pilotUserChargeNumberPolicy *Optional*
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
        peering_domain (str): peeringDomain *Optional*
        route_to_peering_domain (bool): routeToPeeringDomain *Optional*
        prefix_enabled (bool): prefixEnabled *Optional*
        prefix (str): prefix *Optional*
        stateful_rerouting_enabled (bool): statefulReroutingEnabled *Optional*
        send_continuous_options_message (bool): sendContinuousOptionsMessage *Optional*
        continuous_options_sending_interval_seconds (int):
            continuousOptionsSendingIntervalSeconds *Optional*
        failure_options_sending_interval_seconds (int):
            failureOptionsSendingIntervalSeconds *Optional*
        failure_threshold_counter (int): failureThresholdCounter *Optional*
        success_threshold_counter (int): successThresholdCounter *Optional*
        invite_failure_threshold_counter (int): inviteFailureThresholdCounter *Optional*
        invite_failure_threshold_window_seconds (int): inviteFailureThresholdWindowSeconds
            *Optional*
        pilot_user_calling_line_asserted_identity_policy (str):
            pilotUserCallingLineAssertedIdentityPolicy *Optional*
        use_system_calling_line_asserted_identity_policy (bool):
            useSystemCallingLineAssertedIdentityPolicy *Optional*
        pilot_user_call_optimization_policy (str): pilotUserCallOptimizationPolicy
            *Optional*
        clid_source_for_screened_calls_policy (str): clidSourceForScreenedCallsPolicy
            *Optional*
        use_system_clid_source_for_screened_calls_policy (bool):
            useSystemCLIDSourceForScreenedCallsPolicy *Optional*
        user_lookup_policy (str): userLookupPolicy *Optional*
        use_system_user_lookup_policy (bool): useSystemUserLookupPolicy *Optional*
        pilot_user_calling_line_identity_for_emergency_calls_policy (str):
            pilotUserCallingLineIdentityForEmergencyCallsPolicy *Optional*
        implicit_registration_set_support_policy (str):
            implicitRegistrationSetSupportPolicy *Optional*
        use_system_implicit_registration_set_support_policy (bool):
            useSystemImplicitRegistrationSetSupportPolicy *Optional*
        sip_identity_for_pilot_and_proxy_trunk_modes_policy (str):
            sipIdentityForPilotAndProxyTrunkModesPolicy *Optional*
        use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy (bool):
            useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy *Optional*
        use_system_support_connected_identity_policy (bool):
            useSystemSupportConnectedIdentityPolicy *Optional*
        support_connected_identity_policy (str): supportConnectedIdentityPolicy *Optional*
        use_system_options_message_response_status_codes (bool):
            useSystemOptionsMessageResponseStatusCodes *Optional*
        delete_options_message_response_status_code (List[str]):
            deleteOptionsMessageResponseStatusCode *Optional*
    """

    __slots__: List[str] = [
        "trunk_group_key",
        "new_name",
        "pilot_user_id",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id_list",
        "trunk_group_identity",
        "otg_dtg_identity",
        "allow_termination_to_trunk_group_identity",
        "allow_termination_to_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "include_trunk_group_identity_for_network_calls",
        "include_otg_identity_for_network_calls",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "pilot_user_calling_line_identity_for_external_calls_policy",
        "pilot_user_charge_number_policy",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
        "peering_domain",
        "route_to_peering_domain",
        "prefix_enabled",
        "prefix",
        "stateful_rerouting_enabled",
        "send_continuous_options_message",
        "continuous_options_sending_interval_seconds",
        "failure_options_sending_interval_seconds",
        "failure_threshold_counter",
        "success_threshold_counter",
        "invite_failure_threshold_counter",
        "invite_failure_threshold_window_seconds",
        "pilot_user_calling_line_asserted_identity_policy",
        "use_system_calling_line_asserted_identity_policy",
        "pilot_user_call_optimization_policy",
        "clid_source_for_screened_calls_policy",
        "use_system_clid_source_for_screened_calls_policy",
        "user_lookup_policy",
        "use_system_user_lookup_policy",
        "pilot_user_calling_line_identity_for_emergency_calls_policy",
        "implicit_registration_set_support_policy",
        "use_system_implicit_registration_set_support_policy",
        "sip_identity_for_pilot_and_proxy_trunk_modes_policy",
        "use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy",
        "use_system_support_connected_identity_policy",
        "support_connected_identity_policy",
        "use_system_options_message_response_status_codes",
        "delete_options_message_response_status_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
            E("new_name", "newName", str),
            E("pilot_user_id", "pilotUserId", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int),
            E("require_authentication", "requireAuthentication", bool),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E(
                "hosted_user_id_list",
                "hostedUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "allow_termination_to_trunk_group_identity",
                "allowTerminationToTrunkGroupIdentity",
                bool,
            ),
            E(
                "allow_termination_to_dtg_identity",
                "allowTerminationToDtgIdentity",
                bool,
            ),
            E("include_trunk_group_identity", "includeTrunkGroupIdentity", bool),
            E("include_dtg_identity", "includeDtgIdentity", bool),
            E(
                "include_trunk_group_identity_for_network_calls",
                "includeTrunkGroupIdentityForNetworkCalls",
                bool,
            ),
            E(
                "include_otg_identity_for_network_calls",
                "includeOtgIdentityForNetworkCalls",
                bool,
            ),
            E("enable_network_address_identity", "enableNetworkAddressIdentity", bool),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
            ),
            E(
                "pilot_user_calling_line_identity_for_external_calls_policy",
                "pilotUserCallingLineIdentityForExternalCallsPolicy",
                str,
            ),
            E("pilot_user_charge_number_policy", "pilotUserChargeNumberPolicy", str),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("peering_domain", "peeringDomain", str),
            E("route_to_peering_domain", "routeToPeeringDomain", bool),
            E("prefix_enabled", "prefixEnabled", bool),
            E("prefix", "prefix", str),
            E("stateful_rerouting_enabled", "statefulReroutingEnabled", bool),
            E("send_continuous_options_message", "sendContinuousOptionsMessage", bool),
            E(
                "continuous_options_sending_interval_seconds",
                "continuousOptionsSendingIntervalSeconds",
                int,
            ),
            E(
                "failure_options_sending_interval_seconds",
                "failureOptionsSendingIntervalSeconds",
                int,
            ),
            E("failure_threshold_counter", "failureThresholdCounter", int),
            E("success_threshold_counter", "successThresholdCounter", int),
            E("invite_failure_threshold_counter", "inviteFailureThresholdCounter", int),
            E(
                "invite_failure_threshold_window_seconds",
                "inviteFailureThresholdWindowSeconds",
                int,
            ),
            E(
                "pilot_user_calling_line_asserted_identity_policy",
                "pilotUserCallingLineAssertedIdentityPolicy",
                str,
            ),
            E(
                "use_system_calling_line_asserted_identity_policy",
                "useSystemCallingLineAssertedIdentityPolicy",
                bool,
            ),
            E(
                "pilot_user_call_optimization_policy",
                "pilotUserCallOptimizationPolicy",
                str,
            ),
            E(
                "clid_source_for_screened_calls_policy",
                "clidSourceForScreenedCallsPolicy",
                str,
            ),
            E(
                "use_system_clid_source_for_screened_calls_policy",
                "useSystemCLIDSourceForScreenedCallsPolicy",
                bool,
            ),
            E("user_lookup_policy", "userLookupPolicy", str),
            E("use_system_user_lookup_policy", "useSystemUserLookupPolicy", bool),
            E(
                "pilot_user_calling_line_identity_for_emergency_calls_policy",
                "pilotUserCallingLineIdentityForEmergencyCallsPolicy",
                str,
            ),
            E(
                "implicit_registration_set_support_policy",
                "implicitRegistrationSetSupportPolicy",
                str,
            ),
            E(
                "use_system_implicit_registration_set_support_policy",
                "useSystemImplicitRegistrationSetSupportPolicy",
                bool,
            ),
            E(
                "sip_identity_for_pilot_and_proxy_trunk_modes_policy",
                "sipIdentityForPilotAndProxyTrunkModesPolicy",
                str,
            ),
            E(
                "use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy",
                "useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy",
                bool,
            ),
            E(
                "use_system_support_connected_identity_policy",
                "useSystemSupportConnectedIdentityPolicy",
                bool,
            ),
            E(
                "support_connected_identity_policy",
                "supportConnectedIdentityPolicy",
                str,
            ),
            E(
                "use_system_options_message_response_status_codes",
                "useSystemOptionsMessageResponseStatusCodes",
                bool,
            ),
            E(
                "delete_options_message_response_status_code",
                "deleteOptionsMessageResponseStatusCode",
                str,
                is_array=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 (OCI.trunkGroupKey): trunkGroupKey
        new_name (str): newName *Optional*
        pilot_user_id (str): pilotUserId *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls *Optional*
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting *Optional*
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
            *Optional*
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
            *Optional*
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout *Optional*
        require_authentication (bool): requireAuthentication *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id_list (OCI.hostedUserIdList): hostedUserIdList *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        allow_termination_to_trunk_group_identity (bool):
            allowTerminationToTrunkGroupIdentity *Optional*
        allow_termination_to_dtg_identity (bool): allowTerminationToDtgIdentity *Optional*
        include_trunk_group_identity (bool): includeTrunkGroupIdentity *Optional*
        include_dtg_identity (bool): includeDtgIdentity *Optional*
        include_trunk_group_identity_for_network_calls (bool):
            includeTrunkGroupIdentityForNetworkCalls *Optional*
        include_otg_identity_for_network_calls (bool): includeOtgIdentityForNetworkCalls
            *Optional*
        enable_network_address_identity (bool): enableNetworkAddressIdentity *Optional*
        allow_unscreened_calls (bool): allowUnscreenedCalls *Optional*
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls *Optional*
        pilot_user_calling_line_identity_for_external_calls_policy (str):
            pilotUserCallingLineIdentityForExternalCallsPolicy *Optional*
        pilot_user_charge_number_policy (str): pilotUserChargeNumberPolicy *Optional*
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
        peering_domain (str): peeringDomain *Optional*
        route_to_peering_domain (bool): routeToPeeringDomain *Optional*
        prefix_enabled (bool): prefixEnabled *Optional*
        prefix (str): prefix *Optional*
        stateful_rerouting_enabled (bool): statefulReroutingEnabled *Optional*
        send_continuous_options_message (bool): sendContinuousOptionsMessage *Optional*
        continuous_options_sending_interval_seconds (int):
            continuousOptionsSendingIntervalSeconds *Optional*
        failure_options_sending_interval_seconds (int):
            failureOptionsSendingIntervalSeconds *Optional*
        failure_threshold_counter (int): failureThresholdCounter *Optional*
        success_threshold_counter (int): successThresholdCounter *Optional*
        invite_failure_threshold_counter (int): inviteFailureThresholdCounter *Optional*
        invite_failure_threshold_window_seconds (int): inviteFailureThresholdWindowSeconds
            *Optional*
        pilot_user_calling_line_asserted_identity_policy (str):
            pilotUserCallingLineAssertedIdentityPolicy *Optional*
        use_system_calling_line_asserted_identity_policy (bool):
            useSystemCallingLineAssertedIdentityPolicy *Optional*
        pilot_user_call_optimization_policy (str): pilotUserCallOptimizationPolicy
            *Optional*
        clid_source_for_screened_calls_policy (str): clidSourceForScreenedCallsPolicy
            *Optional*
        use_system_clid_source_for_screened_calls_policy (bool):
            useSystemCLIDSourceForScreenedCallsPolicy *Optional*
        user_lookup_policy (str): userLookupPolicy *Optional*
        use_system_user_lookup_policy (bool): useSystemUserLookupPolicy *Optional*
        pilot_user_calling_line_identity_for_emergency_calls_policy (str):
            pilotUserCallingLineIdentityForEmergencyCallsPolicy *Optional*
        implicit_registration_set_support_policy (str):
            implicitRegistrationSetSupportPolicy *Optional*
        use_system_implicit_registration_set_support_policy (bool):
            useSystemImplicitRegistrationSetSupportPolicy *Optional*
        sip_identity_for_pilot_and_proxy_trunk_modes_policy (str):
            sipIdentityForPilotAndProxyTrunkModesPolicy *Optional*
        use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy (bool):
            useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy *Optional*
        use_system_support_connected_identity_policy (bool):
            useSystemSupportConnectedIdentityPolicy *Optional*
        support_connected_identity_policy (str): supportConnectedIdentityPolicy *Optional*
        use_system_options_message_response_status_codes (bool):
            useSystemOptionsMessageResponseStatusCodes *Optional*
        delete_options_message_response_status_code (List[str]):
            deleteOptionsMessageResponseStatusCode *Optional*
    """

    __slots__: List[str] = [
        "trunk_group_key",
        "new_name",
        "pilot_user_id",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id_list",
        "trunk_group_identity",
        "otg_dtg_identity",
        "allow_termination_to_trunk_group_identity",
        "allow_termination_to_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "include_trunk_group_identity_for_network_calls",
        "include_otg_identity_for_network_calls",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "pilot_user_calling_line_identity_for_external_calls_policy",
        "pilot_user_charge_number_policy",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
        "peering_domain",
        "route_to_peering_domain",
        "prefix_enabled",
        "prefix",
        "stateful_rerouting_enabled",
        "send_continuous_options_message",
        "continuous_options_sending_interval_seconds",
        "failure_options_sending_interval_seconds",
        "failure_threshold_counter",
        "success_threshold_counter",
        "invite_failure_threshold_counter",
        "invite_failure_threshold_window_seconds",
        "pilot_user_calling_line_asserted_identity_policy",
        "use_system_calling_line_asserted_identity_policy",
        "pilot_user_call_optimization_policy",
        "clid_source_for_screened_calls_policy",
        "use_system_clid_source_for_screened_calls_policy",
        "user_lookup_policy",
        "use_system_user_lookup_policy",
        "pilot_user_calling_line_identity_for_emergency_calls_policy",
        "implicit_registration_set_support_policy",
        "use_system_implicit_registration_set_support_policy",
        "sip_identity_for_pilot_and_proxy_trunk_modes_policy",
        "use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy",
        "use_system_support_connected_identity_policy",
        "support_connected_identity_policy",
        "use_system_options_message_response_status_codes",
        "delete_options_message_response_status_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
            E("new_name", "newName", str),
            E("pilot_user_id", "pilotUserId", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int),
            E("require_authentication", "requireAuthentication", bool),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E(
                "hosted_user_id_list",
                "hostedUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "allow_termination_to_trunk_group_identity",
                "allowTerminationToTrunkGroupIdentity",
                bool,
            ),
            E(
                "allow_termination_to_dtg_identity",
                "allowTerminationToDtgIdentity",
                bool,
            ),
            E("include_trunk_group_identity", "includeTrunkGroupIdentity", bool),
            E("include_dtg_identity", "includeDtgIdentity", bool),
            E(
                "include_trunk_group_identity_for_network_calls",
                "includeTrunkGroupIdentityForNetworkCalls",
                bool,
            ),
            E(
                "include_otg_identity_for_network_calls",
                "includeOtgIdentityForNetworkCalls",
                bool,
            ),
            E("enable_network_address_identity", "enableNetworkAddressIdentity", bool),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
            ),
            E(
                "pilot_user_calling_line_identity_for_external_calls_policy",
                "pilotUserCallingLineIdentityForExternalCallsPolicy",
                str,
            ),
            E("pilot_user_charge_number_policy", "pilotUserChargeNumberPolicy", str),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("peering_domain", "peeringDomain", str),
            E("route_to_peering_domain", "routeToPeeringDomain", bool),
            E("prefix_enabled", "prefixEnabled", bool),
            E("prefix", "prefix", str),
            E("stateful_rerouting_enabled", "statefulReroutingEnabled", bool),
            E("send_continuous_options_message", "sendContinuousOptionsMessage", bool),
            E(
                "continuous_options_sending_interval_seconds",
                "continuousOptionsSendingIntervalSeconds",
                int,
            ),
            E(
                "failure_options_sending_interval_seconds",
                "failureOptionsSendingIntervalSeconds",
                int,
            ),
            E("failure_threshold_counter", "failureThresholdCounter", int),
            E("success_threshold_counter", "successThresholdCounter", int),
            E("invite_failure_threshold_counter", "inviteFailureThresholdCounter", int),
            E(
                "invite_failure_threshold_window_seconds",
                "inviteFailureThresholdWindowSeconds",
                int,
            ),
            E(
                "pilot_user_calling_line_asserted_identity_policy",
                "pilotUserCallingLineAssertedIdentityPolicy",
                str,
            ),
            E(
                "use_system_calling_line_asserted_identity_policy",
                "useSystemCallingLineAssertedIdentityPolicy",
                bool,
            ),
            E(
                "pilot_user_call_optimization_policy",
                "pilotUserCallOptimizationPolicy",
                str,
            ),
            E(
                "clid_source_for_screened_calls_policy",
                "clidSourceForScreenedCallsPolicy",
                str,
            ),
            E(
                "use_system_clid_source_for_screened_calls_policy",
                "useSystemCLIDSourceForScreenedCallsPolicy",
                bool,
            ),
            E("user_lookup_policy", "userLookupPolicy", str),
            E("use_system_user_lookup_policy", "useSystemUserLookupPolicy", bool),
            E(
                "pilot_user_calling_line_identity_for_emergency_calls_policy",
                "pilotUserCallingLineIdentityForEmergencyCallsPolicy",
                str,
            ),
            E(
                "implicit_registration_set_support_policy",
                "implicitRegistrationSetSupportPolicy",
                str,
            ),
            E(
                "use_system_implicit_registration_set_support_policy",
                "useSystemImplicitRegistrationSetSupportPolicy",
                bool,
            ),
            E(
                "sip_identity_for_pilot_and_proxy_trunk_modes_policy",
                "sipIdentityForPilotAndProxyTrunkModesPolicy",
                str,
            ),
            E(
                "use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy",
                "useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy",
                bool,
            ),
            E(
                "use_system_support_connected_identity_policy",
                "useSystemSupportConnectedIdentityPolicy",
                bool,
            ),
            E(
                "support_connected_identity_policy",
                "supportConnectedIdentityPolicy",
                str,
            ),
            E(
                "use_system_options_message_response_status_codes",
                "useSystemOptionsMessageResponseStatusCodes",
                bool,
            ),
            E(
                "delete_options_message_response_status_code",
                "deleteOptionsMessageResponseStatusCode",
                str,
                is_array=True,
            ),
        )


class GroupTrunkGroupModifyRequest(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): serviceProviderId
        group_id (str): groupId
        max_active_calls (OCI.maxActiveCalls): maxActiveCalls *Optional*
        bursting_max_active_calls (OCI.burstingMaxActiveCalls): burstingMaxActiveCalls
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "max_active_calls",
        "bursting_max_active_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "max_active_calls",
                "maxActiveCalls",
                OCI.UnboundedNonNegativeInt,
                is_complex=True,
            ),
            E(
                "bursting_max_active_calls",
                "burstingMaxActiveCalls",
                OCI.UnboundedNonNegativeInt,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        max_active_calls (int): maxActiveCalls *Optional*
        bursting_max_active_calls (OCI.burstingMaxActiveCalls): burstingMaxActiveCalls
            *Optional*
        number_of_bursting_btl_us (int): numberOfBurstingBTLUs *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "max_active_calls",
        "bursting_max_active_calls",
        "number_of_bursting_btl_us",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("max_active_calls", "maxActiveCalls", int),
            E(
                "bursting_max_active_calls",
                "burstingMaxActiveCalls",
                OCI.UnboundedNonNegativeInt,
                is_complex=True,
            ),
            E("number_of_bursting_btl_us", "numberOfBurstingBTLUs", int),
        )


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 (OCI.trunkGroupKey): trunkGroupKey
        status_code (List[str]): statusCode
    """

    __slots__: List[str] = [
        "trunk_group_key",
        "status_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
            E("status_code", "statusCode", str, is_required=True, is_array=True),
        )


class GroupTrunkGroupSecurityClassificationGetRequest(OCIRequest):
    """
    Get a trunk group's Security Classifications configuration.

    The response is either `GroupTrunkGroupSecurityClassificationGetResponse()` or
    `ErrorResponse()`.

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=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 (OCI.trunkGroupKey): trunkGroupKey
        default_security_classification (str): defaultSecurityClassification
    """

    __slots__: List[str] = [
        "trunk_group_key",
        "default_security_classification",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
            E(
                "default_security_classification",
                "defaultSecurityClassification",
                str,
                is_required=True,
            ),
        )


class GroupTrunkGroupStirShakenGetRequest(OCIRequest):
    """
    Get Group Trunk Group Stir Shaken service settings.

    The response is either `GroupTrunkGroupStirShakenGetResponse()` or `ErrorResponse()`.

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupTrunkGroupStirShakenModifyRequest(OCIRequest):
    """
    Modify group trunk group Stir Shaken service settings.


    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
        use_parent_level_settings (bool): useParentLevelSettings *Optional*
        signing_policy (str): signingPolicy *Optional*
        tagging_policy (str): taggingPolicy *Optional*
        signing_service_url (str): signingServiceURL *Optional*
        tag_from_or_pai (str): tagFromOrPAI *Optional*
        verstat_tag (str): verstatTag *Optional*
        use_os_value_for_orig_id (bool): useOSValueForOrigId *Optional*
        orig_uuid (str): origUUID *Optional*
        attestation_level (str): attestationLevel *Optional*
        enable_signing_for_unscreened_trunk_group_originations (bool):
            enableSigningForUnscreenedTrunkGroupOriginations *Optional*
        enable_tagging_for_unscreened_trunk_group_originations (bool):
            enableTaggingForUnscreenedTrunkGroupOriginations *Optional*
        unscreened_trunk_group_origination_attestation_level (str):
            unscreenedTrunkGroupOriginationAttestationLevel *Optional*
    """

    __slots__: List[str] = [
        "trunk_group_key",
        "use_parent_level_settings",
        "signing_policy",
        "tagging_policy",
        "signing_service_url",
        "tag_from_or_pai",
        "verstat_tag",
        "use_os_value_for_orig_id",
        "orig_uuid",
        "attestation_level",
        "enable_signing_for_unscreened_trunk_group_originations",
        "enable_tagging_for_unscreened_trunk_group_originations",
        "unscreened_trunk_group_origination_attestation_level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
            E("use_parent_level_settings", "useParentLevelSettings", bool),
            E("signing_policy", "signingPolicy", str),
            E("tagging_policy", "taggingPolicy", str),
            E("signing_service_url", "signingServiceURL", str),
            E("tag_from_or_pai", "tagFromOrPAI", str),
            E("verstat_tag", "verstatTag", str),
            E("use_os_value_for_orig_id", "useOSValueForOrigId", bool),
            E("orig_uuid", "origUUID", str),
            E("attestation_level", "attestationLevel", str),
            E(
                "enable_signing_for_unscreened_trunk_group_originations",
                "enableSigningForUnscreenedTrunkGroupOriginations",
                bool,
            ),
            E(
                "enable_tagging_for_unscreened_trunk_group_originations",
                "enableTaggingForUnscreenedTrunkGroupOriginations",
                bool,
            ),
            E(
                "unscreened_trunk_group_origination_attestation_level",
                "unscreenedTrunkGroupOriginationAttestationLevel",
                str,
            ),
        )


class GroupTrunkGroupUserCreationTaskAddRequest14sp4(OCIRequest):
    """
    Add a user creation task for a trunk group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
        task_name (str): taskName
        user_id_format (str): userIdFormat
        user_id_domain (str): userIdDomain
        populate_extension (bool): populateExtension
        line_port_format (str): linePortFormat
        line_port_domain (str): linePortDomain
        populate_contact (bool): populateContact
        contact_format (str): contactFormat *Optional*
        contact_domain (str): contactDomain *Optional*
        user_phone_numbers (OCI.userPhoneNumbers): userPhoneNumbers *Optional*
        user_extensions (OCI.userExtensions): userExtensions *Optional*
        service_pack_name (List[str]): servicePackName *Optional*
        user_service (List[str]): userService *Optional*
    """

    __slots__: List[str] = [
        "trunk_group_key",
        "task_name",
        "user_id_format",
        "user_id_domain",
        "populate_extension",
        "line_port_format",
        "line_port_domain",
        "populate_contact",
        "contact_format",
        "contact_domain",
        "user_phone_numbers",
        "user_extensions",
        "service_pack_name",
        "user_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
            E("task_name", "taskName", str, is_required=True),
            E("user_id_format", "userIdFormat", str, is_required=True),
            E("user_id_domain", "userIdDomain", str, is_required=True),
            E("populate_extension", "populateExtension", bool, is_required=True),
            E("line_port_format", "linePortFormat", str, is_required=True),
            E("line_port_domain", "linePortDomain", str, is_required=True),
            E("populate_contact", "populateContact", bool, is_required=True),
            E("contact_format", "contactFormat", str),
            E("contact_domain", "contactDomain", str),
            E(
                "user_phone_numbers",
                "userPhoneNumbers",
                str,
                is_complex=True,
            ),  # unknown
            E("user_extensions", "userExtensions", str, is_complex=True),  # unknown
            E("service_pack_name", "servicePackName", str, is_array=True),
            E("user_service", "userService", str, is_array=True),
        )


class GroupTrunkGroupUserCreationTaskDeleteRequest14sp4(OCIRequest):
    """
    Delete a user creation task for a trunk group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        trunk_group_key (OCI.trunkGroupKey): trunkGroupKey
        task_name (str): taskName
    """

    __slots__: List[str] = [
        "trunk_group_key",
        "task_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
            E("task_name", "taskName", str, is_required=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 (OCI.trunkGroupKey): trunkGroupKey
    """

    __slots__: List[str] = [
        "trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=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 (OCI.trunkGroupKey): trunkGroupKey
        task_name (str): taskName
    """

    __slots__: List[str] = [
        "trunk_group_key",
        "task_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
            E("task_name", "taskName", str, is_required=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_virtual_on_net_call_type_name
            (OCI.searchCriteriaExactVirtualOnNetCallTypeName):
            searchCriteriaExactVirtualOnNetCallTypeName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_exact_virtual_on_net_call_type_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_virtual_on_net_call_type_name",
                "searchCriteriaExactVirtualOnNetCallTypeName",
                OCI.SearchCriteriaExactVirtualOnNetCallTypeName,
                is_complex=True,
            ),
        )


class GroupVoiceMessagingGroupModifyVoicePortalBrandingRequest(OCIRequest):
    """
    Modify the group's voice portal branding settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `GroupVoiceMessagingGroupModifyVoicePortalBrandingRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        voice_portal_greeting_selection (str): voicePortalGreetingSelection *Optional*
        voice_portal_greeting_file (OCI.voicePortalGreetingFile): voicePortalGreetingFile
            *Optional*
        voice_messaging_greeting_selection (str): voiceMessagingGreetingSelection
            *Optional*
        voice_messaging_greeting_file (OCI.voiceMessagingGreetingFile):
            voiceMessagingGreetingFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "voice_portal_greeting_selection",
        "voice_portal_greeting_file",
        "voice_messaging_greeting_selection",
        "voice_messaging_greeting_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("voice_portal_greeting_selection", "voicePortalGreetingSelection", str),
            E(
                "voice_portal_greeting_file",
                "voicePortalGreetingFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "voice_messaging_greeting_selection",
                "voiceMessagingGreetingSelection",
                str,
            ),
            E(
                "voice_messaging_greeting_file",
                "voiceMessagingGreetingFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
        )


class GroupVoiceMessagingGroupModifyVoicePortalBrandingRequest16(OCIRequest):
    """
    Modify the group's voice portal branding settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `GroupVoiceMessagingGroupModifyVoicePortalBrandingRequest20()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        voice_portal_greeting_selection (str): voicePortalGreetingSelection *Optional*
        voice_portal_greeting_file (OCI.voicePortalGreetingFile): voicePortalGreetingFile
            *Optional*
        voice_messaging_greeting_selection (str): voiceMessagingGreetingSelection
            *Optional*
        voice_messaging_greeting_file (OCI.voiceMessagingGreetingFile):
            voiceMessagingGreetingFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "voice_portal_greeting_selection",
        "voice_portal_greeting_file",
        "voice_messaging_greeting_selection",
        "voice_messaging_greeting_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("voice_portal_greeting_selection", "voicePortalGreetingSelection", str),
            E(
                "voice_portal_greeting_file",
                "voicePortalGreetingFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E(
                "voice_messaging_greeting_selection",
                "voiceMessagingGreetingSelection",
                str,
            ),
            E(
                "voice_messaging_greeting_file",
                "voiceMessagingGreetingFile",
                OCI.LabeledMediaFileResource,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        voice_portal_greeting_selection (str): voicePortalGreetingSelection *Optional*
        voice_portal_greeting_file (OCI.voicePortalGreetingFile): voicePortalGreetingFile
            *Optional*
        voice_messaging_greeting_selection (str): voiceMessagingGreetingSelection
            *Optional*
        voice_messaging_greeting_file (OCI.voiceMessagingGreetingFile):
            voiceMessagingGreetingFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "voice_portal_greeting_selection",
        "voice_portal_greeting_file",
        "voice_messaging_greeting_selection",
        "voice_messaging_greeting_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("voice_portal_greeting_selection", "voicePortalGreetingSelection", str),
            E(
                "voice_portal_greeting_file",
                "voicePortalGreetingFile",
                OCI.AnnouncementFileKey,
                is_complex=True,
            ),
            E(
                "voice_messaging_greeting_selection",
                "voiceMessagingGreetingSelection",
                str,
            ),
            E(
                "voice_messaging_greeting_file",
                "voiceMessagingGreetingFile",
                OCI.AnnouncementFileKey,
                is_complex=True,
            ),
        )


class GroupVoiceXmlModifyActiveInstanceListRequest(OCIRequest):
    """
    Request to set the active status of VoiceXML instances.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_activation (List[OCI.serviceActivation]): serviceActivation *Optional*
    """

    __slots__: List[str] = [
        "service_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "service_activation",
                "serviceActivation",
                OCI.ServiceActivation,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        group_xsi_policy_profile (str): groupXsiPolicyProfile *Optional*
        user_xsi_policy_profile (OCI.userXsiPolicyProfile): userXsiPolicyProfile
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_xsi_policy_profile",
        "user_xsi_policy_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_xsi_policy_profile", "groupXsiPolicyProfile", str),
            E(
                "user_xsi_policy_profile",
                "userXsiPolicyProfile",
                OCI.XsiPolicyProfileAssignEntry,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        xsi_policy_profile (OCI.xsiPolicyProfile): xsiPolicyProfile
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "xsi_policy_profile",
        "response_size_limit",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "xsi_policy_profile",
                "xsiPolicyProfile",
                OCI.XsiPolicyProfileKey,
                is_complex=True,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        user_xsi_policy_profile (OCI.userXsiPolicyProfile): userXsiPolicyProfile
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "user_xsi_policy_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "user_xsi_policy_profile",
                "userXsiPolicyProfile",
                OCI.XsiPolicyProfileUnassignEntry,
                is_complex=True,
            ),
        )


class PasswordGenerateRequest(OCIRequest):
    """
    Generate passwords based on the corresponding password/passcode rules.

    The response is either `PasswordGenerateResponse()` or `ErrorResponse()`.

    Attributes:
        system_administrator_password (OCI.systemAdministratorPassword):
            systemAdministratorPassword *Optional*
        service_provider_administrator_password
            (OCI.serviceProviderAdministratorPassword):
            serviceProviderAdministratorPassword *Optional*
        group_administrator_password (OCI.groupAdministratorPassword):
            groupAdministratorPassword *Optional*
        user_password (OCI.userPassword): userPassword *Optional*
        access_device_authentication_password (OCI.accessDeviceAuthenticationPassword):
            accessDeviceAuthenticationPassword *Optional*
        trunk_group_authentication_password (OCI.trunkGroupAuthenticationPassword):
            trunkGroupAuthenticationPassword *Optional*
    """

    __slots__: List[str] = [
        "system_administrator_password",
        "service_provider_administrator_password",
        "group_administrator_password",
        "user_password",
        "access_device_authentication_password",
        "trunk_group_authentication_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "system_administrator_password",
                "systemAdministratorPassword",
                OCI.PasswordForSystemAdministrator,
                is_complex=True,
            ),
            E(
                "service_provider_administrator_password",
                "serviceProviderAdministratorPassword",
                OCI.PasswordForServiceProviderAdministrator,
                is_complex=True,
            ),
            E(
                "group_administrator_password",
                "groupAdministratorPassword",
                OCI.PasswordForGroupAdministrator,
                is_complex=True,
            ),
            E("user_password", "userPassword", OCI.PasswordForUser, is_complex=True),
            E(
                "access_device_authentication_password",
                "accessDeviceAuthenticationPassword",
                OCI.PasswordForAccessDevice,
                is_complex=True,
            ),
            E(
                "trunk_group_authentication_password",
                "trunkGroupAuthenticationPassword",
                OCI.PasswordForTrunkGroup,
                is_complex=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 (int): responseSizeLimit *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
        search_criteria_reseller_name (List[OCI.searchCriteriaResellerName]):
            searchCriteriaResellerName *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_reseller_id",
        "search_criteria_reseller_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_reseller_name",
                "searchCriteriaResellerName",
                OCI.SearchCriteriaResellerName,
                is_complex=True,
                is_array=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): resellerId
        network_class_of_service (List[str]): networkClassOfService *Optional*
        default_network_class_of_service (OCI.defaultNetworkClassOfService):
            defaultNetworkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "network_class_of_service",
        "default_network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("network_class_of_service", "networkClassOfService", str, is_array=True),
            E(
                "default_network_class_of_service",
                "defaultNetworkClassOfService",
                OCI.DefaultNetworkClassOfService,
                is_complex=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): resellerId
        network_class_of_service (str): networkClassOfService
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_service_provider_name
            (List[OCI.searchCriteriaServiceProviderName]):
            searchCriteriaServiceProviderName *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "network_class_of_service",
        "response_size_limit",
        "search_criteria_service_provider_id",
        "search_criteria_service_provider_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E(
                "network_class_of_service",
                "networkClassOfService",
                str,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_service_provider_name",
                "searchCriteriaServiceProviderName",
                OCI.SearchCriteriaServiceProviderName,
                is_complex=True,
                is_array=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): resellerId
        network_class_of_service (List[str]): networkClassOfService *Optional*
        default_network_class_of_service (OCI.defaultNetworkClassOfService):
            defaultNetworkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "network_class_of_service",
        "default_network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("network_class_of_service", "networkClassOfService", str, is_array=True),
            E(
                "default_network_class_of_service",
                "defaultNetworkClassOfService",
                OCI.DefaultNetworkClassOfService,
                is_complex=True,
            ),
        )


class ResellerServiceAuthorizationModifyRequest(OCIRequest):
    """
    Modify the reseller service authorization file.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
        service_offering (OCI.serviceOffering): serviceOffering *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "service_offering",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E("service_offering", "serviceOffering", OCI.FileResource, is_complex=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): resellerId
        sp_xsi_policy_profile (OCI.spXsiPolicyProfile): spXsiPolicyProfile *Optional*
        group_xsi_policy_profile (OCI.groupXsiPolicyProfile): groupXsiPolicyProfile
            *Optional*
        user_xsi_policy_profile (OCI.userXsiPolicyProfile): userXsiPolicyProfile
            *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "sp_xsi_policy_profile",
        "group_xsi_policy_profile",
        "user_xsi_policy_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E(
                "sp_xsi_policy_profile",
                "spXsiPolicyProfile",
                OCI.XsiPolicyProfileAssignEntry,
                is_complex=True,
            ),
            E(
                "group_xsi_policy_profile",
                "groupXsiPolicyProfile",
                OCI.XsiPolicyProfileAssignEntry,
                is_complex=True,
            ),
            E(
                "user_xsi_policy_profile",
                "userXsiPolicyProfile",
                OCI.XsiPolicyProfileAssignEntry,
                is_complex=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): resellerId
        xsi_policy_profile (OCI.xsiPolicyProfile): xsiPolicyProfile
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_service_provider_name
            (List[OCI.searchCriteriaServiceProviderName]):
            searchCriteriaServiceProviderName *Optional*
        search_criteria_exact_organization_type (OCI.searchCriteriaExactOrganizationType):
            searchCriteriaExactOrganizationType *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "xsi_policy_profile",
        "response_size_limit",
        "search_criteria_service_provider_id",
        "search_criteria_service_provider_name",
        "search_criteria_exact_organization_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E(
                "xsi_policy_profile",
                "xsiPolicyProfile",
                OCI.XsiPolicyProfileKey,
                is_complex=True,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_service_provider_name",
                "searchCriteriaServiceProviderName",
                OCI.SearchCriteriaServiceProviderName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_organization_type",
                "searchCriteriaExactOrganizationType",
                OCI.SearchCriteriaExactOrganizationType,
                is_complex=True,
            ),
        )


class ResellerXsiPolicyProfileUnassignListRequest(OCIRequest):
    """
    Unassign a list of Xsi policy profile.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        reseller_id (str): resellerId
        sp_xsi_policy_profile (OCI.spXsiPolicyProfile): spXsiPolicyProfile *Optional*
        group_xsi_policy_profile (OCI.groupXsiPolicyProfile): groupXsiPolicyProfile
            *Optional*
        user_xsi_policy_profile (OCI.userXsiPolicyProfile): userXsiPolicyProfile
            *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "sp_xsi_policy_profile",
        "group_xsi_policy_profile",
        "user_xsi_policy_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str, is_required=True),
            E(
                "sp_xsi_policy_profile",
                "spXsiPolicyProfile",
                OCI.XsiPolicyProfileUnassignEntry,
                is_complex=True,
            ),
            E(
                "group_xsi_policy_profile",
                "groupXsiPolicyProfile",
                OCI.XsiPolicyProfileUnassignEntry,
                is_complex=True,
            ),
            E(
                "user_xsi_policy_profile",
                "userXsiPolicyProfile",
                OCI.XsiPolicyProfileUnassignEntry,
                is_complex=True,
            ),
        )


class ServiceProviderAccessDeviceAddRequest14(OCIRequest):
    """
    Request to add a service provider access device.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `ServiceProviderAccessDeviceAddRequest22()`

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
        device_type (str): deviceType
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        mobility_manager_provisioning_url (str): mobilityManagerProvisioningURL *Optional*
        mobility_manager_provisioning_user_name (str): mobilityManagerProvisioningUserName
            *Optional*
        mobility_manager_provisioning_password (str): mobilityManagerProvisioningPassword
            *Optional*
        mobility_manager_default_originating_service_key (int):
            mobilityManagerDefaultOriginatingServiceKey *Optional*
        mobility_manager_default_terminating_service_key (int):
            mobilityManagerDefaultTerminatingServiceKey *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "device_type",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "mobility_manager_provisioning_url",
        "mobility_manager_provisioning_user_name",
        "mobility_manager_provisioning_password",
        "mobility_manager_default_originating_service_key",
        "mobility_manager_default_terminating_service_key",
        "use_custom_user_name_password",
        "access_device_credentials",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E(
                "mobility_manager_provisioning_url",
                "mobilityManagerProvisioningURL",
                str,
            ),
            E(
                "mobility_manager_provisioning_user_name",
                "mobilityManagerProvisioningUserName",
                str,
            ),
            E(
                "mobility_manager_provisioning_password",
                "mobilityManagerProvisioningPassword",
                str,
            ),
            E(
                "mobility_manager_default_originating_service_key",
                "mobilityManagerDefaultOriginatingServiceKey",
                int,
            ),
            E(
                "mobility_manager_default_terminating_service_key",
                "mobilityManagerDefaultTerminatingServiceKey",
                int,
            ),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=True,
            ),
        )


class ServiceProviderAccessDeviceAddRequest22(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: useHotline
    hotlineContact serviceProviderExternalId deviceExternalId

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        device_name (str): deviceName *Optional*
        service_provider_external_id (str): serviceProviderExternalId *Optional*
        device_external_id (str): deviceExternalId *Optional*
        device_type (str): deviceType
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        mobility_manager_provisioning_url (str): mobilityManagerProvisioningURL *Optional*
        mobility_manager_provisioning_user_name (str): mobilityManagerProvisioningUserName
            *Optional*
        mobility_manager_provisioning_password (str): mobilityManagerProvisioningPassword
            *Optional*
        mobility_manager_default_originating_service_key (int):
            mobilityManagerDefaultOriginatingServiceKey *Optional*
        mobility_manager_default_terminating_service_key (int):
            mobilityManagerDefaultTerminatingServiceKey *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
        use_hotline (bool): useHotline
        hotline_contact (str): hotlineContact *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "service_provider_external_id",
        "device_external_id",
        "device_type",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "mobility_manager_provisioning_url",
        "mobility_manager_provisioning_user_name",
        "mobility_manager_provisioning_password",
        "mobility_manager_default_originating_service_key",
        "mobility_manager_default_terminating_service_key",
        "use_custom_user_name_password",
        "access_device_credentials",
        "use_hotline",
        "hotline_contact",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("device_name", "deviceName", str),
            E("service_provider_external_id", "serviceProviderExternalId", str),
            E("device_external_id", "deviceExternalId", str),
            E("device_type", "deviceType", str, is_required=True),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E(
                "mobility_manager_provisioning_url",
                "mobilityManagerProvisioningURL",
                str,
            ),
            E(
                "mobility_manager_provisioning_user_name",
                "mobilityManagerProvisioningUserName",
                str,
            ),
            E(
                "mobility_manager_provisioning_password",
                "mobilityManagerProvisioningPassword",
                str,
            ),
            E(
                "mobility_manager_default_originating_service_key",
                "mobilityManagerDefaultOriginatingServiceKey",
                int,
            ),
            E(
                "mobility_manager_default_terminating_service_key",
                "mobilityManagerDefaultTerminatingServiceKey",
                int,
            ),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=True,
            ),
            E("use_hotline", "useHotline", bool, is_required=True),
            E("hotline_contact", "hotlineContact", str),
        )


class ServiceProviderAccessDeviceAddRequest22V2(OCIRequest):
    """
    Request to add a service provider access device.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        device_name (str): deviceName *Optional*
        service_provider_external_id (str): serviceProviderExternalId *Optional*
        device_external_id (str): deviceExternalId *Optional*
        device_type (str): deviceType
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "service_provider_external_id",
        "device_external_id",
        "device_type",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "use_custom_user_name_password",
        "access_device_credentials",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("device_name", "deviceName", str),
            E("service_provider_external_id", "serviceProviderExternalId", str),
            E("device_external_id", "deviceExternalId", str),
            E("device_type", "deviceType", str, is_required=True),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=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): serviceProviderId
        device_name (str): deviceName
        tag (List[OCI.tag]): tag
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "tag",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E(
                "tag",
                "tag",
                OCI.DeviceManagementTag,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class ServiceProviderAccessDeviceFileModifyRequest(OCIRequest):
    """
    Request to modify a specified service provider/enterprise access device file.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `ServiceProviderAccessDeviceFileModifyRequest14sp8()`

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
        file_type (str): fileType
        file_source (str): fileSource *Optional*
        upload_file (OCI.uploadFile): uploadFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "file_type",
        "file_source",
        "upload_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("file_type", "fileType", str, is_required=True),
            E("file_source", "fileSource", str),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=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): serviceProviderId
        device_name (str): deviceName
        file_format (str): fileFormat
        file_source (str): fileSource *Optional*
        upload_file (OCI.uploadFile): uploadFile *Optional*
        extended_capture_enabled (bool): extendedCaptureEnabled *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "file_format",
        "file_source",
        "upload_file",
        "extended_capture_enabled",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("file_source", "fileSource", str),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E("extended_capture_enabled", "extendedCaptureEnabled", bool),
        )


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 (str): serviceProviderId *Optional*
        service_provider_external_id (str): serviceProviderExternalId *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_exact_device_type (OCI.searchCriteriaExactDeviceType):
            searchCriteriaExactDeviceType *Optional*
        search_criteria_access_device_version
            (List[OCI.searchCriteriaAccessDeviceVersion]):
            searchCriteriaAccessDeviceVersion *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_provider_external_id",
        "response_size_limit",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_exact_device_type",
        "search_criteria_access_device_version",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("service_provider_external_id", "serviceProviderExternalId", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_device_type",
                "searchCriteriaExactDeviceType",
                OCI.SearchCriteriaExactDeviceType,
                is_complex=True,
            ),
            E(
                "search_criteria_access_device_version",
                "searchCriteriaAccessDeviceVersion",
                OCI.SearchCriteriaAccessDeviceVersion,
                is_complex=True,
                is_array=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): serviceProviderId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_device_name (OCI.sortByDeviceName): sortByDeviceName *Optional*
        sort_by_device_type (OCI.sortByDeviceType): sortByDeviceType *Optional*
        sort_by_device_net_address (OCI.sortByDeviceNetAddress): sortByDeviceNetAddress
            *Optional*
        sort_by_device_mac_address (OCI.sortByDeviceMACAddress): sortByDeviceMACAddress
            *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_exact_device_type (List[OCI.searchCriteriaExactDeviceType]):
            searchCriteriaExactDeviceType *Optional*
        search_criteria_access_device_version
            (List[OCI.searchCriteriaAccessDeviceVersion]):
            searchCriteriaAccessDeviceVersion *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        get_visual_device_management_api_devices_only (bool):
            getVisualDeviceManagementAPIDevicesOnly *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_paging_control",
        "sort_by_device_name",
        "sort_by_device_type",
        "sort_by_device_net_address",
        "sort_by_device_mac_address",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_exact_device_type",
        "search_criteria_access_device_version",
        "search_criteria_mode_or",
        "get_visual_device_management_api_devices_only",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_device_name",
                "sortByDeviceName",
                OCI.SortByDeviceName,
                is_complex=True,
            ),
            E(
                "sort_by_device_type",
                "sortByDeviceType",
                OCI.SortByDeviceType,
                is_complex=True,
            ),
            E(
                "sort_by_device_net_address",
                "sortByDeviceNetAddress",
                OCI.SortByDeviceNetAddress,
                is_complex=True,
            ),
            E(
                "sort_by_device_mac_address",
                "sortByDeviceMACAddress",
                OCI.SortByDeviceMACAddress,
                is_complex=True,
            ),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_device_type",
                "searchCriteriaExactDeviceType",
                OCI.SearchCriteriaExactDeviceType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_access_device_version",
                "searchCriteriaAccessDeviceVersion",
                OCI.SearchCriteriaAccessDeviceVersion,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "get_visual_device_management_api_devices_only",
                "getVisualDeviceManagementAPIDevicesOnly",
                bool,
            ),
        )


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". It can be linked to only one tree
    device.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
        leaf_device_key (List[OCI.leafDeviceKey]): leafDeviceKey
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "leaf_device_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E(
                "leaf_device_key",
                "leafDeviceKey",
                OCI.AccessDeviceKey,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class ServiceProviderAccessDeviceModifyRequest14(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: useHotline
    hotlineContact deviceExternalId

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        mobility_manager_provisioning_url (str): mobilityManagerProvisioningURL *Optional*
        mobility_manager_provisioning_user_name (str): mobilityManagerProvisioningUserName
            *Optional*
        mobility_manager_provisioning_password (str): mobilityManagerProvisioningPassword
            *Optional*
        mobility_manager_default_originating_service_key (int):
            mobilityManagerDefaultOriginatingServiceKey *Optional*
        mobility_manager_default_terminating_service_key (int):
            mobilityManagerDefaultTerminatingServiceKey *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
        use_hotline (bool): useHotline *Optional*
        hotline_contact (str): hotlineContact *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "device_external_id",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "mobility_manager_provisioning_url",
        "mobility_manager_provisioning_user_name",
        "mobility_manager_provisioning_password",
        "mobility_manager_default_originating_service_key",
        "mobility_manager_default_terminating_service_key",
        "use_custom_user_name_password",
        "access_device_credentials",
        "use_hotline",
        "hotline_contact",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E(
                "mobility_manager_provisioning_url",
                "mobilityManagerProvisioningURL",
                str,
            ),
            E(
                "mobility_manager_provisioning_user_name",
                "mobilityManagerProvisioningUserName",
                str,
            ),
            E(
                "mobility_manager_provisioning_password",
                "mobilityManagerProvisioningPassword",
                str,
            ),
            E(
                "mobility_manager_default_originating_service_key",
                "mobilityManagerDefaultOriginatingServiceKey",
                int,
            ),
            E(
                "mobility_manager_default_terminating_service_key",
                "mobilityManagerDefaultTerminatingServiceKey",
                int,
            ),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=True,
            ),
            E("use_hotline", "useHotline", bool),
            E("hotline_contact", "hotlineContact", str),
        )


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

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "device_external_id",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "use_custom_user_name_password",
        "access_device_credentials",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=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". It can be linked to only one tree
    device.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        leaf_device_key (List[OCI.leafDeviceKey]): leafDeviceKey
    """

    __slots__: List[str] = [
        "leaf_device_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "leaf_device_key",
                "leafDeviceKey",
                OCI.AccessDeviceKey,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class ServiceProviderAddRequest13mp2(OCIRequest):
    """
    Add a service provider or enterprise.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. The following
    elements are only used in Amplify data mode and ignored in AS and XS data mode:
    servicePolicy, callProcessingSliceId, provisioningSliceId, subscriberPartition.  When
    the callProcessingSliceId or provisioningSliceId is not specified in the
    AmplifyDataMode, the default slice Id is assigned to the service provider.  Only
    Provisioning admin and above can change the callProcessingSliceId,
    provisioningSliceId, andsubscriberPartition.  The following elements are only used in
    Amplify and XS data mode and ignored in AS data mode: preferredDataCenter.  Only
    Provisioning admin and above can change the preferredDataCenter.  The following data
    elements are only used in AS data mode: resellerId If reseller administrator sends the
    request, resellerId is ignored.  The reseller administrator's reseller id is used.
    Replaced by: `ServiceProviderConsolidatedAddRequest()` in AS data mode.

    Attributes:
        is_enterprise (bool): isEnterprise *Optional*
        use_custom_routing_profile (bool): useCustomRoutingProfile *Optional*
        service_provider_id (str): serviceProviderId
        default_domain (str): defaultDomain
        service_provider_name (str): serviceProviderName *Optional*
        support_email (str): supportEmail *Optional*
        contact (OCI.contact): contact *Optional*
        address (OCI.address): address *Optional*
        service_policy (str): servicePolicy *Optional*
        call_processing_slice_id (str): callProcessingSliceId *Optional*
        provisioning_slice_id (str): provisioningSliceId *Optional*
        subscriber_partition (str): subscriberPartition *Optional*
        preferred_data_center (str): preferredDataCenter *Optional*
        reseller_id (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "is_enterprise",
        "use_custom_routing_profile",
        "service_provider_id",
        "default_domain",
        "service_provider_name",
        "support_email",
        "contact",
        "address",
        "service_policy",
        "call_processing_slice_id",
        "provisioning_slice_id",
        "subscriber_partition",
        "preferred_data_center",
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("is_enterprise", "isEnterprise", bool),
            E("use_custom_routing_profile", "useCustomRoutingProfile", bool),
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("default_domain", "defaultDomain", str, is_required=True),
            E("service_provider_name", "serviceProviderName", str),
            E("support_email", "supportEmail", str),
            E("contact", "contact", OCI.Contact, is_complex=True),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("service_policy", "servicePolicy", str),
            E("call_processing_slice_id", "callProcessingSliceId", str),
            E("provisioning_slice_id", "provisioningSliceId", str),
            E("subscriber_partition", "subscriberPartition", str),
            E("preferred_data_center", "preferredDataCenter", str),
            E("reseller_id", "resellerId", str),
        )


class ServiceProviderAnswerConfirmationModifyRequest(OCIRequest):
    """
    Modify a service provider or enterprise's answer confirmation settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `ServiceProviderAnswerConfirmationModifyRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        announcement_message_selection (str): announcementMessageSelection *Optional*
        confirmation_message_audio_file (OCI.confirmationMessageAudioFile):
            confirmationMessageAudioFile *Optional*
        confirmation_timout_seconds (int): confirmationTimoutSeconds *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "announcement_message_selection",
        "confirmation_message_audio_file",
        "confirmation_timout_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("announcement_message_selection", "announcementMessageSelection", str),
            E(
                "confirmation_message_audio_file",
                "confirmationMessageAudioFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E("confirmation_timout_seconds", "confirmationTimoutSeconds", int),
        )


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): serviceProviderId
        announcement_message_selection (str): announcementMessageSelection *Optional*
        confirmation_message_audio_file (OCI.confirmationMessageAudioFile):
            confirmationMessageAudioFile *Optional*
        confirmation_timout_seconds (int): confirmationTimoutSeconds *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "announcement_message_selection",
        "confirmation_message_audio_file",
        "confirmation_timout_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("announcement_message_selection", "announcementMessageSelection", str),
            E(
                "confirmation_message_audio_file",
                "confirmationMessageAudioFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E("confirmation_timout_seconds", "confirmationTimoutSeconds", int),
        )


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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_mobile_subscriber_directory_number
            (List[OCI.searchCriteriaMobileSubscriberDirectoryNumber]):
            searchCriteriaMobileSubscriberDirectoryNumber *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_mobile_network (OCI.searchCriteriaExactMobileNetwork):
            searchCriteriaExactMobileNetwork *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_mobile_subscriber_directory_number",
        "search_criteria_group_id",
        "search_criteria_exact_mobile_network",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_mobile_subscriber_directory_number",
                "searchCriteriaMobileSubscriberDirectoryNumber",
                OCI.SearchCriteriaMobileSubscriberDirectoryNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_mobile_network",
                "searchCriteriaExactMobileNetwork",
                OCI.SearchCriteriaExactMobileNetwork,
                is_complex=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): serviceProviderId
        device_type (str): deviceType
        config_file (OCI.configFile): configFile
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
        "config_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E(
                "config_file",
                "configFile",
                OCI.FileResource,
                is_complex=True,
                is_required=True,
            ),
        )


class ServiceProviderCommunicationBarringDigitPatternCriteriaGetPatternListRequest(
    OCIRequest,
):
    """
    Get an existing Digit Pattern Criteria.

    The response is either a
    `ServiceProviderCommunicationBarringDigitPatternCriteriaGetPatternListResponse()` or
    an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_digit_pattern (List[OCI.searchCriteriaDigitPattern]):
            searchCriteriaDigitPattern *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "response_size_limit",
        "search_criteria_digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_digit_pattern",
                "searchCriteriaDigitPattern",
                OCI.SearchCriteriaDigitPattern,
                is_complex=True,
                is_array=True,
            ),
        )


class ServiceProviderCommunicationBarringProfileAddRequest(OCIRequest):
    """
    Add a new Communication Barring Profile.

    The priorities for OriginatingRules, RedirectingRules and IncomingRules are
    requantized to consecutive integers as part of the add.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
        description (str): description *Optional*
        originating_default_action (str): originatingDefaultAction
        originating_default_treatment_id (str): originatingDefaultTreatmentId *Optional*
        originating_default_transfer_number (str): originatingDefaultTransferNumber
            *Optional*
        originating_default_call_timeout (int): originatingDefaultCallTimeout *Optional*
        originating_rule (List[OCI.originatingRule]): originatingRule *Optional*
        redirecting_default_action (str): redirectingDefaultAction
        redirecting_default_call_timeout (int): redirectingDefaultCallTimeout *Optional*
        redirecting_rule (List[OCI.redirectingRule]): redirectingRule *Optional*
        incoming_default_action (str): incomingDefaultAction
        incoming_default_call_timeout (int): incomingDefaultCallTimeout *Optional*
        incoming_rule (List[OCI.incomingRule]): incomingRule *Optional*
        become_default (bool): becomeDefault
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "description",
        "originating_default_action",
        "originating_default_treatment_id",
        "originating_default_transfer_number",
        "originating_default_call_timeout",
        "originating_rule",
        "redirecting_default_action",
        "redirecting_default_call_timeout",
        "redirecting_rule",
        "incoming_default_action",
        "incoming_default_call_timeout",
        "incoming_rule",
        "become_default",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E(
                "originating_default_action",
                "originatingDefaultAction",
                str,
                is_required=True,
            ),
            E("originating_default_treatment_id", "originatingDefaultTreatmentId", str),
            E(
                "originating_default_transfer_number",
                "originatingDefaultTransferNumber",
                str,
            ),
            E("originating_default_call_timeout", "originatingDefaultCallTimeout", int),
            E(
                "originating_rule",
                "originatingRule",
                OCI.ServiceProviderCommunicationBarringHierarchicalOriginatingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "redirecting_default_action",
                "redirectingDefaultAction",
                str,
                is_required=True,
            ),
            E("redirecting_default_call_timeout", "redirectingDefaultCallTimeout", int),
            E(
                "redirecting_rule",
                "redirectingRule",
                OCI.ServiceProviderCommunicationBarringHierarchicalRedirectingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "incoming_default_action",
                "incomingDefaultAction",
                str,
                is_required=True,
            ),
            E("incoming_default_call_timeout", "incomingDefaultCallTimeout", int),
            E(
                "incoming_rule",
                "incomingRule",
                OCI.CommunicationBarringIncomingRule,
                is_complex=True,
                is_array=True,
            ),
            E("become_default", "becomeDefault", bool, is_required=True),
        )


class ServiceProviderCommunicationBarringProfileAddRequest17sp3(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 The following elements are only used in AS data mode and ignored in XS
    data mode callMeNowDefaultCallTimeout callMeNowRule

    Replaced By : `ServiceProviderCommunicationBarringProfileAddRequest19sp1()` in AS data
    mode

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
        description (str): description *Optional*
        originating_default_action (str): originatingDefaultAction
        originating_default_treatment_id (str): originatingDefaultTreatmentId *Optional*
        originating_default_transfer_number (str): originatingDefaultTransferNumber
            *Optional*
        originating_default_call_timeout (int): originatingDefaultCallTimeout *Optional*
        originating_rule (List[OCI.originatingRule]): originatingRule *Optional*
        redirecting_default_action (str): redirectingDefaultAction
        redirecting_default_call_timeout (int): redirectingDefaultCallTimeout *Optional*
        redirecting_rule (List[OCI.redirectingRule]): redirectingRule *Optional*
        call_me_now_default_action (str): callMeNowDefaultAction
        call_me_now_default_call_timeout (int): callMeNowDefaultCallTimeout *Optional*
        call_me_now_rule (List[OCI.callMeNowRule]): callMeNowRule *Optional*
        incoming_default_action (str): incomingDefaultAction
        incoming_default_call_timeout (int): incomingDefaultCallTimeout *Optional*
        incoming_rule (List[OCI.incomingRule]): incomingRule *Optional*
        become_default (bool): becomeDefault
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "description",
        "originating_default_action",
        "originating_default_treatment_id",
        "originating_default_transfer_number",
        "originating_default_call_timeout",
        "originating_rule",
        "redirecting_default_action",
        "redirecting_default_call_timeout",
        "redirecting_rule",
        "call_me_now_default_action",
        "call_me_now_default_call_timeout",
        "call_me_now_rule",
        "incoming_default_action",
        "incoming_default_call_timeout",
        "incoming_rule",
        "become_default",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E(
                "originating_default_action",
                "originatingDefaultAction",
                str,
                is_required=True,
            ),
            E("originating_default_treatment_id", "originatingDefaultTreatmentId", str),
            E(
                "originating_default_transfer_number",
                "originatingDefaultTransferNumber",
                str,
            ),
            E("originating_default_call_timeout", "originatingDefaultCallTimeout", int),
            E(
                "originating_rule",
                "originatingRule",
                OCI.ServiceProviderCommunicationBarringHierarchicalOriginatingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "redirecting_default_action",
                "redirectingDefaultAction",
                str,
                is_required=True,
            ),
            E("redirecting_default_call_timeout", "redirectingDefaultCallTimeout", int),
            E(
                "redirecting_rule",
                "redirectingRule",
                OCI.ServiceProviderCommunicationBarringHierarchicalRedirectingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "call_me_now_default_action",
                "callMeNowDefaultAction",
                str,
                is_required=True,
            ),
            E("call_me_now_default_call_timeout", "callMeNowDefaultCallTimeout", int),
            E(
                "call_me_now_rule",
                "callMeNowRule",
                OCI.ServiceProviderCommunicationBarringHierarchicalCallMeNowRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "incoming_default_action",
                "incomingDefaultAction",
                str,
                is_required=True,
            ),
            E("incoming_default_call_timeout", "incomingDefaultCallTimeout", int),
            E(
                "incoming_rule",
                "incomingRule",
                OCI.CommunicationBarringIncomingRule,
                is_complex=True,
                is_array=True,
            ),
            E("become_default", "becomeDefault", bool, is_required=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): serviceProviderId
        name (str): name
        description (str): description *Optional*
        originating_default_action (str): originatingDefaultAction
        originating_default_treatment_id (str): originatingDefaultTreatmentId *Optional*
        originating_default_transfer_number (str): originatingDefaultTransferNumber
            *Optional*
        originating_default_call_timeout (int): originatingDefaultCallTimeout *Optional*
        originating_rule (List[OCI.originatingRule]): originatingRule *Optional*
        redirecting_default_action (str): redirectingDefaultAction
        redirecting_default_call_timeout (int): redirectingDefaultCallTimeout *Optional*
        redirecting_rule (List[OCI.redirectingRule]): redirectingRule *Optional*
        call_me_now_default_action (str): callMeNowDefaultAction
        call_me_now_default_call_timeout (int): callMeNowDefaultCallTimeout *Optional*
        call_me_now_rule (List[OCI.callMeNowRule]): callMeNowRule *Optional*
        incoming_default_action (str): incomingDefaultAction
        incoming_default_call_timeout (int): incomingDefaultCallTimeout *Optional*
        incoming_rule (List[OCI.incomingRule]): incomingRule *Optional*
        become_default (bool): becomeDefault
        apply_to_attended_call_transfers (bool): applyToAttendedCallTransfers
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "description",
        "originating_default_action",
        "originating_default_treatment_id",
        "originating_default_transfer_number",
        "originating_default_call_timeout",
        "originating_rule",
        "redirecting_default_action",
        "redirecting_default_call_timeout",
        "redirecting_rule",
        "call_me_now_default_action",
        "call_me_now_default_call_timeout",
        "call_me_now_rule",
        "incoming_default_action",
        "incoming_default_call_timeout",
        "incoming_rule",
        "become_default",
        "apply_to_attended_call_transfers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E(
                "originating_default_action",
                "originatingDefaultAction",
                str,
                is_required=True,
            ),
            E("originating_default_treatment_id", "originatingDefaultTreatmentId", str),
            E(
                "originating_default_transfer_number",
                "originatingDefaultTransferNumber",
                str,
            ),
            E("originating_default_call_timeout", "originatingDefaultCallTimeout", int),
            E(
                "originating_rule",
                "originatingRule",
                OCI.ServiceProviderCommunicationBarringHierarchicalOriginatingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "redirecting_default_action",
                "redirectingDefaultAction",
                str,
                is_required=True,
            ),
            E("redirecting_default_call_timeout", "redirectingDefaultCallTimeout", int),
            E(
                "redirecting_rule",
                "redirectingRule",
                OCI.ServiceProviderCommunicationBarringHierarchicalRedirectingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "call_me_now_default_action",
                "callMeNowDefaultAction",
                str,
                is_required=True,
            ),
            E("call_me_now_default_call_timeout", "callMeNowDefaultCallTimeout", int),
            E(
                "call_me_now_rule",
                "callMeNowRule",
                OCI.ServiceProviderCommunicationBarringHierarchicalCallMeNowRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "incoming_default_action",
                "incomingDefaultAction",
                str,
                is_required=True,
            ),
            E("incoming_default_call_timeout", "incomingDefaultCallTimeout", int),
            E(
                "incoming_rule",
                "incomingRule",
                OCI.CommunicationBarringIncomingRule19sp1,
                is_complex=True,
                is_array=True,
            ),
            E("become_default", "becomeDefault", bool, is_required=True),
            E(
                "apply_to_attended_call_transfers",
                "applyToAttendedCallTransfers",
                bool,
                is_required=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): serviceProviderId
        profile (str): profile
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "profile",
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("profile", "profile", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=True,
            ),
        )


class ServiceProviderDeviceManagementEventGetListRequest(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 `ServiceProviderDeviceManagementEventGetListResponse()` or an
    `ErrorResponse()`. Deprecated by:
    `ServiceProviderDeviceManagementEventGetListRequest22()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        event_queue_type (str): eventQueueType *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_exact_device_management_event_status_in_progress_or_pending
            (OCI.searchCriteriaExactDeviceManagementEventStatusInProgressOrPending):
            searchCriteriaExactDeviceManagementEventStatusInProgressOrPending *Optional*
        search_criteria_exact_device_management_event_status_completed
            (OCI.searchCriteriaExactDeviceManagementEventStatusCompleted):
            searchCriteriaExactDeviceManagementEventStatusCompleted *Optional*
        search_criteria_exact_device_management_event_action
            (OCI.searchCriteriaExactDeviceManagementEventAction):
            searchCriteriaExactDeviceManagementEventAction *Optional*
        search_criteria_exact_device_management_event_level
            (OCI.searchCriteriaExactDeviceManagementEventLevel):
            searchCriteriaExactDeviceManagementEventLevel *Optional*
        search_criteria_exact_device_management_event_type
            (OCI.searchCriteriaExactDeviceManagementEventType):
            searchCriteriaExactDeviceManagementEventType *Optional*
        search_criteria_device_management_event_additional_info
            (List[OCI.searchCriteriaDeviceManagementEventAdditionalInfo]):
            searchCriteriaDeviceManagementEventAdditionalInfo *Optional*
        search_criteria_device_management_event_login_id
            (List[OCI.searchCriteriaDeviceManagementEventLoginId]):
            searchCriteriaDeviceManagementEventLoginId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "event_queue_type",
        "response_size_limit",
        "search_criteria_exact_device_management_event_status_in_progress_or_pending",
        "search_criteria_exact_device_management_event_status_completed",
        "search_criteria_exact_device_management_event_action",
        "search_criteria_exact_device_management_event_level",
        "search_criteria_exact_device_management_event_type",
        "search_criteria_device_management_event_additional_info",
        "search_criteria_device_management_event_login_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("event_queue_type", "eventQueueType", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_exact_device_management_event_status_in_progress_or_pending",
                "searchCriteriaExactDeviceManagementEventStatusInProgressOrPending",
                OCI.SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_status_completed",
                "searchCriteriaExactDeviceManagementEventStatusCompleted",
                OCI.SearchCriteriaExactDeviceManagementEventStatusCompleted,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_action",
                "searchCriteriaExactDeviceManagementEventAction",
                OCI.SearchCriteriaExactDeviceManagementEventAction,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_level",
                "searchCriteriaExactDeviceManagementEventLevel",
                OCI.SearchCriteriaExactDeviceManagementEventLevel,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_type",
                "searchCriteriaExactDeviceManagementEventType",
                OCI.SearchCriteriaExactDeviceManagementEventType,
                is_complex=True,
            ),
            E(
                "search_criteria_device_management_event_additional_info",
                "searchCriteriaDeviceManagementEventAdditionalInfo",
                OCI.SearchCriteriaDeviceManagementEventAdditionalInfo,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_management_event_login_id",
                "searchCriteriaDeviceManagementEventLoginId",
                OCI.SearchCriteriaDeviceManagementEventLoginId,
                is_complex=True,
                is_array=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): serviceProviderId
        event_queue_type (str): eventQueueType *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_exact_device_management_event_status_in_progress_or_pending
            (OCI.searchCriteriaExactDeviceManagementEventStatusInProgressOrPending):
            searchCriteriaExactDeviceManagementEventStatusInProgressOrPending *Optional*
        search_criteria_exact_device_management_event_status_completed
            (OCI.searchCriteriaExactDeviceManagementEventStatusCompleted):
            searchCriteriaExactDeviceManagementEventStatusCompleted *Optional*
        search_criteria_exact_device_management_event_action
            (OCI.searchCriteriaExactDeviceManagementEventAction):
            searchCriteriaExactDeviceManagementEventAction *Optional*
        search_criteria_exact_device_management_event_level
            (OCI.searchCriteriaExactDeviceManagementEventLevel):
            searchCriteriaExactDeviceManagementEventLevel *Optional*
        search_criteria_exact_device_management_event_type
            (OCI.searchCriteriaExactDeviceManagementEventType):
            searchCriteriaExactDeviceManagementEventType *Optional*
        search_criteria_device_management_event_additional_info
            (List[OCI.searchCriteriaDeviceManagementEventAdditionalInfo]):
            searchCriteriaDeviceManagementEventAdditionalInfo *Optional*
        search_criteria_device_management_event_login_id
            (List[OCI.searchCriteriaDeviceManagementEventLoginId]):
            searchCriteriaDeviceManagementEventLoginId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "event_queue_type",
        "response_size_limit",
        "search_criteria_exact_device_management_event_status_in_progress_or_pending",
        "search_criteria_exact_device_management_event_status_completed",
        "search_criteria_exact_device_management_event_action",
        "search_criteria_exact_device_management_event_level",
        "search_criteria_exact_device_management_event_type",
        "search_criteria_device_management_event_additional_info",
        "search_criteria_device_management_event_login_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("event_queue_type", "eventQueueType", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_exact_device_management_event_status_in_progress_or_pending",
                "searchCriteriaExactDeviceManagementEventStatusInProgressOrPending",
                OCI.SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_status_completed",
                "searchCriteriaExactDeviceManagementEventStatusCompleted",
                OCI.SearchCriteriaExactDeviceManagementEventStatusCompleted,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_action",
                "searchCriteriaExactDeviceManagementEventAction",
                OCI.SearchCriteriaExactDeviceManagementEventAction,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_level",
                "searchCriteriaExactDeviceManagementEventLevel",
                OCI.SearchCriteriaExactDeviceManagementEventLevel,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_type",
                "searchCriteriaExactDeviceManagementEventType",
                OCI.SearchCriteriaExactDeviceManagementEventType,
                is_complex=True,
            ),
            E(
                "search_criteria_device_management_event_additional_info",
                "searchCriteriaDeviceManagementEventAdditionalInfo",
                OCI.SearchCriteriaDeviceManagementEventAdditionalInfo,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_management_event_login_id",
                "searchCriteriaDeviceManagementEventLoginId",
                OCI.SearchCriteriaDeviceManagementEventLoginId,
                is_complex=True,
                is_array=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): serviceProviderId
        device_type (str): deviceType
        file_format (str): fileFormat
        file_source (str): fileSource *Optional*
        upload_file (OCI.uploadFile): uploadFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_type",
        "file_format",
        "file_source",
        "upload_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("file_source", "fileSource", str),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
        )


class ServiceProviderDialableCallerIDCriteriaModifyRequest(OCIRequest):
    """
    Modify a Dialable Caller ID Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        prefix_digits (str): prefixDigits *Optional*
        match_call_type (OCI.matchCallType): matchCallType *Optional*
        match_alternate_call_indicator (OCI.matchAlternateCallIndicator):
            matchAlternateCallIndicator *Optional*
        match_local_category (bool): matchLocalCategory *Optional*
        match_national_category (bool): matchNationalCategory *Optional*
        match_interlata_category (bool): matchInterlataCategory *Optional*
        match_intralata_category (bool): matchIntralataCategory *Optional*
        match_international_category (bool): matchInternationalCategory *Optional*
        match_private_category (bool): matchPrivateCategory *Optional*
        match_emergency_category (bool): matchEmergencyCategory *Optional*
        match_other_category (bool): matchOtherCategory *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "new_name",
        "description",
        "prefix_digits",
        "match_call_type",
        "match_alternate_call_indicator",
        "match_local_category",
        "match_national_category",
        "match_interlata_category",
        "match_intralata_category",
        "match_international_category",
        "match_private_category",
        "match_emergency_category",
        "match_other_category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E("prefix_digits", "prefixDigits", str),
            E(
                "match_call_type",
                "matchCallType",
                OCI.ReplacementCommunicationBarringCallTypeList,
                is_complex=True,
            ),
            E(
                "match_alternate_call_indicator",
                "matchAlternateCallIndicator",
                OCI.ReplacementCommunicationBarringAlternateCallIndicatorList,
                is_complex=True,
            ),
            E("match_local_category", "matchLocalCategory", bool),
            E("match_national_category", "matchNationalCategory", bool),
            E("match_interlata_category", "matchInterlataCategory", bool),
            E("match_intralata_category", "matchIntralataCategory", bool),
            E("match_international_category", "matchInternationalCategory", bool),
            E("match_private_category", "matchPrivateCategory", bool),
            E("match_emergency_category", "matchEmergencyCategory", bool),
            E("match_other_category", "matchOtherCategory", bool),
        )


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): serviceProviderId
        use_service_provider_criteria (bool): useServiceProviderCriteria *Optional*
        ns_screening_failure_policy (str): nsScreeningFailurePolicy *Optional*
        criteria_priority_order (List[OCI.criteriaPriorityOrder]): criteriaPriorityOrder
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "use_service_provider_criteria",
        "ns_screening_failure_policy",
        "criteria_priority_order",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("use_service_provider_criteria", "useServiceProviderCriteria", bool),
            E("ns_screening_failure_policy", "nsScreeningFailurePolicy", str),
            E(
                "criteria_priority_order",
                "criteriaPriorityOrder",
                OCI.DialableCallerIDCriteriaPriorityOrder,
                is_complex=True,
                is_array=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): serviceProviderId
        phone_number (List[str]): phoneNumber *Optional*
        dn_range (List[OCI.dnRange]): dnRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "phone_number",
        "dn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_array=True),
            E("dn_range", "dnRange", OCI.DNRange, is_complex=True, is_array=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): serviceProviderId
        phone_number (List[str]): phoneNumber *Optional*
        dn_range (List[OCI.dnRange]): dnRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "phone_number",
        "dn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_array=True),
            E("dn_range", "dnRange", OCI.DNRange, is_complex=True, is_array=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): serviceProviderId
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "search_criteria_group_id",
        "search_criteria_dn",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=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): serviceProviderId
        domain (str): domain
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "domain",
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("domain", "domain", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_domain_name (List[OCI.searchCriteriaDomainName]):
            searchCriteriaDomainName *Optional*
        search_criteria_exact_domain_level (OCI.searchCriteriaExactDomainLevel):
            searchCriteriaExactDomainLevel *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_domain_name",
        "search_criteria_exact_domain_level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_domain_name",
                "searchCriteriaDomainName",
                OCI.SearchCriteriaDomainName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_domain_level",
                "searchCriteriaExactDomainLevel",
                OCI.SearchCriteriaExactDomainLevel,
                is_complex=True,
            ),
        )


class ServiceProviderFeatureAccessCodeModifyListRequest(OCIRequest):
    """
    Modify a list of feature access codes for a service provider or enterprise.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By : `ServiceProviderFeatureAccessCodeModifyListRequest20()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        feature_access_code (List[OCI.featureAccessCode]): featureAccessCode *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "feature_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "feature_access_code",
                "featureAccessCode",
                OCI.FeatureAccessCodeEntry,
                is_complex=True,
                is_array=True,
            ),
        )


class ServiceProviderFeatureAccessCodeModifyListRequest20(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". Replaced by:
    `ServiceProviderFeatureAccessCodeModifyListRequest21()`

    Attributes:
        service_provider_id (str): serviceProviderId
        feature_access_code (List[OCI.featureAccessCode]): featureAccessCode *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "feature_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "feature_access_code",
                "featureAccessCode",
                OCI.FeatureAccessCodeEntry,
                is_complex=True,
                is_array=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): serviceProviderId
        feature_access_code (List[OCI.featureAccessCode]): featureAccessCode *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "feature_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "feature_access_code",
                "featureAccessCode",
                OCI.FeatureAccessCodeModifyEntry,
                is_complex=True,
                is_array=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 (bool): isEnterprise *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_service_provider_name
            (List[OCI.searchCriteriaServiceProviderName]):
            searchCriteriaServiceProviderName *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
    """

    __slots__: List[str] = [
        "is_enterprise",
        "response_size_limit",
        "search_criteria_service_provider_id",
        "search_criteria_service_provider_name",
        "search_criteria_reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("is_enterprise", "isEnterprise", bool),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_service_provider_name",
                "searchCriteriaServiceProviderName",
                OCI.SearchCriteriaServiceProviderName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=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): serviceProviderId
        imrn (List[str]): imrn *Optional*
        imrn_range (List[OCI.imrnRange]): imrnRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "imrn",
        "imrn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("imrn", "imrn", str, is_array=True),
            E("imrn_range", "imrnRange", OCI.DNRange, is_complex=True, is_array=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): serviceProviderId
        imrn (List[str]): imrn *Optional*
        imrn_range (List[OCI.imrnRange]): imrnRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "imrn",
        "imrn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("imrn", "imrn", str, is_array=True),
            E("imrn_range", "imrnRange", OCI.DNRange, is_complex=True, is_array=True),
        )


class ServiceProviderMWIDeliveryToMobileEndpointModifyRequest(OCIRequest):
    """
    Modify the service provider level MWI custom notifications settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        template_activation (List[OCI.templateActivation]): templateActivation *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "template_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "template_activation",
                "templateActivation",
                OCI.MWIDeliveryToMobileEndpointTemplateActivation,
                is_complex=True,
                is_array=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): serviceProviderId
        allocated_ports (OCI.allocatedPorts): allocatedPorts *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "allocated_ports",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "allocated_ports",
                "allocatedPorts",
                OCI.MeetMeConferencingConferencePorts,
                is_complex=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 only used in Amplify data mode and ignored in AS and XS data mode:
    servicePolicy, callProcessingSliceId, provisioningSliceId, subscriberPartition.  When
    the callProcessingSliceId or provisioningSliceId is set to nillable, it will be
    assigned to the default Slice.  Only Provisioning admin and above can change the
    callProcessingSliceId, provisioningSliceId, and subscriberPartition.  The following
    element is only used in AS data mode and ignored in Amplify and XS data mode:
    resellerId resellerName resellerId and resellerName can only be configured by a
    Reseller or higher level administrator.  The following behavior is only applicable in
    CloudPBX: - when existing resellerId is specified, enterprise/Service Provider shall
    be moved to requesting reseller.  - when new resellerId, that does not exist in the
    system, is specified, the new Reseller is created the given resellerId and
    resellerName (if provided) and enterprise/Service Provider is moved to the newly
    created Reseller.  resellerName element is ignored if the reseller the service
    provider is being moved to already exists.  The following elements are only used in
    Amplify and 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 AS data mode and ignored in XS data mode:
    defaultExtensionLength locationRoutingPrefixDigit locationCodeLength

    Attributes:
        service_provider_id (str): serviceProviderId
        default_domain (str): defaultDomain *Optional*
        service_provider_name (str): serviceProviderName *Optional*
        support_email (str): supportEmail *Optional*
        contact (OCI.contact): contact *Optional*
        address (OCI.address): address *Optional*
        use_service_provider_languages (bool): useServiceProviderLanguages *Optional*
        service_policy (str): servicePolicy *Optional*
        call_processing_slice_id (str): callProcessingSliceId *Optional*
        provisioning_slice_id (str): provisioningSliceId *Optional*
        subscriber_partition (str): subscriberPartition *Optional*
        preferred_data_center (str): preferredDataCenter *Optional*
        default_extension_length (int): defaultExtensionLength *Optional*
        location_routing_prefix_digit (int): locationRoutingPrefixDigit *Optional*
        location_code_length (int): locationCodeLength *Optional*
        reseller_id (str): resellerId *Optional*
        reseller_name (str): resellerName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "default_domain",
        "service_provider_name",
        "support_email",
        "contact",
        "address",
        "use_service_provider_languages",
        "service_policy",
        "call_processing_slice_id",
        "provisioning_slice_id",
        "subscriber_partition",
        "preferred_data_center",
        "default_extension_length",
        "location_routing_prefix_digit",
        "location_code_length",
        "reseller_id",
        "reseller_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("default_domain", "defaultDomain", str),
            E("service_provider_name", "serviceProviderName", str),
            E("support_email", "supportEmail", str),
            E("contact", "contact", OCI.Contact, is_complex=True),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("use_service_provider_languages", "useServiceProviderLanguages", bool),
            E("service_policy", "servicePolicy", str),
            E("call_processing_slice_id", "callProcessingSliceId", str),
            E("provisioning_slice_id", "provisioningSliceId", str),
            E("subscriber_partition", "subscriberPartition", str),
            E("preferred_data_center", "preferredDataCenter", str),
            E("default_extension_length", "defaultExtensionLength", int),
            E("location_routing_prefix_digit", "locationRoutingPrefixDigit", int),
            E("location_code_length", "locationCodeLength", int),
            E("reseller_id", "resellerId", str),
            E("reseller_name", "resellerName", str),
        )


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): serviceProviderId
        network_class_of_service (List[str]): networkClassOfService *Optional*
        default_network_class_of_service (OCI.defaultNetworkClassOfService):
            defaultNetworkClassOfService
    """

    __slots__: List[str] = [
        "service_provider_id",
        "network_class_of_service",
        "default_network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("network_class_of_service", "networkClassOfService", str, is_array=True),
            E(
                "default_network_class_of_service",
                "defaultNetworkClassOfService",
                OCI.DefaultNetworkClassOfService,
                is_complex=True,
                is_required=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): serviceProviderId
        network_class_of_service (str): networkClassOfService
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "network_class_of_service",
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "network_class_of_service",
                "networkClassOfService",
                str,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=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): serviceProviderId
        network_class_of_service (List[str]): networkClassOfService *Optional*
        default_network_class_of_service (OCI.defaultNetworkClassOfService):
            defaultNetworkClassOfService
    """

    __slots__: List[str] = [
        "service_provider_id",
        "network_class_of_service",
        "default_network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("network_class_of_service", "networkClassOfService", str, is_array=True),
            E(
                "default_network_class_of_service",
                "defaultNetworkClassOfService",
                OCI.DefaultNetworkClassOfService,
                is_complex=True,
                is_required=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): serviceProviderId
        include_digit_patterns (bool): includeDigitPatterns
        search_criteria_service_provider_number_portability_query_digit_pattern
            (List[OCI.searchCriteriaServiceProviderNumberPortabilityQueryDigitPattern]):
            searchCriteriaServiceProviderNumberPortabilityQueryDigitPattern *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "include_digit_patterns",
        "search_criteria_service_provider_number_portability_query_digit_pattern",
        "response_size_limit",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("include_digit_patterns", "includeDigitPatterns", bool, is_required=True),
            E(
                "search_criteria_service_provider_number_portability_query_digit_pattern",
                "searchCriteriaServiceProviderNumberPortabilityQueryDigitPattern",
                OCI.SearchCriteriaServiceProviderNumberPortabilityQueryDigitPattern,
                is_complex=True,
                is_array=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
        )


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): serviceProviderId
        office_zone_name (str): officeZoneName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "office_zone_name",
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("office_zone_name", "officeZoneName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=True,
            ),
        )


class ServiceProviderRouteListEnterpriseTrunkNumberRangeAddListRequest(OCIRequest):
    """
    Add number ranges to a service provider.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        number_range (List[OCI.numberRange]): numberRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "number_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "number_range",
                "numberRange",
                OCI.DNRange,
                is_complex=True,
                is_array=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): serviceProviderId
        number_range (List[OCI.numberRange]): numberRange *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "number_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "number_range",
                "numberRange",
                OCI.EnterpriseTrunkNumberRangeModify,
                is_complex=True,
                is_array=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): serviceProviderId
        external_system (str): externalSystem
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "external_system",
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("external_system", "externalSystem", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=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): serviceProviderId
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (str): eventName
        start_date (str): startDate
        all_day_event (bool): allDayEvent *Optional*
        start_time (OCI.startTime): startTime *Optional*
        end_time (OCI.endTime): endTime *Optional*
        end_date (str): endDate
        recurrence (OCI.recurrence): recurrence *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "schedule_key",
        "event_name",
        "start_date",
        "all_day_event",
        "start_time",
        "end_time",
        "end_date",
        "recurrence",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=True),
            E("start_date", "startDate", str, is_required=True),
            E("all_day_event", "allDayEvent", bool),
            E("start_time", "startTime", OCI.HourMinute, is_complex=True),
            E("end_time", "endTime", OCI.HourMinute, is_complex=True),
            E("end_date", "endDate", str, is_required=True),
            E("recurrence", "recurrence", OCI.Recurrence, is_complex=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): serviceProviderId
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (List[str]): eventName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "schedule_key",
        "event_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=True, is_array=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): serviceProviderId
        schedule_key (List[OCI.scheduleKey]): scheduleKey
    """

    __slots__: List[str] = [
        "service_provider_id",
        "schedule_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        schedule_key (OCI.scheduleKey): scheduleKey
    """

    __slots__: List[str] = [
        "service_provider_id",
        "schedule_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=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): serviceProviderId
        schedule_key (OCI.scheduleKey): scheduleKey
    """

    __slots__: List[str] = [
        "service_provider_id",
        "schedule_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=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): serviceProviderId
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (str): eventName
    """

    __slots__: List[str] = [
        "service_provider_id",
        "schedule_key",
        "event_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=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): serviceProviderId
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (str): eventName
        new_event_name (str): newEventName *Optional*
        start_date (str): startDate *Optional*
        all_day_event (bool): allDayEvent *Optional*
        start_time (OCI.startTime): startTime *Optional*
        end_time (OCI.endTime): endTime *Optional*
        end_date (str): endDate *Optional*
        recurrence (OCI.recurrence): recurrence *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "schedule_key",
        "event_name",
        "new_event_name",
        "start_date",
        "all_day_event",
        "start_time",
        "end_time",
        "end_date",
        "recurrence",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=True),
            E("new_event_name", "newEventName", str),
            E("start_date", "startDate", str),
            E("all_day_event", "allDayEvent", bool),
            E("start_time", "startTime", OCI.HourMinute, is_complex=True),
            E("end_time", "endTime", OCI.HourMinute, is_complex=True),
            E("end_date", "endDate", str),
            E("recurrence", "recurrence", OCI.Recurrence, is_complex=True),
        )


class ServiceProviderScheduleModifyRequest(OCIRequest):
    """
    Modify a service provider schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        schedule_key (OCI.scheduleKey): scheduleKey
        new_schedule_name (str): newScheduleName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "schedule_key",
        "new_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("new_schedule_name", "newScheduleName", str),
        )


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): serviceProviderId
        service_pack_name (str): servicePackName
        service_pack_description (str): servicePackDescription *Optional*
        is_available_for_use (bool): isAvailableForUse
        service_pack_quantity (OCI.servicePackQuantity): servicePackQuantity
        service_name (List[str]): serviceName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_pack_name",
        "service_pack_description",
        "is_available_for_use",
        "service_pack_quantity",
        "service_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("service_pack_name", "servicePackName", str, is_required=True),
            E("service_pack_description", "servicePackDescription", str),
            E("is_available_for_use", "isAvailableForUse", bool, is_required=True),
            E(
                "service_pack_quantity",
                "servicePackQuantity",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("service_name", "serviceName", str, is_array=True),
        )


class ServiceProviderServicePackMigrationTaskGetAvailableGroupListRequest(OCIRequest):
    """
    Requests a list of groups to migrate.

    The response is either
    `ServiceProviderServicePackMigrationTaskGetAvailabeGroupListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=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): serviceProviderId
        task_name (str): taskName
        user_service_name_list (OCI.userServiceNameList): userServiceNameList *Optional*
        service_pack_name_list (OCI.servicePackNameList): servicePackNameList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
        "user_service_name_list",
        "service_pack_name_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=True),
            E(
                "user_service_name_list",
                "userServiceNameList",
                OCI.ReplacementUserServiceList,
                is_complex=True,
            ),
            E(
                "service_pack_name_list",
                "servicePackNameList",
                OCI.ReplacementServicePackNameList,
                is_complex=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): serviceProviderId
        task_name (str): taskName
        user_service_name_list (OCI.userServiceNameList): userServiceNameList *Optional*
        service_pack_name_list (OCI.servicePackNameList): servicePackNameList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
        "user_service_name_list",
        "service_pack_name_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=True),
            E(
                "user_service_name_list",
                "userServiceNameList",
                OCI.ReplacementUserServiceList,
                is_complex=True,
            ),
            E(
                "service_pack_name_list",
                "servicePackNameList",
                OCI.ReplacementServicePackNameList,
                is_complex=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): serviceProviderId
        task_name (str): taskName
        user_selection_type (str): userSelectionType *Optional*
        user_service_name_list (OCI.userServiceNameList): userServiceNameList *Optional*
        service_pack_name_list (OCI.servicePackNameList): servicePackNameList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "task_name",
        "user_selection_type",
        "user_service_name_list",
        "service_pack_name_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("task_name", "taskName", str, is_required=True),
            E("user_selection_type", "userSelectionType", str),
            E(
                "user_service_name_list",
                "userServiceNameList",
                OCI.ReplacementUserServiceList,
                is_complex=True,
            ),
            E(
                "service_pack_name_list",
                "servicePackNameList",
                OCI.ReplacementServicePackNameList,
                is_complex=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): serviceProviderId
        service_pack_name (str): servicePackName
        new_service_pack_name (str): newServicePackName *Optional*
        service_pack_description (str): servicePackDescription *Optional*
        is_available_for_use (bool): isAvailableForUse *Optional*
        service_pack_quantity (OCI.servicePackQuantity): servicePackQuantity *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_pack_name",
        "new_service_pack_name",
        "service_pack_description",
        "is_available_for_use",
        "service_pack_quantity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("service_pack_name", "servicePackName", str, is_required=True),
            E("new_service_pack_name", "newServicePackName", str),
            E("service_pack_description", "servicePackDescription", str),
            E("is_available_for_use", "isAvailableForUse", bool),
            E(
                "service_pack_quantity",
                "servicePackQuantity",
                OCI.UnboundedPositiveInt,
                is_complex=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): serviceProviderId
        max_active_calls (OCI.maxActiveCalls): maxActiveCalls *Optional*
        bursting_max_active_calls (OCI.burstingMaxActiveCalls): burstingMaxActiveCalls
            *Optional*
        number_of_bursting_btl_us (OCI.numberOfBurstingBTLUs): numberOfBurstingBTLUs
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "max_active_calls",
        "bursting_max_active_calls",
        "number_of_bursting_btl_us",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "max_active_calls",
                "maxActiveCalls",
                OCI.UnboundedNonNegativeInt,
                is_complex=True,
            ),
            E(
                "bursting_max_active_calls",
                "burstingMaxActiveCalls",
                OCI.UnboundedNonNegativeInt,
                is_complex=True,
            ),
            E(
                "number_of_bursting_btl_us",
                "numberOfBurstingBTLUs",
                OCI.UnboundedNonNegativeInt,
                is_complex=True,
            ),
        )


class ServiceProviderVoiceMessagingGroupModifyVoicePortalBrandingRequest(OCIRequest):
    """
    Modify the service provider's voice portal branding settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `ServiceProviderVoiceMessagingGroupModifyVoicePortalBrandingRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        voice_portal_greeting_selection (str): voicePortalGreetingSelection *Optional*
        voice_portal_greeting_file (OCI.voicePortalGreetingFile): voicePortalGreetingFile
            *Optional*
        voice_messaging_greeting_selection (str): voiceMessagingGreetingSelection
            *Optional*
        voice_messaging_greeting_file (OCI.voiceMessagingGreetingFile):
            voiceMessagingGreetingFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "voice_portal_greeting_selection",
        "voice_portal_greeting_file",
        "voice_messaging_greeting_selection",
        "voice_messaging_greeting_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("voice_portal_greeting_selection", "voicePortalGreetingSelection", str),
            E(
                "voice_portal_greeting_file",
                "voicePortalGreetingFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "voice_messaging_greeting_selection",
                "voiceMessagingGreetingSelection",
                str,
            ),
            E(
                "voice_messaging_greeting_file",
                "voiceMessagingGreetingFile",
                OCI.LabeledFileResource,
                is_complex=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): serviceProviderId
        voice_portal_greeting_selection (str): voicePortalGreetingSelection *Optional*
        voice_portal_greeting_file (OCI.voicePortalGreetingFile): voicePortalGreetingFile
            *Optional*
        voice_messaging_greeting_selection (str): voiceMessagingGreetingSelection
            *Optional*
        voice_messaging_greeting_file (OCI.voiceMessagingGreetingFile):
            voiceMessagingGreetingFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "voice_portal_greeting_selection",
        "voice_portal_greeting_file",
        "voice_messaging_greeting_selection",
        "voice_messaging_greeting_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("voice_portal_greeting_selection", "voicePortalGreetingSelection", str),
            E(
                "voice_portal_greeting_file",
                "voicePortalGreetingFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E(
                "voice_messaging_greeting_selection",
                "voiceMessagingGreetingSelection",
                str,
            ),
            E(
                "voice_messaging_greeting_file",
                "voiceMessagingGreetingFile",
                OCI.LabeledMediaFileResource,
                is_complex=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): serviceProviderId
        sp_xsi_policy_profile (str): spXsiPolicyProfile *Optional*
        group_xsi_policy_profile (OCI.groupXsiPolicyProfile): groupXsiPolicyProfile
            *Optional*
        user_xsi_policy_profile (OCI.userXsiPolicyProfile): userXsiPolicyProfile
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "sp_xsi_policy_profile",
        "group_xsi_policy_profile",
        "user_xsi_policy_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("sp_xsi_policy_profile", "spXsiPolicyProfile", str),
            E(
                "group_xsi_policy_profile",
                "groupXsiPolicyProfile",
                OCI.XsiPolicyProfileAssignEntry,
                is_complex=True,
            ),
            E(
                "user_xsi_policy_profile",
                "userXsiPolicyProfile",
                OCI.XsiPolicyProfileAssignEntry,
                is_complex=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): serviceProviderId
        xsi_policy_profile (OCI.xsiPolicyProfile): xsiPolicyProfile
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "xsi_policy_profile",
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "xsi_policy_profile",
                "xsiPolicyProfile",
                OCI.XsiPolicyProfileKey,
                is_complex=True,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=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): serviceProviderId
        group_xsi_policy_profile (OCI.groupXsiPolicyProfile): groupXsiPolicyProfile
            *Optional*
        user_xsi_policy_profile (OCI.userXsiPolicyProfile): userXsiPolicyProfile
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_xsi_policy_profile",
        "user_xsi_policy_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "group_xsi_policy_profile",
                "groupXsiPolicyProfile",
                OCI.XsiPolicyProfileUnassignEntry,
                is_complex=True,
            ),
            E(
                "user_xsi_policy_profile",
                "userXsiPolicyProfile",
                OCI.XsiPolicyProfileUnassignEntry,
                is_complex=True,
            ),
        )


class SystemAccessDeviceAddRequest(OCIRequest):
    """
    Request to add a system-level access device.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Repaced By:
    `SystemAccessDeviceAddRequest22()`

    Attributes:
        device_name (str): deviceName
        device_type (str): deviceType
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        mobility_manager_provisioning_url (str): mobilityManagerProvisioningURL *Optional*
        mobility_manager_provisioning_user_name (str): mobilityManagerProvisioningUserName
            *Optional*
        mobility_manager_provisioning_password (str): mobilityManagerProvisioningPassword
            *Optional*
        mobility_manager_default_originating_service_key (int):
            mobilityManagerDefaultOriginatingServiceKey *Optional*
        mobility_manager_default_terminating_service_key (int):
            mobilityManagerDefaultTerminatingServiceKey *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "device_type",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "mobility_manager_provisioning_url",
        "mobility_manager_provisioning_user_name",
        "mobility_manager_provisioning_password",
        "mobility_manager_default_originating_service_key",
        "mobility_manager_default_terminating_service_key",
        "use_custom_user_name_password",
        "access_device_credentials",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("device_type", "deviceType", str, is_required=True),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E(
                "mobility_manager_provisioning_url",
                "mobilityManagerProvisioningURL",
                str,
            ),
            E(
                "mobility_manager_provisioning_user_name",
                "mobilityManagerProvisioningUserName",
                str,
            ),
            E(
                "mobility_manager_provisioning_password",
                "mobilityManagerProvisioningPassword",
                str,
            ),
            E(
                "mobility_manager_default_originating_service_key",
                "mobilityManagerDefaultOriginatingServiceKey",
                int,
            ),
            E(
                "mobility_manager_default_terminating_service_key",
                "mobilityManagerDefaultTerminatingServiceKey",
                int,
            ),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=True,
            ),
        )


class SystemAccessDeviceAddRequest22(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: useHotline
    hotlineContact deviceExternalId Replaced by: `SystemAccessDeviceAddRequest22V2()`

    Attributes:
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
        device_type (str): deviceType
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        mobility_manager_provisioning_url (str): mobilityManagerProvisioningURL *Optional*
        mobility_manager_provisioning_user_name (str): mobilityManagerProvisioningUserName
            *Optional*
        mobility_manager_provisioning_password (str): mobilityManagerProvisioningPassword
            *Optional*
        mobility_manager_default_originating_service_key (int):
            mobilityManagerDefaultOriginatingServiceKey *Optional*
        mobility_manager_default_terminating_service_key (int):
            mobilityManagerDefaultTerminatingServiceKey *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
        use_hotline (bool): useHotline
        hotline_contact (str): hotlineContact *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "device_external_id",
        "device_type",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "mobility_manager_provisioning_url",
        "mobility_manager_provisioning_user_name",
        "mobility_manager_provisioning_password",
        "mobility_manager_default_originating_service_key",
        "mobility_manager_default_terminating_service_key",
        "use_custom_user_name_password",
        "access_device_credentials",
        "use_hotline",
        "hotline_contact",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
            E("device_type", "deviceType", str, is_required=True),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E(
                "mobility_manager_provisioning_url",
                "mobilityManagerProvisioningURL",
                str,
            ),
            E(
                "mobility_manager_provisioning_user_name",
                "mobilityManagerProvisioningUserName",
                str,
            ),
            E(
                "mobility_manager_provisioning_password",
                "mobilityManagerProvisioningPassword",
                str,
            ),
            E(
                "mobility_manager_default_originating_service_key",
                "mobilityManagerDefaultOriginatingServiceKey",
                int,
            ),
            E(
                "mobility_manager_default_terminating_service_key",
                "mobilityManagerDefaultTerminatingServiceKey",
                int,
            ),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=True,
            ),
            E("use_hotline", "useHotline", bool, is_required=True),
            E("hotline_contact", "hotlineContact", str),
        )


class SystemAccessDeviceAddRequest22V2(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: useHotline
    hotlineContact isWebexTeamsDevice defaultPathHeader deviceExternalId

    Attributes:
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
        device_type (str): deviceType
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        mobility_manager_provisioning_url (str): mobilityManagerProvisioningURL *Optional*
        mobility_manager_provisioning_user_name (str): mobilityManagerProvisioningUserName
            *Optional*
        mobility_manager_provisioning_password (str): mobilityManagerProvisioningPassword
            *Optional*
        mobility_manager_default_originating_service_key (int):
            mobilityManagerDefaultOriginatingServiceKey *Optional*
        mobility_manager_default_terminating_service_key (int):
            mobilityManagerDefaultTerminatingServiceKey *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
        use_hotline (bool): useHotline
        hotline_contact (str): hotlineContact *Optional*
        is_webex_teams_device (bool): isWebexTeamsDevice *Optional*
        default_path_header (str): defaultPathHeader *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "device_external_id",
        "device_type",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "mobility_manager_provisioning_url",
        "mobility_manager_provisioning_user_name",
        "mobility_manager_provisioning_password",
        "mobility_manager_default_originating_service_key",
        "mobility_manager_default_terminating_service_key",
        "use_custom_user_name_password",
        "access_device_credentials",
        "use_hotline",
        "hotline_contact",
        "is_webex_teams_device",
        "default_path_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
            E("device_type", "deviceType", str, is_required=True),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E(
                "mobility_manager_provisioning_url",
                "mobilityManagerProvisioningURL",
                str,
            ),
            E(
                "mobility_manager_provisioning_user_name",
                "mobilityManagerProvisioningUserName",
                str,
            ),
            E(
                "mobility_manager_provisioning_password",
                "mobilityManagerProvisioningPassword",
                str,
            ),
            E(
                "mobility_manager_default_originating_service_key",
                "mobilityManagerDefaultOriginatingServiceKey",
                int,
            ),
            E(
                "mobility_manager_default_terminating_service_key",
                "mobilityManagerDefaultTerminatingServiceKey",
                int,
            ),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=True,
            ),
            E("use_hotline", "useHotline", bool, is_required=True),
            E("hotline_contact", "hotlineContact", str),
            E("is_webex_teams_device", "isWebexTeamsDevice", bool),
            E("default_path_header", "defaultPathHeader", str),
        )


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

    Attributes:
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
        device_type (str): deviceType
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
        is_webex_teams_device (bool): isWebexTeamsDevice *Optional*
        default_path_header (str): defaultPathHeader *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "device_external_id",
        "device_type",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "use_custom_user_name_password",
        "access_device_credentials",
        "is_webex_teams_device",
        "default_path_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
            E("device_type", "deviceType", str, is_required=True),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=True,
            ),
            E("is_webex_teams_device", "isWebexTeamsDevice", bool),
            E("default_path_header", "defaultPathHeader", str),
        )


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): deviceName
        tag (List[OCI.tag]): tag
    """

    __slots__: List[str] = [
        "device_name",
        "tag",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E(
                "tag",
                "tag",
                OCI.DeviceManagementTag,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class SystemAccessDeviceFileModifyRequest(OCIRequest):
    """
    Request to modify a specified system access device file.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `SystemAccessDeviceFileModifyRequest14sp8()`

    Attributes:
        device_name (str): deviceName
        file_type (str): fileType
        file_source (str): fileSource *Optional*
        upload_file (OCI.uploadFile): uploadFile *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "file_type",
        "file_source",
        "upload_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("file_type", "fileType", str, is_required=True),
            E("file_source", "fileSource", str),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=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): deviceName
        file_format (str): fileFormat
        file_source (str): fileSource *Optional*
        upload_file (OCI.uploadFile): uploadFile *Optional*
        extended_capture_enabled (bool): extendedCaptureEnabled *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "file_format",
        "file_source",
        "upload_file",
        "extended_capture_enabled",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("file_source", "fileSource", str),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E("extended_capture_enabled", "extendedCaptureEnabled", bool),
        )


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 (int): responseSizeLimit *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_device_type (OCI.searchCriteriaExactDeviceType):
            searchCriteriaExactDeviceType *Optional*
        search_criteria_exact_device_service_provider
            (OCI.searchCriteriaExactDeviceServiceProvider):
            searchCriteriaExactDeviceServiceProvider *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_group_id",
        "search_criteria_exact_device_type",
        "search_criteria_exact_device_service_provider",
        "search_criteria_service_provider_id",
        "search_criteria_reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_device_type",
                "searchCriteriaExactDeviceType",
                OCI.SearchCriteriaExactDeviceType,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_service_provider",
                "searchCriteriaExactDeviceServiceProvider",
                OCI.SearchCriteriaExactDeviceServiceProvider,
                is_complex=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=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 (int): responseSizeLimit *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_exact_device_type (OCI.searchCriteriaExactDeviceType):
            searchCriteriaExactDeviceType *Optional*
        search_criteria_access_device_version
            (List[OCI.searchCriteriaAccessDeviceVersion]):
            searchCriteriaAccessDeviceVersion *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_exact_device_type",
        "search_criteria_access_device_version",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_device_type",
                "searchCriteriaExactDeviceType",
                OCI.SearchCriteriaExactDeviceType,
                is_complex=True,
            ),
            E(
                "search_criteria_access_device_version",
                "searchCriteriaAccessDeviceVersion",
                OCI.SearchCriteriaAccessDeviceVersion,
                is_complex=True,
                is_array=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 (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_device_name (OCI.sortByDeviceName): sortByDeviceName *Optional*
        sort_by_device_type (OCI.sortByDeviceType): sortByDeviceType *Optional*
        sort_by_device_net_address (OCI.sortByDeviceNetAddress): sortByDeviceNetAddress
            *Optional*
        sort_by_device_mac_address (OCI.sortByDeviceMACAddress): sortByDeviceMACAddress
            *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_exact_device_type (List[OCI.searchCriteriaExactDeviceType]):
            searchCriteriaExactDeviceType *Optional*
        search_criteria_access_device_version
            (List[OCI.searchCriteriaAccessDeviceVersion]):
            searchCriteriaAccessDeviceVersion *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        get_visual_device_management_api_devices_only (bool):
            getVisualDeviceManagementAPIDevicesOnly *Optional*
    """

    __slots__: List[str] = [
        "response_paging_control",
        "sort_by_device_name",
        "sort_by_device_type",
        "sort_by_device_net_address",
        "sort_by_device_mac_address",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_exact_device_type",
        "search_criteria_access_device_version",
        "search_criteria_mode_or",
        "get_visual_device_management_api_devices_only",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_device_name",
                "sortByDeviceName",
                OCI.SortByDeviceName,
                is_complex=True,
            ),
            E(
                "sort_by_device_type",
                "sortByDeviceType",
                OCI.SortByDeviceType,
                is_complex=True,
            ),
            E(
                "sort_by_device_net_address",
                "sortByDeviceNetAddress",
                OCI.SortByDeviceNetAddress,
                is_complex=True,
            ),
            E(
                "sort_by_device_mac_address",
                "sortByDeviceMACAddress",
                OCI.SortByDeviceMACAddress,
                is_complex=True,
            ),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_device_type",
                "searchCriteriaExactDeviceType",
                OCI.SearchCriteriaExactDeviceType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_access_device_version",
                "searchCriteriaAccessDeviceVersion",
                OCI.SearchCriteriaAccessDeviceVersion,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "get_visual_device_management_api_devices_only",
                "getVisualDeviceManagementAPIDevicesOnly",
                bool,
            ),
        )


class SystemAccessDeviceGetUserListRequest(OCIRequest):
    """
    Requests the users associated with a specified system access device.

    The response is either `SystemAccessDeviceGetUserListResponse()` or `ErrorResponse()`.
    The following elements are only used in XS data mode and ignored in AS data mode:
    searchCriteriaAccessDeviceEndpointPrivateIdentity Replaced by:
    `SystemAccessDeviceGetUserListRequest21sp1()` in AS data mode.

    Attributes:
        device_name (str): deviceName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_line_port_user_part (List[OCI.searchCriteriaLinePortUserPart]):
            searchCriteriaLinePortUserPart *Optional*
        search_criteria_line_port_domain (List[OCI.searchCriteriaLinePortDomain]):
            searchCriteriaLinePortDomain *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_service_provider (OCI.searchCriteriaExactServiceProvider):
            searchCriteriaExactServiceProvider *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_endpoint_type (OCI.searchCriteriaExactEndpointType):
            searchCriteriaExactEndpointType *Optional*
        search_criteria_exact_user_type (OCI.searchCriteriaExactUserType):
            searchCriteriaExactUserType *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_port_number (OCI.searchCriteriaExactPortNumber):
            searchCriteriaExactPortNumber *Optional*
        search_criteria_access_device_endpoint_private_identity
            (List[OCI.searchCriteriaAccessDeviceEndpointPrivateIdentity]):
            searchCriteriaAccessDeviceEndpointPrivateIdentity *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "response_size_limit",
        "search_criteria_line_port_user_part",
        "search_criteria_line_port_domain",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_user_id",
        "search_criteria_group_id",
        "search_criteria_exact_service_provider",
        "search_criteria_service_provider_id",
        "search_criteria_exact_endpoint_type",
        "search_criteria_exact_user_type",
        "search_criteria_extension",
        "search_criteria_exact_port_number",
        "search_criteria_access_device_endpoint_private_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_line_port_user_part",
                "searchCriteriaLinePortUserPart",
                OCI.SearchCriteriaLinePortUserPart,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_domain",
                "searchCriteriaLinePortDomain",
                OCI.SearchCriteriaLinePortDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_service_provider",
                "searchCriteriaExactServiceProvider",
                OCI.SearchCriteriaExactServiceProvider,
                is_complex=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_endpoint_type",
                "searchCriteriaExactEndpointType",
                OCI.SearchCriteriaExactEndpointType,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_type",
                "searchCriteriaExactUserType",
                OCI.SearchCriteriaExactUserType,
                is_complex=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_port_number",
                "searchCriteriaExactPortNumber",
                OCI.SearchCriteriaExactPortNumber,
                is_complex=True,
            ),
            E(
                "search_criteria_access_device_endpoint_private_identity",
                "searchCriteriaAccessDeviceEndpointPrivateIdentity",
                OCI.SearchCriteriaAccessDeviceEndpointPrivateIdentity,
                is_complex=True,
                is_array=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): deviceName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_line_port_user_part (List[OCI.searchCriteriaLinePortUserPart]):
            searchCriteriaLinePortUserPart *Optional*
        search_criteria_line_port_domain (List[OCI.searchCriteriaLinePortDomain]):
            searchCriteriaLinePortDomain *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_service_provider (OCI.searchCriteriaExactServiceProvider):
            searchCriteriaExactServiceProvider *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_endpoint_type (OCI.searchCriteriaExactEndpointType):
            searchCriteriaExactEndpointType *Optional*
        search_criteria_exact_user_type (OCI.searchCriteriaExactUserType):
            searchCriteriaExactUserType *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_port_number (OCI.searchCriteriaExactPortNumber):
            searchCriteriaExactPortNumber *Optional*
        search_criteria_access_device_endpoint_private_identity
            (List[OCI.searchCriteriaAccessDeviceEndpointPrivateIdentity]):
            searchCriteriaAccessDeviceEndpointPrivateIdentity *Optional*
        search_criteria_user_hotline_contact (List[OCI.searchCriteriaUserHotlineContact]):
            searchCriteriaUserHotlineContact *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "response_size_limit",
        "search_criteria_line_port_user_part",
        "search_criteria_line_port_domain",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_user_id",
        "search_criteria_group_id",
        "search_criteria_exact_service_provider",
        "search_criteria_service_provider_id",
        "search_criteria_exact_endpoint_type",
        "search_criteria_exact_user_type",
        "search_criteria_extension",
        "search_criteria_exact_port_number",
        "search_criteria_access_device_endpoint_private_identity",
        "search_criteria_user_hotline_contact",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_line_port_user_part",
                "searchCriteriaLinePortUserPart",
                OCI.SearchCriteriaLinePortUserPart,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_domain",
                "searchCriteriaLinePortDomain",
                OCI.SearchCriteriaLinePortDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_service_provider",
                "searchCriteriaExactServiceProvider",
                OCI.SearchCriteriaExactServiceProvider,
                is_complex=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_endpoint_type",
                "searchCriteriaExactEndpointType",
                OCI.SearchCriteriaExactEndpointType21sp1,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_type",
                "searchCriteriaExactUserType",
                OCI.SearchCriteriaExactUserType,
                is_complex=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_port_number",
                "searchCriteriaExactPortNumber",
                OCI.SearchCriteriaExactPortNumber,
                is_complex=True,
            ),
            E(
                "search_criteria_access_device_endpoint_private_identity",
                "searchCriteriaAccessDeviceEndpointPrivateIdentity",
                OCI.SearchCriteriaAccessDeviceEndpointPrivateIdentity,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_hotline_contact",
                "searchCriteriaUserHotlineContact",
                OCI.SearchCriteriaUserHotlineContact,
                is_complex=True,
                is_array=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". It can be linked to only one tree
    device.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        device_name (str): deviceName
        leaf_device_key (List[OCI.leafDeviceKey]): leafDeviceKey
    """

    __slots__: List[str] = [
        "device_name",
        "leaf_device_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str, is_required=True),
            E(
                "leaf_device_key",
                "leafDeviceKey",
                OCI.AccessDeviceKey,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class SystemAccessDeviceModifyRequest(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: useHotline
    hotlineContact isWebexTeamsDevice defaultPathHeader deviceExternalId

    Attributes:
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        mobility_manager_provisioning_url (str): mobilityManagerProvisioningURL *Optional*
        mobility_manager_provisioning_user_name (str): mobilityManagerProvisioningUserName
            *Optional*
        mobility_manager_provisioning_password (str): mobilityManagerProvisioningPassword
            *Optional*
        mobility_manager_default_originating_service_key (int):
            mobilityManagerDefaultOriginatingServiceKey *Optional*
        mobility_manager_default_terminating_service_key (int):
            mobilityManagerDefaultTerminatingServiceKey *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
        use_hotline (bool): useHotline *Optional*
        hotline_contact (str): hotlineContact *Optional*
        is_webex_teams_device (bool): isWebexTeamsDevice *Optional*
        default_path_header (str): defaultPathHeader *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "device_external_id",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "mobility_manager_provisioning_url",
        "mobility_manager_provisioning_user_name",
        "mobility_manager_provisioning_password",
        "mobility_manager_default_originating_service_key",
        "mobility_manager_default_terminating_service_key",
        "use_custom_user_name_password",
        "access_device_credentials",
        "use_hotline",
        "hotline_contact",
        "is_webex_teams_device",
        "default_path_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E(
                "mobility_manager_provisioning_url",
                "mobilityManagerProvisioningURL",
                str,
            ),
            E(
                "mobility_manager_provisioning_user_name",
                "mobilityManagerProvisioningUserName",
                str,
            ),
            E(
                "mobility_manager_provisioning_password",
                "mobilityManagerProvisioningPassword",
                str,
            ),
            E(
                "mobility_manager_default_originating_service_key",
                "mobilityManagerDefaultOriginatingServiceKey",
                int,
            ),
            E(
                "mobility_manager_default_terminating_service_key",
                "mobilityManagerDefaultTerminatingServiceKey",
                int,
            ),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=True,
            ),
            E("use_hotline", "useHotline", bool),
            E("hotline_contact", "hotlineContact", str),
            E("is_webex_teams_device", "isWebexTeamsDevice", bool),
            E("default_path_header", "defaultPathHeader", str),
        )


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

    Attributes:
        device_name (str): deviceName *Optional*
        device_external_id (str): deviceExternalId *Optional*
        protocol (str): protocol *Optional*
        net_address (str): netAddress *Optional*
        port (int): port *Optional*
        outbound_proxy_server_net_address (str): outboundProxyServerNetAddress *Optional*
        stun_server_net_address (str): stunServerNetAddress *Optional*
        mac_address (str): macAddress *Optional*
        serial_number (str): serialNumber *Optional*
        description (str): description *Optional*
        physical_location (str): physicalLocation *Optional*
        transport_protocol (str): transportProtocol *Optional*
        use_custom_user_name_password (bool): useCustomUserNamePassword *Optional*
        access_device_credentials (OCI.accessDeviceCredentials): accessDeviceCredentials
            *Optional*
        is_webex_teams_device (bool): isWebexTeamsDevice *Optional*
        default_path_header (str): defaultPathHeader *Optional*
    """

    __slots__: List[str] = [
        "device_name",
        "device_external_id",
        "protocol",
        "net_address",
        "port",
        "outbound_proxy_server_net_address",
        "stun_server_net_address",
        "mac_address",
        "serial_number",
        "description",
        "physical_location",
        "transport_protocol",
        "use_custom_user_name_password",
        "access_device_credentials",
        "is_webex_teams_device",
        "default_path_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_name", "deviceName", str),
            E("device_external_id", "deviceExternalId", str),
            E("protocol", "protocol", str),
            E("net_address", "netAddress", str),
            E("port", "port", int),
            E(
                "outbound_proxy_server_net_address",
                "outboundProxyServerNetAddress",
                str,
            ),
            E("stun_server_net_address", "stunServerNetAddress", str),
            E("mac_address", "macAddress", str),
            E("serial_number", "serialNumber", str),
            E("description", "description", str),
            E("physical_location", "physicalLocation", str),
            E("transport_protocol", "transportProtocol", str),
            E("use_custom_user_name_password", "useCustomUserNamePassword", bool),
            E(
                "access_device_credentials",
                "accessDeviceCredentials",
                OCI.DeviceManagementUserNamePassword16,
                is_complex=True,
            ),
            E("is_webex_teams_device", "isWebexTeamsDevice", bool),
            E("default_path_header", "defaultPathHeader", str),
        )


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". It can be linked to only one tree
    device.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        leaf_device_key (List[OCI.leafDeviceKey]): leafDeviceKey
    """

    __slots__: List[str] = [
        "leaf_device_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "leaf_device_key",
                "leafDeviceKey",
                OCI.AccessDeviceKey,
                is_complex=True,
                is_required=True,
                is_array=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 (int): responseSizeLimit *Optional*
        search_criteria_alternate_user_id (List[OCI.searchCriteriaAlternateUserId]):
            searchCriteriaAlternateUserId *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_alternate_user_id",
        "search_criteria_user_id",
        "search_criteria_group_id",
        "search_criteria_service_provider_id",
        "search_criteria_reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_alternate_user_id",
                "searchCriteriaAlternateUserId",
                OCI.SearchCriteriaAlternateUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=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[OCI.prefixDigitsEntry]): prefixDigitsEntry
    """

    __slots__: List[str] = [
        "prefix_digits_entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "prefix_digits_entry",
                "prefixDigitsEntry",
                OCI.AutomaticCollectCallPrefixDigitsEntry,
                is_complex=True,
                is_required=True,
                is_array=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[OCI.prefixDigitsEntry]): prefixDigitsEntry
    """

    __slots__: List[str] = [
        "prefix_digits_entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "prefix_digits_entry",
                "prefixDigitsEntry",
                OCI.AutomaticCollectCallPrefixDigitsEntry,
                is_complex=True,
                is_required=True,
                is_array=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 (List[str]): imrnNumber *Optional*
        number_range (List[OCI.numberRange]): numberRange *Optional*
    """

    __slots__: List[str] = [
        "imrn_number",
        "number_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("imrn_number", "imrnNumber", str, is_array=True),
            E(
                "number_range",
                "numberRange",
                OCI.DNRange,
                is_complex=True,
                is_array=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): mobileNetworkName
        imrn_number (List[str]): imrnNumber *Optional*
        number_range (List[OCI.numberRange]): numberRange *Optional*
    """

    __slots__: List[str] = [
        "mobile_network_name",
        "imrn_number",
        "number_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("mobile_network_name", "mobileNetworkName", str, is_required=True),
            E("imrn_number", "imrnNumber", str, is_array=True),
            E(
                "number_range",
                "numberRange",
                OCI.DNRange,
                is_complex=True,
                is_array=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): geographicalPoolName
        imrn_number (List[str]): imrnNumber *Optional*
        number_range (List[OCI.numberRange]): numberRange *Optional*
    """

    __slots__: List[str] = [
        "geographical_pool_name",
        "imrn_number",
        "number_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("geographical_pool_name", "geographicalPoolName", str, is_required=True),
            E("imrn_number", "imrnNumber", str, is_array=True),
            E(
                "number_range",
                "numberRange",
                OCI.DNRange,
                is_complex=True,
                is_array=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): geographicalPoolName
        search_criteria_imrn (List[OCI.searchCriteriaIMRN]): searchCriteriaIMRN *Optional*
    """

    __slots__: List[str] = [
        "geographical_pool_name",
        "search_criteria_imrn",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("geographical_pool_name", "geographicalPoolName", str, is_required=True),
            E(
                "search_criteria_imrn",
                "searchCriteriaIMRN",
                OCI.SearchCriteriaIMRN,
                is_complex=True,
                is_array=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 (List[OCI.searchCriteriaIMRN]): searchCriteriaIMRN *Optional*
    """

    __slots__: List[str] = [
        "search_criteria_imrn",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "search_criteria_imrn",
                "searchCriteriaIMRN",
                OCI.SearchCriteriaIMRN,
                is_complex=True,
                is_array=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): mobileNetworkName
        search_criteria_imrn (List[OCI.searchCriteriaIMRN]): searchCriteriaIMRN *Optional*
    """

    __slots__: List[str] = [
        "mobile_network_name",
        "search_criteria_imrn",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("mobile_network_name", "mobileNetworkName", str, is_required=True),
            E(
                "search_criteria_imrn",
                "searchCriteriaIMRN",
                OCI.SearchCriteriaIMRN,
                is_complex=True,
                is_array=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 (int): responseSizeLimit *Optional*
        search_criteria_mobile_subscriber_directory_number
            (List[OCI.searchCriteriaMobileSubscriberDirectoryNumber]):
            searchCriteriaMobileSubscriberDirectoryNumber *Optional*
        search_criteria_exact_mobile_network (OCI.searchCriteriaExactMobileNetwork):
            searchCriteriaExactMobileNetwork *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_organization_type (OCI.searchCriteriaExactOrganizationType):
            searchCriteriaExactOrganizationType *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_mobile_subscriber_directory_number",
        "search_criteria_exact_mobile_network",
        "search_criteria_service_provider_id",
        "search_criteria_exact_organization_type",
        "search_criteria_group_id",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_mobile_subscriber_directory_number",
                "searchCriteriaMobileSubscriberDirectoryNumber",
                OCI.SearchCriteriaMobileSubscriberDirectoryNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_mobile_network",
                "searchCriteriaExactMobileNetwork",
                OCI.SearchCriteriaExactMobileNetwork,
                is_complex=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_organization_type",
                "searchCriteriaExactOrganizationType",
                OCI.SearchCriteriaExactOrganizationType,
                is_complex=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemCallCenterEnhancedReportingBrandingModifyRequest(OCIRequest):
    """
    Request to modify the system branding configuration.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        branding_choice (str): brandingChoice *Optional*
        custom_branding_file (OCI.customBrandingFile): customBrandingFile *Optional*
    """

    __slots__: List[str] = [
        "branding_choice",
        "custom_branding_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("branding_choice", "brandingChoice", str),
            E(
                "custom_branding_file",
                "customBrandingFile",
                OCI.LabeledFileResource,
                is_complex=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): name
        description (str): description *Optional*
        data_template (str): dataTemplate
        filter_number (int): filterNumber *Optional*
        xslt_template (OCI.xsltTemplate): xsltTemplate
        scope (str): scope
        is_enabled (bool): isEnabled
        is_realtime_report (bool): isRealtimeReport *Optional*
        call_completion_threshold_param (str): callCompletionThresholdParam *Optional*
        short_duration_threshold_param (str): shortDurationThresholdParam *Optional*
        service_level_threshold_param (str): serviceLevelThresholdParam *Optional*
        service_level_inclusions_param (str): serviceLevelInclusionsParam *Optional*
        service_level_objective_threshold_param (str): serviceLevelObjectiveThresholdParam
            *Optional*
        abandoned_call_threshold_param (str): abandonedCallThresholdParam *Optional*
        service_level_threshold_param_number (int): serviceLevelThresholdParamNumber
            *Optional*
        abandoned_call_threshold_param_number (int): abandonedCallThresholdParamNumber
            *Optional*
        filter_value (List[str]): filterValue *Optional*
    """

    __slots__: List[str] = [
        "name",
        "description",
        "data_template",
        "filter_number",
        "xslt_template",
        "scope",
        "is_enabled",
        "is_realtime_report",
        "call_completion_threshold_param",
        "short_duration_threshold_param",
        "service_level_threshold_param",
        "service_level_inclusions_param",
        "service_level_objective_threshold_param",
        "abandoned_call_threshold_param",
        "service_level_threshold_param_number",
        "abandoned_call_threshold_param_number",
        "filter_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E("data_template", "dataTemplate", str, is_required=True),
            E("filter_number", "filterNumber", int),
            E(
                "xslt_template",
                "xsltTemplate",
                OCI.LabeledFileResource,
                is_complex=True,
                is_required=True,
            ),
            E("scope", "scope", str, is_required=True),
            E("is_enabled", "isEnabled", bool, is_required=True),
            E("is_realtime_report", "isRealtimeReport", bool),
            E("call_completion_threshold_param", "callCompletionThresholdParam", str),
            E("short_duration_threshold_param", "shortDurationThresholdParam", str),
            E("service_level_threshold_param", "serviceLevelThresholdParam", str),
            E("service_level_inclusions_param", "serviceLevelInclusionsParam", str),
            E(
                "service_level_objective_threshold_param",
                "serviceLevelObjectiveThresholdParam",
                str,
            ),
            E("abandoned_call_threshold_param", "abandonedCallThresholdParam", str),
            E(
                "service_level_threshold_param_number",
                "serviceLevelThresholdParamNumber",
                int,
            ),
            E(
                "abandoned_call_threshold_param_number",
                "abandonedCallThresholdParamNumber",
                int,
            ),
            E("filter_value", "filterValue", str, is_array=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): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        xslt_template (OCI.xsltTemplate): xsltTemplate *Optional*
        scope (str): scope *Optional*
        is_enabled (bool): isEnabled *Optional*
        is_realtime_report (bool): isRealtimeReport *Optional*
        filter_number (int): filterNumber *Optional*
        filter_value (OCI.filterValue): filterValue *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "description",
        "xslt_template",
        "scope",
        "is_enabled",
        "is_realtime_report",
        "filter_number",
        "filter_value",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E(
                "xslt_template",
                "xsltTemplate",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E("scope", "scope", str),
            E("is_enabled", "isEnabled", bool),
            E("is_realtime_report", "isRealtimeReport", bool),
            E("filter_number", "filterNumber", int),
            E(
                "filter_value",
                "filterValue",
                OCI.CallCenterReportDataTemplateQueryFilterValueReplacementList,
                is_complex=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 (int): responseSizeLimit *Optional*
        search_criteria_call_center_scheduled_report_name
            (List[OCI.searchCriteriaCallCenterScheduledReportName]):
            searchCriteriaCallCenterScheduledReportName *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_call_center_scheduled_report_service_provider
            (OCI.searchCriteriaExactCallCenterScheduledReportServiceProvider):
            searchCriteriaExactCallCenterScheduledReportServiceProvider *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_call_center_scheduled_report_created_by_supervisor
            (OCI.searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor):
            searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor *Optional*
        search_criteria_call_center_report_template_name
            (List[OCI.searchCriteriaCallCenterReportTemplateName]):
            searchCriteriaCallCenterReportTemplateName *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_call_center_scheduled_report_name",
        "search_criteria_group_id",
        "search_criteria_exact_call_center_scheduled_report_service_provider",
        "search_criteria_service_provider_id",
        "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
        "search_criteria_call_center_report_template_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_call_center_scheduled_report_name",
                "searchCriteriaCallCenterScheduledReportName",
                OCI.SearchCriteriaCallCenterScheduledReportName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_scheduled_report_service_provider",
                "searchCriteriaExactCallCenterScheduledReportServiceProvider",
                OCI.SearchCriteriaExactCallCenterScheduledReportServiceProvider,
                is_complex=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
                "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor",
                OCI.SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor,
                is_complex=True,
            ),
            E(
                "search_criteria_call_center_report_template_name",
                "searchCriteriaCallCenterReportTemplateName",
                OCI.SearchCriteriaCallCenterReportTemplateName,
                is_complex=True,
                is_array=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 (int): responseSizeLimit *Optional*
        search_criteria_call_center_scheduled_report_name
            (List[OCI.searchCriteriaCallCenterScheduledReportName]):
            searchCriteriaCallCenterScheduledReportName *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_call_center_scheduled_report_service_provider
            (OCI.searchCriteriaExactCallCenterScheduledReportServiceProvider):
            searchCriteriaExactCallCenterScheduledReportServiceProvider *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_call_center_scheduled_report_created_by_supervisor
            (OCI.searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor):
            searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor *Optional*
        search_criteria_call_center_report_template_name
            (List[OCI.searchCriteriaCallCenterReportTemplateName]):
            searchCriteriaCallCenterReportTemplateName *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_call_center_scheduled_report_name",
        "search_criteria_group_id",
        "search_criteria_exact_call_center_scheduled_report_service_provider",
        "search_criteria_service_provider_id",
        "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
        "search_criteria_call_center_report_template_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_call_center_scheduled_report_name",
                "searchCriteriaCallCenterScheduledReportName",
                OCI.SearchCriteriaCallCenterScheduledReportName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_scheduled_report_service_provider",
                "searchCriteriaExactCallCenterScheduledReportServiceProvider",
                OCI.SearchCriteriaExactCallCenterScheduledReportServiceProvider,
                is_complex=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
                "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor",
                OCI.SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor,
                is_complex=True,
            ),
            E(
                "search_criteria_call_center_report_template_name",
                "searchCriteriaCallCenterReportTemplateName",
                OCI.SearchCriteriaCallCenterReportTemplateName,
                is_complex=True,
                is_array=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 (int): responseSizeLimit *Optional*
        search_criteria_call_center_scheduled_report_name
            (List[OCI.searchCriteriaCallCenterScheduledReportName]):
            searchCriteriaCallCenterScheduledReportName *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_call_center_scheduled_report_service_provider
            (OCI.searchCriteriaExactCallCenterScheduledReportServiceProvider):
            searchCriteriaExactCallCenterScheduledReportServiceProvider *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_call_center_scheduled_report_created_by_supervisor
            (OCI.searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor):
            searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor *Optional*
        search_criteria_call_center_report_template_name
            (List[OCI.searchCriteriaCallCenterReportTemplateName]):
            searchCriteriaCallCenterReportTemplateName *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_call_center_scheduled_report_name",
        "search_criteria_group_id",
        "search_criteria_exact_call_center_scheduled_report_service_provider",
        "search_criteria_service_provider_id",
        "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
        "search_criteria_call_center_report_template_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_call_center_scheduled_report_name",
                "searchCriteriaCallCenterScheduledReportName",
                OCI.SearchCriteriaCallCenterScheduledReportName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_scheduled_report_service_provider",
                "searchCriteriaExactCallCenterScheduledReportServiceProvider",
                OCI.SearchCriteriaExactCallCenterScheduledReportServiceProvider,
                is_complex=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
                "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor",
                OCI.SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor,
                is_complex=True,
            ),
            E(
                "search_criteria_call_center_report_template_name",
                "searchCriteriaCallCenterReportTemplateName",
                OCI.SearchCriteriaCallCenterReportTemplateName,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemCallProcessingPolicyProfileModifyRequest(OCIRequest):
    """
    Modify a call processing policy profile in system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by
    `SystemCallProcessingPolicyProfileModifyRequest20()`.

    Attributes:
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        assigned_subscriber_type_list (OCI.assignedSubscriberTypeList):
            assignedSubscriberTypeList *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "description",
        "assigned_subscriber_type_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E(
                "assigned_subscriber_type_list",
                "assignedSubscriberTypeList",
                OCI.ReplacementCallProcessingPolicyProfileSubscriberTypeList,
                is_complex=True,
            ),
        )


class SystemCallProcessingPolicyProfileModifyRequest20(OCIRequest):
    """
    Modify a call processing policy profile in system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        assigned_subscriber_type_list (OCI.assignedSubscriberTypeList):
            assignedSubscriberTypeList *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "description",
        "assigned_subscriber_type_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E(
                "assigned_subscriber_type_list",
                "assignedSubscriberTypeList",
                OCI.ReplacementCallProcessingPolicyProfileSubscriberTypeList20,
                is_complex=True,
            ),
        )


class SystemCallProcessingPolicyProfileModifyRequest21(OCIRequest):
    """
    Modify a call processing policy profile in system.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        assigned_subscriber_type_list (OCI.assignedSubscriberTypeList):
            assignedSubscriberTypeList *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "description",
        "assigned_subscriber_type_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E(
                "assigned_subscriber_type_list",
                "assignedSubscriberTypeList",
                OCI.ReplacementCallProcessingPolicyProfileSubscriberTypeList21,
                is_complex=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): classmark
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_service_provider_id
            (OCI.searchCriteriaExactServiceProviderId):
            searchCriteriaExactServiceProviderId *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "classmark",
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_exact_service_provider_id",
        "search_criteria_service_provider_id",
        "search_criteria_user_first_name",
        "search_criteria_user_last_name",
        "search_criteria_dn",
        "search_criteria_user_id",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("classmark", "classmark", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_service_provider_id",
                "searchCriteriaExactServiceProviderId",
                OCI.SearchCriteriaExactServiceProvider,
                is_complex=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemCollaborateModifyRequest(OCIRequest):
    """
    Modify the system level data associated with collaborate services.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemCollaborateModifyRequest20sp1()`

    Attributes:
        collaborate_room_id_length (int): collaborateRoomIdLength *Optional*
        instant_room_idle_timeout_seconds (int): instantRoomIdleTimeoutSeconds *Optional*
        collaborate_room_maximum_duration_minutes (int):
            collaborateRoomMaximumDurationMinutes *Optional*
        support_outdial (bool): supportOutdial *Optional*
        max_collaborate_room_participants (int): maxCollaborateRoomParticipants *Optional*
        collaborate_active_talker_refresh_interval_seconds (int):
            collaborateActiveTalkerRefreshIntervalSeconds *Optional*
        terminate_collaborate_after_grace_period (bool):
            terminateCollaborateAfterGracePeriod *Optional*
        collaborate_grace_period (OCI.collaborateGracePeriod): collaborateGracePeriod
            *Optional*
        enable_active_collaborate_notification (bool): enableActiveCollaborateNotification
            *Optional*
        collaborate_from_address (str): collaborateFromAddress *Optional*
    """

    __slots__: List[str] = [
        "collaborate_room_id_length",
        "instant_room_idle_timeout_seconds",
        "collaborate_room_maximum_duration_minutes",
        "support_outdial",
        "max_collaborate_room_participants",
        "collaborate_active_talker_refresh_interval_seconds",
        "terminate_collaborate_after_grace_period",
        "collaborate_grace_period",
        "enable_active_collaborate_notification",
        "collaborate_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("collaborate_room_id_length", "collaborateRoomIdLength", int),
            E(
                "instant_room_idle_timeout_seconds",
                "instantRoomIdleTimeoutSeconds",
                int,
            ),
            E(
                "collaborate_room_maximum_duration_minutes",
                "collaborateRoomMaximumDurationMinutes",
                int,
            ),
            E("support_outdial", "supportOutdial", bool),
            E(
                "max_collaborate_room_participants",
                "maxCollaborateRoomParticipants",
                int,
            ),
            E(
                "collaborate_active_talker_refresh_interval_seconds",
                "collaborateActiveTalkerRefreshIntervalSeconds",
                int,
            ),
            E(
                "terminate_collaborate_after_grace_period",
                "terminateCollaborateAfterGracePeriod",
                bool,
            ),
            E(
                "collaborate_grace_period",
                "collaborateGracePeriod",
                OCI.CollaborateGracePeriodDuration,
                is_complex=True,
            ),
            E(
                "enable_active_collaborate_notification",
                "enableActiveCollaborateNotification",
                bool,
            ),
            E("collaborate_from_address", "collaborateFromAddress", str),
        )


class SystemCollaborateModifyRequest20sp1(OCIRequest):
    """
    Modify the system level data associated with collaborate services.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by
    SystemCollaborateModifyRequest20sp1V2

    Attributes:
        collaborate_room_id_length (int): collaborateRoomIdLength *Optional*
        instant_room_idle_timeout_seconds (int): instantRoomIdleTimeoutSeconds *Optional*
        collaborate_room_maximum_duration_minutes (int):
            collaborateRoomMaximumDurationMinutes *Optional*
        support_outdial (bool): supportOutdial *Optional*
        max_collaborate_room_participants (int): maxCollaborateRoomParticipants *Optional*
        collaborate_active_talker_refresh_interval_seconds (int):
            collaborateActiveTalkerRefreshIntervalSeconds *Optional*
        terminate_collaborate_after_grace_period (bool):
            terminateCollaborateAfterGracePeriod *Optional*
        collaborate_grace_period (OCI.collaborateGracePeriod): collaborateGracePeriod
            *Optional*
        enable_active_collaborate_notification (bool): enableActiveCollaborateNotification
            *Optional*
        collaborate_from_address (str): collaborateFromAddress *Optional*
    """

    __slots__: List[str] = [
        "collaborate_room_id_length",
        "instant_room_idle_timeout_seconds",
        "collaborate_room_maximum_duration_minutes",
        "support_outdial",
        "max_collaborate_room_participants",
        "collaborate_active_talker_refresh_interval_seconds",
        "terminate_collaborate_after_grace_period",
        "collaborate_grace_period",
        "enable_active_collaborate_notification",
        "collaborate_from_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("collaborate_room_id_length", "collaborateRoomIdLength", int),
            E(
                "instant_room_idle_timeout_seconds",
                "instantRoomIdleTimeoutSeconds",
                int,
            ),
            E(
                "collaborate_room_maximum_duration_minutes",
                "collaborateRoomMaximumDurationMinutes",
                int,
            ),
            E("support_outdial", "supportOutdial", bool),
            E(
                "max_collaborate_room_participants",
                "maxCollaborateRoomParticipants",
                int,
            ),
            E(
                "collaborate_active_talker_refresh_interval_seconds",
                "collaborateActiveTalkerRefreshIntervalSeconds",
                int,
            ),
            E(
                "terminate_collaborate_after_grace_period",
                "terminateCollaborateAfterGracePeriod",
                bool,
            ),
            E(
                "collaborate_grace_period",
                "collaborateGracePeriod",
                OCI.CollaborateGracePeriodDuration,
                is_complex=True,
            ),
            E(
                "enable_active_collaborate_notification",
                "enableActiveCollaborateNotification",
                bool,
            ),
            E("collaborate_from_address", "collaborateFromAddress", str),
        )


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): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        match_call_type (OCI.matchCallType): matchCallType *Optional*
        match_alternate_call_indicator (OCI.matchAlternateCallIndicator):
            matchAlternateCallIndicator *Optional*
        match_virtual_on_net_call_type (OCI.matchVirtualOnNetCallType):
            matchVirtualOnNetCallType *Optional*
        match_public_network (bool): matchPublicNetwork *Optional*
        match_private_network (bool): matchPrivateNetwork *Optional*
        match_local_category (bool): matchLocalCategory *Optional*
        match_national_category (bool): matchNationalCategory *Optional*
        match_interlata_category (bool): matchInterlataCategory *Optional*
        match_intralata_category (bool): matchIntralataCategory *Optional*
        match_international_category (bool): matchInternationalCategory *Optional*
        match_private_category (bool): matchPrivateCategory *Optional*
        match_emergency_category (bool): matchEmergencyCategory *Optional*
        match_other_category (bool): matchOtherCategory *Optional*
        match_inter_network (bool): matchInterNetwork *Optional*
        match_inter_hosting_ne (bool): matchInterHostingNE *Optional*
        match_inter_as (bool): matchInterAS *Optional*
        match_intra_as (bool): matchIntraAS *Optional*
        match_charge_calls (bool): matchChargeCalls *Optional*
        match_no_charge_calls (bool): matchNoChargeCalls *Optional*
        match_group_calls (bool): matchGroupCalls *Optional*
        match_enterprise_calls (bool): matchEnterpriseCalls *Optional*
        match_network_calls (bool): matchNetworkCalls *Optional*
        match_network_url_calls (bool): matchNetworkURLCalls *Optional*
        match_repair_calls (bool): matchRepairCalls *Optional*
        match_emergency_calls (bool): matchEmergencyCalls *Optional*
        match_internal_calls (bool): matchInternalCalls *Optional*
        match_other_gets_gets (bool): matchOtherGETSGets *Optional*
        match_not_gets_gets (bool): matchNotGETSGets *Optional*
        match_getsan_gets (bool): matchGETSANGets *Optional*
        match_getsnt_gets (bool): matchGETSNTGets *Optional*
        match_getsfc_gets (bool): matchGETSFCGets *Optional*
        match_getsfcan_gets (bool): matchGETSFCANGets *Optional*
        match_getsfcnt_gets (bool): matchGETSFCNTGets *Optional*
        match_location (str): matchLocation *Optional*
        match_roaming (str): matchRoaming *Optional*
        time_schedule (str): timeSchedule *Optional*
        holiday_schedule (str): holidaySchedule *Optional*
        match_number_portability_status (OCI.matchNumberPortabilityStatus):
            matchNumberPortabilityStatus *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "description",
        "match_call_type",
        "match_alternate_call_indicator",
        "match_virtual_on_net_call_type",
        "match_public_network",
        "match_private_network",
        "match_local_category",
        "match_national_category",
        "match_interlata_category",
        "match_intralata_category",
        "match_international_category",
        "match_private_category",
        "match_emergency_category",
        "match_other_category",
        "match_inter_network",
        "match_inter_hosting_ne",
        "match_inter_as",
        "match_intra_as",
        "match_charge_calls",
        "match_no_charge_calls",
        "match_group_calls",
        "match_enterprise_calls",
        "match_network_calls",
        "match_network_url_calls",
        "match_repair_calls",
        "match_emergency_calls",
        "match_internal_calls",
        "match_other_gets_gets",
        "match_not_gets_gets",
        "match_getsan_gets",
        "match_getsnt_gets",
        "match_getsfc_gets",
        "match_getsfcan_gets",
        "match_getsfcnt_gets",
        "match_location",
        "match_roaming",
        "time_schedule",
        "holiday_schedule",
        "match_number_portability_status",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E(
                "match_call_type",
                "matchCallType",
                OCI.ReplacementCommunicationBarringCallTypeList,
                is_complex=True,
            ),
            E(
                "match_alternate_call_indicator",
                "matchAlternateCallIndicator",
                OCI.ReplacementCommunicationBarringAlternateCallIndicatorList,
                is_complex=True,
            ),
            E(
                "match_virtual_on_net_call_type",
                "matchVirtualOnNetCallType",
                OCI.ReplacementVirtualOnNetCallTypeNameList,
                is_complex=True,
            ),
            E("match_public_network", "matchPublicNetwork", bool),
            E("match_private_network", "matchPrivateNetwork", bool),
            E("match_local_category", "matchLocalCategory", bool),
            E("match_national_category", "matchNationalCategory", bool),
            E("match_interlata_category", "matchInterlataCategory", bool),
            E("match_intralata_category", "matchIntralataCategory", bool),
            E("match_international_category", "matchInternationalCategory", bool),
            E("match_private_category", "matchPrivateCategory", bool),
            E("match_emergency_category", "matchEmergencyCategory", bool),
            E("match_other_category", "matchOtherCategory", bool),
            E("match_inter_network", "matchInterNetwork", bool),
            E("match_inter_hosting_ne", "matchInterHostingNE", bool),
            E("match_inter_as", "matchInterAS", bool),
            E("match_intra_as", "matchIntraAS", bool),
            E("match_charge_calls", "matchChargeCalls", bool),
            E("match_no_charge_calls", "matchNoChargeCalls", bool),
            E("match_group_calls", "matchGroupCalls", bool),
            E("match_enterprise_calls", "matchEnterpriseCalls", bool),
            E("match_network_calls", "matchNetworkCalls", bool),
            E("match_network_url_calls", "matchNetworkURLCalls", bool),
            E("match_repair_calls", "matchRepairCalls", bool),
            E("match_emergency_calls", "matchEmergencyCalls", bool),
            E("match_internal_calls", "matchInternalCalls", bool),
            E("match_other_gets_gets", "matchOtherGETSGets", bool),
            E("match_not_gets_gets", "matchNotGETSGets", bool),
            E("match_getsan_gets", "matchGETSANGets", bool),
            E("match_getsnt_gets", "matchGETSNTGets", bool),
            E("match_getsfc_gets", "matchGETSFCGets", bool),
            E("match_getsfcan_gets", "matchGETSFCANGets", bool),
            E("match_getsfcnt_gets", "matchGETSFCNTGets", bool),
            E("match_location", "matchLocation", str),
            E("match_roaming", "matchRoaming", str),
            E("time_schedule", "timeSchedule", str),
            E("holiday_schedule", "holidaySchedule", str),
            E(
                "match_number_portability_status",
                "matchNumberPortabilityStatus",
                OCI.ReplacementNumberPortabilityStatusList,
                is_complex=True,
            ),
        )


class SystemCommunicationBarringDigitPatternCriteriaGetPatternListRequest(OCIRequest):
    """
    Get an existing Digit Pattern Criteria.

    The response is either a
    `SystemCommunicationBarringDigitPatternCriteriaGetPatternListResponse()` or an
    `ErrorResponse()`.

    Attributes:
        name (str): name
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_digit_pattern (List[OCI.searchCriteriaDigitPattern]):
            searchCriteriaDigitPattern *Optional*
    """

    __slots__: List[str] = [
        "name",
        "response_size_limit",
        "search_criteria_digit_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_digit_pattern",
                "searchCriteriaDigitPattern",
                OCI.SearchCriteriaDigitPattern,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemCommunicationBarringIncomingCriteriaModifyRequest(OCIRequest):
    """
    Modify an existing Communication Barring Incoming Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        time_schedule (str): timeSchedule *Optional*
        holiday_schedule (str): holidaySchedule *Optional*
        match_number_portability_status (OCI.matchNumberPortabilityStatus):
            matchNumberPortabilityStatus *Optional*
        call_tagged_as_spam (bool): callTaggedAsSpam *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "description",
        "time_schedule",
        "holiday_schedule",
        "match_number_portability_status",
        "call_tagged_as_spam",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E("time_schedule", "timeSchedule", str),
            E("holiday_schedule", "holidaySchedule", str),
            E(
                "match_number_portability_status",
                "matchNumberPortabilityStatus",
                OCI.ReplacementNumberPortabilityStatusList,
                is_complex=True,
            ),
            E("call_tagged_as_spam", "callTaggedAsSpam", bool),
        )


class SystemCommunicationBarringProfileAddRequest(OCIRequest):
    """
    Add a new Communication Barring Profile.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        description (str): description *Optional*
        originating_default_action (str): originatingDefaultAction
        originating_default_treatment_id (str): originatingDefaultTreatmentId *Optional*
        originating_default_transfer_number (str): originatingDefaultTransferNumber
            *Optional*
        originating_default_call_timeout (int): originatingDefaultCallTimeout *Optional*
        originating_rule (List[OCI.originatingRule]): originatingRule *Optional*
        redirecting_default_action (str): redirectingDefaultAction
        redirecting_default_call_timeout (int): redirectingDefaultCallTimeout *Optional*
        redirecting_rule (List[OCI.redirectingRule]): redirectingRule *Optional*
    """

    __slots__: List[str] = [
        "name",
        "description",
        "originating_default_action",
        "originating_default_treatment_id",
        "originating_default_transfer_number",
        "originating_default_call_timeout",
        "originating_rule",
        "redirecting_default_action",
        "redirecting_default_call_timeout",
        "redirecting_rule",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E(
                "originating_default_action",
                "originatingDefaultAction",
                str,
                is_required=True,
            ),
            E("originating_default_treatment_id", "originatingDefaultTreatmentId", str),
            E(
                "originating_default_transfer_number",
                "originatingDefaultTransferNumber",
                str,
            ),
            E("originating_default_call_timeout", "originatingDefaultCallTimeout", int),
            E(
                "originating_rule",
                "originatingRule",
                OCI.CommunicationBarringOriginatingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "redirecting_default_action",
                "redirectingDefaultAction",
                str,
                is_required=True,
            ),
            E("redirecting_default_call_timeout", "redirectingDefaultCallTimeout", int),
            E(
                "redirecting_rule",
                "redirectingRule",
                OCI.CommunicationBarringRedirectingRule,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemCommunicationBarringProfileAddRequest17sp1(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 XS data mode: incomingDefaultAction
    incomingDefaultCallTimeout incomingRule

    Attributes:
        name (str): name
        description (str): description *Optional*
        originating_default_action (str): originatingDefaultAction
        originating_default_treatment_id (str): originatingDefaultTreatmentId *Optional*
        originating_default_transfer_number (str): originatingDefaultTransferNumber
            *Optional*
        originating_default_call_timeout (int): originatingDefaultCallTimeout *Optional*
        originating_rule (List[OCI.originatingRule]): originatingRule *Optional*
        redirecting_default_action (str): redirectingDefaultAction
        redirecting_default_call_timeout (int): redirectingDefaultCallTimeout *Optional*
        redirecting_rule (List[OCI.redirectingRule]): redirectingRule *Optional*
        incoming_default_action (str): incomingDefaultAction
        incoming_default_call_timeout (int): incomingDefaultCallTimeout *Optional*
        incoming_rule (List[OCI.incomingRule]): incomingRule *Optional*
    """

    __slots__: List[str] = [
        "name",
        "description",
        "originating_default_action",
        "originating_default_treatment_id",
        "originating_default_transfer_number",
        "originating_default_call_timeout",
        "originating_rule",
        "redirecting_default_action",
        "redirecting_default_call_timeout",
        "redirecting_rule",
        "incoming_default_action",
        "incoming_default_call_timeout",
        "incoming_rule",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E(
                "originating_default_action",
                "originatingDefaultAction",
                str,
                is_required=True,
            ),
            E("originating_default_treatment_id", "originatingDefaultTreatmentId", str),
            E(
                "originating_default_transfer_number",
                "originatingDefaultTransferNumber",
                str,
            ),
            E("originating_default_call_timeout", "originatingDefaultCallTimeout", int),
            E(
                "originating_rule",
                "originatingRule",
                OCI.CommunicationBarringOriginatingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "redirecting_default_action",
                "redirectingDefaultAction",
                str,
                is_required=True,
            ),
            E("redirecting_default_call_timeout", "redirectingDefaultCallTimeout", int),
            E(
                "redirecting_rule",
                "redirectingRule",
                OCI.CommunicationBarringRedirectingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "incoming_default_action",
                "incomingDefaultAction",
                str,
                is_required=True,
            ),
            E("incoming_default_call_timeout", "incomingDefaultCallTimeout", int),
            E(
                "incoming_rule",
                "incomingRule",
                OCI.CommunicationBarringIncomingRule,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemCommunicationBarringProfileAddRequest17sp3(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 The following elements are only used in AS data mode and ignored in XS
    data mode: callMeNowDefaultCallTimeout callMeNowRule Replaced by:
    `SystemCommunicationBarringProfileAddRequest19sp1()` in AS data mode

    Attributes:
        name (str): name
        description (str): description *Optional*
        originating_default_action (str): originatingDefaultAction
        originating_default_treatment_id (str): originatingDefaultTreatmentId *Optional*
        originating_default_transfer_number (str): originatingDefaultTransferNumber
            *Optional*
        originating_default_call_timeout (int): originatingDefaultCallTimeout *Optional*
        originating_rule (List[OCI.originatingRule]): originatingRule *Optional*
        redirecting_default_action (str): redirectingDefaultAction
        redirecting_default_call_timeout (int): redirectingDefaultCallTimeout *Optional*
        redirecting_rule (List[OCI.redirectingRule]): redirectingRule *Optional*
        incoming_default_action (str): incomingDefaultAction
        incoming_default_call_timeout (int): incomingDefaultCallTimeout *Optional*
        incoming_rule (List[OCI.incomingRule]): incomingRule *Optional*
        call_me_now_default_action (str): callMeNowDefaultAction
        call_me_now_default_call_timeout (int): callMeNowDefaultCallTimeout *Optional*
        call_me_now_rule (List[OCI.callMeNowRule]): callMeNowRule *Optional*
    """

    __slots__: List[str] = [
        "name",
        "description",
        "originating_default_action",
        "originating_default_treatment_id",
        "originating_default_transfer_number",
        "originating_default_call_timeout",
        "originating_rule",
        "redirecting_default_action",
        "redirecting_default_call_timeout",
        "redirecting_rule",
        "incoming_default_action",
        "incoming_default_call_timeout",
        "incoming_rule",
        "call_me_now_default_action",
        "call_me_now_default_call_timeout",
        "call_me_now_rule",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E(
                "originating_default_action",
                "originatingDefaultAction",
                str,
                is_required=True,
            ),
            E("originating_default_treatment_id", "originatingDefaultTreatmentId", str),
            E(
                "originating_default_transfer_number",
                "originatingDefaultTransferNumber",
                str,
            ),
            E("originating_default_call_timeout", "originatingDefaultCallTimeout", int),
            E(
                "originating_rule",
                "originatingRule",
                OCI.CommunicationBarringOriginatingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "redirecting_default_action",
                "redirectingDefaultAction",
                str,
                is_required=True,
            ),
            E("redirecting_default_call_timeout", "redirectingDefaultCallTimeout", int),
            E(
                "redirecting_rule",
                "redirectingRule",
                OCI.CommunicationBarringRedirectingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "incoming_default_action",
                "incomingDefaultAction",
                str,
                is_required=True,
            ),
            E("incoming_default_call_timeout", "incomingDefaultCallTimeout", int),
            E(
                "incoming_rule",
                "incomingRule",
                OCI.CommunicationBarringIncomingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "call_me_now_default_action",
                "callMeNowDefaultAction",
                str,
                is_required=True,
            ),
            E("call_me_now_default_call_timeout", "callMeNowDefaultCallTimeout", int),
            E(
                "call_me_now_rule",
                "callMeNowRule",
                OCI.CommunicationBarringCallMeNowRule,
                is_complex=True,
                is_array=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): name
        description (str): description *Optional*
        originating_default_action (str): originatingDefaultAction
        originating_default_treatment_id (str): originatingDefaultTreatmentId *Optional*
        originating_default_transfer_number (str): originatingDefaultTransferNumber
            *Optional*
        originating_default_call_timeout (int): originatingDefaultCallTimeout *Optional*
        originating_rule (List[OCI.originatingRule]): originatingRule *Optional*
        redirecting_default_action (str): redirectingDefaultAction
        redirecting_default_call_timeout (int): redirectingDefaultCallTimeout *Optional*
        redirecting_rule (List[OCI.redirectingRule]): redirectingRule *Optional*
        incoming_default_action (str): incomingDefaultAction
        incoming_default_call_timeout (int): incomingDefaultCallTimeout *Optional*
        incoming_rule (List[OCI.incomingRule]): incomingRule *Optional*
        call_me_now_default_action (str): callMeNowDefaultAction
        call_me_now_default_call_timeout (int): callMeNowDefaultCallTimeout *Optional*
        call_me_now_rule (List[OCI.callMeNowRule]): callMeNowRule *Optional*
        apply_to_attended_call_transfers (bool): applyToAttendedCallTransfers
    """

    __slots__: List[str] = [
        "name",
        "description",
        "originating_default_action",
        "originating_default_treatment_id",
        "originating_default_transfer_number",
        "originating_default_call_timeout",
        "originating_rule",
        "redirecting_default_action",
        "redirecting_default_call_timeout",
        "redirecting_rule",
        "incoming_default_action",
        "incoming_default_call_timeout",
        "incoming_rule",
        "call_me_now_default_action",
        "call_me_now_default_call_timeout",
        "call_me_now_rule",
        "apply_to_attended_call_transfers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E(
                "originating_default_action",
                "originatingDefaultAction",
                str,
                is_required=True,
            ),
            E("originating_default_treatment_id", "originatingDefaultTreatmentId", str),
            E(
                "originating_default_transfer_number",
                "originatingDefaultTransferNumber",
                str,
            ),
            E("originating_default_call_timeout", "originatingDefaultCallTimeout", int),
            E(
                "originating_rule",
                "originatingRule",
                OCI.CommunicationBarringOriginatingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "redirecting_default_action",
                "redirectingDefaultAction",
                str,
                is_required=True,
            ),
            E("redirecting_default_call_timeout", "redirectingDefaultCallTimeout", int),
            E(
                "redirecting_rule",
                "redirectingRule",
                OCI.CommunicationBarringRedirectingRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "incoming_default_action",
                "incomingDefaultAction",
                str,
                is_required=True,
            ),
            E("incoming_default_call_timeout", "incomingDefaultCallTimeout", int),
            E(
                "incoming_rule",
                "incomingRule",
                OCI.CommunicationBarringIncomingRule19sp1,
                is_complex=True,
                is_array=True,
            ),
            E(
                "call_me_now_default_action",
                "callMeNowDefaultAction",
                str,
                is_required=True,
            ),
            E("call_me_now_default_call_timeout", "callMeNowDefaultCallTimeout", int),
            E(
                "call_me_now_rule",
                "callMeNowRule",
                OCI.CommunicationBarringCallMeNowRule,
                is_complex=True,
                is_array=True,
            ),
            E(
                "apply_to_attended_call_transfers",
                "applyToAttendedCallTransfers",
                bool,
                is_required=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 (bool): includeSystemLevel *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
    """

    __slots__: List[str] = [
        "include_system_level",
        "search_criteria_reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("include_system_level", "includeSystemLevel", bool),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemDeviceFamilyModifyRequest(OCIRequest):
    """
    Request to modify a device family.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        device_family_name (str): deviceFamilyName
        new_device_family_name (str): newDeviceFamilyName *Optional*
        device_type_list (OCI.deviceTypeList): deviceTypeList *Optional*
        tag_set_list (OCI.tagSetList): tagSetList *Optional*
    """

    __slots__: List[str] = [
        "device_family_name",
        "new_device_family_name",
        "device_type_list",
        "tag_set_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_family_name", "deviceFamilyName", str, is_required=True),
            E("new_device_family_name", "newDeviceFamilyName", str),
            E(
                "device_type_list",
                "deviceTypeList",
                OCI.ReplacementDeviceTypeList,
                is_complex=True,
            ),
            E("tag_set_list", "tagSetList", OCI.ReplacementTagSetList, is_complex=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[OCI.autoRebuildConfigEntry]):
            autoRebuildConfigEntry
    """

    __slots__: List[str] = [
        "auto_rebuild_config_entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "auto_rebuild_config_entry",
                "autoRebuildConfigEntry",
                OCI.DeviceManagementAutoRebuildConfigEntry,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class SystemDeviceManagementEventGetListRequest(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 `SystemDeviceManagementEventGetListResponse()` or an
    `ErrorResponse()`. Deprecated by: `SystemDeviceManagementEventGetListRequest22()`.

    Attributes:
        event_queue_type (str): eventQueueType *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_exact_device_management_event_status_in_progress_or_pending
            (OCI.searchCriteriaExactDeviceManagementEventStatusInProgressOrPending):
            searchCriteriaExactDeviceManagementEventStatusInProgressOrPending *Optional*
        search_criteria_exact_device_management_event_status_completed
            (OCI.searchCriteriaExactDeviceManagementEventStatusCompleted):
            searchCriteriaExactDeviceManagementEventStatusCompleted *Optional*
        search_criteria_exact_device_management_event_action
            (OCI.searchCriteriaExactDeviceManagementEventAction):
            searchCriteriaExactDeviceManagementEventAction *Optional*
        search_criteria_exact_device_management_event_level
            (OCI.searchCriteriaExactDeviceManagementEventLevel):
            searchCriteriaExactDeviceManagementEventLevel *Optional*
        search_criteria_exact_device_management_event_type
            (OCI.searchCriteriaExactDeviceManagementEventType):
            searchCriteriaExactDeviceManagementEventType *Optional*
        search_criteria_device_management_event_additional_info
            (List[OCI.searchCriteriaDeviceManagementEventAdditionalInfo]):
            searchCriteriaDeviceManagementEventAdditionalInfo *Optional*
        search_criteria_device_management_event_login_id
            (List[OCI.searchCriteriaDeviceManagementEventLoginId]):
            searchCriteriaDeviceManagementEventLoginId *Optional*
    """

    __slots__: List[str] = [
        "event_queue_type",
        "response_size_limit",
        "search_criteria_exact_device_management_event_status_in_progress_or_pending",
        "search_criteria_exact_device_management_event_status_completed",
        "search_criteria_exact_device_management_event_action",
        "search_criteria_exact_device_management_event_level",
        "search_criteria_exact_device_management_event_type",
        "search_criteria_device_management_event_additional_info",
        "search_criteria_device_management_event_login_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("event_queue_type", "eventQueueType", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_exact_device_management_event_status_in_progress_or_pending",
                "searchCriteriaExactDeviceManagementEventStatusInProgressOrPending",
                OCI.SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_status_completed",
                "searchCriteriaExactDeviceManagementEventStatusCompleted",
                OCI.SearchCriteriaExactDeviceManagementEventStatusCompleted,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_action",
                "searchCriteriaExactDeviceManagementEventAction",
                OCI.SearchCriteriaExactDeviceManagementEventAction,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_level",
                "searchCriteriaExactDeviceManagementEventLevel",
                OCI.SearchCriteriaExactDeviceManagementEventLevel,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_type",
                "searchCriteriaExactDeviceManagementEventType",
                OCI.SearchCriteriaExactDeviceManagementEventType,
                is_complex=True,
            ),
            E(
                "search_criteria_device_management_event_additional_info",
                "searchCriteriaDeviceManagementEventAdditionalInfo",
                OCI.SearchCriteriaDeviceManagementEventAdditionalInfo,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_management_event_login_id",
                "searchCriteriaDeviceManagementEventLoginId",
                OCI.SearchCriteriaDeviceManagementEventLoginId,
                is_complex=True,
                is_array=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 (str): eventQueueType *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_exact_device_management_event_status_in_progress_or_pending
            (OCI.searchCriteriaExactDeviceManagementEventStatusInProgressOrPending):
            searchCriteriaExactDeviceManagementEventStatusInProgressOrPending *Optional*
        search_criteria_exact_device_management_event_status_completed
            (OCI.searchCriteriaExactDeviceManagementEventStatusCompleted):
            searchCriteriaExactDeviceManagementEventStatusCompleted *Optional*
        search_criteria_exact_device_management_event_action
            (OCI.searchCriteriaExactDeviceManagementEventAction):
            searchCriteriaExactDeviceManagementEventAction *Optional*
        search_criteria_exact_device_management_event_level
            (OCI.searchCriteriaExactDeviceManagementEventLevel):
            searchCriteriaExactDeviceManagementEventLevel *Optional*
        search_criteria_exact_device_management_event_type
            (OCI.searchCriteriaExactDeviceManagementEventType):
            searchCriteriaExactDeviceManagementEventType *Optional*
        search_criteria_device_management_event_additional_info
            (List[OCI.searchCriteriaDeviceManagementEventAdditionalInfo]):
            searchCriteriaDeviceManagementEventAdditionalInfo *Optional*
        search_criteria_device_management_event_login_id
            (List[OCI.searchCriteriaDeviceManagementEventLoginId]):
            searchCriteriaDeviceManagementEventLoginId *Optional*
    """

    __slots__: List[str] = [
        "event_queue_type",
        "response_size_limit",
        "search_criteria_exact_device_management_event_status_in_progress_or_pending",
        "search_criteria_exact_device_management_event_status_completed",
        "search_criteria_exact_device_management_event_action",
        "search_criteria_exact_device_management_event_level",
        "search_criteria_exact_device_management_event_type",
        "search_criteria_device_management_event_additional_info",
        "search_criteria_device_management_event_login_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("event_queue_type", "eventQueueType", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_exact_device_management_event_status_in_progress_or_pending",
                "searchCriteriaExactDeviceManagementEventStatusInProgressOrPending",
                OCI.SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_status_completed",
                "searchCriteriaExactDeviceManagementEventStatusCompleted",
                OCI.SearchCriteriaExactDeviceManagementEventStatusCompleted,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_action",
                "searchCriteriaExactDeviceManagementEventAction",
                OCI.SearchCriteriaExactDeviceManagementEventAction,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_level",
                "searchCriteriaExactDeviceManagementEventLevel",
                OCI.SearchCriteriaExactDeviceManagementEventLevel,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_device_management_event_type",
                "searchCriteriaExactDeviceManagementEventType",
                OCI.SearchCriteriaExactDeviceManagementEventType,
                is_complex=True,
            ),
            E(
                "search_criteria_device_management_event_additional_info",
                "searchCriteriaDeviceManagementEventAdditionalInfo",
                OCI.SearchCriteriaDeviceManagementEventAdditionalInfo,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_management_event_login_id",
                "searchCriteriaDeviceManagementEventLoginId",
                OCI.SearchCriteriaDeviceManagementEventLoginId,
                is_complex=True,
                is_array=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): file
        reseller_id (str): resellerId *Optional*
        tag_set_override (bool): tagSetOverride *Optional*
        tag_set_rename (OCI.tagSetRename): tagSetRename *Optional*
    """

    __slots__: List[str] = [
        "file",
        "reseller_id",
        "tag_set_override",
        "tag_set_rename",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("file", "file", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E("tag_set_override", "tagSetOverride", bool),
            E(
                "tag_set_rename",
                "tagSetRename",
                OCI.DeviceManagementTagSetRename,
                is_complex=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): file
        reseller_id (str): resellerId *Optional*
        tag_set_override (bool): tagSetOverride *Optional*
        tag_set_rename (OCI.tagSetRename): tagSetRename *Optional*
    """

    __slots__: List[str] = [
        "file",
        "reseller_id",
        "tag_set_override",
        "tag_set_rename",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("file", "file", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E("tag_set_override", "tagSetOverride", bool),
            E(
                "tag_set_rename",
                "tagSetRename",
                OCI.DeviceManagementTagSetRename,
                is_complex=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): tagSetName
        region_name (str): regionName
        tag (List[OCI.tag]): tag
    """

    __slots__: List[str] = [
        "tag_set_name",
        "region_name",
        "tag",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("tag_set_name", "tagSetName", str, is_required=True),
            E("region_name", "regionName", str, is_required=True),
            E(
                "tag",
                "tag",
                OCI.DeviceManagementTag,
                is_complex=True,
                is_required=True,
                is_array=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[OCI.accessDevice]): accessDevice
    """

    __slots__: List[str] = [
        "access_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "access_device",
                "accessDevice",
                OCI.AccessDeviceKey,
                is_complex=True,
                is_required=True,
                is_array=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 (int): responseSizeLimit *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_organization_type (OCI.searchCriteriaExactOrganizationType):
            searchCriteriaExactOrganizationType *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_exact_device_type (OCI.searchCriteriaExactDeviceType):
            searchCriteriaExactDeviceType *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_service_provider_id",
        "search_criteria_exact_organization_type",
        "search_criteria_group_id",
        "search_criteria_device_name",
        "search_criteria_exact_device_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_organization_type",
                "searchCriteriaExactOrganizationType",
                OCI.SearchCriteriaExactOrganizationType,
                is_complex=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_device_type",
                "searchCriteriaExactDeviceType",
                OCI.SearchCriteriaExactDeviceType,
                is_complex=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): file
        reseller_id (str): resellerId *Optional*
        device_type_rename (OCI.deviceTypeRename): deviceTypeRename *Optional*
        device_type_file_update (bool): deviceTypeFileUpdate *Optional*
    """

    __slots__: List[str] = [
        "file",
        "reseller_id",
        "device_type_rename",
        "device_type_file_update",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("file", "file", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "device_type_rename",
                "deviceTypeRename",
                OCI.AccessDeviceTypeRename,
                is_complex=True,
            ),
            E("device_type_file_update", "deviceTypeFileUpdate", bool),
        )


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): file
        reseller_id (str): resellerId *Optional*
        device_type_rename (OCI.deviceTypeRename): deviceTypeRename *Optional*
        device_type_file_update (bool): deviceTypeFileUpdate *Optional*
    """

    __slots__: List[str] = [
        "file",
        "reseller_id",
        "device_type_rename",
        "device_type_file_update",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("file", "file", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "device_type_rename",
                "deviceTypeRename",
                OCI.AccessDeviceTypeRename,
                is_complex=True,
            ),
            E("device_type_file_update", "deviceTypeFileUpdate", bool),
        )


class SystemDialableCallerIDCriteriaModifyRequest(OCIRequest):
    """
    Modify a Dialable Caller ID Criteria.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        prefix_digits (str): prefixDigits *Optional*
        match_call_type (OCI.matchCallType): matchCallType *Optional*
        match_alternate_call_indicator (OCI.matchAlternateCallIndicator):
            matchAlternateCallIndicator *Optional*
        match_local_category (bool): matchLocalCategory *Optional*
        match_national_category (bool): matchNationalCategory *Optional*
        match_interlata_category (bool): matchInterlataCategory *Optional*
        match_intralata_category (bool): matchIntralataCategory *Optional*
        match_international_category (bool): matchInternationalCategory *Optional*
        match_private_category (bool): matchPrivateCategory *Optional*
        match_emergency_category (bool): matchEmergencyCategory *Optional*
        match_other_category (bool): matchOtherCategory *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "description",
        "prefix_digits",
        "match_call_type",
        "match_alternate_call_indicator",
        "match_local_category",
        "match_national_category",
        "match_interlata_category",
        "match_intralata_category",
        "match_international_category",
        "match_private_category",
        "match_emergency_category",
        "match_other_category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E("prefix_digits", "prefixDigits", str),
            E(
                "match_call_type",
                "matchCallType",
                OCI.ReplacementCommunicationBarringCallTypeList,
                is_complex=True,
            ),
            E(
                "match_alternate_call_indicator",
                "matchAlternateCallIndicator",
                OCI.ReplacementCommunicationBarringAlternateCallIndicatorList,
                is_complex=True,
            ),
            E("match_local_category", "matchLocalCategory", bool),
            E("match_national_category", "matchNationalCategory", bool),
            E("match_interlata_category", "matchInterlataCategory", bool),
            E("match_intralata_category", "matchIntralataCategory", bool),
            E("match_international_category", "matchInternationalCategory", bool),
            E("match_private_category", "matchPrivateCategory", bool),
            E("match_emergency_category", "matchEmergencyCategory", bool),
            E("match_other_category", "matchOtherCategory", bool),
        )


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 (List[OCI.criteriaPriorityOrder]): criteriaPriorityOrder
            *Optional*
    """

    __slots__: List[str] = [
        "criteria_priority_order",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "criteria_priority_order",
                "criteriaPriorityOrder",
                OCI.DialableCallerIDCriteriaPriorityOrder,
                is_complex=True,
                is_array=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 (str): resellerId *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_organization_type (OCI.searchCriteriaExactOrganizationType):
            searchCriteriaExactOrganizationType *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "search_criteria_dn",
        "search_criteria_service_provider_id",
        "search_criteria_exact_organization_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_organization_type",
                "searchCriteriaExactOrganizationType",
                OCI.SearchCriteriaExactOrganizationType,
                is_complex=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 (bool): excludeReseller *Optional*
        reseller_id (str): resellerId *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_domain_name (List[OCI.searchCriteriaDomainName]):
            searchCriteriaDomainName *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
        search_criteria_exact_domain_level (OCI.searchCriteriaExactDomainLevel):
            searchCriteriaExactDomainLevel *Optional*
    """

    __slots__: List[str] = [
        "exclude_reseller",
        "reseller_id",
        "response_size_limit",
        "search_criteria_domain_name",
        "search_criteria_reseller_id",
        "search_criteria_exact_domain_level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("exclude_reseller", "excludeReseller", bool),
            E("reseller_id", "resellerId", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_domain_name",
                "searchCriteriaDomainName",
                OCI.SearchCriteriaDomainName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_domain_level",
                "searchCriteriaExactDomainLevel",
                OCI.SearchCriteriaExactDomainLevel,
                is_complex=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 (int): responseSizeLimit *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_organization_type (OCI.searchCriteriaExactOrganizationType):
            searchCriteriaExactOrganizationType *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_line_port_user_part (List[OCI.searchCriteriaLinePortUserPart]):
            searchCriteriaLinePortUserPart *Optional*
        search_criteria_line_port_domain (List[OCI.searchCriteriaLinePortDomain]):
            searchCriteriaLinePortDomain *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_device_type (List[OCI.searchCriteriaDeviceType]):
            searchCriteriaDeviceType *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_service_provider_id",
        "search_criteria_exact_organization_type",
        "search_criteria_group_id",
        "search_criteria_line_port_user_part",
        "search_criteria_line_port_domain",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_device_type",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_organization_type",
                "searchCriteriaExactOrganizationType",
                OCI.SearchCriteriaExactOrganizationType,
                is_complex=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_user_part",
                "searchCriteriaLinePortUserPart",
                OCI.SearchCriteriaLinePortUserPart,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_domain",
                "searchCriteriaLinePortDomain",
                OCI.SearchCriteriaLinePortDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_type",
                "searchCriteriaDeviceType",
                OCI.SearchCriteriaDeviceType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemFeatureAccessCodeModifyListRequest(OCIRequest):
    """
    Modify default Feature Access Codes.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `SystemFeatureAccessCodeModifyListRequest21()` in AS data mode

    Attributes:
        feature_access_code (List[OCI.featureAccessCode]): featureAccessCode *Optional*
    """

    __slots__: List[str] = [
        "feature_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "feature_access_code",
                "featureAccessCode",
                OCI.FeatureAccessCodeEntry,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemFeatureAccessCodeModifyListRequest20(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". Replaced by:
    `SystemFeatureAccessCodeModifyListRequest21()`

    Attributes:
        feature_access_code (List[OCI.featureAccessCode]): featureAccessCode *Optional*
    """

    __slots__: List[str] = [
        "feature_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "feature_access_code",
                "featureAccessCode",
                OCI.FeatureAccessCodeEntry,
                is_complex=True,
                is_array=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 (List[OCI.featureAccessCode]): featureAccessCode *Optional*
    """

    __slots__: List[str] = [
        "feature_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "feature_access_code",
                "featureAccessCode",
                OCI.FeatureAccessCodeModifyEntry,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemFileRepositoryDeviceAddRequest(OCIRequest):
    """
    Add a new file repository.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemFileRepositoryDeviceAddRequest16()`

    Attributes:
        name (str): name
        root_directory (str): rootDirectory *Optional*
        port (int): port *Optional*
        protocol_web_dav (OCI.protocolWebDAV): protocolWebDAV *Optional*
        protocol_ftp (OCI.protocolFTP): protocolFTP *Optional*
    """

    __slots__: List[str] = [
        "name",
        "root_directory",
        "port",
        "protocol_web_dav",
        "protocol_ftp",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("root_directory", "rootDirectory", str),
            E("port", "port", int),
            E(
                "protocol_web_dav",
                "protocolWebDAV",
                OCI.FileRepositoryProtocolWebDAV,
                is_complex=True,
            ),
            E(
                "protocol_ftp",
                "protocolFTP",
                OCI.FileRepositoryProtocolFTP,
                is_complex=True,
            ),
        )


class SystemFileRepositoryDeviceAddRequest16(OCIRequest):
    """
    Add a new file repository.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemFileRepositoryDeviceAddRequest20()`

    Attributes:
        name (str): name
        root_directory (str): rootDirectory *Optional*
        port (int): port *Optional*
        protocol_web_dav (OCI.protocolWebDAV): protocolWebDAV *Optional*
        protocol_ftp (OCI.protocolFTP): protocolFTP *Optional*
    """

    __slots__: List[str] = [
        "name",
        "root_directory",
        "port",
        "protocol_web_dav",
        "protocol_ftp",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("root_directory", "rootDirectory", str),
            E("port", "port", int),
            E(
                "protocol_web_dav",
                "protocolWebDAV",
                OCI.FileRepositoryProtocolWebDAV,
                is_complex=True,
            ),
            E(
                "protocol_ftp",
                "protocolFTP",
                OCI.FileRepositoryProtocolFTP16,
                is_complex=True,
            ),
        )


class SystemFileRepositoryDeviceAddRequest20(OCIRequest):
    """
    Add a new file repository.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        name (str): name
        root_directory (str): rootDirectory *Optional*
        port (int): port *Optional*
        protocol_web_dav (OCI.protocolWebDAV): protocolWebDAV *Optional*
        protocol_ftp (OCI.protocolFTP): protocolFTP *Optional*
        protocol_sftp (OCI.protocolSFTP): protocolSFTP *Optional*
        protocol_ftps (OCI.protocolFTPS): protocolFTPS *Optional*
    """

    __slots__: List[str] = [
        "name",
        "root_directory",
        "port",
        "protocol_web_dav",
        "protocol_ftp",
        "protocol_sftp",
        "protocol_ftps",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("root_directory", "rootDirectory", str),
            E("port", "port", int),
            E(
                "protocol_web_dav",
                "protocolWebDAV",
                OCI.FileRepositoryProtocolWebDAV20,
                is_complex=True,
            ),
            E(
                "protocol_ftp",
                "protocolFTP",
                OCI.FileRepositoryProtocolFTP16,
                is_complex=True,
            ),
            E(
                "protocol_sftp",
                "protocolSFTP",
                OCI.FileRepositoryProtocolFTP16,
                is_complex=True,
            ),
            E(
                "protocol_ftps",
                "protocolFTPS",
                OCI.FileRepositoryProtocolFTP16,
                is_complex=True,
            ),
        )


class SystemGetRegistrationContactListRequest(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 `SystemGetRegistrationContactListResponse()` or
    `ErrorResponse()`. The following elements are only used in AS data mode: resellerId

    Attributes:
        reseller_id (str): resellerId *Optional*
        service_provider_id (str): serviceProviderId *Optional*
        svc_provider_id (str): svcProviderId *Optional*
        group_id (str): groupId *Optional*
        user_id (str): userId *Optional*
        line_port (str): linePort *Optional*
        device_level (str): deviceLevel *Optional*
        device_name (str): deviceName *Optional*
        device_type (str): deviceType *Optional*
        search_criteria_registration_uri (List[OCI.searchCriteriaRegistrationURI]):
            searchCriteriaRegistrationURI *Optional*
        search_criteria_sip_contact (List[OCI.searchCriteriaSIPContact]):
            searchCriteriaSIPContact *Optional*
        endpoint_type (str): endpointType *Optional*
        expired (bool): expired *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "service_provider_id",
        "svc_provider_id",
        "group_id",
        "user_id",
        "line_port",
        "device_level",
        "device_name",
        "device_type",
        "search_criteria_registration_uri",
        "search_criteria_sip_contact",
        "endpoint_type",
        "expired",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str),
            E("service_provider_id", "serviceProviderId", str),
            E("svc_provider_id", "svcProviderId", str),
            E("group_id", "groupId", str),
            E("user_id", "userId", str),
            E("line_port", "linePort", str),
            E("device_level", "deviceLevel", str),
            E("device_name", "deviceName", str),
            E("device_type", "deviceType", str),
            E(
                "search_criteria_registration_uri",
                "searchCriteriaRegistrationURI",
                OCI.SearchCriteriaRegistrationURI,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_sip_contact",
                "searchCriteriaSIPContact",
                OCI.SearchCriteriaSIPContact,
                is_complex=True,
                is_array=True,
            ),
            E("endpoint_type", "endpointType", str),
            E("expired", "expired", bool),
        )


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 (str): resellerId *Optional*
        service_provider_id (str): serviceProviderId *Optional*
        svc_provider_id (str): svcProviderId *Optional*
        group_id (str): groupId *Optional*
        user_id (str): userId *Optional*
        line_port (str): linePort *Optional*
        device_level (str): deviceLevel *Optional*
        device_name (str): deviceName *Optional*
        device_type (str): deviceType *Optional*
        search_criteria_registration_uri (List[OCI.searchCriteriaRegistrationURI]):
            searchCriteriaRegistrationURI *Optional*
        search_criteria_sip_contact (List[OCI.searchCriteriaSIPContact]):
            searchCriteriaSIPContact *Optional*
        endpoint_type (str): endpointType *Optional*
        expired (bool): expired *Optional*
    """

    __slots__: List[str] = [
        "reseller_id",
        "service_provider_id",
        "svc_provider_id",
        "group_id",
        "user_id",
        "line_port",
        "device_level",
        "device_name",
        "device_type",
        "search_criteria_registration_uri",
        "search_criteria_sip_contact",
        "endpoint_type",
        "expired",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("reseller_id", "resellerId", str),
            E("service_provider_id", "serviceProviderId", str),
            E("svc_provider_id", "svcProviderId", str),
            E("group_id", "groupId", str),
            E("user_id", "userId", str),
            E("line_port", "linePort", str),
            E("device_level", "deviceLevel", str),
            E("device_name", "deviceName", str),
            E("device_type", "deviceType", str),
            E(
                "search_criteria_registration_uri",
                "searchCriteriaRegistrationURI",
                OCI.SearchCriteriaRegistrationURI,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_sip_contact",
                "searchCriteriaSIPContact",
                OCI.SearchCriteriaSIPContact,
                is_complex=True,
                is_array=True,
            ),
            E("endpoint_type", "endpointType", str),
            E("expired", "expired", bool),
        )


class SystemHolidayScheduleAddRequest(OCIRequest):
    """
    Add a system holiday schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        holiday_schedule_name (str): holidayScheduleName
        holiday01 (OCI.holiday01): holiday01 *Optional*
        holiday02 (OCI.holiday02): holiday02 *Optional*
        holiday03 (OCI.holiday03): holiday03 *Optional*
        holiday04 (OCI.holiday04): holiday04 *Optional*
        holiday05 (OCI.holiday05): holiday05 *Optional*
        holiday06 (OCI.holiday06): holiday06 *Optional*
        holiday07 (OCI.holiday07): holiday07 *Optional*
        holiday08 (OCI.holiday08): holiday08 *Optional*
        holiday09 (OCI.holiday09): holiday09 *Optional*
        holiday10 (OCI.holiday10): holiday10 *Optional*
        holiday11 (OCI.holiday11): holiday11 *Optional*
        holiday12 (OCI.holiday12): holiday12 *Optional*
        holiday13 (OCI.holiday13): holiday13 *Optional*
        holiday14 (OCI.holiday14): holiday14 *Optional*
        holiday15 (OCI.holiday15): holiday15 *Optional*
        holiday16 (OCI.holiday16): holiday16 *Optional*
        holiday17 (OCI.holiday17): holiday17 *Optional*
        holiday18 (OCI.holiday18): holiday18 *Optional*
        holiday19 (OCI.holiday19): holiday19 *Optional*
        holiday20 (OCI.holiday20): holiday20 *Optional*
    """

    __slots__: List[str] = [
        "holiday_schedule_name",
        "holiday01",
        "holiday02",
        "holiday03",
        "holiday04",
        "holiday05",
        "holiday06",
        "holiday07",
        "holiday08",
        "holiday09",
        "holiday10",
        "holiday11",
        "holiday12",
        "holiday13",
        "holiday14",
        "holiday15",
        "holiday16",
        "holiday17",
        "holiday18",
        "holiday19",
        "holiday20",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("holiday_schedule_name", "holidayScheduleName", str, is_required=True),
            E("holiday01", "holiday01", OCI.Holiday, is_complex=True),
            E("holiday02", "holiday02", OCI.Holiday, is_complex=True),
            E("holiday03", "holiday03", OCI.Holiday, is_complex=True),
            E("holiday04", "holiday04", OCI.Holiday, is_complex=True),
            E("holiday05", "holiday05", OCI.Holiday, is_complex=True),
            E("holiday06", "holiday06", OCI.Holiday, is_complex=True),
            E("holiday07", "holiday07", OCI.Holiday, is_complex=True),
            E("holiday08", "holiday08", OCI.Holiday, is_complex=True),
            E("holiday09", "holiday09", OCI.Holiday, is_complex=True),
            E("holiday10", "holiday10", OCI.Holiday, is_complex=True),
            E("holiday11", "holiday11", OCI.Holiday, is_complex=True),
            E("holiday12", "holiday12", OCI.Holiday, is_complex=True),
            E("holiday13", "holiday13", OCI.Holiday, is_complex=True),
            E("holiday14", "holiday14", OCI.Holiday, is_complex=True),
            E("holiday15", "holiday15", OCI.Holiday, is_complex=True),
            E("holiday16", "holiday16", OCI.Holiday, is_complex=True),
            E("holiday17", "holiday17", OCI.Holiday, is_complex=True),
            E("holiday18", "holiday18", OCI.Holiday, is_complex=True),
            E("holiday19", "holiday19", OCI.Holiday, is_complex=True),
            E("holiday20", "holiday20", OCI.Holiday, is_complex=True),
        )


class SystemHolidayScheduleModifyRequest(OCIRequest):
    """
    Modify a system holiday schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        holiday_schedule_name (str): holidayScheduleName
        new_holiday_schedule_name (str): newHolidayScheduleName *Optional*
        holiday01 (OCI.holiday01): holiday01 *Optional*
        holiday02 (OCI.holiday02): holiday02 *Optional*
        holiday03 (OCI.holiday03): holiday03 *Optional*
        holiday04 (OCI.holiday04): holiday04 *Optional*
        holiday05 (OCI.holiday05): holiday05 *Optional*
        holiday06 (OCI.holiday06): holiday06 *Optional*
        holiday07 (OCI.holiday07): holiday07 *Optional*
        holiday08 (OCI.holiday08): holiday08 *Optional*
        holiday09 (OCI.holiday09): holiday09 *Optional*
        holiday10 (OCI.holiday10): holiday10 *Optional*
        holiday11 (OCI.holiday11): holiday11 *Optional*
        holiday12 (OCI.holiday12): holiday12 *Optional*
        holiday13 (OCI.holiday13): holiday13 *Optional*
        holiday14 (OCI.holiday14): holiday14 *Optional*
        holiday15 (OCI.holiday15): holiday15 *Optional*
        holiday16 (OCI.holiday16): holiday16 *Optional*
        holiday17 (OCI.holiday17): holiday17 *Optional*
        holiday18 (OCI.holiday18): holiday18 *Optional*
        holiday19 (OCI.holiday19): holiday19 *Optional*
        holiday20 (OCI.holiday20): holiday20 *Optional*
    """

    __slots__: List[str] = [
        "holiday_schedule_name",
        "new_holiday_schedule_name",
        "holiday01",
        "holiday02",
        "holiday03",
        "holiday04",
        "holiday05",
        "holiday06",
        "holiday07",
        "holiday08",
        "holiday09",
        "holiday10",
        "holiday11",
        "holiday12",
        "holiday13",
        "holiday14",
        "holiday15",
        "holiday16",
        "holiday17",
        "holiday18",
        "holiday19",
        "holiday20",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("holiday_schedule_name", "holidayScheduleName", str, is_required=True),
            E("new_holiday_schedule_name", "newHolidayScheduleName", str),
            E("holiday01", "holiday01", OCI.Holiday, is_complex=True),
            E("holiday02", "holiday02", OCI.Holiday, is_complex=True),
            E("holiday03", "holiday03", OCI.Holiday, is_complex=True),
            E("holiday04", "holiday04", OCI.Holiday, is_complex=True),
            E("holiday05", "holiday05", OCI.Holiday, is_complex=True),
            E("holiday06", "holiday06", OCI.Holiday, is_complex=True),
            E("holiday07", "holiday07", OCI.Holiday, is_complex=True),
            E("holiday08", "holiday08", OCI.Holiday, is_complex=True),
            E("holiday09", "holiday09", OCI.Holiday, is_complex=True),
            E("holiday10", "holiday10", OCI.Holiday, is_complex=True),
            E("holiday11", "holiday11", OCI.Holiday, is_complex=True),
            E("holiday12", "holiday12", OCI.Holiday, is_complex=True),
            E("holiday13", "holiday13", OCI.Holiday, is_complex=True),
            E("holiday14", "holiday14", OCI.Holiday, is_complex=True),
            E("holiday15", "holiday15", OCI.Holiday, is_complex=True),
            E("holiday16", "holiday16", OCI.Holiday, is_complex=True),
            E("holiday17", "holiday17", OCI.Holiday, is_complex=True),
            E("holiday18", "holiday18", OCI.Holiday, is_complex=True),
            E("holiday19", "holiday19", OCI.Holiday, is_complex=True),
            E("holiday20", "holiday20", OCI.Holiday, is_complex=True),
        )


class SystemHomeNetworkGetListRequest(OCIRequest):
    """
    Get the list of all Home Networks.

    The response is either a `SystemHomeNetworkGetListResponse()` or an `ErrorResponse()`.

    Attributes:
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_home_msc_address (List[OCI.searchCriteriaHomeMscAddress]):
            searchCriteriaHomeMscAddress *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_home_msc_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_home_msc_address",
                "searchCriteriaHomeMscAddress",
                OCI.SearchCriteriaHomeMscAddress,
                is_complex=True,
                is_array=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[OCI.interceptDNList]): interceptDNList
    """

    __slots__: List[str] = [
        "intercept_dn_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "intercept_dn_list",
                "interceptDNList",
                OCI.InterceptDNListEntry,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class SystemMediaSetModifyRequest(OCIRequest):
    """
    Request to modify a Media Set.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        set_name (str): setName
        media_name_list (OCI.mediaNameList): mediaNameList *Optional*
    """

    __slots__: List[str] = [
        "set_name",
        "media_name_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("set_name", "setName", str, is_required=True),
            E(
                "media_name_list",
                "mediaNameList",
                OCI.ReplacementMediaNameList,
                is_complex=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 (int): conferenceIdLength *Optional*
        moderator_pin_length (int): moderatorPinLength *Optional*
        enable_conference_end_date_restriction (bool): enableConferenceEndDateRestriction
            *Optional*
        conference_end_date_restriction_months (int): conferenceEndDateRestrictionMonths
            *Optional*
        delete_expired_conferences_after_hold_period (bool):
            deleteExpiredConferencesAfterHoldPeriod *Optional*
        expired_conference_hold_period_days (int): expiredConferenceHoldPeriodDays
            *Optional*
        recording_web_app_url (str): recordingWebAppURL *Optional*
        recording_file_format (str): recordingFileFormat *Optional*
        terminate_after_grace_period (bool): terminateAfterGracePeriod *Optional*
        conference_grace_period_minutes (OCI.conferenceGracePeriodMinutes):
            conferenceGracePeriodMinutes *Optional*
        conference_participant_early_entry_minutes (int):
            conferenceParticipantEarlyEntryMinutes *Optional*
        enable_conference_expiry_notification (bool): enableConferenceExpiryNotification
            *Optional*
        enable_active_conference_notification (bool): enableActiveConferenceNotification
            *Optional*
        conference_from_address (str): conferenceFromAddress *Optional*
        conference_active_talker_refresh_interval_seconds (int):
            conferenceActiveTalkerRefreshIntervalSeconds *Optional*
    """

    __slots__: List[str] = [
        "conference_id_length",
        "moderator_pin_length",
        "enable_conference_end_date_restriction",
        "conference_end_date_restriction_months",
        "delete_expired_conferences_after_hold_period",
        "expired_conference_hold_period_days",
        "recording_web_app_url",
        "recording_file_format",
        "terminate_after_grace_period",
        "conference_grace_period_minutes",
        "conference_participant_early_entry_minutes",
        "enable_conference_expiry_notification",
        "enable_active_conference_notification",
        "conference_from_address",
        "conference_active_talker_refresh_interval_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("conference_id_length", "conferenceIdLength", int),
            E("moderator_pin_length", "moderatorPinLength", int),
            E(
                "enable_conference_end_date_restriction",
                "enableConferenceEndDateRestriction",
                bool,
            ),
            E(
                "conference_end_date_restriction_months",
                "conferenceEndDateRestrictionMonths",
                int,
            ),
            E(
                "delete_expired_conferences_after_hold_period",
                "deleteExpiredConferencesAfterHoldPeriod",
                bool,
            ),
            E(
                "expired_conference_hold_period_days",
                "expiredConferenceHoldPeriodDays",
                int,
            ),
            E("recording_web_app_url", "recordingWebAppURL", str),
            E("recording_file_format", "recordingFileFormat", str),
            E("terminate_after_grace_period", "terminateAfterGracePeriod", bool),
            E(
                "conference_grace_period_minutes",
                "conferenceGracePeriodMinutes",
                OCI.MeetMeConferencingConferenceDuration,
                is_complex=True,
            ),
            E(
                "conference_participant_early_entry_minutes",
                "conferenceParticipantEarlyEntryMinutes",
                int,
            ),
            E(
                "enable_conference_expiry_notification",
                "enableConferenceExpiryNotification",
                bool,
            ),
            E(
                "enable_active_conference_notification",
                "enableActiveConferenceNotification",
                bool,
            ),
            E("conference_from_address", "conferenceFromAddress", str),
            E(
                "conference_active_talker_refresh_interval_seconds",
                "conferenceActiveTalkerRefreshIntervalSeconds",
                int,
            ),
        )


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): name
        description (str): description *Optional*
        communication_barring_profile0 (OCI.communicationBarringProfile0):
            communicationBarringProfile0 *Optional*
        communication_barring_profile1 (OCI.communicationBarringProfile1):
            communicationBarringProfile1 *Optional*
        communication_barring_profile2 (OCI.communicationBarringProfile2):
            communicationBarringProfile2 *Optional*
        communication_barring_profile3 (OCI.communicationBarringProfile3):
            communicationBarringProfile3 *Optional*
        communication_barring_profile4 (OCI.communicationBarringProfile4):
            communicationBarringProfile4 *Optional*
        communication_barring_profile5 (OCI.communicationBarringProfile5):
            communicationBarringProfile5 *Optional*
        communication_barring_profile6 (OCI.communicationBarringProfile6):
            communicationBarringProfile6 *Optional*
        communication_barring_profile7 (OCI.communicationBarringProfile7):
            communicationBarringProfile7 *Optional*
        communication_barring_profile8 (OCI.communicationBarringProfile8):
            communicationBarringProfile8 *Optional*
        communication_barring_profile9 (OCI.communicationBarringProfile9):
            communicationBarringProfile9 *Optional*
        network_translation_index (str): networkTranslationIndex *Optional*
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
            *Optional*
    """

    __slots__: List[str] = [
        "name",
        "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",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E(
                "communication_barring_profile0",
                "communicationBarringProfile0",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile1",
                "communicationBarringProfile1",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile2",
                "communicationBarringProfile2",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile3",
                "communicationBarringProfile3",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile4",
                "communicationBarringProfile4",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile5",
                "communicationBarringProfile5",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile6",
                "communicationBarringProfile6",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile7",
                "communicationBarringProfile7",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile8",
                "communicationBarringProfile8",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile9",
                "communicationBarringProfile9",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E("network_translation_index", "networkTranslationIndex", str),
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
            ),
        )


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): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        communication_barring_profile0 (OCI.communicationBarringProfile0):
            communicationBarringProfile0 *Optional*
        communication_barring_profile1 (OCI.communicationBarringProfile1):
            communicationBarringProfile1 *Optional*
        communication_barring_profile2 (OCI.communicationBarringProfile2):
            communicationBarringProfile2 *Optional*
        communication_barring_profile3 (OCI.communicationBarringProfile3):
            communicationBarringProfile3 *Optional*
        communication_barring_profile4 (OCI.communicationBarringProfile4):
            communicationBarringProfile4 *Optional*
        communication_barring_profile5 (OCI.communicationBarringProfile5):
            communicationBarringProfile5 *Optional*
        communication_barring_profile6 (OCI.communicationBarringProfile6):
            communicationBarringProfile6 *Optional*
        communication_barring_profile7 (OCI.communicationBarringProfile7):
            communicationBarringProfile7 *Optional*
        communication_barring_profile8 (OCI.communicationBarringProfile8):
            communicationBarringProfile8 *Optional*
        communication_barring_profile9 (OCI.communicationBarringProfile9):
            communicationBarringProfile9 *Optional*
        network_translation_index (str): networkTranslationIndex *Optional*
        call_processing_policy_profile_name (str): callProcessingPolicyProfileName
            *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "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",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E(
                "communication_barring_profile0",
                "communicationBarringProfile0",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile1",
                "communicationBarringProfile1",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile2",
                "communicationBarringProfile2",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile3",
                "communicationBarringProfile3",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile4",
                "communicationBarringProfile4",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile5",
                "communicationBarringProfile5",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile6",
                "communicationBarringProfile6",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile7",
                "communicationBarringProfile7",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile8",
                "communicationBarringProfile8",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E(
                "communication_barring_profile9",
                "communicationBarringProfile9",
                OCI.NetworkClassOfServiceCommunicationBarringProfile,
                is_complex=True,
            ),
            E("network_translation_index", "networkTranslationIndex", str),
            E(
                "call_processing_policy_profile_name",
                "callProcessingPolicyProfileName",
                str,
            ),
        )


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
            (List[OCI.searchCriteriaNumberPortabilityQueryDigitPattern]):
            searchCriteriaNumberPortabilityQueryDigitPattern *Optional*
        search_criteria_number_portability_status
            (List[OCI.searchCriteriaNumberPortabilityStatus]):
            searchCriteriaNumberPortabilityStatus *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
    """

    __slots__: List[str] = [
        "search_criteria_number_portability_query_digit_pattern",
        "search_criteria_number_portability_status",
        "response_size_limit",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "search_criteria_number_portability_query_digit_pattern",
                "searchCriteriaNumberPortabilityQueryDigitPattern",
                OCI.SearchCriteriaNumberPortabilityQueryDigitPattern,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_number_portability_status",
                "searchCriteriaNumberPortabilityStatus",
                OCI.SearchCriteriaNumberPortabilityStatus,
                is_complex=True,
                is_array=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
        )


class SystemOfficeZoneModifyRequest(OCIRequest):
    """
    Modify an existing Office Zone.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        office_zone_name (str): officeZoneName
        new_office_zone_name (str): newOfficeZoneName *Optional*
        description (str): description *Optional*
        replacement_zone_list (OCI.replacementZoneList): replacementZoneList *Optional*
        primary_zone_name (str): primaryZoneName *Optional*
    """

    __slots__: List[str] = [
        "office_zone_name",
        "new_office_zone_name",
        "description",
        "replacement_zone_list",
        "primary_zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("office_zone_name", "officeZoneName", str, is_required=True),
            E("new_office_zone_name", "newOfficeZoneName", str),
            E("description", "description", str),
            E(
                "replacement_zone_list",
                "replacementZoneList",
                OCI.ReplacementZoneList,
                is_complex=True,
            ),
            E("primary_zone_name", "primaryZoneName", str),
        )


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): carrier
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
        search_criteria_exact_service_provider (OCI.searchCriteriaExactServiceProvider):
            searchCriteriaExactServiceProvider *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
    """

    __slots__: List[str] = [
        "carrier",
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_group_name",
        "search_criteria_exact_service_provider",
        "search_criteria_service_provider_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("carrier", "carrier", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_service_provider",
                "searchCriteriaExactServiceProvider",
                OCI.SearchCriteriaExactServiceProvider,
                is_complex=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=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): carrier
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "carrier",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_email_address",
        "search_criteria_user_id",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("carrier", "carrier", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemRoamingNetworkGetListRequest(OCIRequest):
    """
    Get the list of all Roaming Networks.

    The response is either a `SystemRoamingNetworkGetListResponse()` or an
    `ErrorResponse()`.

    Attributes:
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_roaming_msc_address (List[OCI.searchCriteriaRoamingMscAddress]):
            searchCriteriaRoamingMscAddress *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_roaming_msc_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_roaming_msc_address",
                "searchCriteriaRoamingMscAddress",
                OCI.SearchCriteriaRoamingMscAddress,
                is_complex=True,
                is_array=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[OCI.userEndpointKey]): userEndpointKey
    """

    __slots__: List[str] = [
        "user_endpoint_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "user_endpoint_key",
                "userEndpointKey",
                OCI.UserEndpointKey,
                is_complex=True,
                is_required=True,
                is_array=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 (int): responseSizeLimit *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_organization_type (OCI.searchCriteriaExactOrganizationType):
            searchCriteriaExactOrganizationType *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_line_port_user_part (List[OCI.searchCriteriaLinePortUserPart]):
            searchCriteriaLinePortUserPart *Optional*
        search_criteria_line_port_domain (List[OCI.searchCriteriaLinePortDomain]):
            searchCriteriaLinePortDomain *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_service_provider_id",
        "search_criteria_exact_organization_type",
        "search_criteria_group_id",
        "search_criteria_line_port_user_part",
        "search_criteria_line_port_domain",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_organization_type",
                "searchCriteriaExactOrganizationType",
                OCI.SearchCriteriaExactOrganizationType,
                is_complex=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_user_part",
                "searchCriteriaLinePortUserPart",
                OCI.SearchCriteriaLinePortUserPart,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_domain",
                "searchCriteriaLinePortDomain",
                OCI.SearchCriteriaLinePortDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=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[OCI.trunkGroupkey]): trunkGroupkey
    """

    __slots__: List[str] = [
        "trunk_groupkey",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_groupkey",
                "trunkGroupkey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
                is_array=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 (int): responseSizeLimit *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_organization_type (OCI.searchCriteriaExactOrganizationType):
            searchCriteriaExactOrganizationType *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_trunk_group_name (List[OCI.searchCriteriaTrunkGroupName]):
            searchCriteriaTrunkGroupName *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_service_provider_id",
        "search_criteria_exact_organization_type",
        "search_criteria_group_id",
        "search_criteria_trunk_group_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_organization_type",
                "searchCriteriaExactOrganizationType",
                OCI.SearchCriteriaExactOrganizationType,
                is_complex=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_trunk_group_name",
                "searchCriteriaTrunkGroupName",
                OCI.SearchCriteriaTrunkGroupName,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemSIPDeviceTypeAddRequest(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        authentication_override (bool): authenticationOverride
        rfc3264_hold (bool): RFC3264Hold
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        use_business_trunking_contact (bool): useBusinessTrunkingContact
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_music_on_hold_device",
        "authentication_override",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E(
                "authentication_override",
                "authenticationOverride",
                bool,
                is_required=True,
            ),
            E("rfc3264_hold", "RFC3264Hold", bool, is_required=True),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "use_business_trunking_contact",
                "useBusinessTrunkingContact",
                bool,
                is_required=True,
            ),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions,
                is_complex=True,
            ),
        )


class SystemSIPDeviceTypeAddRequest14sp1(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeAddRequest14sp2()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        authentication_override (bool): authenticationOverride
        rfc3264_hold (bool): RFC3264Hold
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        use_business_trunking_contact (bool): useBusinessTrunkingContact
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_music_on_hold_device",
        "authentication_override",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E(
                "authentication_override",
                "authenticationOverride",
                bool,
                is_required=True,
            ),
            E("rfc3264_hold", "RFC3264Hold", bool, is_required=True),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "use_business_trunking_contact",
                "useBusinessTrunkingContact",
                bool,
                is_required=True,
            ),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
        )


class SystemSIPDeviceTypeAddRequest14sp2(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeAddRequest14sp3()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        rfc3264_hold (bool): RFC3264Hold
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        use_business_trunking_contact (bool): useBusinessTrunkingContact
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_music_on_hold_device",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("rfc3264_hold", "RFC3264Hold", bool, is_required=True),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "use_business_trunking_contact",
                "useBusinessTrunkingContact",
                bool,
                is_required=True,
            ),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
        )


class SystemSIPDeviceTypeAddRequest14sp3(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemSIPDeviceTypeAddRequest14sp6()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        rfc3264_hold (bool): RFC3264Hold
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        use_business_trunking_contact (bool): useBusinessTrunkingContact
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        tdm_overlay (bool): tdmOverlay
        supports_broad_works_info_for_call_waiting (bool):
            supportsBroadWorksINFOForCallWaiting
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "tdm_overlay",
        "supports_broad_works_info_for_call_waiting",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("rfc3264_hold", "RFC3264Hold", bool, is_required=True),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "use_business_trunking_contact",
                "useBusinessTrunkingContact",
                bool,
                is_required=True,
            ),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E("tdm_overlay", "tdmOverlay", bool, is_required=True),
            E(
                "supports_broad_works_info_for_call_waiting",
                "supportsBroadWorksINFOForCallWaiting",
                bool,
                is_required=True,
            ),
        )


class SystemSIPDeviceTypeFileAddRequest(OCIRequest):
    """
    Request to add a sip device type file.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeFileAddRequest14sp8()`

    Attributes:
        device_type (str): deviceType
        file_type (str): fileType
        file_format (str): fileFormat
        remote_file_format (str): remoteFileFormat
        file_category (str): fileCategory
        allow_file_customization (bool): allowFileCustomization
        file_source (str): fileSource
        upload_file (OCI.uploadFile): uploadFile *Optional*
        use_http_digest_authentication (bool): useHttpDigestAuthentication
        mac_based_file_authentication (bool): macBasedFileAuthentication
        user_name_password_file_authentication (bool): userNamePasswordFileAuthentication
        mac_in_non_request_uri (bool): macInNonRequestURI
        mac_format_in_non_request_uri (str): macFormatInNonRequestURI *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "file_type",
        "file_format",
        "remote_file_format",
        "file_category",
        "allow_file_customization",
        "file_source",
        "upload_file",
        "use_http_digest_authentication",
        "mac_based_file_authentication",
        "user_name_password_file_authentication",
        "mac_in_non_request_uri",
        "mac_format_in_non_request_uri",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_type", "fileType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("remote_file_format", "remoteFileFormat", str, is_required=True),
            E("file_category", "fileCategory", str, is_required=True),
            E(
                "allow_file_customization",
                "allowFileCustomization",
                bool,
                is_required=True,
            ),
            E("file_source", "fileSource", str, is_required=True),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E(
                "use_http_digest_authentication",
                "useHttpDigestAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "mac_based_file_authentication",
                "macBasedFileAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "user_name_password_file_authentication",
                "userNamePasswordFileAuthentication",
                bool,
                is_required=True,
            ),
            E("mac_in_non_request_uri", "macInNonRequestURI", bool, is_required=True),
            E("mac_format_in_non_request_uri", "macFormatInNonRequestURI", str),
        )


class SystemSIPDeviceTypeFileAddRequest14sp8(OCIRequest):
    """
    Request to add a sip device type file.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
        remote_file_format (str): remoteFileFormat
        file_category (str): fileCategory
        allow_file_customization (bool): allowFileCustomization
        file_source (str): fileSource
        upload_file (OCI.uploadFile): uploadFile *Optional*
        use_http_digest_authentication (bool): useHttpDigestAuthentication
        mac_based_file_authentication (bool): macBasedFileAuthentication
        user_name_password_file_authentication (bool): userNamePasswordFileAuthentication
        mac_in_non_request_uri (bool): macInNonRequestURI
        mac_format_in_non_request_uri (str): macFormatInNonRequestURI *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
        "remote_file_format",
        "file_category",
        "allow_file_customization",
        "file_source",
        "upload_file",
        "use_http_digest_authentication",
        "mac_based_file_authentication",
        "user_name_password_file_authentication",
        "mac_in_non_request_uri",
        "mac_format_in_non_request_uri",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("remote_file_format", "remoteFileFormat", str, is_required=True),
            E("file_category", "fileCategory", str, is_required=True),
            E(
                "allow_file_customization",
                "allowFileCustomization",
                bool,
                is_required=True,
            ),
            E("file_source", "fileSource", str, is_required=True),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E(
                "use_http_digest_authentication",
                "useHttpDigestAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "mac_based_file_authentication",
                "macBasedFileAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "user_name_password_file_authentication",
                "userNamePasswordFileAuthentication",
                bool,
                is_required=True,
            ),
            E("mac_in_non_request_uri", "macInNonRequestURI", bool, is_required=True),
            E("mac_format_in_non_request_uri", "macFormatInNonRequestURI", str),
        )


class SystemSIPDeviceTypeFileAddRequest16sp1(OCIRequest):
    """
    Replaced By `SystemSIPDeviceTypeFileAddRequest18()`.

    Request to add a sip device type file.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
        remote_file_format (str): remoteFileFormat
        file_category (str): fileCategory
        file_customization (str): fileCustomization
        file_source (str): fileSource
        upload_file (OCI.uploadFile): uploadFile *Optional*
        use_http_digest_authentication (bool): useHttpDigestAuthentication
        mac_based_file_authentication (bool): macBasedFileAuthentication
        user_name_password_file_authentication (bool): userNamePasswordFileAuthentication
        mac_in_non_request_uri (bool): macInNonRequestURI
        mac_format_in_non_request_uri (str): macFormatInNonRequestURI *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
        "remote_file_format",
        "file_category",
        "file_customization",
        "file_source",
        "upload_file",
        "use_http_digest_authentication",
        "mac_based_file_authentication",
        "user_name_password_file_authentication",
        "mac_in_non_request_uri",
        "mac_format_in_non_request_uri",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("remote_file_format", "remoteFileFormat", str, is_required=True),
            E("file_category", "fileCategory", str, is_required=True),
            E("file_customization", "fileCustomization", str, is_required=True),
            E("file_source", "fileSource", str, is_required=True),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E(
                "use_http_digest_authentication",
                "useHttpDigestAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "mac_based_file_authentication",
                "macBasedFileAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "user_name_password_file_authentication",
                "userNamePasswordFileAuthentication",
                bool,
                is_required=True,
            ),
            E("mac_in_non_request_uri", "macInNonRequestURI", bool, is_required=True),
            E("mac_format_in_non_request_uri", "macFormatInNonRequestURI", str),
        )


class SystemSIPDeviceTypeFileAddRequest18(OCIRequest):
    """
    Request to add a sip device type file.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
        remote_file_format (str): remoteFileFormat
        file_category (str): fileCategory
        file_customization (str): fileCustomization
        file_source (str): fileSource
        upload_file (OCI.uploadFile): uploadFile *Optional*
        use_http_digest_authentication (bool): useHttpDigestAuthentication
        mac_based_file_authentication (bool): macBasedFileAuthentication
        user_name_password_file_authentication (bool): userNamePasswordFileAuthentication
        mac_in_non_request_uri (bool): macInNonRequestURI
        mac_format_in_non_request_uri (str): macFormatInNonRequestURI *Optional*
        allow_http (bool): allowHttp
        allow_https (bool): allowHttps
        allow_tftp (bool): allowTftp
        enable_caching (bool): enableCaching
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
        "remote_file_format",
        "file_category",
        "file_customization",
        "file_source",
        "upload_file",
        "use_http_digest_authentication",
        "mac_based_file_authentication",
        "user_name_password_file_authentication",
        "mac_in_non_request_uri",
        "mac_format_in_non_request_uri",
        "allow_http",
        "allow_https",
        "allow_tftp",
        "enable_caching",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("remote_file_format", "remoteFileFormat", str, is_required=True),
            E("file_category", "fileCategory", str, is_required=True),
            E("file_customization", "fileCustomization", str, is_required=True),
            E("file_source", "fileSource", str, is_required=True),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E(
                "use_http_digest_authentication",
                "useHttpDigestAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "mac_based_file_authentication",
                "macBasedFileAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "user_name_password_file_authentication",
                "userNamePasswordFileAuthentication",
                bool,
                is_required=True,
            ),
            E("mac_in_non_request_uri", "macInNonRequestURI", bool, is_required=True),
            E("mac_format_in_non_request_uri", "macFormatInNonRequestURI", str),
            E("allow_http", "allowHttp", bool, is_required=True),
            E("allow_https", "allowHttps", bool, is_required=True),
            E("allow_tftp", "allowTftp", bool, is_required=True),
            E("enable_caching", "enableCaching", bool, is_required=True),
        )


class SystemSIPDeviceTypeFileAddRequest19(OCIRequest):
    """
    Request to add a sip device type file.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemSIPDeviceTypeFileAddRequest20()`

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
        remote_file_format (str): remoteFileFormat
        file_category (str): fileCategory
        file_customization (str): fileCustomization
        file_source (str): fileSource
        upload_file (OCI.uploadFile): uploadFile *Optional*
        use_http_digest_authentication (bool): useHttpDigestAuthentication
        mac_based_file_authentication (bool): macBasedFileAuthentication
        user_name_password_file_authentication (bool): userNamePasswordFileAuthentication
        mac_in_non_request_uri (bool): macInNonRequestURI
        mac_format_in_non_request_uri (str): macFormatInNonRequestURI *Optional*
        allow_http (bool): allowHttp
        allow_https (bool): allowHttps
        allow_tftp (bool): allowTftp
        enable_caching (bool): enableCaching
        allow_upload_from_device (bool): allowUploadFromDevice
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
        "remote_file_format",
        "file_category",
        "file_customization",
        "file_source",
        "upload_file",
        "use_http_digest_authentication",
        "mac_based_file_authentication",
        "user_name_password_file_authentication",
        "mac_in_non_request_uri",
        "mac_format_in_non_request_uri",
        "allow_http",
        "allow_https",
        "allow_tftp",
        "enable_caching",
        "allow_upload_from_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("remote_file_format", "remoteFileFormat", str, is_required=True),
            E("file_category", "fileCategory", str, is_required=True),
            E("file_customization", "fileCustomization", str, is_required=True),
            E("file_source", "fileSource", str, is_required=True),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E(
                "use_http_digest_authentication",
                "useHttpDigestAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "mac_based_file_authentication",
                "macBasedFileAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "user_name_password_file_authentication",
                "userNamePasswordFileAuthentication",
                bool,
                is_required=True,
            ),
            E("mac_in_non_request_uri", "macInNonRequestURI", bool, is_required=True),
            E("mac_format_in_non_request_uri", "macFormatInNonRequestURI", str),
            E("allow_http", "allowHttp", bool, is_required=True),
            E("allow_https", "allowHttps", bool, is_required=True),
            E("allow_tftp", "allowTftp", bool, is_required=True),
            E("enable_caching", "enableCaching", bool, is_required=True),
            E(
                "allow_upload_from_device",
                "allowUploadFromDevice",
                bool,
                is_required=True,
            ),
        )


class SystemSIPDeviceTypeFileAddRequest20(OCIRequest):
    """
    Request to add a sip device type file.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    SystemSIPDeviceTypeFileAddRequest20Sp1

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
        remote_file_format (str): remoteFileFormat
        file_category (str): fileCategory
        file_customization (str): fileCustomization
        file_source (str): fileSource
        upload_file (OCI.uploadFile): uploadFile *Optional*
        use_http_digest_authentication (bool): useHttpDigestAuthentication
        mac_based_file_authentication (bool): macBasedFileAuthentication
        user_name_password_file_authentication (bool): userNamePasswordFileAuthentication
        mac_in_non_request_uri (bool): macInNonRequestURI
        mac_format_in_non_request_uri (str): macFormatInNonRequestURI *Optional*
        allow_http (bool): allowHttp
        allow_https (bool): allowHttps
        allow_tftp (bool): allowTftp
        enable_caching (bool): enableCaching
        allow_upload_from_device (bool): allowUploadFromDevice
        default_extended_file_capture_mode (bool): defaultExtendedFileCaptureMode
            *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
        "remote_file_format",
        "file_category",
        "file_customization",
        "file_source",
        "upload_file",
        "use_http_digest_authentication",
        "mac_based_file_authentication",
        "user_name_password_file_authentication",
        "mac_in_non_request_uri",
        "mac_format_in_non_request_uri",
        "allow_http",
        "allow_https",
        "allow_tftp",
        "enable_caching",
        "allow_upload_from_device",
        "default_extended_file_capture_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("remote_file_format", "remoteFileFormat", str, is_required=True),
            E("file_category", "fileCategory", str, is_required=True),
            E("file_customization", "fileCustomization", str, is_required=True),
            E("file_source", "fileSource", str, is_required=True),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E(
                "use_http_digest_authentication",
                "useHttpDigestAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "mac_based_file_authentication",
                "macBasedFileAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "user_name_password_file_authentication",
                "userNamePasswordFileAuthentication",
                bool,
                is_required=True,
            ),
            E("mac_in_non_request_uri", "macInNonRequestURI", bool, is_required=True),
            E("mac_format_in_non_request_uri", "macFormatInNonRequestURI", str),
            E("allow_http", "allowHttp", bool, is_required=True),
            E("allow_https", "allowHttps", bool, is_required=True),
            E("allow_tftp", "allowTftp", bool, is_required=True),
            E("enable_caching", "enableCaching", bool, is_required=True),
            E(
                "allow_upload_from_device",
                "allowUploadFromDevice",
                bool,
                is_required=True,
            ),
            E(
                "default_extended_file_capture_mode",
                "defaultExtendedFileCaptureMode",
                bool,
            ),
        )


class SystemSIPDeviceTypeFileAddRequest21sp1(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.  Replaced by:
    `SystemSIPDeviceTypeFileAddRequest22()` in AS data mode.

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
        remote_file_format (str): remoteFileFormat
        file_category (str): fileCategory
        file_customization (str): fileCustomization
        file_source (str): fileSource
        upload_file (OCI.uploadFile): uploadFile *Optional*
        use_http_digest_authentication (bool): useHttpDigestAuthentication
        mac_based_file_authentication (bool): macBasedFileAuthentication
        user_name_password_file_authentication (bool): userNamePasswordFileAuthentication
        mac_in_non_request_uri (bool): macInNonRequestURI
        mac_in_cert (bool): macInCert
        mac_format_in_non_request_uri (str): macFormatInNonRequestURI *Optional*
        allow_http (bool): allowHttp
        allow_https (bool): allowHttps
        allow_tftp (bool): allowTftp
        enable_caching (bool): enableCaching
        allow_upload_from_device (bool): allowUploadFromDevice
        default_extended_file_capture_mode (bool): defaultExtendedFileCaptureMode
            *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
        "remote_file_format",
        "file_category",
        "file_customization",
        "file_source",
        "upload_file",
        "use_http_digest_authentication",
        "mac_based_file_authentication",
        "user_name_password_file_authentication",
        "mac_in_non_request_uri",
        "mac_in_cert",
        "mac_format_in_non_request_uri",
        "allow_http",
        "allow_https",
        "allow_tftp",
        "enable_caching",
        "allow_upload_from_device",
        "default_extended_file_capture_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("remote_file_format", "remoteFileFormat", str, is_required=True),
            E("file_category", "fileCategory", str, is_required=True),
            E("file_customization", "fileCustomization", str, is_required=True),
            E("file_source", "fileSource", str, is_required=True),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E(
                "use_http_digest_authentication",
                "useHttpDigestAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "mac_based_file_authentication",
                "macBasedFileAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "user_name_password_file_authentication",
                "userNamePasswordFileAuthentication",
                bool,
                is_required=True,
            ),
            E("mac_in_non_request_uri", "macInNonRequestURI", bool, is_required=True),
            E("mac_in_cert", "macInCert", bool, is_required=True),
            E("mac_format_in_non_request_uri", "macFormatInNonRequestURI", str),
            E("allow_http", "allowHttp", bool, is_required=True),
            E("allow_https", "allowHttps", bool, is_required=True),
            E("allow_tftp", "allowTftp", bool, is_required=True),
            E("enable_caching", "enableCaching", bool, is_required=True),
            E(
                "allow_upload_from_device",
                "allowUploadFromDevice",
                bool,
                is_required=True,
            ),
            E(
                "default_extended_file_capture_mode",
                "defaultExtendedFileCaptureMode",
                bool,
            ),
        )


class SystemSIPDeviceTypeFileAddRequest22(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): deviceType
        file_format (str): fileFormat
        remote_file_format (str): remoteFileFormat
        file_category (str): fileCategory
        file_customization (str): fileCustomization
        file_source (str): fileSource
        upload_file (OCI.uploadFile): uploadFile *Optional*
        use_http_digest_authentication (bool): useHttpDigestAuthentication
        mac_based_file_authentication (bool): macBasedFileAuthentication
        user_name_password_file_authentication (bool): userNamePasswordFileAuthentication
        mac_in_non_request_uri (bool): macInNonRequestURI
        mac_in_cert (bool): macInCert
        mac_format_in_non_request_uri (str): macFormatInNonRequestURI *Optional*
        allow_http (bool): allowHttp
        allow_https (bool): allowHttps
        allow_tftp (bool): allowTftp
        enable_caching (bool): enableCaching
        allow_upload_from_device (bool): allowUploadFromDevice
        default_extended_file_capture_mode (bool): defaultExtendedFileCaptureMode
            *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
        "remote_file_format",
        "file_category",
        "file_customization",
        "file_source",
        "upload_file",
        "use_http_digest_authentication",
        "mac_based_file_authentication",
        "user_name_password_file_authentication",
        "mac_in_non_request_uri",
        "mac_in_cert",
        "mac_format_in_non_request_uri",
        "allow_http",
        "allow_https",
        "allow_tftp",
        "enable_caching",
        "allow_upload_from_device",
        "default_extended_file_capture_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("remote_file_format", "remoteFileFormat", str, is_required=True),
            E("file_category", "fileCategory", str, is_required=True),
            E("file_customization", "fileCustomization", str, is_required=True),
            E("file_source", "fileSource", str, is_required=True),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E(
                "use_http_digest_authentication",
                "useHttpDigestAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "mac_based_file_authentication",
                "macBasedFileAuthentication",
                bool,
                is_required=True,
            ),
            E(
                "user_name_password_file_authentication",
                "userNamePasswordFileAuthentication",
                bool,
                is_required=True,
            ),
            E("mac_in_non_request_uri", "macInNonRequestURI", bool, is_required=True),
            E("mac_in_cert", "macInCert", bool, is_required=True),
            E("mac_format_in_non_request_uri", "macFormatInNonRequestURI", str),
            E("allow_http", "allowHttp", bool, is_required=True),
            E("allow_https", "allowHttps", bool, is_required=True),
            E("allow_tftp", "allowTftp", bool, is_required=True),
            E("enable_caching", "enableCaching", bool, is_required=True),
            E(
                "allow_upload_from_device",
                "allowUploadFromDevice",
                bool,
                is_required=True,
            ),
            E(
                "default_extended_file_capture_mode",
                "defaultExtendedFileCaptureMode",
                bool,
            ),
        )


class SystemSIPDeviceTypeFileModifyRequest(OCIRequest):
    """
    Request to modify a sip device type file.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `SystemSIPDeviceTypeFileModifyRequest14sp8()`

    Attributes:
        device_type (str): deviceType
        file_type (str): fileType
        allow_file_customization (bool): allowFileCustomization *Optional*
        file_source (str): fileSource *Optional*
        upload_file (OCI.uploadFile): uploadFile *Optional*
        use_http_digest_authentication (bool): useHttpDigestAuthentication *Optional*
        mac_based_file_authentication (bool): macBasedFileAuthentication *Optional*
        user_name_password_file_authentication (bool): userNamePasswordFileAuthentication
            *Optional*
        mac_in_non_request_uri (bool): macInNonRequestURI *Optional*
        mac_format_in_non_request_uri (str): macFormatInNonRequestURI *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "file_type",
        "allow_file_customization",
        "file_source",
        "upload_file",
        "use_http_digest_authentication",
        "mac_based_file_authentication",
        "user_name_password_file_authentication",
        "mac_in_non_request_uri",
        "mac_format_in_non_request_uri",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_type", "fileType", str, is_required=True),
            E("allow_file_customization", "allowFileCustomization", bool),
            E("file_source", "fileSource", str),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E("use_http_digest_authentication", "useHttpDigestAuthentication", bool),
            E("mac_based_file_authentication", "macBasedFileAuthentication", bool),
            E(
                "user_name_password_file_authentication",
                "userNamePasswordFileAuthentication",
                bool,
            ),
            E("mac_in_non_request_uri", "macInNonRequestURI", bool),
            E("mac_format_in_non_request_uri", "macFormatInNonRequestURI", str),
        )


class SystemSIPDeviceTypeFileModifyRequest14sp8(OCIRequest):
    """
    Request to modify a sip device type file.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
        allow_file_customization (bool): allowFileCustomization *Optional*
        file_source (str): fileSource *Optional*
        upload_file (OCI.uploadFile): uploadFile *Optional*
        use_http_digest_authentication (bool): useHttpDigestAuthentication *Optional*
        mac_based_file_authentication (bool): macBasedFileAuthentication *Optional*
        user_name_password_file_authentication (bool): userNamePasswordFileAuthentication
            *Optional*
        mac_in_non_request_uri (bool): macInNonRequestURI *Optional*
        mac_format_in_non_request_uri (str): macFormatInNonRequestURI *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
        "allow_file_customization",
        "file_source",
        "upload_file",
        "use_http_digest_authentication",
        "mac_based_file_authentication",
        "user_name_password_file_authentication",
        "mac_in_non_request_uri",
        "mac_format_in_non_request_uri",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("allow_file_customization", "allowFileCustomization", bool),
            E("file_source", "fileSource", str),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E("use_http_digest_authentication", "useHttpDigestAuthentication", bool),
            E("mac_based_file_authentication", "macBasedFileAuthentication", bool),
            E(
                "user_name_password_file_authentication",
                "userNamePasswordFileAuthentication",
                bool,
            ),
            E("mac_in_non_request_uri", "macInNonRequestURI", bool),
            E("mac_format_in_non_request_uri", "macFormatInNonRequestURI", str),
        )


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.

    Attributes:
        device_type (str): deviceType
        file_format (str): fileFormat
        file_customization (str): fileCustomization *Optional*
        file_source (str): fileSource *Optional*
        upload_file (OCI.uploadFile): uploadFile *Optional*
        use_http_digest_authentication (bool): useHttpDigestAuthentication *Optional*
        mac_based_file_authentication (bool): macBasedFileAuthentication *Optional*
        user_name_password_file_authentication (bool): userNamePasswordFileAuthentication
            *Optional*
        mac_in_non_request_uri (bool): macInNonRequestURI *Optional*
        mac_in_cert (bool): macInCert *Optional*
        mac_format_in_non_request_uri (str): macFormatInNonRequestURI *Optional*
        allow_http (bool): allowHttp *Optional*
        allow_https (bool): allowHttps *Optional*
        allow_tftp (bool): allowTftp *Optional*
        enable_caching (bool): enableCaching *Optional*
        allow_upload_from_device (bool): allowUploadFromDevice *Optional*
        default_extended_file_capture_mode (bool): defaultExtendedFileCaptureMode
            *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "file_format",
        "file_customization",
        "file_source",
        "upload_file",
        "use_http_digest_authentication",
        "mac_based_file_authentication",
        "user_name_password_file_authentication",
        "mac_in_non_request_uri",
        "mac_in_cert",
        "mac_format_in_non_request_uri",
        "allow_http",
        "allow_https",
        "allow_tftp",
        "enable_caching",
        "allow_upload_from_device",
        "default_extended_file_capture_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("file_format", "fileFormat", str, is_required=True),
            E("file_customization", "fileCustomization", str),
            E("file_source", "fileSource", str),
            E("upload_file", "uploadFile", OCI.FileResource, is_complex=True),
            E("use_http_digest_authentication", "useHttpDigestAuthentication", bool),
            E("mac_based_file_authentication", "macBasedFileAuthentication", bool),
            E(
                "user_name_password_file_authentication",
                "userNamePasswordFileAuthentication",
                bool,
            ),
            E("mac_in_non_request_uri", "macInNonRequestURI", bool),
            E("mac_in_cert", "macInCert", bool),
            E("mac_format_in_non_request_uri", "macFormatInNonRequestURI", str),
            E("allow_http", "allowHttp", bool),
            E("allow_https", "allowHttps", bool),
            E("allow_tftp", "allowTftp", bool),
            E("enable_caching", "enableCaching", bool),
            E("allow_upload_from_device", "allowUploadFromDevice", bool),
            E(
                "default_extended_file_capture_mode",
                "defaultExtendedFileCaptureMode",
                bool,
            ),
        )


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 (int): responseSizeLimit *Optional*
        search_criteria_device_type (List[OCI.searchCriteriaDeviceType]):
            searchCriteriaDeviceType *Optional*
        search_criteria_exact_signaling_address_type
            (OCI.searchCriteriaExactSignalingAddressType):
            searchCriteriaExactSignalingAddressType *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
        search_criteria_device_configuration_options
            (List[OCI.searchCriteriaDeviceConfigurationOptions]):
            searchCriteriaDeviceConfigurationOptions *Optional*
        include_system_level (bool): includeSystemLevel *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_device_type",
        "search_criteria_exact_signaling_address_type",
        "search_criteria_reseller_id",
        "search_criteria_device_configuration_options",
        "include_system_level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_device_type",
                "searchCriteriaDeviceType",
                OCI.SearchCriteriaDeviceType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_signaling_address_type",
                "searchCriteriaExactSignalingAddressType",
                OCI.SearchCriteriaExactSignalingAddressType,
                is_complex=True,
            ),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_configuration_options",
                "searchCriteriaDeviceConfigurationOptions",
                OCI.SearchCriteriaExactDeviceTypeConfigurationOptionType,
                is_complex=True,
                is_array=True,
            ),
            E("include_system_level", "includeSystemLevel", bool),
        )


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): deviceType
        language_mapping (List[OCI.languageMapping]): languageMapping *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "language_mapping",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "language_mapping",
                "languageMapping",
                OCI.DeviceManagementLanguageMapping,
                is_complex=True,
                is_array=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 (OCI.scheduleKey): scheduleKey
        event_name (str): eventName
        start_date (str): startDate
        all_day_event (bool): allDayEvent *Optional*
        start_time (OCI.startTime): startTime *Optional*
        end_time (OCI.endTime): endTime *Optional*
        end_date (str): endDate
        recurrence (OCI.recurrence): recurrence *Optional*
    """

    __slots__: List[str] = [
        "schedule_key",
        "event_name",
        "start_date",
        "all_day_event",
        "start_time",
        "end_time",
        "end_date",
        "recurrence",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=True),
            E("start_date", "startDate", str, is_required=True),
            E("all_day_event", "allDayEvent", bool),
            E("start_time", "startTime", OCI.HourMinute, is_complex=True),
            E("end_time", "endTime", OCI.HourMinute, is_complex=True),
            E("end_date", "endDate", str, is_required=True),
            E("recurrence", "recurrence", OCI.Recurrence, is_complex=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 (OCI.scheduleKey): scheduleKey
        event_name (List[str]): eventName
    """

    __slots__: List[str] = [
        "schedule_key",
        "event_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=True, is_array=True),
        )


class SystemScheduleDeleteListRequest(OCIRequest):
    """
    Delete a list of system schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        schedule_key (List[OCI.scheduleKey]): scheduleKey
    """

    __slots__: List[str] = [
        "schedule_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
                is_array=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 (OCI.scheduleKey): scheduleKey
    """

    __slots__: List[str] = [
        "schedule_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
        )


class SystemScheduleGetEventRequest(OCIRequest):
    """
    Get an event from a system schedule.

    The response is either a `SystemScheduleGetEventResponse()` or an `ErrorResponse()`.

    Attributes:
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (str): eventName
    """

    __slots__: List[str] = [
        "schedule_key",
        "event_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=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 (OCI.scheduleKey): scheduleKey
        event_name (str): eventName
        new_event_name (str): newEventName *Optional*
        start_date (str): startDate *Optional*
        all_day_event (bool): allDayEvent *Optional*
        start_time (OCI.startTime): startTime *Optional*
        end_time (OCI.endTime): endTime *Optional*
        end_date (str): endDate *Optional*
        recurrence (OCI.recurrence): recurrence *Optional*
    """

    __slots__: List[str] = [
        "schedule_key",
        "event_name",
        "new_event_name",
        "start_date",
        "all_day_event",
        "start_time",
        "end_time",
        "end_date",
        "recurrence",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=True),
            E("new_event_name", "newEventName", str),
            E("start_date", "startDate", str),
            E("all_day_event", "allDayEvent", bool),
            E("start_time", "startTime", OCI.HourMinute, is_complex=True),
            E("end_time", "endTime", OCI.HourMinute, is_complex=True),
            E("end_date", "endDate", str),
            E("recurrence", "recurrence", OCI.Recurrence, is_complex=True),
        )


class SystemScheduleModifyRequest(OCIRequest):
    """
    Modify a system schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        schedule_key (OCI.scheduleKey): scheduleKey
        new_schedule_name (str): newScheduleName *Optional*
    """

    __slots__: List[str] = [
        "schedule_key",
        "new_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("new_schedule_name", "newScheduleName", str),
        )


class SystemSecurityClassificationAddClassificationRequest(OCIRequest):
    """
    Add a new Security Classification The response is either a `SuccessResponse()` or an
    `ErrorResponse()`.


    Attributes:
        security_classification_name (str): securityClassificationName
        audio_file (OCI.audioFile): audioFile
    """

    __slots__: List[str] = [
        "security_classification_name",
        "audio_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "security_classification_name",
                "securityClassificationName",
                str,
                is_required=True,
            ),
            E(
                "audio_file",
                "audioFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
                is_required=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): securityClassification
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_trunk_group_name (List[OCI.searchCriteriaTrunkGroupName]):
            searchCriteriaTrunkGroupName *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_organization_type (OCI.searchCriteriaExactOrganizationType):
            searchCriteriaExactOrganizationType *Optional*
    """

    __slots__: List[str] = [
        "security_classification",
        "response_size_limit",
        "search_criteria_trunk_group_name",
        "search_criteria_group_id",
        "search_criteria_service_provider_id",
        "search_criteria_exact_organization_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "security_classification",
                "securityClassification",
                str,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_trunk_group_name",
                "searchCriteriaTrunkGroupName",
                OCI.SearchCriteriaTrunkGroupName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_organization_type",
                "searchCriteriaExactOrganizationType",
                OCI.SearchCriteriaExactOrganizationType,
                is_complex=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): securityClassification
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "security_classification",
        "response_size_limit",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "security_classification",
                "securityClassification",
                str,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemSecurityClassificationModifyClassificationRequest(OCIRequest):
    """
    Modify a Security Classification The response is either a `SuccessResponse()` or an
    `ErrorResponse()`.


    Attributes:
        security_classification_name (str): securityClassificationName
        new_security_classification_name (str): newSecurityClassificationName *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
    """

    __slots__: List[str] = [
        "security_classification_name",
        "new_security_classification_name",
        "audio_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "security_classification_name",
                "securityClassificationName",
                str,
                is_required=True,
            ),
            E("new_security_classification_name", "newSecurityClassificationName", str),
            E("audio_file", "audioFile", OCI.LabeledMediaFileResource, is_complex=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): serviceName
        service_attribute_entry (List[OCI.serviceAttributeEntry]): serviceAttributeEntry
    """

    __slots__: List[str] = [
        "service_name",
        "service_attribute_entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_name", "serviceName", str, is_required=True),
            E(
                "service_attribute_entry",
                "serviceAttributeEntry",
                OCI.ServiceAttributeEntry,
                is_complex=True,
                is_required=True,
                is_array=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 (int): responseSizeLimit *Optional*
        search_criteria_service_code (List[OCI.searchCriteriaServiceCode]):
            searchCriteriaServiceCode *Optional*
        search_criteria_service_code_description
            (List[OCI.searchCriteriaServiceCodeDescription]):
            searchCriteriaServiceCodeDescription *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_service_code",
        "search_criteria_service_code_description",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_service_code",
                "searchCriteriaServiceCode",
                OCI.SearchCriteriaServiceCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_service_code_description",
                "searchCriteriaServiceCodeDescription",
                OCI.SearchCriteriaServiceCodeDescription,
                is_complex=True,
                is_array=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 (List[str]): phoneNumber *Optional*
        dn_range (List[OCI.dnRange]): dnRange *Optional*
    """

    __slots__: List[str] = [
        "phone_number",
        "dn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("phone_number", "phoneNumber", str, is_array=True),
            E("dn_range", "dnRange", OCI.DNRange, is_complex=True, is_array=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 (List[str]): phoneNumber *Optional*
        dn_range (List[OCI.dnRange]): dnRange *Optional*
    """

    __slots__: List[str] = [
        "phone_number",
        "dn_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("phone_number", "phoneNumber", str, is_array=True),
            E("dn_range", "dnRange", OCI.DNRange, is_complex=True, is_array=True),
        )


class SystemSystemVoicePortalAddRequest(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.  Replaced by: `SystemSystemVoicePortalAddRequest21sp1()`.

    Attributes:
        system_voice_portal_id (str): systemVoicePortalId
        name (str): name
        calling_line_id_name (str): callingLineIdName
        language (str): language
        time_zone (str): timeZone
        phone_number (str): phoneNumber *Optional*
        public_user_identity (str): publicUserIdentity *Optional*
        network_voice_portal_number (str): networkVoicePortalNumber *Optional*
        allow_identification_by_phone_number_or_voice_mail_aliases_on_login (bool):
            allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin
        use_voice_portal_wizard (bool): useVoicePortalWizard
        use_voice_portal_default_greeting (bool): useVoicePortalDefaultGreeting
        voice_portal_greeting_file (OCI.voicePortalGreetingFile): voicePortalGreetingFile
            *Optional*
        use_voice_messaging_default_greeting (bool): useVoiceMessagingDefaultGreeting
        voice_messaging_greeting_file (OCI.voiceMessagingGreetingFile):
            voiceMessagingGreetingFile *Optional*
    """

    __slots__: List[str] = [
        "system_voice_portal_id",
        "name",
        "calling_line_id_name",
        "language",
        "time_zone",
        "phone_number",
        "public_user_identity",
        "network_voice_portal_number",
        "allow_identification_by_phone_number_or_voice_mail_aliases_on_login",
        "use_voice_portal_wizard",
        "use_voice_portal_default_greeting",
        "voice_portal_greeting_file",
        "use_voice_messaging_default_greeting",
        "voice_messaging_greeting_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_voice_portal_id", "systemVoicePortalId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("calling_line_id_name", "callingLineIdName", str, is_required=True),
            E("language", "language", str, is_required=True),
            E("time_zone", "timeZone", str, is_required=True),
            E("phone_number", "phoneNumber", str),
            E("public_user_identity", "publicUserIdentity", str),
            E("network_voice_portal_number", "networkVoicePortalNumber", str),
            E(
                "allow_identification_by_phone_number_or_voice_mail_aliases_on_login",
                "allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin",
                bool,
                is_required=True,
            ),
            E(
                "use_voice_portal_wizard",
                "useVoicePortalWizard",
                bool,
                is_required=True,
            ),
            E(
                "use_voice_portal_default_greeting",
                "useVoicePortalDefaultGreeting",
                bool,
                is_required=True,
            ),
            E(
                "voice_portal_greeting_file",
                "voicePortalGreetingFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E(
                "use_voice_messaging_default_greeting",
                "useVoiceMessagingDefaultGreeting",
                bool,
                is_required=True,
            ),
            E(
                "voice_messaging_greeting_file",
                "voiceMessagingGreetingFile",
                OCI.LabeledMediaFileResource,
                is_complex=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): systemVoicePortalId
        name (str): name
        calling_line_id_name (str): callingLineIdName
        language (str): language
        time_zone (str): timeZone
        phone_number (str): phoneNumber *Optional*
        public_user_identity (str): publicUserIdentity *Optional*
        network_voice_portal_number (str): networkVoicePortalNumber *Optional*
        allow_identification_by_phone_number_or_voice_mail_aliases_on_login (bool):
            allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin
        use_voice_portal_wizard (bool): useVoicePortalWizard
        use_voice_portal_default_greeting (bool): useVoicePortalDefaultGreeting
        voice_portal_greeting_file (OCI.voicePortalGreetingFile): voicePortalGreetingFile
            *Optional*
        use_voice_messaging_default_greeting (bool): useVoiceMessagingDefaultGreeting
        voice_messaging_greeting_file (OCI.voiceMessagingGreetingFile):
            voiceMessagingGreetingFile *Optional*
        express_mode (bool): expressMode
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "system_voice_portal_id",
        "name",
        "calling_line_id_name",
        "language",
        "time_zone",
        "phone_number",
        "public_user_identity",
        "network_voice_portal_number",
        "allow_identification_by_phone_number_or_voice_mail_aliases_on_login",
        "use_voice_portal_wizard",
        "use_voice_portal_default_greeting",
        "voice_portal_greeting_file",
        "use_voice_messaging_default_greeting",
        "voice_messaging_greeting_file",
        "express_mode",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_voice_portal_id", "systemVoicePortalId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("calling_line_id_name", "callingLineIdName", str, is_required=True),
            E("language", "language", str, is_required=True),
            E("time_zone", "timeZone", str, is_required=True),
            E("phone_number", "phoneNumber", str),
            E("public_user_identity", "publicUserIdentity", str),
            E("network_voice_portal_number", "networkVoicePortalNumber", str),
            E(
                "allow_identification_by_phone_number_or_voice_mail_aliases_on_login",
                "allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin",
                bool,
                is_required=True,
            ),
            E(
                "use_voice_portal_wizard",
                "useVoicePortalWizard",
                bool,
                is_required=True,
            ),
            E(
                "use_voice_portal_default_greeting",
                "useVoicePortalDefaultGreeting",
                bool,
                is_required=True,
            ),
            E(
                "voice_portal_greeting_file",
                "voicePortalGreetingFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E(
                "use_voice_messaging_default_greeting",
                "useVoiceMessagingDefaultGreeting",
                bool,
                is_required=True,
            ),
            E(
                "voice_messaging_greeting_file",
                "voiceMessagingGreetingFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E("express_mode", "expressMode", bool, is_required=True),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): systemVoicePortalId
        new_system_voice_portal_id (str): newSystemVoicePortalId *Optional*
        name (str): name *Optional*
        calling_line_id_name (str): callingLineIdName *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        phone_number (str): phoneNumber *Optional*
        public_user_identity (str): publicUserIdentity *Optional*
        network_voice_portal_number (str): networkVoicePortalNumber *Optional*
        allow_identification_by_phone_number_or_voice_mail_aliases_on_login (bool):
            allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin *Optional*
        use_voice_portal_wizard (bool): useVoicePortalWizard *Optional*
        become_default_system_voice_portal (bool): becomeDefaultSystemVoicePortal
            *Optional*
        use_voice_portal_default_greeting (bool): useVoicePortalDefaultGreeting *Optional*
        voice_portal_greeting_file (OCI.voicePortalGreetingFile): voicePortalGreetingFile
            *Optional*
        use_voice_messaging_default_greeting (bool): useVoiceMessagingDefaultGreeting
            *Optional*
        voice_messaging_greeting_file (OCI.voiceMessagingGreetingFile):
            voiceMessagingGreetingFile *Optional*
        express_mode (bool): expressMode *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "system_voice_portal_id",
        "new_system_voice_portal_id",
        "name",
        "calling_line_id_name",
        "language",
        "time_zone",
        "phone_number",
        "public_user_identity",
        "network_voice_portal_number",
        "allow_identification_by_phone_number_or_voice_mail_aliases_on_login",
        "use_voice_portal_wizard",
        "become_default_system_voice_portal",
        "use_voice_portal_default_greeting",
        "voice_portal_greeting_file",
        "use_voice_messaging_default_greeting",
        "voice_messaging_greeting_file",
        "express_mode",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("system_voice_portal_id", "systemVoicePortalId", str, is_required=True),
            E("new_system_voice_portal_id", "newSystemVoicePortalId", str),
            E("name", "name", str),
            E("calling_line_id_name", "callingLineIdName", str),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E("phone_number", "phoneNumber", str),
            E("public_user_identity", "publicUserIdentity", str),
            E("network_voice_portal_number", "networkVoicePortalNumber", str),
            E(
                "allow_identification_by_phone_number_or_voice_mail_aliases_on_login",
                "allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin",
                bool,
            ),
            E("use_voice_portal_wizard", "useVoicePortalWizard", bool),
            E(
                "become_default_system_voice_portal",
                "becomeDefaultSystemVoicePortal",
                bool,
            ),
            E(
                "use_voice_portal_default_greeting",
                "useVoicePortalDefaultGreeting",
                bool,
            ),
            E(
                "voice_portal_greeting_file",
                "voicePortalGreetingFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E(
                "use_voice_messaging_default_greeting",
                "useVoiceMessagingDefaultGreeting",
                bool,
            ),
            E(
                "voice_messaging_greeting_file",
                "voiceMessagingGreetingFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E("express_mode", "expressMode", bool),
            E("network_class_of_service", "networkClassOfService", str),
        )


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 (int): responseSizeLimit *Optional*
        search_criteria_system_service_dn (List[OCI.searchCriteriaSystemServiceDn]):
            searchCriteriaSystemServiceDn *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_system_service_dn",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_system_service_dn",
                "searchCriteriaSystemServiceDn",
                OCI.SearchCriteriaSystemServiceDn,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemTimeScheduleAddRequest(OCIRequest):
    """
    Add a system time schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        time_schedule_name (str): timeScheduleName
        time_interval01 (OCI.timeInterval01): timeInterval01 *Optional*
        time_interval02 (OCI.timeInterval02): timeInterval02 *Optional*
        time_interval03 (OCI.timeInterval03): timeInterval03 *Optional*
        time_interval04 (OCI.timeInterval04): timeInterval04 *Optional*
        time_interval05 (OCI.timeInterval05): timeInterval05 *Optional*
        time_interval06 (OCI.timeInterval06): timeInterval06 *Optional*
        time_interval07 (OCI.timeInterval07): timeInterval07 *Optional*
        time_interval08 (OCI.timeInterval08): timeInterval08 *Optional*
        time_interval09 (OCI.timeInterval09): timeInterval09 *Optional*
        time_interval10 (OCI.timeInterval10): timeInterval10 *Optional*
        time_interval11 (OCI.timeInterval11): timeInterval11 *Optional*
        time_interval12 (OCI.timeInterval12): timeInterval12 *Optional*
        time_interval13 (OCI.timeInterval13): timeInterval13 *Optional*
        time_interval14 (OCI.timeInterval14): timeInterval14 *Optional*
        time_interval15 (OCI.timeInterval15): timeInterval15 *Optional*
        time_interval16 (OCI.timeInterval16): timeInterval16 *Optional*
        time_interval17 (OCI.timeInterval17): timeInterval17 *Optional*
        time_interval18 (OCI.timeInterval18): timeInterval18 *Optional*
        time_interval19 (OCI.timeInterval19): timeInterval19 *Optional*
        time_interval20 (OCI.timeInterval20): timeInterval20 *Optional*
    """

    __slots__: List[str] = [
        "time_schedule_name",
        "time_interval01",
        "time_interval02",
        "time_interval03",
        "time_interval04",
        "time_interval05",
        "time_interval06",
        "time_interval07",
        "time_interval08",
        "time_interval09",
        "time_interval10",
        "time_interval11",
        "time_interval12",
        "time_interval13",
        "time_interval14",
        "time_interval15",
        "time_interval16",
        "time_interval17",
        "time_interval18",
        "time_interval19",
        "time_interval20",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("time_schedule_name", "timeScheduleName", str, is_required=True),
            E("time_interval01", "timeInterval01", OCI.TimeInterval, is_complex=True),
            E("time_interval02", "timeInterval02", OCI.TimeInterval, is_complex=True),
            E("time_interval03", "timeInterval03", OCI.TimeInterval, is_complex=True),
            E("time_interval04", "timeInterval04", OCI.TimeInterval, is_complex=True),
            E("time_interval05", "timeInterval05", OCI.TimeInterval, is_complex=True),
            E("time_interval06", "timeInterval06", OCI.TimeInterval, is_complex=True),
            E("time_interval07", "timeInterval07", OCI.TimeInterval, is_complex=True),
            E("time_interval08", "timeInterval08", OCI.TimeInterval, is_complex=True),
            E("time_interval09", "timeInterval09", OCI.TimeInterval, is_complex=True),
            E("time_interval10", "timeInterval10", OCI.TimeInterval, is_complex=True),
            E("time_interval11", "timeInterval11", OCI.TimeInterval, is_complex=True),
            E("time_interval12", "timeInterval12", OCI.TimeInterval, is_complex=True),
            E("time_interval13", "timeInterval13", OCI.TimeInterval, is_complex=True),
            E("time_interval14", "timeInterval14", OCI.TimeInterval, is_complex=True),
            E("time_interval15", "timeInterval15", OCI.TimeInterval, is_complex=True),
            E("time_interval16", "timeInterval16", OCI.TimeInterval, is_complex=True),
            E("time_interval17", "timeInterval17", OCI.TimeInterval, is_complex=True),
            E("time_interval18", "timeInterval18", OCI.TimeInterval, is_complex=True),
            E("time_interval19", "timeInterval19", OCI.TimeInterval, is_complex=True),
            E("time_interval20", "timeInterval20", OCI.TimeInterval, is_complex=True),
        )


class SystemTimeScheduleModifyRequest(OCIRequest):
    """
    Modify a specified system time schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        time_schedule_name (str): timeScheduleName
        new_time_schedule_name (str): newTimeScheduleName *Optional*
        time_interval01 (OCI.timeInterval01): timeInterval01 *Optional*
        time_interval02 (OCI.timeInterval02): timeInterval02 *Optional*
        time_interval03 (OCI.timeInterval03): timeInterval03 *Optional*
        time_interval04 (OCI.timeInterval04): timeInterval04 *Optional*
        time_interval05 (OCI.timeInterval05): timeInterval05 *Optional*
        time_interval06 (OCI.timeInterval06): timeInterval06 *Optional*
        time_interval07 (OCI.timeInterval07): timeInterval07 *Optional*
        time_interval08 (OCI.timeInterval08): timeInterval08 *Optional*
        time_interval09 (OCI.timeInterval09): timeInterval09 *Optional*
        time_interval10 (OCI.timeInterval10): timeInterval10 *Optional*
        time_interval11 (OCI.timeInterval11): timeInterval11 *Optional*
        time_interval12 (OCI.timeInterval12): timeInterval12 *Optional*
        time_interval13 (OCI.timeInterval13): timeInterval13 *Optional*
        time_interval14 (OCI.timeInterval14): timeInterval14 *Optional*
        time_interval15 (OCI.timeInterval15): timeInterval15 *Optional*
        time_interval16 (OCI.timeInterval16): timeInterval16 *Optional*
        time_interval17 (OCI.timeInterval17): timeInterval17 *Optional*
        time_interval18 (OCI.timeInterval18): timeInterval18 *Optional*
        time_interval19 (OCI.timeInterval19): timeInterval19 *Optional*
        time_interval20 (OCI.timeInterval20): timeInterval20 *Optional*
    """

    __slots__: List[str] = [
        "time_schedule_name",
        "new_time_schedule_name",
        "time_interval01",
        "time_interval02",
        "time_interval03",
        "time_interval04",
        "time_interval05",
        "time_interval06",
        "time_interval07",
        "time_interval08",
        "time_interval09",
        "time_interval10",
        "time_interval11",
        "time_interval12",
        "time_interval13",
        "time_interval14",
        "time_interval15",
        "time_interval16",
        "time_interval17",
        "time_interval18",
        "time_interval19",
        "time_interval20",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("time_schedule_name", "timeScheduleName", str, is_required=True),
            E("new_time_schedule_name", "newTimeScheduleName", str),
            E("time_interval01", "timeInterval01", OCI.TimeInterval, is_complex=True),
            E("time_interval02", "timeInterval02", OCI.TimeInterval, is_complex=True),
            E("time_interval03", "timeInterval03", OCI.TimeInterval, is_complex=True),
            E("time_interval04", "timeInterval04", OCI.TimeInterval, is_complex=True),
            E("time_interval05", "timeInterval05", OCI.TimeInterval, is_complex=True),
            E("time_interval06", "timeInterval06", OCI.TimeInterval, is_complex=True),
            E("time_interval07", "timeInterval07", OCI.TimeInterval, is_complex=True),
            E("time_interval08", "timeInterval08", OCI.TimeInterval, is_complex=True),
            E("time_interval09", "timeInterval09", OCI.TimeInterval, is_complex=True),
            E("time_interval10", "timeInterval10", OCI.TimeInterval, is_complex=True),
            E("time_interval11", "timeInterval11", OCI.TimeInterval, is_complex=True),
            E("time_interval12", "timeInterval12", OCI.TimeInterval, is_complex=True),
            E("time_interval13", "timeInterval13", OCI.TimeInterval, is_complex=True),
            E("time_interval14", "timeInterval14", OCI.TimeInterval, is_complex=True),
            E("time_interval15", "timeInterval15", OCI.TimeInterval, is_complex=True),
            E("time_interval16", "timeInterval16", OCI.TimeInterval, is_complex=True),
            E("time_interval17", "timeInterval17", OCI.TimeInterval, is_complex=True),
            E("time_interval18", "timeInterval18", OCI.TimeInterval, is_complex=True),
            E("time_interval19", "timeInterval19", OCI.TimeInterval, is_complex=True),
            E("time_interval20", "timeInterval20", OCI.TimeInterval, is_complex=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 (int): responseSizeLimit *Optional*
        search_criteria_system_service_dn (List[OCI.searchCriteriaSystemServiceDn]):
            searchCriteriaSystemServiceDn *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_system_service_dn",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_system_service_dn",
                "searchCriteriaSystemServiceDn",
                OCI.SearchCriteriaSystemServiceDn,
                is_complex=True,
                is_array=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[OCI.xsiApplicationIdEntry]): xsiApplicationIdEntry
    """

    __slots__: List[str] = [
        "xsi_application_id_entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "xsi_application_id_entry",
                "xsiApplicationIdEntry",
                OCI.XsiApplicationIdEntry,
                is_complex=True,
                is_required=True,
                is_array=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 (OCI.xsiPolicyProfile): xsiPolicyProfile
    """

    __slots__: List[str] = [
        "xsi_policy_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "xsi_policy_profile",
                "xsiPolicyProfile",
                OCI.XsiPolicyProfileKey,
                is_complex=True,
                is_required=True,
            ),
        )


class SystemXsiPolicyProfileGetAssignedServiceProviderListRequest(OCIRequest):
    """
    Get usage of specific policy profile.

    The response is either a
    `SystemXsiPolicyProfileGetAssignedServiceProviderListResponse()` or an
    `ErrorResponse()`.

    Attributes:
        xsi_policy_profile (OCI.xsiPolicyProfile): xsiPolicyProfile
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_service_provider_name
            (List[OCI.searchCriteriaServiceProviderName]):
            searchCriteriaServiceProviderName *Optional*
        search_criteria_exact_organization_type (OCI.searchCriteriaExactOrganizationType):
            searchCriteriaExactOrganizationType *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
    """

    __slots__: List[str] = [
        "xsi_policy_profile",
        "response_size_limit",
        "search_criteria_service_provider_id",
        "search_criteria_service_provider_name",
        "search_criteria_exact_organization_type",
        "search_criteria_reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "xsi_policy_profile",
                "xsiPolicyProfile",
                OCI.XsiPolicyProfileKey,
                is_complex=True,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_service_provider_name",
                "searchCriteriaServiceProviderName",
                OCI.SearchCriteriaServiceProviderName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_organization_type",
                "searchCriteriaExactOrganizationType",
                OCI.SearchCriteriaExactOrganizationType,
                is_complex=True,
            ),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemXsiPolicyProfileGetRequest(OCIRequest):
    """
    Get an existing Xsi policy profile.

    The response is either a `SystemXsiPolicyProfileGetResponse()` or an
    `ErrorResponse()`.

    Attributes:
        xsi_policy_profile (OCI.xsiPolicyProfile): xsiPolicyProfile
    """

    __slots__: List[str] = [
        "xsi_policy_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "xsi_policy_profile",
                "xsiPolicyProfile",
                OCI.XsiPolicyProfileKey,
                is_complex=True,
                is_required=True,
            ),
        )


class SystemXsiPolicyProfileModifyRequest(OCIRequest):
    """
    Modify the system Xsi policy profile entry.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        xsi_policy_profile (OCI.xsiPolicyProfile): xsiPolicyProfile
        new_xsi_policy_profile_name (str): newXsiPolicyProfileName *Optional*
        description (str): description *Optional*
        max_target_subscription (int): maxTargetSubscription *Optional*
    """

    __slots__: List[str] = [
        "xsi_policy_profile",
        "new_xsi_policy_profile_name",
        "description",
        "max_target_subscription",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "xsi_policy_profile",
                "xsiPolicyProfile",
                OCI.XsiPolicyProfileKey,
                is_complex=True,
                is_required=True,
            ),
            E("new_xsi_policy_profile_name", "newXsiPolicyProfileName", str),
            E("description", "description", str),
            E("max_target_subscription", "maxTargetSubscription", int),
        )


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): zoneName
        net_address (List[str]): netAddress *Optional*
        net_address_range (List[OCI.netAddressRange]): netAddressRange *Optional*
        location_based_physical_location (List[str]): locationBasedPhysicalLocation
            *Optional*
        calling_zone_physical_location (str): callingZonePhysicalLocation *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "net_address",
        "net_address_range",
        "location_based_physical_location",
        "calling_zone_physical_location",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("net_address", "netAddress", str, is_array=True),
            E(
                "net_address_range",
                "netAddressRange",
                OCI.IPAddressRange,
                is_complex=True,
                is_array=True,
            ),
            E(
                "location_based_physical_location",
                "locationBasedPhysicalLocation",
                str,
                is_array=True,
            ),
            E("calling_zone_physical_location", "callingZonePhysicalLocation", str),
        )


class SystemZoneCallingRestrictionsNetAddressAddListRequest(OCIRequest):
    """
    Adds a list of IP addresses to a zone The response is `SuccessResponse()` or an
    `ErrorResponse()`.

    Replaced by: `SystemZoneNetAddressAddListRequest()`

    Attributes:
        zone_name (str): zoneName
        net_address (List[str]): netAddress *Optional*
        net_address_range (List[OCI.netAddressRange]): netAddressRange *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "net_address",
        "net_address_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("net_address", "netAddress", str, is_array=True),
            E(
                "net_address_range",
                "netAddressRange",
                OCI.IPAddressRange,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemZoneCallingRestrictionsNetAddressDeleteListRequest(OCIRequest):
    """
    Deletes a list of IP addresses from a zone The response is `SuccessResponse()` or an
    `ErrorResponse()`.

    Replaced by: `SystemZoneNetAddressDeleteListRequest()`

    Attributes:
        zone_name (str): zoneName
        net_address (List[str]): netAddress *Optional*
        net_address_range (List[OCI.netAddressRange]): netAddressRange *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "net_address",
        "net_address_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("net_address", "netAddress", str, is_array=True),
            E(
                "net_address_range",
                "netAddressRange",
                OCI.IPAddressRange,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemZoneCallingRestrictionsNetAddressGetListRequest(OCIRequest):
    """
    Gets a list of IP Addresses and/or Ranges assigned to a zone Response is
    `SystemZoneCallingRestrictionsNetAddressGetListResponse()`.

    Replaced by: `SystemZoneNetAddressGetListRequest()`

    Attributes:
        zone_name (str): zoneName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_zone_ip_address (List[OCI.searchCriteriaZoneIPAddress]):
            searchCriteriaZoneIPAddress *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "response_size_limit",
        "search_criteria_zone_ip_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_zone_ip_address",
                "searchCriteriaZoneIPAddress",
                OCI.SearchCriteriaZoneIPAddress,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemZoneLocationBasedPhysicalLocationGetListRequest(OCIRequest):
    """
    Gets a list of physical locations assigned to a zone.

    Response is `SystemZoneLocationBasedPhysicalLocationGetListResponse()` or an
    `ErrorResponse()`.

    Attributes:
        zone_name (str): zoneName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_physical_location (List[OCI.searchCriteriaPhysicalLocation]):
            searchCriteriaPhysicalLocation *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "response_size_limit",
        "search_criteria_physical_location",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_physical_location",
                "searchCriteriaPhysicalLocation",
                OCI.SearchCriteriaPhysicalLocation,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemZoneNetAddressAddListRequest(OCIRequest):
    """
    Adds a list of IP addresses to a zone The response is `SuccessResponse()` or an
    `ErrorResponse()`.


    Attributes:
        zone_name (str): zoneName
        net_address (List[str]): netAddress *Optional*
        net_address_range (List[OCI.netAddressRange]): netAddressRange *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "net_address",
        "net_address_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("net_address", "netAddress", str, is_array=True),
            E(
                "net_address_range",
                "netAddressRange",
                OCI.IPAddressRange,
                is_complex=True,
                is_array=True,
            ),
        )


class SystemZoneNetAddressDeleteListRequest(OCIRequest):
    """
    Deletes a list of IP addresses from a zone The response is `SuccessResponse()` or an
    `ErrorResponse()`.


    Attributes:
        zone_name (str): zoneName
        net_address (List[str]): netAddress *Optional*
        net_address_range (List[OCI.netAddressRange]): netAddressRange *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "net_address",
        "net_address_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("net_address", "netAddress", str, is_array=True),
            E(
                "net_address_range",
                "netAddressRange",
                OCI.IPAddressRange,
                is_complex=True,
                is_array=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): zoneName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_zone_ip_address (List[OCI.searchCriteriaZoneIPAddress]):
            searchCriteriaZoneIPAddress *Optional*
    """

    __slots__: List[str] = [
        "zone_name",
        "response_size_limit",
        "search_criteria_zone_ip_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("zone_name", "zoneName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_zone_ip_address",
                "searchCriteriaZoneIPAddress",
                OCI.SearchCriteriaZoneIPAddress,
                is_complex=True,
                is_array=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): userId
        access_device (OCI.accessDevice): accessDevice
    """

    __slots__: List[str] = [
        "user_id",
        "access_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device",
                "accessDevice",
                OCI.AccessDevice,
                is_complex=True,
                is_required=True,
            ),
        )


class UserAccessDeviceFileGetRequest(OCIRequest):
    """
    Request to get a user modifiable file.

    The response is either `UserAccessDeviceFileGetResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        access_device (OCI.accessDevice): accessDevice
        file_format (str): fileFormat
    """

    __slots__: List[str] = [
        "user_id",
        "access_device",
        "file_format",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device",
                "accessDevice",
                OCI.AccessDevice,
                is_complex=True,
                is_required=True,
            ),
            E("file_format", "fileFormat", str, is_required=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): userId
        access_device (OCI.accessDevice): accessDevice
        file_format (str): fileFormat
        upload_file (OCI.uploadFile): uploadFile
    """

    __slots__: List[str] = [
        "user_id",
        "access_device",
        "file_format",
        "upload_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device",
                "accessDevice",
                OCI.AccessDevice,
                is_complex=True,
                is_required=True,
            ),
            E("file_format", "fileFormat", str, is_required=True),
            E(
                "upload_file",
                "uploadFile",
                OCI.FileResource,
                is_complex=True,
                is_required=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): userId
        access_device (OCI.accessDevice): accessDevice
    """

    __slots__: List[str] = [
        "user_id",
        "access_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device",
                "accessDevice",
                OCI.AccessDevice,
                is_complex=True,
                is_required=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): userId
        access_device (OCI.accessDevice): accessDevice
    """

    __slots__: List[str] = [
        "user_id",
        "access_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device",
                "accessDevice",
                OCI.AccessDevice,
                is_complex=True,
                is_required=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

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        distinctive_ring (bool): distinctiveRing *Optional*
        alternate_entry01 (OCI.alternateEntry01): alternateEntry01 *Optional*
        alternate_entry02 (OCI.alternateEntry02): alternateEntry02 *Optional*
        alternate_entry03 (OCI.alternateEntry03): alternateEntry03 *Optional*
        alternate_entry04 (OCI.alternateEntry04): alternateEntry04 *Optional*
        alternate_entry05 (OCI.alternateEntry05): alternateEntry05 *Optional*
        alternate_entry06 (OCI.alternateEntry06): alternateEntry06 *Optional*
        alternate_entry07 (OCI.alternateEntry07): alternateEntry07 *Optional*
        alternate_entry08 (OCI.alternateEntry08): alternateEntry08 *Optional*
        alternate_entry09 (OCI.alternateEntry09): alternateEntry09 *Optional*
        alternate_entry10 (OCI.alternateEntry10): alternateEntry10 *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "distinctive_ring",
        "alternate_entry01",
        "alternate_entry02",
        "alternate_entry03",
        "alternate_entry04",
        "alternate_entry05",
        "alternate_entry06",
        "alternate_entry07",
        "alternate_entry08",
        "alternate_entry09",
        "alternate_entry10",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("distinctive_ring", "distinctiveRing", bool),
            E(
                "alternate_entry01",
                "alternateEntry01",
                OCI.AlternateNumberEntry21,
                is_complex=True,
            ),
            E(
                "alternate_entry02",
                "alternateEntry02",
                OCI.AlternateNumberEntry21,
                is_complex=True,
            ),
            E(
                "alternate_entry03",
                "alternateEntry03",
                OCI.AlternateNumberEntry21,
                is_complex=True,
            ),
            E(
                "alternate_entry04",
                "alternateEntry04",
                OCI.AlternateNumberEntry21,
                is_complex=True,
            ),
            E(
                "alternate_entry05",
                "alternateEntry05",
                OCI.AlternateNumberEntry21,
                is_complex=True,
            ),
            E(
                "alternate_entry06",
                "alternateEntry06",
                OCI.AlternateNumberEntry21,
                is_complex=True,
            ),
            E(
                "alternate_entry07",
                "alternateEntry07",
                OCI.AlternateNumberEntry21,
                is_complex=True,
            ),
            E(
                "alternate_entry08",
                "alternateEntry08",
                OCI.AlternateNumberEntry21,
                is_complex=True,
            ),
            E(
                "alternate_entry09",
                "alternateEntry09",
                OCI.AlternateNumberEntry21,
                is_complex=True,
            ),
            E(
                "alternate_entry10",
                "alternateEntry10",
                OCI.AlternateNumberEntry21,
                is_complex=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): userId
        announcement_file_name (str): announcementFileName *Optional*
        announcement_file_external_id (str): announcementFileExternalId *Optional*
        announcement_file (OCI.announcementFile): announcementFile
    """

    __slots__: List[str] = [
        "user_id",
        "announcement_file_name",
        "announcement_file_external_id",
        "announcement_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("announcement_file_name", "announcementFileName", str),
            E("announcement_file_external_id", "announcementFileExternalId", str),
            E(
                "announcement_file",
                "announcementFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
                is_required=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): userId
        announcement_file_key (List[OCI.announcementFileKey]): announcementFileKey
            *Optional*
        announcement_file_external_id (List[str]): announcementFileExternalId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "announcement_file_key",
        "announcement_file_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "announcement_file_key",
                "announcementFileKey",
                OCI.AnnouncementFileKey,
                is_complex=True,
                is_array=True,
            ),
            E(
                "announcement_file_external_id",
                "announcementFileExternalId",
                str,
                is_array=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): userId
        announcement_file_type (str): announcementFileType *Optional*
        include_announcement_table (bool): includeAnnouncementTable
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_announcement_file_name
            (List[OCI.searchCriteriaAnnouncementFileName]):
            searchCriteriaAnnouncementFileName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "announcement_file_type",
        "include_announcement_table",
        "response_size_limit",
        "search_criteria_announcement_file_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("announcement_file_type", "announcementFileType", str),
            E(
                "include_announcement_table",
                "includeAnnouncementTable",
                bool,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_announcement_file_name",
                "searchCriteriaAnnouncementFileName",
                OCI.SearchCriteriaAnnouncementFileName,
                is_complex=True,
                is_array=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): userId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_announcement_file_name (OCI.sortByAnnouncementFileName):
            sortByAnnouncementFileName *Optional*
        sort_by_announcement_file_size (OCI.sortByAnnouncementFileSize):
            sortByAnnouncementFileSize *Optional*
        search_criteria_announcement_file_name
            (List[OCI.searchCriteriaAnnouncementFileName]):
            searchCriteriaAnnouncementFileName *Optional*
        search_criteria_exact_announcement_file_type
            (OCI.searchCriteriaExactAnnouncementFileType):
            searchCriteriaExactAnnouncementFileType *Optional*
        search_criteria_exact_media_file_type
            (List[OCI.searchCriteriaExactMediaFileType]): searchCriteriaExactMediaFileType
            *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_paging_control",
        "sort_by_announcement_file_name",
        "sort_by_announcement_file_size",
        "search_criteria_announcement_file_name",
        "search_criteria_exact_announcement_file_type",
        "search_criteria_exact_media_file_type",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_announcement_file_name",
                "sortByAnnouncementFileName",
                OCI.SortByAnnouncementFileName,
                is_complex=True,
            ),
            E(
                "sort_by_announcement_file_size",
                "sortByAnnouncementFileSize",
                OCI.SortByAnnouncementFileSize,
                is_complex=True,
            ),
            E(
                "search_criteria_announcement_file_name",
                "searchCriteriaAnnouncementFileName",
                OCI.SearchCriteriaAnnouncementFileName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_announcement_file_type",
                "searchCriteriaExactAnnouncementFileType",
                OCI.SearchCriteriaExactAnnouncementFileType,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_media_file_type",
                "searchCriteriaExactMediaFileType",
                OCI.SearchCriteriaExactMediaFileType,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


class UserAnnouncementFileGetRequest(OCIRequest):
    """
    Request to get the announcement repository file information.

    The response is either `UserAnnouncementFileGetResponse()` or `ErrorResponse()`.
    Replaced by: `UserAnnouncementFileGetRequest22()`.

    Attributes:
        user_id (str): userId
        announcement_file_key (OCI.announcementFileKey): announcementFileKey
    """

    __slots__: List[str] = [
        "user_id",
        "announcement_file_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "announcement_file_key",
                "announcementFileKey",
                OCI.AnnouncementFileKey,
                is_complex=True,
                is_required=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 (str): userId *Optional*
        announcement_file_key (OCI.announcementFileKey): announcementFileKey *Optional*
        announcement_file_external_id (str): announcementFileExternalId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "announcement_file_key",
        "announcement_file_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E(
                "announcement_file_key",
                "announcementFileKey",
                OCI.AnnouncementFileKey,
                is_complex=True,
            ),
            E("announcement_file_external_id", "announcementFileExternalId", str),
        )


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 (str): userId *Optional*
        announcement_file_key (OCI.announcementFileKey): announcementFileKey *Optional*
        announcement_file_external_id (str): announcementFileExternalId *Optional*
        new_announcement_file_name (str): newAnnouncementFileName *Optional*
        announcement_file (OCI.announcementFile): announcementFile *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "announcement_file_key",
        "announcement_file_external_id",
        "new_announcement_file_name",
        "announcement_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str),
            E(
                "announcement_file_key",
                "announcementFileKey",
                OCI.AnnouncementFileKey,
                is_complex=True,
            ),
            E("announcement_file_external_id", "announcementFileExternalId", str),
            E("new_announcement_file_name", "newAnnouncementFileName", str),
            E(
                "announcement_file",
                "announcementFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
        )


class UserBroadWorksAnywhereAddSelectiveCriteriaRequest(OCIRequest):
    """
    Add a criteria to the user's BroadWorks Anywhere phone number.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "criteria_name",
        "time_schedule",
        "from_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=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): userId
        phone_number (str): phoneNumber
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
        call_to_number (List[OCI.callToNumber]): callToNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
        "call_to_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool, is_required=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
            E(
                "call_to_number",
                "callToNumber",
                OCI.CallToNumber,
                is_complex=True,
                is_array=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): userId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_location (OCI.sortByLocation): sortByLocation *Optional*
        sort_by_enabled (OCI.sortByEnabled): sortByEnabled *Optional*
        search_criteria_location (List[OCI.searchCriteriaLocation]):
            searchCriteriaLocation *Optional*
        search_criteria_exact_location_enabled (OCI.searchCriteriaExactLocationEnabled):
            searchCriteriaExactLocationEnabled *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_paging_control",
        "sort_by_location",
        "sort_by_enabled",
        "search_criteria_location",
        "search_criteria_exact_location_enabled",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_location",
                "sortByLocation",
                OCI.SortByLocation,
                is_complex=True,
            ),
            E("sort_by_enabled", "sortByEnabled", OCI.SortByEnabled, is_complex=True),
            E(
                "search_criteria_location",
                "searchCriteriaLocation",
                OCI.SearchCriteriaLocation,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_location_enabled",
                "searchCriteriaExactLocationEnabled",
                OCI.SearchCriteriaExactLocationEnabled,
                is_complex=True,
            ),
        )


class UserBroadWorksAnywhereModifyPhoneNumberRequest(OCIRequest):
    """
    Modify a BroadWorks Anywhere phone number The response is either a `SuccessResponse()`
    or an `ErrorResponse()`.


    Attributes:
        user_id (str): userId
        phone_number (str): phoneNumber
        new_phone_number (str): newPhoneNumber *Optional*
        description (str): description *Optional*
        is_active (bool): isActive *Optional*
        outbound_alternate_number (str): outboundAlternateNumber *Optional*
        broadworks_call_control (bool): broadworksCallControl *Optional*
        use_diversion_inhibitor (bool): useDiversionInhibitor *Optional*
        answer_confirmation_required (bool): answerConfirmationRequired *Optional*
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "new_phone_number",
        "description",
        "is_active",
        "outbound_alternate_number",
        "broadworks_call_control",
        "use_diversion_inhibitor",
        "answer_confirmation_required",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E("new_phone_number", "newPhoneNumber", str),
            E("description", "description", str),
            E("is_active", "isActive", bool),
            E("outbound_alternate_number", "outboundAlternateNumber", str),
            E("broadworks_call_control", "broadworksCallControl", bool),
            E("use_diversion_inhibitor", "useDiversionInhibitor", bool),
            E("answer_confirmation_required", "answerConfirmationRequired", bool),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=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): userId
        is_active (bool): isActive *Optional*
        use_mobile_identity_call_anchoring (bool): useMobileIdentityCallAnchoring
            *Optional*
        prevent_calls_to_own_mobiles (bool): preventCallsToOwnMobiles *Optional*
        mobile_identity (List[OCI.mobileIdentity]): mobileIdentity *Optional*
        profile_identity_devices_to_ring (str): profileIdentityDevicesToRing *Optional*
        profile_identity_include_shared_call_appearance (bool):
            profileIdentityIncludeSharedCallAppearance *Optional*
        profile_identity_include_broadworks_anywhere (bool):
            profileIdentityIncludeBroadworksAnywhere *Optional*
        profile_identity_include_executive_assistant (bool):
            profileIdentityIncludeExecutiveAssistant *Optional*
        profile_identity_mobility_numbers_alerted
            (OCI.profileIdentityMobilityNumbersAlerted):
            profileIdentityMobilityNumbersAlerted *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "use_mobile_identity_call_anchoring",
        "prevent_calls_to_own_mobiles",
        "mobile_identity",
        "profile_identity_devices_to_ring",
        "profile_identity_include_shared_call_appearance",
        "profile_identity_include_broadworks_anywhere",
        "profile_identity_include_executive_assistant",
        "profile_identity_mobility_numbers_alerted",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E(
                "use_mobile_identity_call_anchoring",
                "useMobileIdentityCallAnchoring",
                bool,
            ),
            E("prevent_calls_to_own_mobiles", "preventCallsToOwnMobiles", bool),
            E(
                "mobile_identity",
                "mobileIdentity",
                OCI.BroadWorksMobilityUserMobileIdentityModifyEntry,
                is_complex=True,
                is_array=True,
            ),
            E("profile_identity_devices_to_ring", "profileIdentityDevicesToRing", str),
            E(
                "profile_identity_include_shared_call_appearance",
                "profileIdentityIncludeSharedCallAppearance",
                bool,
            ),
            E(
                "profile_identity_include_broadworks_anywhere",
                "profileIdentityIncludeBroadworksAnywhere",
                bool,
            ),
            E(
                "profile_identity_include_executive_assistant",
                "profileIdentityIncludeExecutiveAssistant",
                bool,
            ),
            E(
                "profile_identity_mobility_numbers_alerted",
                "profileIdentityMobilityNumbersAlerted",
                OCI.BroadWorksMobilityAlertingMobileNumberReplacementList,
                is_complex=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): userId
        monitored_user_id_list (OCI.monitoredUserIdList): monitoredUserIdList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "monitored_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "monitored_user_id_list",
                "monitoredUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): receptionistUserId
        contact_user_id (str): contactUserId *Optional*
        von_user (OCI.vonUser): vonUser *Optional*
    """

    __slots__: List[str] = [
        "receptionist_user_id",
        "contact_user_id",
        "von_user",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("receptionist_user_id", "receptionistUserId", str, is_required=True),
            E("contact_user_id", "contactUserId", str),
            E("von_user", "vonUser", OCI.VirtualOnNetUserKey, is_complex=True),
        )


class UserBroadWorksReceptionistOfficeModifyRequest(OCIRequest):
    """
    Replace the Receptionist Office monitored user list.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        monitored_user_id_list (OCI.monitoredUserIdList): monitoredUserIdList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "monitored_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "monitored_user_id_list",
                "monitoredUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): userId
        monitored_user_id_list (OCI.monitoredUserIdList): monitoredUserIdList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "monitored_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "monitored_user_id_list",
                "monitoredUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): userId
        list_uri (str): listURI *Optional*
        monitored_user_id_list (OCI.monitoredUserIdList): monitoredUserIdList *Optional*
        enable_call_park_notification (bool): enableCallParkNotification *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "list_uri",
        "monitored_user_id_list",
        "enable_call_park_notification",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("list_uri", "listURI", str),
            E(
                "monitored_user_id_list",
                "monitoredUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E("enable_call_park_notification", "enableCallParkNotification", bool),
        )


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 (OCI.reportTemplate): reportTemplate
    """

    __slots__: List[str] = [
        "report_template",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "report_template",
                "reportTemplate",
                OCI.CallCenterReportTemplateKey,
                is_complex=True,
                is_required=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): userId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_user_id (OCI.sortByUserId): sortByUserId *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_paging_control",
        "sort_by_user_id",
        "search_criteria_user_id",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E("sort_by_user_id", "sortByUserId", OCI.SortByUserId, is_complex=True),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


class UserCallCenterModifyAvailabilityListRequest(OCIRequest):
    """
    Request for an agent to login or logout of one or more Call Centers.

    Contains a list specifing the desired login status of one or more call centers.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `UserCallCenterModifyRequest17sp4()`

    Attributes:
        user_id (str): userId
        call_center_availability (List[OCI.callCenterAvailability]):
            callCenterAvailability *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_center_availability",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "call_center_availability",
                "callCenterAvailability",
                OCI.CallCenterAgentAvailability,
                is_complex=True,
                is_array=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): agentUserId
        service_user_id_list (OCI.serviceUserIdList): serviceUserIdList *Optional*
    """

    __slots__: List[str] = [
        "agent_user_id",
        "service_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("agent_user_id", "agentUserId", str, is_required=True),
            E(
                "service_user_id_list",
                "serviceUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
        )


class UserCallCenterModifyRequest(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()`. Replaced by
    `UserCallCenterModifyRequest17sp4()`.

    Attributes:
        user_id (str): userId
        agent_acd_state (str): agentACDState *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        use_default_guard_timer (bool): useDefaultGuardTimer *Optional*
        enable_guard_timer (bool): enableGuardTimer *Optional*
        guard_timer_seconds (int): guardTimerSeconds *Optional*
        use_system_default_unavailable_settings (bool):
            useSystemDefaultUnavailableSettings *Optional*
        force_agent_unavailable_on_dnd_activation (bool):
            forceAgentUnavailableOnDNDActivation *Optional*
        force_unavailable_on_personal_calls (bool): forceUnavailableOnPersonalCalls
            *Optional*
        force_agent_unavailable_on_bounced_call_limit (bool):
            forceAgentUnavailableOnBouncedCallLimit *Optional*
        number_consecutive_bounced_calls_to_force_agent_unavailable (int):
            numberConsecutiveBouncedCallsToForceAgentUnavailable *Optional*
        make_outgoing_calls_as_call_center (bool): makeOutgoingCallsAsCallCenter
            *Optional*
        outgoing_call_dnis (OCI.outgoingCallDNIS): outgoingCallDNIS *Optional*
        call_center_availability (List[OCI.callCenterAvailability]):
            callCenterAvailability *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "agent_acd_state",
        "agent_unavailable_code",
        "use_default_guard_timer",
        "enable_guard_timer",
        "guard_timer_seconds",
        "use_system_default_unavailable_settings",
        "force_agent_unavailable_on_dnd_activation",
        "force_unavailable_on_personal_calls",
        "force_agent_unavailable_on_bounced_call_limit",
        "number_consecutive_bounced_calls_to_force_agent_unavailable",
        "make_outgoing_calls_as_call_center",
        "outgoing_call_dnis",
        "call_center_availability",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("agent_acd_state", "agentACDState", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E("use_default_guard_timer", "useDefaultGuardTimer", bool),
            E("enable_guard_timer", "enableGuardTimer", bool),
            E("guard_timer_seconds", "guardTimerSeconds", int),
            E(
                "use_system_default_unavailable_settings",
                "useSystemDefaultUnavailableSettings",
                bool,
            ),
            E(
                "force_agent_unavailable_on_dnd_activation",
                "forceAgentUnavailableOnDNDActivation",
                bool,
            ),
            E(
                "force_unavailable_on_personal_calls",
                "forceUnavailableOnPersonalCalls",
                bool,
            ),
            E(
                "force_agent_unavailable_on_bounced_call_limit",
                "forceAgentUnavailableOnBouncedCallLimit",
                bool,
            ),
            E(
                "number_consecutive_bounced_calls_to_force_agent_unavailable",
                "numberConsecutiveBouncedCallsToForceAgentUnavailable",
                int,
            ),
            E(
                "make_outgoing_calls_as_call_center",
                "makeOutgoingCallsAsCallCenter",
                bool,
            ),
            E("outgoing_call_dnis", "outgoingCallDNIS", OCI.DNISKey, is_complex=True),
            E(
                "call_center_availability",
                "callCenterAvailability",
                OCI.CallCenterAgentAvailability,
                is_complex=True,
                is_array=True,
            ),
        )


class UserCallCenterModifyRequest17sp4(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()`. Replaced by
    `UserCallCenterModifyRequest19()`.

    Attributes:
        user_id (str): userId
        agent_acd_state (str): agentACDState *Optional*
        agent_threshold_profile_name (str): agentThresholdProfileName *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        use_default_guard_timer (bool): useDefaultGuardTimer *Optional*
        enable_guard_timer (bool): enableGuardTimer *Optional*
        guard_timer_seconds (int): guardTimerSeconds *Optional*
        use_system_default_unavailable_settings (bool):
            useSystemDefaultUnavailableSettings *Optional*
        force_agent_unavailable_on_dnd_activation (bool):
            forceAgentUnavailableOnDNDActivation *Optional*
        force_agent_unavailable_on_personal_calls (bool):
            forceAgentUnavailableOnPersonalCalls *Optional*
        force_agent_unavailable_on_bounced_call_limit (bool):
            forceAgentUnavailableOnBouncedCallLimit *Optional*
        number_consecutive_bounced_calls_to_force_agent_unavailable (int):
            numberConsecutiveBouncedCallsToForceAgentUnavailable *Optional*
        force_agent_unavailable_on_not_reachable (bool):
            forceAgentUnavailableOnNotReachable *Optional*
        make_outgoing_calls_as_call_center (bool): makeOutgoingCallsAsCallCenter
            *Optional*
        outgoing_call_dnis (OCI.outgoingCallDNIS): outgoingCallDNIS *Optional*
        call_center_availability (List[OCI.callCenterAvailability]):
            callCenterAvailability *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "agent_acd_state",
        "agent_threshold_profile_name",
        "agent_unavailable_code",
        "use_default_guard_timer",
        "enable_guard_timer",
        "guard_timer_seconds",
        "use_system_default_unavailable_settings",
        "force_agent_unavailable_on_dnd_activation",
        "force_agent_unavailable_on_personal_calls",
        "force_agent_unavailable_on_bounced_call_limit",
        "number_consecutive_bounced_calls_to_force_agent_unavailable",
        "force_agent_unavailable_on_not_reachable",
        "make_outgoing_calls_as_call_center",
        "outgoing_call_dnis",
        "call_center_availability",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("agent_acd_state", "agentACDState", str),
            E("agent_threshold_profile_name", "agentThresholdProfileName", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E("use_default_guard_timer", "useDefaultGuardTimer", bool),
            E("enable_guard_timer", "enableGuardTimer", bool),
            E("guard_timer_seconds", "guardTimerSeconds", int),
            E(
                "use_system_default_unavailable_settings",
                "useSystemDefaultUnavailableSettings",
                bool,
            ),
            E(
                "force_agent_unavailable_on_dnd_activation",
                "forceAgentUnavailableOnDNDActivation",
                bool,
            ),
            E(
                "force_agent_unavailable_on_personal_calls",
                "forceAgentUnavailableOnPersonalCalls",
                bool,
            ),
            E(
                "force_agent_unavailable_on_bounced_call_limit",
                "forceAgentUnavailableOnBouncedCallLimit",
                bool,
            ),
            E(
                "number_consecutive_bounced_calls_to_force_agent_unavailable",
                "numberConsecutiveBouncedCallsToForceAgentUnavailable",
                int,
            ),
            E(
                "force_agent_unavailable_on_not_reachable",
                "forceAgentUnavailableOnNotReachable",
                bool,
            ),
            E(
                "make_outgoing_calls_as_call_center",
                "makeOutgoingCallsAsCallCenter",
                bool,
            ),
            E("outgoing_call_dnis", "outgoingCallDNIS", OCI.DNISKey, is_complex=True),
            E(
                "call_center_availability",
                "callCenterAvailability",
                OCI.CallCenterAgentAvailability,
                is_complex=True,
                is_array=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): userId
        agent_acd_state (str): agentACDState *Optional*
        agent_threshold_profile_name (str): agentThresholdProfileName *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        use_default_guard_timer (bool): useDefaultGuardTimer *Optional*
        enable_guard_timer (bool): enableGuardTimer *Optional*
        guard_timer_seconds (int): guardTimerSeconds *Optional*
        use_system_default_unavailable_settings (bool):
            useSystemDefaultUnavailableSettings *Optional*
        force_agent_unavailable_on_dnd_activation (bool):
            forceAgentUnavailableOnDNDActivation *Optional*
        force_agent_unavailable_on_personal_calls (bool):
            forceAgentUnavailableOnPersonalCalls *Optional*
        force_agent_unavailable_on_bounced_call_limit (bool):
            forceAgentUnavailableOnBouncedCallLimit *Optional*
        number_consecutive_bounced_calls_to_force_agent_unavailable (int):
            numberConsecutiveBouncedCallsToForceAgentUnavailable *Optional*
        force_agent_unavailable_on_not_reachable (bool):
            forceAgentUnavailableOnNotReachable *Optional*
        make_outgoing_calls_as_call_center (bool): makeOutgoingCallsAsCallCenter
            *Optional*
        outgoing_call_dnis (OCI.outgoingCallDNIS): outgoingCallDNIS *Optional*
        call_center_agent_settings (List[OCI.callCenterAgentSettings]):
            callCenterAgentSettings *Optional*
        use_system_default_wrap_up_destination (bool): useSystemDefaultWrapUpDestination
            *Optional*
        wrap_up_destination (str): wrapUpDestination *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "agent_acd_state",
        "agent_threshold_profile_name",
        "agent_unavailable_code",
        "use_default_guard_timer",
        "enable_guard_timer",
        "guard_timer_seconds",
        "use_system_default_unavailable_settings",
        "force_agent_unavailable_on_dnd_activation",
        "force_agent_unavailable_on_personal_calls",
        "force_agent_unavailable_on_bounced_call_limit",
        "number_consecutive_bounced_calls_to_force_agent_unavailable",
        "force_agent_unavailable_on_not_reachable",
        "make_outgoing_calls_as_call_center",
        "outgoing_call_dnis",
        "call_center_agent_settings",
        "use_system_default_wrap_up_destination",
        "wrap_up_destination",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("agent_acd_state", "agentACDState", str),
            E("agent_threshold_profile_name", "agentThresholdProfileName", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E("use_default_guard_timer", "useDefaultGuardTimer", bool),
            E("enable_guard_timer", "enableGuardTimer", bool),
            E("guard_timer_seconds", "guardTimerSeconds", int),
            E(
                "use_system_default_unavailable_settings",
                "useSystemDefaultUnavailableSettings",
                bool,
            ),
            E(
                "force_agent_unavailable_on_dnd_activation",
                "forceAgentUnavailableOnDNDActivation",
                bool,
            ),
            E(
                "force_agent_unavailable_on_personal_calls",
                "forceAgentUnavailableOnPersonalCalls",
                bool,
            ),
            E(
                "force_agent_unavailable_on_bounced_call_limit",
                "forceAgentUnavailableOnBouncedCallLimit",
                bool,
            ),
            E(
                "number_consecutive_bounced_calls_to_force_agent_unavailable",
                "numberConsecutiveBouncedCallsToForceAgentUnavailable",
                int,
            ),
            E(
                "force_agent_unavailable_on_not_reachable",
                "forceAgentUnavailableOnNotReachable",
                bool,
            ),
            E(
                "make_outgoing_calls_as_call_center",
                "makeOutgoingCallsAsCallCenter",
                bool,
            ),
            E("outgoing_call_dnis", "outgoingCallDNIS", OCI.DNISKey, is_complex=True),
            E(
                "call_center_agent_settings",
                "callCenterAgentSettings",
                OCI.CallCenterAgentSettings,
                is_complex=True,
                is_array=True,
            ),
            E(
                "use_system_default_wrap_up_destination",
                "useSystemDefaultWrapUpDestination",
                bool,
            ),
            E("wrap_up_destination", "wrapUpDestination", str),
        )


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): supervisorUserId
        service_user_id (str): serviceUserId
        agent_user_id_list (OCI.agentUserIdList): agentUserIdList *Optional*
    """

    __slots__: List[str] = [
        "supervisor_user_id",
        "service_user_id",
        "agent_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("supervisor_user_id", "supervisorUserId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "agent_user_id_list",
                "agentUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
        )


class UserCallForwardingSelectiveAddCriteriaRequest(OCIRequest):
    """
    Add a criteria to the user's call forwarding selective service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        forward_to_number_selection (str): forwardToNumberSelection
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "forward_to_number_selection",
        "forward_to_phone_number",
        "from_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "forward_to_number_selection",
                "forwardToNumberSelection",
                str,
                is_required=True,
            ),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=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): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        forward_to_number_selection (str): forwardToNumberSelection *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
        call_to_number (List[OCI.callToNumber]): callToNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "forward_to_number_selection",
        "forward_to_phone_number",
        "from_dn_criteria",
        "call_to_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("forward_to_number_selection", "forwardToNumberSelection", str),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
            E(
                "call_to_number",
                "callToNumber",
                OCI.CallToNumber,
                is_complex=True,
                is_array=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): userId
        is_active (bool): isActive *Optional*
        default_forward_to_phone_number (str): defaultForwardToPhoneNumber *Optional*
        play_ring_reminder (bool): playRingReminder *Optional*
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "default_forward_to_phone_number",
        "play_ring_reminder",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("default_forward_to_phone_number", "defaultForwardToPhoneNumber", str),
            E("play_ring_reminder", "playRingReminder", bool),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=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): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        reject_call (bool): rejectCall
        to_dn_criteria (OCI.toDnCriteria): toDnCriteria
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "reject_call",
        "to_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("reject_call", "rejectCall", bool, is_required=True),
            E(
                "to_dn_criteria",
                "toDnCriteria",
                OCI.CallMeNowToDnCriteria,
                is_complex=True,
                is_required=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): userId
        is_active (bool): isActive *Optional*
        answer_confirmation (str): answerConfirmation *Optional*
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "answer_confirmation",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("answer_confirmation", "answerConfirmation", str),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=True,
            ),
        )


class UserCallNotifyAddCriteriaRequest(OCIRequest):
    """
    Add a criteria to the user's call notify service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "from_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=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): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
        call_to_number (List[OCI.callToNumber]): callToNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
        "call_to_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool, is_required=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
            E(
                "call_to_number",
                "callToNumber",
                OCI.CallToNumber,
                is_complex=True,
                is_array=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): userId
        call_notify_email_address (str): callNotifyEmailAddress *Optional*
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_notify_email_address",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_notify_email_address", "callNotifyEmailAddress", str),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=True,
            ),
        )


class UserCollaborateProjectRoomAddRequest(OCIRequest):
    """
    Request to add collaborate project room.

    The response is either a `UserCollaborateProjectRoomAddResponse()` or an
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        room_name (str): roomName
        attendee_notification (str): attendeeNotification
        end_collaborate_room_session_on_owner_exit (bool):
            endCollaborateRoomSessionOnOwnerExit
        owner_required (bool): ownerRequired
        room_schedule (OCI.roomSchedule): roomSchedule
    """

    __slots__: List[str] = [
        "user_id",
        "room_name",
        "attendee_notification",
        "end_collaborate_room_session_on_owner_exit",
        "owner_required",
        "room_schedule",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("room_name", "roomName", str, is_required=True),
            E("attendee_notification", "attendeeNotification", str, is_required=True),
            E(
                "end_collaborate_room_session_on_owner_exit",
                "endCollaborateRoomSessionOnOwnerExit",
                bool,
                is_required=True,
            ),
            E("owner_required", "ownerRequired", bool, is_required=True),
            E(
                "room_schedule",
                "roomSchedule",
                OCI.CollaborateRoomSchedule,
                is_complex=True,
                is_required=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): userId
        room_id (str): roomId
        room_name (str): roomName *Optional*
        attendee_notification (str): attendeeNotification *Optional*
        end_collaborate_room_session_on_owner_exit (bool):
            endCollaborateRoomSessionOnOwnerExit *Optional*
        owner_required (bool): ownerRequired *Optional*
        room_schedule (OCI.roomSchedule): roomSchedule *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "room_id",
        "room_name",
        "attendee_notification",
        "end_collaborate_room_session_on_owner_exit",
        "owner_required",
        "room_schedule",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("room_id", "roomId", str, is_required=True),
            E("room_name", "roomName", str),
            E("attendee_notification", "attendeeNotification", str),
            E(
                "end_collaborate_room_session_on_owner_exit",
                "endCollaborateRoomSessionOnOwnerExit",
                bool,
            ),
            E("owner_required", "ownerRequired", bool),
            E(
                "room_schedule",
                "roomSchedule",
                OCI.CollaborateRoomSchedule,
                is_complex=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): userId
        room_id (str): roomId
        room_name (str): roomName *Optional*
        attendee_notification (str): attendeeNotification *Optional*
        end_collaborate_room_session_on_owner_exit (bool):
            endCollaborateRoomSessionOnOwnerExit *Optional*
        owner_required (bool): ownerRequired *Optional*
        room_schedule (OCI.roomSchedule): roomSchedule *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "room_id",
        "room_name",
        "attendee_notification",
        "end_collaborate_room_session_on_owner_exit",
        "owner_required",
        "room_schedule",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("room_id", "roomId", str, is_required=True),
            E("room_name", "roomName", str),
            E("attendee_notification", "attendeeNotification", str),
            E(
                "end_collaborate_room_session_on_owner_exit",
                "endCollaborateRoomSessionOnOwnerExit",
                bool,
            ),
            E("owner_required", "ownerRequired", bool),
            E(
                "room_schedule",
                "roomSchedule",
                OCI.CollaborateRoomSchedule,
                is_complex=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): userId
        code (List[OCI.code]): code
    """

    __slots__: List[str] = [
        "user_id",
        "code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "code",
                "code",
                OCI.CommunicationBarringAuthorizationCodeEntry,
                is_complex=True,
                is_required=True,
                is_array=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): userId
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=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): userId
        outgoing_dtg_policy (str): outgoingDTGPolicy *Optional*
        outgoing_trunk_identity_policy (str): outgoingTrunkIdentityPolicy *Optional*
        direct_route_identity_list (OCI.directRouteIdentityList): directRouteIdentityList
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "outgoing_dtg_policy",
        "outgoing_trunk_identity_policy",
        "direct_route_identity_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("outgoing_dtg_policy", "outgoingDTGPolicy", str),
            E("outgoing_trunk_identity_policy", "outgoingTrunkIdentityPolicy", str),
            E(
                "direct_route_identity_list",
                "directRouteIdentityList",
                OCI.DirectRouteReplacementIdentityList,
                is_complex=True,
            ),
        )


class UserEnhancedCallLogsGetListRequest16(OCIRequest):
    """
    Request user's call logs.

    If the callLogType is not specified, all types of calls logs (placed, received,
    missed) are returned.  It is possible to restrict the number of rows returned using
    responsePagingControl.

    The response is either a `UserEnhancedCallLogsGetListResponse16()` or an
    `ErrorResponse()`. Replaced by `UserEnhancedCallLogsGetListRequest17sp4()`

    Attributes:
        user_id (str): userId
        call_log_type (str): callLogType *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_log_type",
        "response_paging_control",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_log_type", "callLogType", str),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=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): userId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_enterprise_common_phone_list_number
            (OCI.sortByEnterpriseCommonPhoneListNumber):
            sortByEnterpriseCommonPhoneListNumber *Optional*
        sort_by_enterprise_common_phone_list_name
            (OCI.sortByEnterpriseCommonPhoneListName): sortByEnterpriseCommonPhoneListName
            *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        search_criteria_enterprise_common_phone_list_name
            (List[OCI.searchCriteriaEnterpriseCommonPhoneListName]):
            searchCriteriaEnterpriseCommonPhoneListName *Optional*
        search_criteria_enterprise_common_phone_list_number
            (List[OCI.searchCriteriaEnterpriseCommonPhoneListNumber]):
            searchCriteriaEnterpriseCommonPhoneListNumber *Optional*
        search_criteria_enterprise_common_multi_part_phone_list_name
            (List[OCI.searchCriteriaEnterpriseCommonMultiPartPhoneListName]):
            searchCriteriaEnterpriseCommonMultiPartPhoneListName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_paging_control",
        "sort_by_enterprise_common_phone_list_number",
        "sort_by_enterprise_common_phone_list_name",
        "search_criteria_mode_or",
        "search_criteria_enterprise_common_phone_list_name",
        "search_criteria_enterprise_common_phone_list_number",
        "search_criteria_enterprise_common_multi_part_phone_list_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_enterprise_common_phone_list_number",
                "sortByEnterpriseCommonPhoneListNumber",
                OCI.SortByEnterpriseCommonPhoneListNumber,
                is_complex=True,
            ),
            E(
                "sort_by_enterprise_common_phone_list_name",
                "sortByEnterpriseCommonPhoneListName",
                OCI.SortByEnterpriseCommonPhoneListName,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "search_criteria_enterprise_common_phone_list_name",
                "searchCriteriaEnterpriseCommonPhoneListName",
                OCI.SearchCriteriaEnterpriseCommonPhoneListName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_enterprise_common_phone_list_number",
                "searchCriteriaEnterpriseCommonPhoneListNumber",
                OCI.SearchCriteriaEnterpriseCommonPhoneListNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_enterprise_common_multi_part_phone_list_name",
                "searchCriteriaEnterpriseCommonMultiPartPhoneListName",
                OCI.SearchCriteriaEnterpriseCommonMultiPartPhoneListName,
                is_complex=True,
                is_array=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): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        filter (bool): filter
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
        call_to_number (List[OCI.callToNumber]): callToNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "filter",
        "from_dn_criteria",
        "call_to_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("filter", "filter", bool, is_required=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.ExecutiveCallFilteringCriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
            E(
                "call_to_number",
                "callToNumber",
                OCI.CallToNumber,
                is_complex=True,
                is_array=True,
            ),
        )


class UserExecutiveAssistantModifyRequest(OCIRequest):
    """
    Modify the setting for executive assistant.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        enable_divert (bool): enableDivert *Optional*
        divert_to_phone_number (str): divertToPhoneNumber *Optional*
        opt_in_status (List[OCI.optInStatus]): optInStatus *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "enable_divert",
        "divert_to_phone_number",
        "opt_in_status",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("enable_divert", "enableDivert", bool),
            E("divert_to_phone_number", "divertToPhoneNumber", str),
            E(
                "opt_in_status",
                "optInStatus",
                OCI.ExecutiveAssistantOptInStatus,
                is_complex=True,
                is_array=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): userId
        allow_opt_in_out (bool): allowOptInOut *Optional*
        assistant_user_id_list (OCI.assistantUserIdList): assistantUserIdList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "allow_opt_in_out",
        "assistant_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("allow_opt_in_out", "allowOptInOut", bool),
            E(
                "assistant_user_id_list",
                "assistantUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): userId
        enable_filtering (bool): enableFiltering *Optional*
        filtering_mode (str): filteringMode *Optional*
        simple_filter_type (str): simpleFilterType *Optional*
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "enable_filtering",
        "filtering_mode",
        "simple_filter_type",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("enable_filtering", "enableFiltering", bool),
            E("filtering_mode", "filteringMode", str),
            E("simple_filter_type", "simpleFilterType", str),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=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): userId
        is_active (bool): isActive *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        sip_alias_list (OCI.sipAliasList): sipAliasList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "phone_number",
        "extension",
        "sip_alias_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E(
                "sip_alias_list",
                "sipAliasList",
                OCI.ReplacementSIPAliasList,
                is_complex=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): userId
        feature_access_code (List[OCI.featureAccessCode]): featureAccessCode *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "feature_access_code",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "feature_access_code",
                "featureAccessCode",
                OCI.UserFeatureAccessCodeModifyEntry,
                is_complex=True,
                is_array=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 (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_service_provider (OCI.searchCriteriaExactServiceProvider):
            searchCriteriaExactServiceProvider *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_exact_user_in_trunk_group
            (OCI.searchCriteriaExactUserInTrunkGroup): searchCriteriaExactUserInTrunkGroup
            *Optional*
        search_criteria_exact_user_network_class_of_service
            (OCI.searchCriteriaExactUserNetworkClassOfService):
            searchCriteriaExactUserNetworkClassOfService *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_email_address",
        "search_criteria_group_id",
        "search_criteria_exact_service_provider",
        "search_criteria_service_provider_id",
        "search_criteria_exact_user_in_trunk_group",
        "search_criteria_exact_user_network_class_of_service",
        "search_criteria_user_id",
        "search_criteria_extension",
        "search_criteria_reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_service_provider",
                "searchCriteriaExactServiceProvider",
                OCI.SearchCriteriaExactServiceProvider,
                is_complex=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_in_trunk_group",
                "searchCriteriaExactUserInTrunkGroup",
                OCI.SearchCriteriaExactUserInTrunkGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_network_class_of_service",
                "searchCriteriaExactUserNetworkClassOfService",
                OCI.SearchCriteriaExactUserNetworkClassOfService,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=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 (int): responseSizeLimit *Optional*
        search_criteria_exact_service_type (OCI.searchCriteriaExactServiceType):
            searchCriteriaExactServiceType *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_service_provider (OCI.searchCriteriaExactServiceProvider):
            searchCriteriaExactServiceProvider *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
    """

    __slots__: List[str] = [
        "response_size_limit",
        "search_criteria_exact_service_type",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_group_id",
        "search_criteria_exact_service_provider",
        "search_criteria_service_provider_id",
        "search_criteria_reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_exact_service_type",
                "searchCriteriaExactServiceType",
                OCI.SearchCriteriaExactServiceType,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_service_provider",
                "searchCriteriaExactServiceProvider",
                OCI.SearchCriteriaExactServiceProvider,
                is_complex=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=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): userId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_group_common_phone_list_number (OCI.sortByGroupCommonPhoneListNumber):
            sortByGroupCommonPhoneListNumber *Optional*
        sort_by_group_common_phone_list_name (OCI.sortByGroupCommonPhoneListName):
            sortByGroupCommonPhoneListName *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        search_criteria_group_common_phone_list_name
            (List[OCI.searchCriteriaGroupCommonPhoneListName]):
            searchCriteriaGroupCommonPhoneListName *Optional*
        search_criteria_group_common_phone_list_number
            (List[OCI.searchCriteriaGroupCommonPhoneListNumber]):
            searchCriteriaGroupCommonPhoneListNumber *Optional*
        search_criteria_group_common_multi_part_phone_list_name
            (List[OCI.searchCriteriaGroupCommonMultiPartPhoneListName]):
            searchCriteriaGroupCommonMultiPartPhoneListName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_paging_control",
        "sort_by_group_common_phone_list_number",
        "sort_by_group_common_phone_list_name",
        "search_criteria_mode_or",
        "search_criteria_group_common_phone_list_name",
        "search_criteria_group_common_phone_list_number",
        "search_criteria_group_common_multi_part_phone_list_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_group_common_phone_list_number",
                "sortByGroupCommonPhoneListNumber",
                OCI.SortByGroupCommonPhoneListNumber,
                is_complex=True,
            ),
            E(
                "sort_by_group_common_phone_list_name",
                "sortByGroupCommonPhoneListName",
                OCI.SortByGroupCommonPhoneListName,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "search_criteria_group_common_phone_list_name",
                "searchCriteriaGroupCommonPhoneListName",
                OCI.SearchCriteriaGroupCommonPhoneListName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_common_phone_list_number",
                "searchCriteriaGroupCommonPhoneListNumber",
                OCI.SearchCriteriaGroupCommonPhoneListNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_common_multi_part_phone_list_name",
                "searchCriteriaGroupCommonMultiPartPhoneListName",
                OCI.SearchCriteriaGroupCommonMultiPartPhoneListName,
                is_complex=True,
                is_array=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): userId
        name (str): name
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_user_last_name (OCI.sortByUserLastName): sortByUserLastName *Optional*
        sort_by_user_first_name (OCI.sortByUserFirstName): sortByUserFirstName *Optional*
        sort_by_user_department (OCI.sortByUserDepartment): sortByUserDepartment
            *Optional*
        sort_by_receptionist_note (OCI.sortByReceptionistNote): sortByReceptionistNote
            *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
        search_criteria_title (List[OCI.searchCriteriaTitle]): searchCriteriaTitle
            *Optional*
        search_criteria_receptionist_note (List[OCI.searchCriteriaReceptionistNote]):
            searchCriteriaReceptionistNote *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "name",
        "response_paging_control",
        "sort_by_user_last_name",
        "sort_by_user_first_name",
        "sort_by_user_department",
        "sort_by_receptionist_note",
        "search_criteria_mode_or",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_user_id",
        "search_criteria_department_name",
        "search_criteria_imp_id",
        "search_criteria_title",
        "search_criteria_receptionist_note",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_user_last_name",
                "sortByUserLastName",
                OCI.SortByUserLastName,
                is_complex=True,
            ),
            E(
                "sort_by_user_first_name",
                "sortByUserFirstName",
                OCI.SortByUserFirstName,
                is_complex=True,
            ),
            E(
                "sort_by_user_department",
                "sortByUserDepartment",
                OCI.SortByUserDepartment,
                is_complex=True,
            ),
            E(
                "sort_by_receptionist_note",
                "sortByReceptionistNote",
                OCI.SortByReceptionistNote,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_title",
                "searchCriteriaTitle",
                OCI.SearchCriteriaTitle,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_receptionist_note",
                "searchCriteriaReceptionistNote",
                OCI.SearchCriteriaReceptionistNote,
                is_complex=True,
                is_array=True,
            ),
        )


class UserHolidayScheduleAddRequest(OCIRequest):
    """
    Add a holiday schedule to a user.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        holiday_schedule_name (str): holidayScheduleName
        holiday01 (OCI.holiday01): holiday01 *Optional*
        holiday02 (OCI.holiday02): holiday02 *Optional*
        holiday03 (OCI.holiday03): holiday03 *Optional*
        holiday04 (OCI.holiday04): holiday04 *Optional*
        holiday05 (OCI.holiday05): holiday05 *Optional*
        holiday06 (OCI.holiday06): holiday06 *Optional*
        holiday07 (OCI.holiday07): holiday07 *Optional*
        holiday08 (OCI.holiday08): holiday08 *Optional*
        holiday09 (OCI.holiday09): holiday09 *Optional*
        holiday10 (OCI.holiday10): holiday10 *Optional*
        holiday11 (OCI.holiday11): holiday11 *Optional*
        holiday12 (OCI.holiday12): holiday12 *Optional*
        holiday13 (OCI.holiday13): holiday13 *Optional*
        holiday14 (OCI.holiday14): holiday14 *Optional*
        holiday15 (OCI.holiday15): holiday15 *Optional*
        holiday16 (OCI.holiday16): holiday16 *Optional*
        holiday17 (OCI.holiday17): holiday17 *Optional*
        holiday18 (OCI.holiday18): holiday18 *Optional*
        holiday19 (OCI.holiday19): holiday19 *Optional*
        holiday20 (OCI.holiday20): holiday20 *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "holiday_schedule_name",
        "holiday01",
        "holiday02",
        "holiday03",
        "holiday04",
        "holiday05",
        "holiday06",
        "holiday07",
        "holiday08",
        "holiday09",
        "holiday10",
        "holiday11",
        "holiday12",
        "holiday13",
        "holiday14",
        "holiday15",
        "holiday16",
        "holiday17",
        "holiday18",
        "holiday19",
        "holiday20",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("holiday_schedule_name", "holidayScheduleName", str, is_required=True),
            E("holiday01", "holiday01", OCI.Holiday, is_complex=True),
            E("holiday02", "holiday02", OCI.Holiday, is_complex=True),
            E("holiday03", "holiday03", OCI.Holiday, is_complex=True),
            E("holiday04", "holiday04", OCI.Holiday, is_complex=True),
            E("holiday05", "holiday05", OCI.Holiday, is_complex=True),
            E("holiday06", "holiday06", OCI.Holiday, is_complex=True),
            E("holiday07", "holiday07", OCI.Holiday, is_complex=True),
            E("holiday08", "holiday08", OCI.Holiday, is_complex=True),
            E("holiday09", "holiday09", OCI.Holiday, is_complex=True),
            E("holiday10", "holiday10", OCI.Holiday, is_complex=True),
            E("holiday11", "holiday11", OCI.Holiday, is_complex=True),
            E("holiday12", "holiday12", OCI.Holiday, is_complex=True),
            E("holiday13", "holiday13", OCI.Holiday, is_complex=True),
            E("holiday14", "holiday14", OCI.Holiday, is_complex=True),
            E("holiday15", "holiday15", OCI.Holiday, is_complex=True),
            E("holiday16", "holiday16", OCI.Holiday, is_complex=True),
            E("holiday17", "holiday17", OCI.Holiday, is_complex=True),
            E("holiday18", "holiday18", OCI.Holiday, is_complex=True),
            E("holiday19", "holiday19", OCI.Holiday, is_complex=True),
            E("holiday20", "holiday20", OCI.Holiday, is_complex=True),
        )


class UserHolidayScheduleModifyRequest(OCIRequest):
    """
    Modify a holiday schedule for a user.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        holiday_schedule_name (str): holidayScheduleName
        new_holiday_schedule_name (str): newHolidayScheduleName *Optional*
        holiday01 (OCI.holiday01): holiday01 *Optional*
        holiday02 (OCI.holiday02): holiday02 *Optional*
        holiday03 (OCI.holiday03): holiday03 *Optional*
        holiday04 (OCI.holiday04): holiday04 *Optional*
        holiday05 (OCI.holiday05): holiday05 *Optional*
        holiday06 (OCI.holiday06): holiday06 *Optional*
        holiday07 (OCI.holiday07): holiday07 *Optional*
        holiday08 (OCI.holiday08): holiday08 *Optional*
        holiday09 (OCI.holiday09): holiday09 *Optional*
        holiday10 (OCI.holiday10): holiday10 *Optional*
        holiday11 (OCI.holiday11): holiday11 *Optional*
        holiday12 (OCI.holiday12): holiday12 *Optional*
        holiday13 (OCI.holiday13): holiday13 *Optional*
        holiday14 (OCI.holiday14): holiday14 *Optional*
        holiday15 (OCI.holiday15): holiday15 *Optional*
        holiday16 (OCI.holiday16): holiday16 *Optional*
        holiday17 (OCI.holiday17): holiday17 *Optional*
        holiday18 (OCI.holiday18): holiday18 *Optional*
        holiday19 (OCI.holiday19): holiday19 *Optional*
        holiday20 (OCI.holiday20): holiday20 *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "holiday_schedule_name",
        "new_holiday_schedule_name",
        "holiday01",
        "holiday02",
        "holiday03",
        "holiday04",
        "holiday05",
        "holiday06",
        "holiday07",
        "holiday08",
        "holiday09",
        "holiday10",
        "holiday11",
        "holiday12",
        "holiday13",
        "holiday14",
        "holiday15",
        "holiday16",
        "holiday17",
        "holiday18",
        "holiday19",
        "holiday20",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("holiday_schedule_name", "holidayScheduleName", str, is_required=True),
            E("new_holiday_schedule_name", "newHolidayScheduleName", str),
            E("holiday01", "holiday01", OCI.Holiday, is_complex=True),
            E("holiday02", "holiday02", OCI.Holiday, is_complex=True),
            E("holiday03", "holiday03", OCI.Holiday, is_complex=True),
            E("holiday04", "holiday04", OCI.Holiday, is_complex=True),
            E("holiday05", "holiday05", OCI.Holiday, is_complex=True),
            E("holiday06", "holiday06", OCI.Holiday, is_complex=True),
            E("holiday07", "holiday07", OCI.Holiday, is_complex=True),
            E("holiday08", "holiday08", OCI.Holiday, is_complex=True),
            E("holiday09", "holiday09", OCI.Holiday, is_complex=True),
            E("holiday10", "holiday10", OCI.Holiday, is_complex=True),
            E("holiday11", "holiday11", OCI.Holiday, is_complex=True),
            E("holiday12", "holiday12", OCI.Holiday, is_complex=True),
            E("holiday13", "holiday13", OCI.Holiday, is_complex=True),
            E("holiday14", "holiday14", OCI.Holiday, is_complex=True),
            E("holiday15", "holiday15", OCI.Holiday, is_complex=True),
            E("holiday16", "holiday16", OCI.Holiday, is_complex=True),
            E("holiday17", "holiday17", OCI.Holiday, is_complex=True),
            E("holiday18", "holiday18", OCI.Holiday, is_complex=True),
            E("holiday19", "holiday19", OCI.Holiday, is_complex=True),
            E("holiday20", "holiday20", OCI.Holiday, is_complex=True),
        )


class UserInterceptUserModifyRequest(OCIRequest):
    """
    Modify the user's intercept user service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `UserInterceptUserModifyRequest16()`

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        announcement_selection (str): announcementSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        play_new_phone_number (bool): playNewPhoneNumber *Optional*
        new_phone_number (str): newPhoneNumber *Optional*
        transfer_on_zero_to_phone_number (bool): transferOnZeroToPhoneNumber *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "announcement_selection",
        "audio_file",
        "video_file",
        "play_new_phone_number",
        "new_phone_number",
        "transfer_on_zero_to_phone_number",
        "transfer_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("announcement_selection", "announcementSelection", str),
            E("audio_file", "audioFile", OCI.LabeledFileResource, is_complex=True),
            E("video_file", "videoFile", OCI.LabeledFileResource, is_complex=True),
            E("play_new_phone_number", "playNewPhoneNumber", bool),
            E("new_phone_number", "newPhoneNumber", str),
            E("transfer_on_zero_to_phone_number", "transferOnZeroToPhoneNumber", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
        )


class UserInterceptUserModifyRequest16(OCIRequest):
    """
    Modify the user's intercept user service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `UserInterceptUserModifyResponse21sp1()` in AS data mode

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        announcement_selection (str): announcementSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        play_new_phone_number (bool): playNewPhoneNumber *Optional*
        new_phone_number (str): newPhoneNumber *Optional*
        transfer_on_zero_to_phone_number (bool): transferOnZeroToPhoneNumber *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        reroute_outbound_calls (bool): rerouteOutboundCalls *Optional*
        outbound_reroute_phone_number (str): outboundReroutePhoneNumber *Optional*
        allow_outbound_local_calls (bool): allowOutboundLocalCalls *Optional*
        inbound_call_mode (str): inboundCallMode *Optional*
        alternate_blocking_announcement (bool): alternateBlockingAnnouncement *Optional*
        route_to_voice_mail (bool): routeToVoiceMail *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "announcement_selection",
        "audio_file",
        "video_file",
        "play_new_phone_number",
        "new_phone_number",
        "transfer_on_zero_to_phone_number",
        "transfer_phone_number",
        "reroute_outbound_calls",
        "outbound_reroute_phone_number",
        "allow_outbound_local_calls",
        "inbound_call_mode",
        "alternate_blocking_announcement",
        "route_to_voice_mail",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("announcement_selection", "announcementSelection", str),
            E("audio_file", "audioFile", OCI.LabeledMediaFileResource, is_complex=True),
            E("video_file", "videoFile", OCI.LabeledMediaFileResource, is_complex=True),
            E("play_new_phone_number", "playNewPhoneNumber", bool),
            E("new_phone_number", "newPhoneNumber", str),
            E("transfer_on_zero_to_phone_number", "transferOnZeroToPhoneNumber", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("reroute_outbound_calls", "rerouteOutboundCalls", bool),
            E("outbound_reroute_phone_number", "outboundReroutePhoneNumber", str),
            E("allow_outbound_local_calls", "allowOutboundLocalCalls", bool),
            E("inbound_call_mode", "inboundCallMode", str),
            E("alternate_blocking_announcement", "alternateBlockingAnnouncement", bool),
            E("route_to_voice_mail", "routeToVoiceMail", bool),
        )


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): userId
        is_active (bool): isActive *Optional*
        announcement_selection (str): announcementSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        inbound_call_mode (str): inboundCallMode *Optional*
        alternate_blocking_announcement (bool): alternateBlockingAnnouncement *Optional*
        exempt_inbound_mobility_calls (bool): exemptInboundMobilityCalls *Optional*
        disable_parallel_ringing_to_network_locations (bool):
            disableParallelRingingToNetworkLocations *Optional*
        route_to_voice_mail (bool): routeToVoiceMail *Optional*
        play_new_phone_number (bool): playNewPhoneNumber *Optional*
        new_phone_number (str): newPhoneNumber *Optional*
        transfer_on_zero_to_phone_number (bool): transferOnZeroToPhoneNumber *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        outbound_call_mode (str): outboundCallMode *Optional*
        exempt_outbound_mobility_calls (bool): exemptOutboundMobilityCalls *Optional*
        reroute_outbound_calls (bool): rerouteOutboundCalls *Optional*
        outbound_reroute_phone_number (str): outboundReroutePhoneNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "announcement_selection",
        "audio_file",
        "video_file",
        "inbound_call_mode",
        "alternate_blocking_announcement",
        "exempt_inbound_mobility_calls",
        "disable_parallel_ringing_to_network_locations",
        "route_to_voice_mail",
        "play_new_phone_number",
        "new_phone_number",
        "transfer_on_zero_to_phone_number",
        "transfer_phone_number",
        "outbound_call_mode",
        "exempt_outbound_mobility_calls",
        "reroute_outbound_calls",
        "outbound_reroute_phone_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("announcement_selection", "announcementSelection", str),
            E("audio_file", "audioFile", OCI.LabeledMediaFileResource, is_complex=True),
            E("video_file", "videoFile", OCI.LabeledMediaFileResource, is_complex=True),
            E("inbound_call_mode", "inboundCallMode", str),
            E("alternate_blocking_announcement", "alternateBlockingAnnouncement", bool),
            E("exempt_inbound_mobility_calls", "exemptInboundMobilityCalls", bool),
            E(
                "disable_parallel_ringing_to_network_locations",
                "disableParallelRingingToNetworkLocations",
                bool,
            ),
            E("route_to_voice_mail", "routeToVoiceMail", bool),
            E("play_new_phone_number", "playNewPhoneNumber", bool),
            E("new_phone_number", "newPhoneNumber", str),
            E("transfer_on_zero_to_phone_number", "transferOnZeroToPhoneNumber", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("outbound_call_mode", "outboundCallMode", str),
            E("exempt_outbound_mobility_calls", "exemptOutboundMobilityCalls", bool),
            E("reroute_outbound_calls", "rerouteOutboundCalls", bool),
            E("outbound_reroute_phone_number", "outboundReroutePhoneNumber", str),
        )


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): userId
        is_active (bool): isActive *Optional*
        trace_type_selection (str): traceTypeSelection *Optional*
        trace_for_time_period (bool): traceForTimePeriod *Optional*
        trace_time_period (OCI.traceTimePeriod): traceTimePeriod *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "trace_type_selection",
        "trace_for_time_period",
        "trace_time_period",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("trace_type_selection", "traceTypeSelection", str),
            E("trace_for_time_period", "traceForTimePeriod", bool),
            E(
                "trace_time_period",
                "traceTimePeriod",
                OCI.MaliciousCallTraceTimePeriod,
                is_complex=True,
            ),
        )


class UserMeetMeConferencingAddConferenceRequest(OCIRequest):
    """
    Add a Meet-Me conference.

    The response is either `UserMeetMeConferencingAddConferenceResponse()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        bridge_id (str): bridgeId
        title (str): title
        estimated_participants (int): estimatedParticipants *Optional*
        restrict_participants (bool): restrictParticipants *Optional*
        max_participants (int): maxParticipants *Optional*
        account_code (str): accountCode *Optional*
        mute_all_attendees_on_entry (bool): muteAllAttendeesOnEntry
        end_conference_on_moderator_exit (bool): endConferenceOnModeratorExit
        moderator_required (bool): moderatorRequired
        attendee_notification (str): attendeeNotification
        conference_schedule (OCI.conferenceSchedule): conferenceSchedule
    """

    __slots__: List[str] = [
        "user_id",
        "bridge_id",
        "title",
        "estimated_participants",
        "restrict_participants",
        "max_participants",
        "account_code",
        "mute_all_attendees_on_entry",
        "end_conference_on_moderator_exit",
        "moderator_required",
        "attendee_notification",
        "conference_schedule",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("bridge_id", "bridgeId", str, is_required=True),
            E("title", "title", str, is_required=True),
            E("estimated_participants", "estimatedParticipants", int),
            E("restrict_participants", "restrictParticipants", bool),
            E("max_participants", "maxParticipants", int),
            E("account_code", "accountCode", str),
            E(
                "mute_all_attendees_on_entry",
                "muteAllAttendeesOnEntry",
                bool,
                is_required=True,
            ),
            E(
                "end_conference_on_moderator_exit",
                "endConferenceOnModeratorExit",
                bool,
                is_required=True,
            ),
            E("moderator_required", "moderatorRequired", bool, is_required=True),
            E("attendee_notification", "attendeeNotification", str, is_required=True),
            E(
                "conference_schedule",
                "conferenceSchedule",
                OCI.MeetMeConferencingConferenceSchedule,
                is_complex=True,
                is_required=True,
            ),
        )


class UserMeetMeConferencingAddConferenceRequest19(OCIRequest):
    """
    Add a Meet-Me conference.

    The response is either `UserMeetMeConferencingAddConferenceResponse19()` 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.  Replaced by: `UserMeetMeConferencingAddConferenceRequest23()`

    Attributes:
        user_id (str): userId
        bridge_id (str): bridgeId
        title (str): title
        estimated_participants (int): estimatedParticipants *Optional*
        restrict_participants (bool): restrictParticipants *Optional*
        max_participants (int): maxParticipants *Optional*
        account_code (str): accountCode *Optional*
        mute_all_attendees_on_entry (bool): muteAllAttendeesOnEntry
        end_conference_on_moderator_exit (bool): endConferenceOnModeratorExit
        moderator_required (bool): moderatorRequired
        require_security_pin (bool): requireSecurityPin
        allow_unique_identifier (bool): allowUniqueIdentifier
        attendee_notification (str): attendeeNotification
        conference_schedule (OCI.conferenceSchedule): conferenceSchedule
    """

    __slots__: List[str] = [
        "user_id",
        "bridge_id",
        "title",
        "estimated_participants",
        "restrict_participants",
        "max_participants",
        "account_code",
        "mute_all_attendees_on_entry",
        "end_conference_on_moderator_exit",
        "moderator_required",
        "require_security_pin",
        "allow_unique_identifier",
        "attendee_notification",
        "conference_schedule",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("bridge_id", "bridgeId", str, is_required=True),
            E("title", "title", str, is_required=True),
            E("estimated_participants", "estimatedParticipants", int),
            E("restrict_participants", "restrictParticipants", bool),
            E("max_participants", "maxParticipants", int),
            E("account_code", "accountCode", str),
            E(
                "mute_all_attendees_on_entry",
                "muteAllAttendeesOnEntry",
                bool,
                is_required=True,
            ),
            E(
                "end_conference_on_moderator_exit",
                "endConferenceOnModeratorExit",
                bool,
                is_required=True,
            ),
            E("moderator_required", "moderatorRequired", bool, is_required=True),
            E("require_security_pin", "requireSecurityPin", bool, is_required=True),
            E(
                "allow_unique_identifier",
                "allowUniqueIdentifier",
                bool,
                is_required=True,
            ),
            E("attendee_notification", "attendeeNotification", str, is_required=True),
            E(
                "conference_schedule",
                "conferenceSchedule",
                OCI.MeetMeConferencingConferenceSchedule,
                is_complex=True,
                is_required=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): userId
        bridge_id (str): bridgeId
        title (str): title
        estimated_participants (int): estimatedParticipants *Optional*
        restrict_participants (bool): restrictParticipants *Optional*
        max_participants (int): maxParticipants *Optional*
        account_code (str): accountCode *Optional*
        mute_all_attendees_on_entry (bool): muteAllAttendeesOnEntry
        end_conference_on_moderator_exit (bool): endConferenceOnModeratorExit
        moderator_required (bool): moderatorRequired
        require_security_pin (bool): requireSecurityPin
        allow_unique_identifier (bool): allowUniqueIdentifier
        attendee_notification (str): attendeeNotification
        conference_schedule (OCI.conferenceSchedule): conferenceSchedule
        allow_participant_unmute_in_auto_lecture_mode (bool):
            allowParticipantUnmuteInAutoLectureMode
    """

    __slots__: List[str] = [
        "user_id",
        "bridge_id",
        "title",
        "estimated_participants",
        "restrict_participants",
        "max_participants",
        "account_code",
        "mute_all_attendees_on_entry",
        "end_conference_on_moderator_exit",
        "moderator_required",
        "require_security_pin",
        "allow_unique_identifier",
        "attendee_notification",
        "conference_schedule",
        "allow_participant_unmute_in_auto_lecture_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("bridge_id", "bridgeId", str, is_required=True),
            E("title", "title", str, is_required=True),
            E("estimated_participants", "estimatedParticipants", int),
            E("restrict_participants", "restrictParticipants", bool),
            E("max_participants", "maxParticipants", int),
            E("account_code", "accountCode", str),
            E(
                "mute_all_attendees_on_entry",
                "muteAllAttendeesOnEntry",
                bool,
                is_required=True,
            ),
            E(
                "end_conference_on_moderator_exit",
                "endConferenceOnModeratorExit",
                bool,
                is_required=True,
            ),
            E("moderator_required", "moderatorRequired", bool, is_required=True),
            E("require_security_pin", "requireSecurityPin", bool, is_required=True),
            E(
                "allow_unique_identifier",
                "allowUniqueIdentifier",
                bool,
                is_required=True,
            ),
            E("attendee_notification", "attendeeNotification", str, is_required=True),
            E(
                "conference_schedule",
                "conferenceSchedule",
                OCI.MeetMeConferencingConferenceSchedule,
                is_complex=True,
                is_required=True,
            ),
            E(
                "allow_participant_unmute_in_auto_lecture_mode",
                "allowParticipantUnmuteInAutoLectureMode",
                bool,
                is_required=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): userId
        conference_key (List[OCI.conferenceKey]): conferenceKey
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=True,
                is_array=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): userId
        recording_key (List[OCI.recordingKey]): recordingKey
    """

    __slots__: List[str] = [
        "user_id",
        "recording_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "recording_key",
                "recordingKey",
                OCI.MeetMeConferencingConferenceRecordingKey,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class UserMeetMeConferencingGetConferenceDelegateListRequest(OCIRequest):
    """
    Get the conference delegates for this conference.

    The response is either `UserMeetMeConferencingGetConferenceDelegateListResponse()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        conference_key (OCI.conferenceKey): conferenceKey
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=True,
            ),
        )


class UserMeetMeConferencingGetConferenceGreetingRequest(OCIRequest):
    """
    Get the information of a conference custom greeting.

    The response is either `UserMeetMeConferencingGetConferenceGreetingResponse()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        conference_key (OCI.conferenceKey): conferenceKey
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=True,
            ),
        )


class UserMeetMeConferencingGetConferenceGreetingRequest20(OCIRequest):
    """
    Get the information of a conference custom greeting.

    The response is either `UserMeetMeConferencingGetConferenceGreetingResponse20()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        conference_key (OCI.conferenceKey): conferenceKey
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=True,
            ),
        )


class UserMeetMeConferencingGetConferenceRequest(OCIRequest):
    """
    Get the information of a conference owned by the user.

    The response is either `UserMeetMeConferencingGetConferenceResponse()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        conference_key (OCI.conferenceKey): conferenceKey
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=True,
            ),
        )


class UserMeetMeConferencingGetConferenceRequest19(OCIRequest):
    """
    Get the information of a conference owned by the user.

    The response is either `UserMeetMeConferencingGetConferenceResponse19()` or
    `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        conference_key (OCI.conferenceKey): conferenceKey
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=True,
            ),
        )


class UserMeetMeConferencingGetConferenceRequest20(OCIRequest):
    """
    Get the information of a conference owned by the user.

    The response is either `UserMeetMeConferencingGetConferenceResponse20()` or
    `ErrorResponse()`. Replaced by: `UserMeetMeConferencingGetConferenceRequest23()`

    Attributes:
        user_id (str): userId
        conference_key (OCI.conferenceKey): conferenceKey
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=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): userId
        conference_key (OCI.conferenceKey): conferenceKey
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=True,
            ),
        )


class UserMeetMeConferencingModifyConferenceDelegateListRequest(OCIRequest):
    """
    Modify the existing conference delegates list.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        conference_key (OCI.conferenceKey): conferenceKey
        conference_delegate_user_list (OCI.conferenceDelegateUserList):
            conferenceDelegateUserList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
        "conference_delegate_user_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=True,
            ),
            E(
                "conference_delegate_user_list",
                "conferenceDelegateUserList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
        )


class UserMeetMeConferencingModifyConferenceGreetingRequest(OCIRequest):
    """
    Modify an existing custom greeting audio file.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        conference_key (OCI.conferenceKey): conferenceKey
        play_entrance_greeting (bool): playEntranceGreeting *Optional*
        entrance_greeting_file (OCI.entranceGreetingFile): entranceGreetingFile *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
        "play_entrance_greeting",
        "entrance_greeting_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=True,
            ),
            E("play_entrance_greeting", "playEntranceGreeting", bool),
            E(
                "entrance_greeting_file",
                "entranceGreetingFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
        )


class UserMeetMeConferencingModifyConferenceGreetingRequest20(OCIRequest):
    """
    Modify an existing custom greeting audio file.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        conference_key (OCI.conferenceKey): conferenceKey
        play_entrance_greeting (bool): playEntranceGreeting *Optional*
        entrance_greeting_file (OCI.entranceGreetingFile): entranceGreetingFile *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
        "play_entrance_greeting",
        "entrance_greeting_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=True,
            ),
            E("play_entrance_greeting", "playEntranceGreeting", bool),
            E(
                "entrance_greeting_file",
                "entranceGreetingFile",
                OCI.AnnouncementFileKey,
                is_complex=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): userId
        conference_key (OCI.conferenceKey): conferenceKey
        title (str): title *Optional*
        estimated_participants (int): estimatedParticipants *Optional*
        restrict_participants (bool): restrictParticipants *Optional*
        max_participants (int): maxParticipants *Optional*
        account_code (str): accountCode *Optional*
        mute_all_attendees_on_entry (bool): muteAllAttendeesOnEntry *Optional*
        end_conference_on_moderator_exit (bool): endConferenceOnModeratorExit *Optional*
        moderator_required (bool): moderatorRequired *Optional*
        require_security_pin (bool): requireSecurityPin *Optional*
        allow_unique_identifier (bool): allowUniqueIdentifier *Optional*
        attendee_notification (str): attendeeNotification *Optional*
        conference_schedule (OCI.conferenceSchedule): conferenceSchedule *Optional*
        allow_participant_unmute_in_auto_lecture_mode (bool):
            allowParticipantUnmuteInAutoLectureMode *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
        "title",
        "estimated_participants",
        "restrict_participants",
        "max_participants",
        "account_code",
        "mute_all_attendees_on_entry",
        "end_conference_on_moderator_exit",
        "moderator_required",
        "require_security_pin",
        "allow_unique_identifier",
        "attendee_notification",
        "conference_schedule",
        "allow_participant_unmute_in_auto_lecture_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=True,
            ),
            E("title", "title", str),
            E("estimated_participants", "estimatedParticipants", int),
            E("restrict_participants", "restrictParticipants", bool),
            E("max_participants", "maxParticipants", int),
            E("account_code", "accountCode", str),
            E("mute_all_attendees_on_entry", "muteAllAttendeesOnEntry", bool),
            E("end_conference_on_moderator_exit", "endConferenceOnModeratorExit", bool),
            E("moderator_required", "moderatorRequired", bool),
            E("require_security_pin", "requireSecurityPin", bool),
            E("allow_unique_identifier", "allowUniqueIdentifier", bool),
            E("attendee_notification", "attendeeNotification", str),
            E(
                "conference_schedule",
                "conferenceSchedule",
                OCI.MeetMeConferencingConferenceSchedule,
                is_complex=True,
            ),
            E(
                "allow_participant_unmute_in_auto_lecture_mode",
                "allowParticipantUnmuteInAutoLectureMode",
                bool,
            ),
        )


class UserModifyRequest14(OCIRequest):
    """
    Request to modify a user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        last_name (str): lastName *Optional*
        first_name (str): firstName *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        old_password (str): oldPassword *Optional*
        new_password (str): newPassword *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        sip_alias_list (OCI.sipAliasList): sipAliasList *Optional*
        endpoint (OCI.endpoint): endpoint *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "extension",
        "calling_line_id_phone_number",
        "old_password",
        "new_password",
        "department",
        "language",
        "time_zone",
        "sip_alias_list",
        "endpoint",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("last_name", "lastName", str),
            E("first_name", "firstName", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("old_password", "oldPassword", str),
            E("new_password", "newPassword", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E(
                "sip_alias_list",
                "sipAliasList",
                OCI.ReplacementSIPAliasList,
                is_complex=True,
            ),
            E("endpoint", "endpoint", str, is_complex=True),  # unknown
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
        )


class UserModifyRequest14sp9(OCIRequest):
    """
    Request to modify a user.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `UserModifyRequest16()`

    Attributes:
        user_id (str): userId
        last_name (str): lastName *Optional*
        first_name (str): firstName *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        old_password (str): oldPassword *Optional*
        new_password (str): newPassword *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        sip_alias_list (OCI.sipAliasList): sipAliasList *Optional*
        endpoint (OCI.endpoint): endpoint *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "extension",
        "calling_line_id_phone_number",
        "old_password",
        "new_password",
        "department",
        "language",
        "time_zone",
        "sip_alias_list",
        "endpoint",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("last_name", "lastName", str),
            E("first_name", "firstName", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("old_password", "oldPassword", str),
            E("new_password", "newPassword", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E(
                "sip_alias_list",
                "sipAliasList",
                OCI.ReplacementSIPAliasList,
                is_complex=True,
            ),
            E("endpoint", "endpoint", str, is_complex=True),  # unknown
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
        )


class UserModifyRequest16(OCIRequest):
    """
    Replaced By `UserModifyRequest17sp4()` Request to modify a user.

    When oldPassword is specified, all password rule applies.  If oldPassword in not
    specified, any password rule related to old password does not apply.  The request will
    fail if officeZoneName or primaryZoneName is present but the Location-Based Calling
    Restrictions service is not assigned to the user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        last_name (str): lastName *Optional*
        first_name (str): firstName *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        old_password (str): oldPassword *Optional*
        new_password (str): newPassword *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        sip_alias_list (OCI.sipAliasList): sipAliasList *Optional*
        endpoint (OCI.endpoint): endpoint *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        office_zone_name (str): officeZoneName *Optional*
        primary_zone_name (str): primaryZoneName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "extension",
        "calling_line_id_phone_number",
        "old_password",
        "new_password",
        "department",
        "language",
        "time_zone",
        "sip_alias_list",
        "endpoint",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "office_zone_name",
        "primary_zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("last_name", "lastName", str),
            E("first_name", "firstName", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("old_password", "oldPassword", str),
            E("new_password", "newPassword", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E(
                "sip_alias_list",
                "sipAliasList",
                OCI.ReplacementSIPAliasList,
                is_complex=True,
            ),
            E("endpoint", "endpoint", str, is_complex=True),  # unknown
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E("office_zone_name", "officeZoneName", str),
            E("primary_zone_name", "primaryZoneName", str),
        )


class UserMusicOnHoldUserModifyRequest(OCIRequest):
    """
    Modify data for Music On Hold User.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `UserMusicOnHoldUserModifyRequest16()`

    Attributes:
        user_id (str): userId
        source (OCI.source): source *Optional*
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
            *Optional*
        internal_source (OCI.internalSource): internalSource *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("source", "source", OCI.MusicOnHoldUserSourceModify, is_complex=True),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldUserSourceModify,
                is_complex=True,
            ),
        )


class UserMusicOnHoldUserModifyRequest16(OCIRequest):
    """
    Modify data for Music On Hold User.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `UserMusicOnHoldUserModifyRequest20()` in AS data mode

    Attributes:
        user_id (str): userId
        source (OCI.source): source *Optional*
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
            *Optional*
        internal_source (OCI.internalSource): internalSource *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("source", "source", OCI.MusicOnHoldUserSourceModify16, is_complex=True),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldUserSourceModify16,
                is_complex=True,
            ),
        )


class UserMusicOnHoldUserModifyRequest20(OCIRequest):
    """
    Modify data for Music On Hold User.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        source (OCI.source): source *Optional*
        use_alternate_source_for_internal_calls (bool): useAlternateSourceForInternalCalls
            *Optional*
        internal_source (OCI.internalSource): internalSource *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "source",
        "use_alternate_source_for_internal_calls",
        "internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("source", "source", OCI.MusicOnHoldUserSourceModify20, is_complex=True),
            E(
                "use_alternate_source_for_internal_calls",
                "useAlternateSourceForInternalCalls",
                bool,
            ),
            E(
                "internal_source",
                "internalSource",
                OCI.MusicOnHoldUserSourceModify20,
                is_complex=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): userId
        application_id_list (OCI.applicationIdList): applicationIdList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "application_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "application_id_list",
                "applicationIdList",
                OCI.ReplacementOCICallControlApplicationIdList,
                is_complex=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): userId
        code_entry (List[OCI.codeEntry]): codeEntry
    """

    __slots__: List[str] = [
        "user_id",
        "code_entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "code_entry",
                "codeEntry",
                OCI.OutgoingCallingPlanAuthorizationCodeEntry,
                is_complex=True,
                is_required=True,
                is_array=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): userId
        use_custom_settings (bool): useCustomSettings *Optional*
        user_permissions (OCI.userPermissions): userPermissions *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
        "user_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
            E(
                "user_permissions",
                "userPermissions",
                OCI.OutgoingCallingPlanCallMeNowPermissionsModify,
                is_complex=True,
            ),
        )


class UserOutgoingCallingPlanOriginatingModifyRequest(OCIRequest):
    """
    Modify the originating permissions for a user.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        use_custom_settings (bool): useCustomSettings *Optional*
        user_permissions (OCI.userPermissions): userPermissions *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
        "user_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
            E(
                "user_permissions",
                "userPermissions",
                OCI.OutgoingCallingPlanOriginatingPermissionsModify,
                is_complex=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): userId
        use_custom_settings (bool): useCustomSettings *Optional*
        user_permissions (OCI.userPermissions): userPermissions *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
        "user_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
            E(
                "user_permissions",
                "userPermissions",
                OCI.OutgoingCallingPlanRedirectedPermissionsModify,
                is_complex=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): userId
        use_custom_settings (bool): useCustomSettings *Optional*
        user_permissions (OCI.userPermissions): userPermissions *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
        "user_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
            E(
                "user_permissions",
                "userPermissions",
                OCI.OutgoingCallingPlanRedirectingPermissionsModify,
                is_complex=True,
            ),
        )


class UserOutgoingCallingPlanTransferNumbersModifyRequest(OCIRequest):
    """
    Modify the transfer numbers for a user.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        use_custom_settings (bool): useCustomSettings *Optional*
        user_numbers (OCI.userNumbers): userNumbers *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
        "user_numbers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
            E(
                "user_numbers",
                "userNumbers",
                OCI.OutgoingCallingPlanTransferNumbersModify,
                is_complex=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): userId
        search_criteria_personal_assistant_exclusion_number
            (List[OCI.searchCriteriaPersonalAssistantExclusionNumber]):
            searchCriteriaPersonalAssistantExclusionNumber *Optional*
        search_criteria_personal_assistant_exclusion_number_description
            (List[OCI.searchCriteriaPersonalAssistantExclusionNumberDescription]):
            searchCriteriaPersonalAssistantExclusionNumberDescription *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "search_criteria_personal_assistant_exclusion_number",
        "search_criteria_personal_assistant_exclusion_number_description",
        "response_size_limit",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "search_criteria_personal_assistant_exclusion_number",
                "searchCriteriaPersonalAssistantExclusionNumber",
                OCI.SearchCriteriaPersonalAssistantExclusionNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_personal_assistant_exclusion_number_description",
                "searchCriteriaPersonalAssistantExclusionNumberDescription",
                OCI.SearchCriteriaPersonalAssistantExclusionNumberDescription,
                is_complex=True,
                is_array=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
        )


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): userId
        entry (List[OCI.entry]): entry
    """

    __slots__: List[str] = [
        "user_id",
        "entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "entry",
                "entry",
                OCI.PhoneListEntry,
                is_complex=True,
                is_required=True,
                is_array=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): userId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        search_criteria_user_personal_phone_list_name
            (List[OCI.searchCriteriaUserPersonalPhoneListName]):
            searchCriteriaUserPersonalPhoneListName *Optional*
        search_criteria_user_personal_phone_list_number
            (List[OCI.searchCriteriaUserPersonalPhoneListNumber]):
            searchCriteriaUserPersonalPhoneListNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_size_limit",
        "search_criteria_mode_or",
        "search_criteria_user_personal_phone_list_name",
        "search_criteria_user_personal_phone_list_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "search_criteria_user_personal_phone_list_name",
                "searchCriteriaUserPersonalPhoneListName",
                OCI.SearchCriteriaUserPersonalPhoneListName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_personal_phone_list_number",
                "searchCriteriaUserPersonalPhoneListNumber",
                OCI.SearchCriteriaUserPersonalPhoneListNumber,
                is_complex=True,
                is_array=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): userId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_user_personal_phone_list_number (OCI.sortByUserPersonalPhoneListNumber):
            sortByUserPersonalPhoneListNumber *Optional*
        sort_by_user_personal_phone_list_name (OCI.sortByUserPersonalPhoneListName):
            sortByUserPersonalPhoneListName *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        search_criteria_user_personal_phone_list_name
            (List[OCI.searchCriteriaUserPersonalPhoneListName]):
            searchCriteriaUserPersonalPhoneListName *Optional*
        search_criteria_user_personal_phone_list_number
            (List[OCI.searchCriteriaUserPersonalPhoneListNumber]):
            searchCriteriaUserPersonalPhoneListNumber *Optional*
        search_criteria_user_personal_multi_part_phone_list_name
            (List[OCI.searchCriteriaUserPersonalMultiPartPhoneListName]):
            searchCriteriaUserPersonalMultiPartPhoneListName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_paging_control",
        "sort_by_user_personal_phone_list_number",
        "sort_by_user_personal_phone_list_name",
        "search_criteria_mode_or",
        "search_criteria_user_personal_phone_list_name",
        "search_criteria_user_personal_phone_list_number",
        "search_criteria_user_personal_multi_part_phone_list_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_user_personal_phone_list_number",
                "sortByUserPersonalPhoneListNumber",
                OCI.SortByUserPersonalPhoneListNumber,
                is_complex=True,
            ),
            E(
                "sort_by_user_personal_phone_list_name",
                "sortByUserPersonalPhoneListName",
                OCI.SortByUserPersonalPhoneListName,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "search_criteria_user_personal_phone_list_name",
                "searchCriteriaUserPersonalPhoneListName",
                OCI.SearchCriteriaUserPersonalPhoneListName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_personal_phone_list_number",
                "searchCriteriaUserPersonalPhoneListNumber",
                OCI.SearchCriteriaUserPersonalPhoneListNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_personal_multi_part_phone_list_name",
                "searchCriteriaUserPersonalMultiPartPhoneListName",
                OCI.SearchCriteriaUserPersonalMultiPartPhoneListName,
                is_complex=True,
                is_array=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): userId
        is_enterprise_info_requested (bool): isEnterpriseInfoRequested
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_user_last_name (OCI.sortByUserLastName): sortByUserLastName *Optional*
        sort_by_user_first_name (OCI.sortByUserFirstName): sortByUserFirstName *Optional*
        sort_by_user_department (OCI.sortByUserDepartment): sortByUserDepartment
            *Optional*
        sort_by_receptionist_note (OCI.sortByReceptionistNote): sortByReceptionistNote
            *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_name (List[OCI.searchCriteriaUserName]):
            searchCriteriaUserName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
        search_criteria_title (List[OCI.searchCriteriaTitle]): searchCriteriaTitle
            *Optional*
        search_criteria_receptionist_note (List[OCI.searchCriteriaReceptionistNote]):
            searchCriteriaReceptionistNote *Optional*
        search_criteria_multi_part_name (List[OCI.searchCriteriaMultiPartName]):
            searchCriteriaMultiPartName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_enterprise_info_requested",
        "response_paging_control",
        "sort_by_user_last_name",
        "sort_by_user_first_name",
        "sort_by_user_department",
        "sort_by_receptionist_note",
        "search_criteria_mode_or",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_yahoo_id",
        "search_criteria_exact_user_group",
        "search_criteria_department_name",
        "search_criteria_user_id",
        "search_criteria_imp_id",
        "search_criteria_title",
        "search_criteria_receptionist_note",
        "search_criteria_multi_part_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "is_enterprise_info_requested",
                "isEnterpriseInfoRequested",
                bool,
                is_required=True,
            ),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_user_last_name",
                "sortByUserLastName",
                OCI.SortByUserLastName,
                is_complex=True,
            ),
            E(
                "sort_by_user_first_name",
                "sortByUserFirstName",
                OCI.SortByUserFirstName,
                is_complex=True,
            ),
            E(
                "sort_by_user_department",
                "sortByUserDepartment",
                OCI.SortByUserDepartment,
                is_complex=True,
            ),
            E(
                "sort_by_receptionist_note",
                "sortByReceptionistNote",
                OCI.SortByReceptionistNote,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_name",
                "searchCriteriaUserName",
                OCI.SearchCriteriaUserName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_title",
                "searchCriteriaTitle",
                OCI.SearchCriteriaTitle,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_receptionist_note",
                "searchCriteriaReceptionistNote",
                OCI.SearchCriteriaReceptionistNote,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_multi_part_name",
                "searchCriteriaMultiPartName",
                OCI.SearchCriteriaMultiPartUserName,
                is_complex=True,
                is_array=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): userId
        access_device (OCI.accessDevice): accessDevice
    """

    __slots__: List[str] = [
        "user_id",
        "access_device",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device",
                "accessDevice",
                OCI.AccessDevice,
                is_complex=True,
                is_required=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): userId
        access_device (OCI.accessDevice): accessDevice
        integrate_phone_directory_with_broad_works (bool):
            integratePhoneDirectoryWithBroadWorks *Optional*
        include_user_personal_phone_list_in_directory (bool):
            includeUserPersonalPhoneListInDirectory *Optional*
        include_group_custom_contact_directory_in_directory (bool):
            includeGroupCustomContactDirectoryInDirectory *Optional*
        group_custom_contact_directory (str): groupCustomContactDirectory *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "access_device",
        "integrate_phone_directory_with_broad_works",
        "include_user_personal_phone_list_in_directory",
        "include_group_custom_contact_directory_in_directory",
        "group_custom_contact_directory",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device",
                "accessDevice",
                OCI.AccessDevice,
                is_complex=True,
                is_required=True,
            ),
            E(
                "integrate_phone_directory_with_broad_works",
                "integratePhoneDirectoryWithBroadWorks",
                bool,
            ),
            E(
                "include_user_personal_phone_list_in_directory",
                "includeUserPersonalPhoneListInDirectory",
                bool,
            ),
            E(
                "include_group_custom_contact_directory_in_directory",
                "includeGroupCustomContactDirectoryInDirectory",
                bool,
            ),
            E("group_custom_contact_directory", "groupCustomContactDirectory", str),
        )


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): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
        call_to_number (List[OCI.callToNumber]): callToNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
        "call_to_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool, is_required=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
            E(
                "call_to_number",
                "callToNumber",
                OCI.CallToNumber,
                is_complex=True,
                is_array=True,
            ),
        )


class UserPreferredCarrierUserModifyRequest(OCIRequest):
    """
    Modifies the currently configured preferred carriers for a user.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        intra_lata_carrier (OCI.intraLataCarrier): intraLataCarrier *Optional*
        inter_lata_carrier (OCI.interLataCarrier): interLataCarrier *Optional*
        international_carrier (OCI.internationalCarrier): internationalCarrier *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "intra_lata_carrier",
        "inter_lata_carrier",
        "international_carrier",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "intra_lata_carrier",
                "intraLataCarrier",
                OCI.UserPreferredCarrierNameModify,
                is_complex=True,
            ),
            E(
                "inter_lata_carrier",
                "interLataCarrier",
                OCI.UserPreferredCarrierNameModify,
                is_complex=True,
            ),
            E(
                "international_carrier",
                "internationalCarrier",
                OCI.UserPreferredCarrierNameModify,
                is_complex=True,
            ),
        )


class UserPriorityAlertAddCriteriaRequest(OCIRequest):
    """
    Add a criteria to the user's priority alert service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "from_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.PriorityAlertCriteriaFromDn,
                is_complex=True,
                is_required=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): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
        call_to_number (List[OCI.callToNumber]): callToNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
        "call_to_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool, is_required=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.PriorityAlertCriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
            E(
                "call_to_number",
                "callToNumber",
                OCI.CallToNumber,
                is_complex=True,
                is_array=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): userId
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=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): userId
        enable_directory_privacy (bool): enableDirectoryPrivacy *Optional*
        enable_auto_attendant_extension_dialing_privacy (bool):
            enableAutoAttendantExtensionDialingPrivacy *Optional*
        enable_auto_attendant_name_dialing_privacy (bool):
            enableAutoAttendantNameDialingPrivacy *Optional*
        enable_phone_status_privacy (bool): enablePhoneStatusPrivacy *Optional*
        permitted_monitor_user_id_list (OCI.permittedMonitorUserIdList):
            permittedMonitorUserIdList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "enable_directory_privacy",
        "enable_auto_attendant_extension_dialing_privacy",
        "enable_auto_attendant_name_dialing_privacy",
        "enable_phone_status_privacy",
        "permitted_monitor_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("enable_directory_privacy", "enableDirectoryPrivacy", bool),
            E(
                "enable_auto_attendant_extension_dialing_privacy",
                "enableAutoAttendantExtensionDialingPrivacy",
                bool,
            ),
            E(
                "enable_auto_attendant_name_dialing_privacy",
                "enableAutoAttendantNameDialingPrivacy",
                bool,
            ),
            E("enable_phone_status_privacy", "enablePhoneStatusPrivacy", bool),
            E(
                "permitted_monitor_user_id_list",
                "permittedMonitorUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
        )


class UserPushToTalkModifyRequest(OCIRequest):
    """
    Change the push to talk service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        allow_auto_answer (bool): allowAutoAnswer *Optional*
        outgoing_connection_selection (str): outgoingConnectionSelection *Optional*
        access_list_selection (str): accessListSelection *Optional*
        selected_user_id_list (OCI.selectedUserIdList): selectedUserIdList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "allow_auto_answer",
        "outgoing_connection_selection",
        "access_list_selection",
        "selected_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("allow_auto_answer", "allowAutoAnswer", bool),
            E("outgoing_connection_selection", "outgoingConnectionSelection", str),
            E("access_list_selection", "accessListSelection", str),
            E(
                "selected_user_id_list",
                "selectedUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): userId
        treat_originations_and_pbx_redirections_as_screened (bool):
            treatOriginationsAndPBXRedirectionsAsScreened *Optional*
        use_route_list_identity_for_non_emergency_calls (bool):
            useRouteListIdentityForNonEmergencyCalls *Optional*
        use_route_list_identity_for_emergency_calls (bool):
            useRouteListIdentityForEmergencyCalls *Optional*
        assigned_number_range_start_list (OCI.assignedNumberRangeStartList):
            assignedNumberRangeStartList *Optional*
        assigned_number_prefix_list (OCI.assignedNumberPrefixList):
            assignedNumberPrefixList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "treat_originations_and_pbx_redirections_as_screened",
        "use_route_list_identity_for_non_emergency_calls",
        "use_route_list_identity_for_emergency_calls",
        "assigned_number_range_start_list",
        "assigned_number_prefix_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "treat_originations_and_pbx_redirections_as_screened",
                "treatOriginationsAndPBXRedirectionsAsScreened",
                bool,
            ),
            E(
                "use_route_list_identity_for_non_emergency_calls",
                "useRouteListIdentityForNonEmergencyCalls",
                bool,
            ),
            E(
                "use_route_list_identity_for_emergency_calls",
                "useRouteListIdentityForEmergencyCalls",
                bool,
            ),
            E(
                "assigned_number_range_start_list",
                "assignedNumberRangeStartList",
                OCI.ReplacementDNList,
                is_complex=True,
            ),
            E(
                "assigned_number_prefix_list",
                "assignedNumberPrefixList",
                OCI.EnterpriseTrunkReplacementNumberPrefixList,
                is_complex=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): userId
        supervisor_user_id_list (OCI.supervisorUserIdList): supervisorUserIdList
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "supervisor_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "supervisor_user_id_list",
                "supervisorUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): userId
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (str): eventName
        start_date (str): startDate
        all_day_event (bool): allDayEvent *Optional*
        start_time (OCI.startTime): startTime *Optional*
        end_time (OCI.endTime): endTime *Optional*
        end_date (str): endDate
        recurrence (OCI.recurrence): recurrence *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "schedule_key",
        "event_name",
        "start_date",
        "all_day_event",
        "start_time",
        "end_time",
        "end_date",
        "recurrence",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=True),
            E("start_date", "startDate", str, is_required=True),
            E("all_day_event", "allDayEvent", bool),
            E("start_time", "startTime", OCI.HourMinute, is_complex=True),
            E("end_time", "endTime", OCI.HourMinute, is_complex=True),
            E("end_date", "endDate", str, is_required=True),
            E("recurrence", "recurrence", OCI.Recurrence, is_complex=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): userId
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (List[str]): eventName
    """

    __slots__: List[str] = [
        "user_id",
        "schedule_key",
        "event_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=True, is_array=True),
        )


class UserScheduleDeleteListRequest(OCIRequest):
    """
    Delete a list of user schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        schedule_key (List[OCI.scheduleKey]): scheduleKey
    """

    __slots__: List[str] = [
        "user_id",
        "schedule_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
                is_array=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): userId
        schedule_key (OCI.scheduleKey): scheduleKey
    """

    __slots__: List[str] = [
        "user_id",
        "schedule_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
        )


class UserScheduleGetEventRequest(OCIRequest):
    """
    Get an event from a user schedule.

    The response is either a `UserScheduleGetEventResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (str): eventName
    """

    __slots__: List[str] = [
        "user_id",
        "schedule_key",
        "event_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=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): userId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_by_schedule_name (OCI.sortByScheduleName): sortByScheduleName *Optional*
        search_criteria_schedule_name (List[OCI.searchCriteriaScheduleName]):
            searchCriteriaScheduleName *Optional*
        search_criteria_exact_schedule_type (List[OCI.searchCriteriaExactScheduleType]):
            searchCriteriaExactScheduleType *Optional*
        search_criteria_exact_schedule_level (List[OCI.searchCriteriaExactScheduleLevel]):
            searchCriteriaExactScheduleLevel *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_paging_control",
        "sort_by_schedule_name",
        "search_criteria_schedule_name",
        "search_criteria_exact_schedule_type",
        "search_criteria_exact_schedule_level",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_by_schedule_name",
                "sortByScheduleName",
                OCI.SortByScheduleName,
                is_complex=True,
            ),
            E(
                "search_criteria_schedule_name",
                "searchCriteriaScheduleName",
                OCI.SearchCriteriaScheduleName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_schedule_type",
                "searchCriteriaExactScheduleType",
                OCI.SearchCriteriaExactScheduleType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_schedule_level",
                "searchCriteriaExactScheduleLevel",
                OCI.SearchCriteriaExactScheduleLevel,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): userId
        schedule_key (OCI.scheduleKey): scheduleKey
        event_name (str): eventName
        new_event_name (str): newEventName *Optional*
        start_date (str): startDate *Optional*
        all_day_event (bool): allDayEvent *Optional*
        start_time (OCI.startTime): startTime *Optional*
        end_time (OCI.endTime): endTime *Optional*
        end_date (str): endDate *Optional*
        recurrence (OCI.recurrence): recurrence *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "schedule_key",
        "event_name",
        "new_event_name",
        "start_date",
        "all_day_event",
        "start_time",
        "end_time",
        "end_date",
        "recurrence",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("event_name", "eventName", str, is_required=True),
            E("new_event_name", "newEventName", str),
            E("start_date", "startDate", str),
            E("all_day_event", "allDayEvent", bool),
            E("start_time", "startTime", OCI.HourMinute, is_complex=True),
            E("end_time", "endTime", OCI.HourMinute, is_complex=True),
            E("end_date", "endDate", str),
            E("recurrence", "recurrence", OCI.Recurrence, is_complex=True),
        )


class UserScheduleModifyRequest(OCIRequest):
    """
    Modify a user schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        schedule_key (OCI.scheduleKey): scheduleKey
        new_schedule_name (str): newScheduleName *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "schedule_key",
        "new_schedule_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "schedule_key",
                "scheduleKey",
                OCI.ScheduleKey,
                is_complex=True,
                is_required=True,
            ),
            E("new_schedule_name", "newScheduleName", str),
        )


class UserSelectiveCallAcceptanceAddCriteriaRequest(OCIRequest):
    """
    Add a criteria to the user's selective call acceptance service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "from_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=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): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
        call_to_number (List[OCI.callToNumber]): callToNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
        "call_to_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool, is_required=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
            E(
                "call_to_number",
                "callToNumber",
                OCI.CallToNumber,
                is_complex=True,
                is_array=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): userId
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=True,
            ),
        )


class UserSelectiveCallRejectionAddCriteriaRequest(OCIRequest):
    """
    Add a criteria to the user's selective call rejection service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "from_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=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): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted
        call_to_number (List[OCI.callToNumber]): callToNumber *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "from_dn_criteria",
        "holiday_schedule",
        "blacklisted",
        "call_to_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.SelectiveCallRejectionCriteriaCallType,
                is_complex=True,
                is_required=True,
            ),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool, is_required=True),
            E(
                "call_to_number",
                "callToNumber",
                OCI.CallToNumber,
                is_complex=True,
                is_array=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): userId
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=True,
            ),
        )


class UserSequentialRingAddCriteriaRequest(OCIRequest):
    """
    Add a criteria to the user's sequential ring service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "from_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
        )


class UserSequentialRingAddCriteriaRequest16(OCIRequest):
    """
    Add a criteria to the user's sequential ring service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool, is_required=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=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): userId
        ring_base_location_first (bool): ringBaseLocationFirst *Optional*
        base_location_number_of_rings (int): baseLocationNumberOfRings *Optional*
        continue_if_base_location_is_busy (bool): continueIfBaseLocationIsBusy *Optional*
        caller_may_stop_search (bool): callerMayStopSearch *Optional*
        location01 (OCI.Location01): Location01 *Optional*
        location02 (OCI.Location02): Location02 *Optional*
        location03 (OCI.Location03): Location03 *Optional*
        location04 (OCI.Location04): Location04 *Optional*
        location05 (OCI.Location05): Location05 *Optional*
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "ring_base_location_first",
        "base_location_number_of_rings",
        "continue_if_base_location_is_busy",
        "caller_may_stop_search",
        "location01",
        "location02",
        "location03",
        "location04",
        "location05",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("ring_base_location_first", "ringBaseLocationFirst", bool),
            E("base_location_number_of_rings", "baseLocationNumberOfRings", int),
            E(
                "continue_if_base_location_is_busy",
                "continueIfBaseLocationIsBusy",
                bool,
            ),
            E("caller_may_stop_search", "callerMayStopSearch", bool),
            E(
                "location01",
                "Location01",
                OCI.SequentialRingLocationModify,
                is_complex=True,
            ),
            E(
                "location02",
                "Location02",
                OCI.SequentialRingLocationModify,
                is_complex=True,
            ),
            E(
                "location03",
                "Location03",
                OCI.SequentialRingLocationModify,
                is_complex=True,
            ),
            E(
                "location04",
                "Location04",
                OCI.SequentialRingLocationModify,
                is_complex=True,
            ),
            E(
                "location05",
                "Location05",
                OCI.SequentialRingLocationModify,
                is_complex=True,
            ),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=True,
            ),
        )


class UserShInterfaceGetPublicIdDataRequest(OCIRequest):
    """
    Returns the Sh non-transparent data stored against a Public User Identity (a SIP URI
    or TEL URI).

    The response is either a `UserShInterfaceGetPublicIdDataResponse()` or an
    `ErrorResponse()`. Replaced by: `UserShInterfaceGetPublicIdDataRequest21sp1()`.

    Attributes:
        public_user_identity (OCI.publicUserIdentity): publicUserIdentity
    """

    __slots__: List[str] = [
        "public_user_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "public_user_identity",
                "publicUserIdentity",
                OCI.PublicUserIdentity,
                is_complex=True,
                is_required=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 (OCI.publicUserIdentity): publicUserIdentity
    """

    __slots__: List[str] = [
        "public_user_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "public_user_identity",
                "publicUserIdentity",
                OCI.PublicUserIdentity,
                is_complex=True,
                is_required=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 (OCI.publicUserIdentity): publicUserIdentity
        scscf_name (str): SCSCFName *Optional*
        ims_user_state (str): IMSUserState *Optional*
    """

    __slots__: List[str] = [
        "public_user_identity",
        "scscf_name",
        "ims_user_state",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "public_user_identity",
                "publicUserIdentity",
                OCI.PublicUserIdentity,
                is_complex=True,
                is_required=True,
            ),
            E("scscf_name", "SCSCFName", str),
            E("ims_user_state", "IMSUserState", str),
        )


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 (OCI.publicUserIdentity): publicUserIdentity
    """

    __slots__: List[str] = [
        "public_user_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "public_user_identity",
                "publicUserIdentity",
                OCI.PublicUserIdentity,
                is_complex=True,
                is_required=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): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool, is_required=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
        )


class UserSimultaneousRingFamilyModifyRequest(OCIRequest):
    """
    Modify the user's simultaneous ring family service setting.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `UserSimultaneousRingFamilyModifyRequest14sp4()`

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        incoming_calls (str): incomingCalls *Optional*
        sim_ring_phone_number_list (OCI.simRingPhoneNumberList): simRingPhoneNumberList
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "incoming_calls",
        "sim_ring_phone_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("incoming_calls", "incomingCalls", str),
            E(
                "sim_ring_phone_number_list",
                "simRingPhoneNumberList",
                OCI.ReplacementOutgoingDNorSIPURIList,
                is_complex=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): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool, is_required=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
        )


class UserSimultaneousRingPersonalModifyRequest(OCIRequest):
    """
    Modify the user's simultaneous ring personal service setting.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `UserSimultaneousRingPersonalModifyRequest14sp4()`

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        incoming_calls (str): incomingCalls *Optional*
        sim_ring_phone_number_list (OCI.simRingPhoneNumberList): simRingPhoneNumberList
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "incoming_calls",
        "sim_ring_phone_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("incoming_calls", "incomingCalls", str),
            E(
                "sim_ring_phone_number_list",
                "simRingPhoneNumberList",
                OCI.ReplacementOutgoingDNorSIPURIList,
                is_complex=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): userId
        speed_dial_entry (List[OCI.speedDialEntry]): speedDialEntry
    """

    __slots__: List[str] = [
        "user_id",
        "speed_dial_entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "speed_dial_entry",
                "speedDialEntry",
                OCI.SpeedDial100Entry,
                is_complex=True,
                is_required=True,
                is_array=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): userId
        speed_dial_entry (List[OCI.speedDialEntry]): speedDialEntry *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "speed_dial_entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "speed_dial_entry",
                "speedDialEntry",
                OCI.SpeedDial100EntryModify,
                is_complex=True,
                is_array=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): userId
        speed_dial_entry (List[OCI.speedDialEntry]): speedDialEntry *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "speed_dial_entry",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "speed_dial_entry",
                "speedDialEntry",
                OCI.SpeedDial8Entry,
                is_complex=True,
                is_array=True,
            ),
        )


class UserTimeScheduleAddRequest(OCIRequest):
    """
    Add a time schedule for a user.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        time_schedule_name (str): timeScheduleName
        time_interval01 (OCI.timeInterval01): timeInterval01 *Optional*
        time_interval02 (OCI.timeInterval02): timeInterval02 *Optional*
        time_interval03 (OCI.timeInterval03): timeInterval03 *Optional*
        time_interval04 (OCI.timeInterval04): timeInterval04 *Optional*
        time_interval05 (OCI.timeInterval05): timeInterval05 *Optional*
        time_interval06 (OCI.timeInterval06): timeInterval06 *Optional*
        time_interval07 (OCI.timeInterval07): timeInterval07 *Optional*
        time_interval08 (OCI.timeInterval08): timeInterval08 *Optional*
        time_interval09 (OCI.timeInterval09): timeInterval09 *Optional*
        time_interval10 (OCI.timeInterval10): timeInterval10 *Optional*
        time_interval11 (OCI.timeInterval11): timeInterval11 *Optional*
        time_interval12 (OCI.timeInterval12): timeInterval12 *Optional*
        time_interval13 (OCI.timeInterval13): timeInterval13 *Optional*
        time_interval14 (OCI.timeInterval14): timeInterval14 *Optional*
        time_interval15 (OCI.timeInterval15): timeInterval15 *Optional*
        time_interval16 (OCI.timeInterval16): timeInterval16 *Optional*
        time_interval17 (OCI.timeInterval17): timeInterval17 *Optional*
        time_interval18 (OCI.timeInterval18): timeInterval18 *Optional*
        time_interval19 (OCI.timeInterval19): timeInterval19 *Optional*
        time_interval20 (OCI.timeInterval20): timeInterval20 *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "time_schedule_name",
        "time_interval01",
        "time_interval02",
        "time_interval03",
        "time_interval04",
        "time_interval05",
        "time_interval06",
        "time_interval07",
        "time_interval08",
        "time_interval09",
        "time_interval10",
        "time_interval11",
        "time_interval12",
        "time_interval13",
        "time_interval14",
        "time_interval15",
        "time_interval16",
        "time_interval17",
        "time_interval18",
        "time_interval19",
        "time_interval20",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("time_schedule_name", "timeScheduleName", str, is_required=True),
            E("time_interval01", "timeInterval01", OCI.TimeInterval, is_complex=True),
            E("time_interval02", "timeInterval02", OCI.TimeInterval, is_complex=True),
            E("time_interval03", "timeInterval03", OCI.TimeInterval, is_complex=True),
            E("time_interval04", "timeInterval04", OCI.TimeInterval, is_complex=True),
            E("time_interval05", "timeInterval05", OCI.TimeInterval, is_complex=True),
            E("time_interval06", "timeInterval06", OCI.TimeInterval, is_complex=True),
            E("time_interval07", "timeInterval07", OCI.TimeInterval, is_complex=True),
            E("time_interval08", "timeInterval08", OCI.TimeInterval, is_complex=True),
            E("time_interval09", "timeInterval09", OCI.TimeInterval, is_complex=True),
            E("time_interval10", "timeInterval10", OCI.TimeInterval, is_complex=True),
            E("time_interval11", "timeInterval11", OCI.TimeInterval, is_complex=True),
            E("time_interval12", "timeInterval12", OCI.TimeInterval, is_complex=True),
            E("time_interval13", "timeInterval13", OCI.TimeInterval, is_complex=True),
            E("time_interval14", "timeInterval14", OCI.TimeInterval, is_complex=True),
            E("time_interval15", "timeInterval15", OCI.TimeInterval, is_complex=True),
            E("time_interval16", "timeInterval16", OCI.TimeInterval, is_complex=True),
            E("time_interval17", "timeInterval17", OCI.TimeInterval, is_complex=True),
            E("time_interval18", "timeInterval18", OCI.TimeInterval, is_complex=True),
            E("time_interval19", "timeInterval19", OCI.TimeInterval, is_complex=True),
            E("time_interval20", "timeInterval20", OCI.TimeInterval, is_complex=True),
        )


class UserTimeScheduleModifyRequest(OCIRequest):
    """
    Modify a user time schedule.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        time_schedule_name (str): timeScheduleName
        new_time_schedule_name (str): newTimeScheduleName *Optional*
        time_interval01 (OCI.timeInterval01): timeInterval01 *Optional*
        time_interval02 (OCI.timeInterval02): timeInterval02 *Optional*
        time_interval03 (OCI.timeInterval03): timeInterval03 *Optional*
        time_interval04 (OCI.timeInterval04): timeInterval04 *Optional*
        time_interval05 (OCI.timeInterval05): timeInterval05 *Optional*
        time_interval06 (OCI.timeInterval06): timeInterval06 *Optional*
        time_interval07 (OCI.timeInterval07): timeInterval07 *Optional*
        time_interval08 (OCI.timeInterval08): timeInterval08 *Optional*
        time_interval09 (OCI.timeInterval09): timeInterval09 *Optional*
        time_interval10 (OCI.timeInterval10): timeInterval10 *Optional*
        time_interval11 (OCI.timeInterval11): timeInterval11 *Optional*
        time_interval12 (OCI.timeInterval12): timeInterval12 *Optional*
        time_interval13 (OCI.timeInterval13): timeInterval13 *Optional*
        time_interval14 (OCI.timeInterval14): timeInterval14 *Optional*
        time_interval15 (OCI.timeInterval15): timeInterval15 *Optional*
        time_interval16 (OCI.timeInterval16): timeInterval16 *Optional*
        time_interval17 (OCI.timeInterval17): timeInterval17 *Optional*
        time_interval18 (OCI.timeInterval18): timeInterval18 *Optional*
        time_interval19 (OCI.timeInterval19): timeInterval19 *Optional*
        time_interval20 (OCI.timeInterval20): timeInterval20 *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "time_schedule_name",
        "new_time_schedule_name",
        "time_interval01",
        "time_interval02",
        "time_interval03",
        "time_interval04",
        "time_interval05",
        "time_interval06",
        "time_interval07",
        "time_interval08",
        "time_interval09",
        "time_interval10",
        "time_interval11",
        "time_interval12",
        "time_interval13",
        "time_interval14",
        "time_interval15",
        "time_interval16",
        "time_interval17",
        "time_interval18",
        "time_interval19",
        "time_interval20",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("time_schedule_name", "timeScheduleName", str, is_required=True),
            E("new_time_schedule_name", "newTimeScheduleName", str),
            E("time_interval01", "timeInterval01", OCI.TimeInterval, is_complex=True),
            E("time_interval02", "timeInterval02", OCI.TimeInterval, is_complex=True),
            E("time_interval03", "timeInterval03", OCI.TimeInterval, is_complex=True),
            E("time_interval04", "timeInterval04", OCI.TimeInterval, is_complex=True),
            E("time_interval05", "timeInterval05", OCI.TimeInterval, is_complex=True),
            E("time_interval06", "timeInterval06", OCI.TimeInterval, is_complex=True),
            E("time_interval07", "timeInterval07", OCI.TimeInterval, is_complex=True),
            E("time_interval08", "timeInterval08", OCI.TimeInterval, is_complex=True),
            E("time_interval09", "timeInterval09", OCI.TimeInterval, is_complex=True),
            E("time_interval10", "timeInterval10", OCI.TimeInterval, is_complex=True),
            E("time_interval11", "timeInterval11", OCI.TimeInterval, is_complex=True),
            E("time_interval12", "timeInterval12", OCI.TimeInterval, is_complex=True),
            E("time_interval13", "timeInterval13", OCI.TimeInterval, is_complex=True),
            E("time_interval14", "timeInterval14", OCI.TimeInterval, is_complex=True),
            E("time_interval15", "timeInterval15", OCI.TimeInterval, is_complex=True),
            E("time_interval16", "timeInterval16", OCI.TimeInterval, is_complex=True),
            E("time_interval17", "timeInterval17", OCI.TimeInterval, is_complex=True),
            E("time_interval18", "timeInterval18", OCI.TimeInterval, is_complex=True),
            E("time_interval19", "timeInterval19", OCI.TimeInterval, is_complex=True),
            E("time_interval20", "timeInterval20", OCI.TimeInterval, is_complex=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): userId
        list_id (int): listId
        description (str): description *Optional*
        phone_number_list (OCI.phoneNumberList): phoneNumberList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "list_id",
        "description",
        "phone_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("list_id", "listId", int, is_required=True),
            E("description", "description", str),
            E(
                "phone_number_list",
                "phoneNumberList",
                OCI.ReplacementOutgoingDNorSIPURIList,
                is_complex=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): userId
        is_active (bool): isActive *Optional*
        outgoing_smdimwi_phone_number_list (OCI.outgoingSMDIMWIPhoneNumberList):
            outgoingSMDIMWIPhoneNumberList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "outgoing_smdimwi_phone_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E(
                "outgoing_smdimwi_phone_number_list",
                "outgoingSMDIMWIPhoneNumberList",
                OCI.ReplacementOutgoingDNList,
                is_complex=True,
            ),
        )


class UserVoiceMessagingUserModifyVoicePortalRequest(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.

    Replaced By: `UserVoiceMessagingUserModifyVoicePortalRequest16()`

    Attributes:
        user_id (str): userId
        use_personalized_name (bool): usePersonalizedName *Optional*
        voice_portal_auto_login (bool): voicePortalAutoLogin *Optional*
        personalized_name_audio_file (OCI.personalizedNameAudioFile):
            personalizedNameAudioFile *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_personalized_name",
        "voice_portal_auto_login",
        "personalized_name_audio_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_personalized_name", "usePersonalizedName", bool),
            E("voice_portal_auto_login", "voicePortalAutoLogin", bool),
            E(
                "personalized_name_audio_file",
                "personalizedNameAudioFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
        )


class UserVoiceMessagingUserModifyVoicePortalRequest16(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): userId
        use_personalized_name (bool): usePersonalizedName *Optional*
        voice_portal_auto_login (bool): voicePortalAutoLogin *Optional*
        personalized_name_audio_file (OCI.personalizedNameAudioFile):
            personalizedNameAudioFile *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_personalized_name",
        "voice_portal_auto_login",
        "personalized_name_audio_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_personalized_name", "usePersonalizedName", bool),
            E("voice_portal_auto_login", "voicePortalAutoLogin", bool),
            E(
                "personalized_name_audio_file",
                "personalizedNameAudioFile",
                OCI.LabeledMediaFileResource,
                is_complex=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): userId
        use_personalized_name (bool): usePersonalizedName *Optional*
        voice_portal_auto_login (bool): voicePortalAutoLogin *Optional*
        personalized_name_audio_file (OCI.personalizedNameAudioFile):
            personalizedNameAudioFile *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_personalized_name",
        "voice_portal_auto_login",
        "personalized_name_audio_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_personalized_name", "usePersonalizedName", bool),
            E("voice_portal_auto_login", "voicePortalAutoLogin", bool),
            E(
                "personalized_name_audio_file",
                "personalizedNameAudioFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=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): userId
        xsi_policy_profile (OCI.xsiPolicyProfile): xsiPolicyProfile *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "xsi_policy_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "xsi_policy_profile",
                "xsiPolicyProfile",
                OCI.XsiPolicyProfileKey,
                is_complex=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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_mobile_subscriber_directory_number
            (List[OCI.searchCriteriaMobileSubscriberDirectoryNumber]):
            searchCriteriaMobileSubscriberDirectoryNumber *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_mobile_network (OCI.searchCriteriaExactMobileNetwork):
            searchCriteriaExactMobileNetwork *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_mobile_subscriber_directory_number",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_exact_user_department",
        "search_criteria_exact_mobile_network",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_mobile_subscriber_directory_number",
                "searchCriteriaMobileSubscriberDirectoryNumber",
                OCI.SearchCriteriaMobileSubscriberDirectoryNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_mobile_network",
                "searchCriteriaExactMobileNetwork",
                OCI.SearchCriteriaExactMobileNetwork,
                is_complex=True,
            ),
        )


class EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedListRequest(
    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
    `EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedListResponse()`
    or `ErrorResponse()`. Replaced by:
    `EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedListRequest22()`

    Attributes:
        service_provider_id (str): serviceProviderId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_mobile_subscriber_directory_number
            (List[OCI.searchCriteriaMobileSubscriberDirectoryNumber]):
            searchCriteriaMobileSubscriberDirectoryNumber *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_exact_mobile_network (List[OCI.searchCriteriaExactMobileNetwork]):
            searchCriteriaExactMobileNetwork *Optional*
        search_criteria_exact_mobile_dn_availability
            (OCI.searchCriteriaExactMobileDnAvailability):
            searchCriteriaExactMobileDnAvailability *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_mobile_subscriber_directory_number",
        "search_criteria_group_id",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_exact_mobile_network",
        "search_criteria_exact_mobile_dn_availability",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderEnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_subscriber_directory_number",
                "searchCriteriaMobileSubscriberDirectoryNumber",
                OCI.SearchCriteriaMobileSubscriberDirectoryNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_mobile_network",
                "searchCriteriaExactMobileNetwork",
                OCI.SearchCriteriaExactMobileNetwork,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_mobile_dn_availability",
                "searchCriteriaExactMobileDnAvailability",
                OCI.SearchCriteriaExactMobileDnAvailability,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        include_total_number_of_rows (bool): includeTotalNumberOfRows *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_mobile_subscriber_directory_number
            (List[OCI.searchCriteriaMobileSubscriberDirectoryNumber]):
            searchCriteriaMobileSubscriberDirectoryNumber *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_exact_mobile_network (List[OCI.searchCriteriaExactMobileNetwork]):
            searchCriteriaExactMobileNetwork *Optional*
        search_criteria_exact_mobile_dn_availability
            (OCI.searchCriteriaExactMobileDnAvailability):
            searchCriteriaExactMobileDnAvailability *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "include_total_number_of_rows",
        "response_paging_control",
        "sort_order",
        "search_criteria_mobile_subscriber_directory_number",
        "search_criteria_group_id",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_exact_mobile_network",
        "search_criteria_exact_mobile_dn_availability",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("include_total_number_of_rows", "includeTotalNumberOfRows", bool),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderEnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_subscriber_directory_number",
                "searchCriteriaMobileSubscriberDirectoryNumber",
                OCI.SearchCriteriaMobileSubscriberDirectoryNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_mobile_network",
                "searchCriteriaExactMobileNetwork",
                OCI.SearchCriteriaExactMobileNetwork,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_mobile_dn_availability",
                "searchCriteriaExactMobileDnAvailability",
                OCI.SearchCriteriaExactMobileDnAvailability,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        include_agents_table (bool): includeAgentsTable
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "include_agents_table",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("include_agents_table", "includeAgentsTable", bool, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        exclude_agents_assigned_to_profile_name (str): excludeAgentsAssignedToProfileName
            *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_agent_threshold_profile
            (List[OCI.searchCriteriaAgentThresholdProfile]):
            searchCriteriaAgentThresholdProfile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "exclude_agents_assigned_to_profile_name",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_agent_threshold_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "exclude_agents_assigned_to_profile_name",
                "excludeAgentsAssignedToProfileName",
                str,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_agent_threshold_profile",
                "searchCriteriaAgentThresholdProfile",
                OCI.SearchCriteriaAgentThresholdProfile,
                is_complex=True,
                is_array=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): serviceProviderId
        exclude_agents_assigned_to_profile_name (str): excludeAgentsAssignedToProfileName
            *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_agent_threshold_profile
            (List[OCI.searchCriteriaAgentThresholdProfile]):
            searchCriteriaAgentThresholdProfile *Optional*
        search_criteria_exact_user_group (List[OCI.searchCriteriaExactUserGroup]):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "exclude_agents_assigned_to_profile_name",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_email_address",
        "search_criteria_agent_threshold_profile",
        "search_criteria_exact_user_group",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "exclude_agents_assigned_to_profile_name",
                "excludeAgentsAssignedToProfileName",
                str,
            ),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderEnterpriseCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_agent_threshold_profile",
                "searchCriteriaAgentThresholdProfile",
                OCI.SearchCriteriaAgentThresholdProfile,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        profile_name (str): profileName
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_exact_user_group (List[OCI.searchCriteriaExactUserGroup]):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "profile_name",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_exact_user_group",
        "search_criteria_group_name",
        "search_criteria_email_address",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderEnterpriseCallCenterAgentThresholdProfileGetPagedSorted,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_call_center_scheduled_report_name
            (List[OCI.searchCriteriaCallCenterScheduledReportName]):
            searchCriteriaCallCenterScheduledReportName *Optional*
        search_criteria_exact_call_center_scheduled_report_created_by_supervisor
            (OCI.searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor):
            searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor *Optional*
        search_criteria_exact_call_center_report_template_key
            (OCI.searchCriteriaExactCallCenterReportTemplateKey):
            searchCriteriaExactCallCenterReportTemplateKey *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_call_center_scheduled_report_name",
        "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
        "search_criteria_exact_call_center_report_template_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_call_center_scheduled_report_name",
                "searchCriteriaCallCenterScheduledReportName",
                OCI.SearchCriteriaCallCenterScheduledReportName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
                "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor",
                OCI.SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_call_center_report_template_key",
                "searchCriteriaExactCallCenterReportTemplateKey",
                OCI.SearchCriteriaExactCallCenterReportTemplateKey,
                is_complex=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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_call_center_scheduled_report_name
            (List[OCI.searchCriteriaCallCenterScheduledReportName]):
            searchCriteriaCallCenterScheduledReportName *Optional*
        search_criteria_exact_call_center_scheduled_report_created_by_supervisor
            (OCI.searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor):
            searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor *Optional*
        search_criteria_exact_call_center_report_template_key
            (OCI.searchCriteriaExactCallCenterReportTemplateKey):
            searchCriteriaExactCallCenterReportTemplateKey *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_call_center_scheduled_report_name",
        "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
        "search_criteria_exact_call_center_report_template_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_call_center_scheduled_report_name",
                "searchCriteriaCallCenterScheduledReportName",
                OCI.SearchCriteriaCallCenterScheduledReportName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
                "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor",
                OCI.SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_call_center_report_template_key",
                "searchCriteriaExactCallCenterReportTemplateKey",
                OCI.SearchCriteriaExactCallCenterReportTemplateKey,
                is_complex=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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_call_center_scheduled_report_name
            (List[OCI.searchCriteriaCallCenterScheduledReportName]):
            searchCriteriaCallCenterScheduledReportName *Optional*
        search_criteria_exact_call_center_scheduled_report_created_by_supervisor
            (OCI.searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor):
            searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor *Optional*
        search_criteria_exact_call_center_report_template_key
            (OCI.searchCriteriaExactCallCenterReportTemplateKey):
            searchCriteriaExactCallCenterReportTemplateKey *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_call_center_scheduled_report_name",
        "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
        "search_criteria_exact_call_center_report_template_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_call_center_scheduled_report_name",
                "searchCriteriaCallCenterScheduledReportName",
                OCI.SearchCriteriaCallCenterScheduledReportName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
                "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor",
                OCI.SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_call_center_report_template_key",
                "searchCriteriaExactCallCenterReportTemplateKey",
                OCI.SearchCriteriaExactCallCenterReportTemplateKey,
                is_complex=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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_alternate_trunk_identity
            (List[OCI.searchCriteriaAlternateTrunkIdentity]):
            searchCriteriaAlternateTrunkIdentity *Optional*
        search_criteria_alternate_trunk_identity_domain
            (List[OCI.searchCriteriaAlternateTrunkIdentityDomain]):
            searchCriteriaAlternateTrunkIdentityDomain *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_user_id",
        "search_criteria_group_id",
        "search_criteria_alternate_trunk_identity",
        "search_criteria_alternate_trunk_identity_domain",
        "search_criteria_extension",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_alternate_trunk_identity",
                "searchCriteriaAlternateTrunkIdentity",
                OCI.SearchCriteriaAlternateTrunkIdentity,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_alternate_trunk_identity_domain",
                "searchCriteriaAlternateTrunkIdentityDomain",
                OCI.SearchCriteriaAlternateTrunkIdentityDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=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): serviceProviderId
        enterprise_trunk_name (str): enterpriseTrunkName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_alternate_trunk_identity
            (List[OCI.searchCriteriaAlternateTrunkIdentity]):
            searchCriteriaAlternateTrunkIdentity *Optional*
        search_criteria_alternate_trunk_identity_domain
            (List[OCI.searchCriteriaAlternateTrunkIdentityDomain]):
            searchCriteriaAlternateTrunkIdentityDomain *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_route_list_assigned
            (OCI.searchCriteriaExactUserRouteListAssigned):
            searchCriteriaExactUserRouteListAssigned *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "enterprise_trunk_name",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_user_id",
        "search_criteria_group_id",
        "search_criteria_alternate_trunk_identity",
        "search_criteria_alternate_trunk_identity_domain",
        "search_criteria_extension",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_route_list_assigned",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_alternate_trunk_identity",
                "searchCriteriaAlternateTrunkIdentity",
                OCI.SearchCriteriaAlternateTrunkIdentity,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_alternate_trunk_identity_domain",
                "searchCriteriaAlternateTrunkIdentityDomain",
                OCI.SearchCriteriaAlternateTrunkIdentityDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_route_list_assigned",
                "searchCriteriaExactUserRouteListAssigned",
                OCI.SearchCriteriaExactUserRouteListAssigned,
                is_complex=True,
            ),
        )


class EnterprisePhoneDirectoryGetListRequest(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.  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 `EnterprisePhoneDirectoryGetListResponse()` or
    `ErrorResponse()`. Replace by: `EnterprisePhoneDirectoryGetListRequest17()`

    Attributes:
        enterprise_id (str): enterpriseId
        is_extended_info_requested (bool): isExtendedInfoRequested
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "enterprise_id",
        "is_extended_info_requested",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_yahoo_id",
        "search_criteria_exact_user_group",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enterprise_id", "enterpriseId", str, is_required=True),
            E(
                "is_extended_info_requested",
                "isExtendedInfoRequested",
                bool,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
        )


class EnterprisePhoneDirectoryGetListRequest17(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.  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 `EnterprisePhoneDirectoryGetListResponse17()` or
    `ErrorResponse()`. Replaced by: `EnterprisePhoneDirectoryGetListRequest18()`

    Attributes:
        enterprise_id (str): enterpriseId
        is_extended_info_requested (bool): isExtendedInfoRequested
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "enterprise_id",
        "is_extended_info_requested",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_yahoo_id",
        "search_criteria_exact_user_group",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enterprise_id", "enterpriseId", str, is_required=True),
            E(
                "is_extended_info_requested",
                "isExtendedInfoRequested",
                bool,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
        )


class EnterprisePhoneDirectoryGetListRequest17sp3(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.  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 `EnterprisePhoneDirectoryGetListResponse17sp3()` or
    `ErrorResponse()`. Replaced by: `EnterprisePhoneDirectoryGetListRequest18()`

    Attributes:
        enterprise_id (str): enterpriseId
        is_extended_info_requested (bool): isExtendedInfoRequested
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "enterprise_id",
        "is_extended_info_requested",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_yahoo_id",
        "search_criteria_exact_user_group",
        "search_criteria_exact_user_department",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enterprise_id", "enterpriseId", str, is_required=True),
            E(
                "is_extended_info_requested",
                "isExtendedInfoRequested",
                bool,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=True,
            ),
        )


class EnterprisePhoneDirectoryGetListRequest18(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.  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 `EnterprisePhoneDirectoryGetListResponse18()` or
    `ErrorResponse()`.

    Replaced By: `EnterprisePhoneDirectoryGetPagedSortedListRequest()`

    Attributes:
        enterprise_id (str): enterpriseId
        is_extended_info_requested (bool): isExtendedInfoRequested
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "enterprise_id",
        "is_extended_info_requested",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_yahoo_id",
        "search_criteria_exact_user_group",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enterprise_id", "enterpriseId", str, is_required=True),
            E(
                "is_extended_info_requested",
                "isExtendedInfoRequested",
                bool,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=True,
            ),
        )


class EnterprisePhoneDirectoryGetPagedListRequest(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.  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 `EnterprisePhoneDirectoryGetPagedListResponse()` or
    `ErrorResponse()`.

    Replaced By: `EnterprisePhoneDirectoryGetPagedSortedListRequest()`

    Attributes:
        enterprise_id (str): enterpriseId
        is_extended_info_requested (bool): isExtendedInfoRequested
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "enterprise_id",
        "is_extended_info_requested",
        "response_paging_control",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_yahoo_id",
        "search_criteria_exact_user_group",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enterprise_id", "enterpriseId", str, is_required=True),
            E(
                "is_extended_info_requested",
                "isExtendedInfoRequested",
                bool,
                is_required=True,
            ),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=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
    Amplify and XS data mode: "sortByImpId" "searchCriteriaImpId"

    The response is either `EnterprisePhoneDirectoryGetPagedSortedListResponse()` or
    `ErrorResponse()`.

    Attributes:
        enterprise_id (str): enterpriseId
        is_extended_info_requested (bool): isExtendedInfoRequested
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "enterprise_id",
        "is_extended_info_requested",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_department_name",
        "search_criteria_exact_user_group",
        "search_criteria_group_name",
        "search_criteria_yahoo_id",
        "search_criteria_user_id",
        "search_criteria_imp_id",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("enterprise_id", "enterpriseId", str, is_required=True),
            E(
                "is_extended_info_requested",
                "isExtendedInfoRequested",
                bool,
                is_required=True,
            ),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderEnterprisePhoneDirectoryGetPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        announcement_interruption (str): announcementInterruption *Optional*
        interruption_digit_sequence (str): interruptionDigitSequence *Optional*
        audio_selection (str): audioSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "announcement_interruption",
        "interruption_digit_sequence",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("announcement_interruption", "announcementInterruption", str),
            E("interruption_digit_sequence", "interruptionDigitSequence", str),
            E("audio_selection", "audioSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("video_selection", "videoSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=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): serviceProviderId
        name (str): name
        devices (List[OCI.devices]): devices
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "devices",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "devices",
                "devices",
                OCI.EnterpriseAccessDevice,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class EnterpriseSessionAdmissionControlGroupAddRequest(OCIRequest):
    """
    Request to add a session admission control group for the enterprise.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        name (str): name
        max_session (int): maxSession
        max_user_originating_sessions (int): maxUserOriginatingSessions *Optional*
        max_user_terminating_sessions (int): maxUserTerminatingSessions *Optional*
        reserved_session (int): reservedSession
        reserved_user_originating_sessions (int): reservedUserOriginatingSessions
            *Optional*
        reserved_user_terminating_sessions (int): reservedUserTerminatingSessions
            *Optional*
        become_default_group (bool): becomeDefaultGroup
        count_intra_sac_group_sessions (bool): countIntraSACGroupSessions
        devices (List[OCI.devices]): devices *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "max_session",
        "max_user_originating_sessions",
        "max_user_terminating_sessions",
        "reserved_session",
        "reserved_user_originating_sessions",
        "reserved_user_terminating_sessions",
        "become_default_group",
        "count_intra_sac_group_sessions",
        "devices",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("max_session", "maxSession", int, is_required=True),
            E("max_user_originating_sessions", "maxUserOriginatingSessions", int),
            E("max_user_terminating_sessions", "maxUserTerminatingSessions", int),
            E("reserved_session", "reservedSession", int, is_required=True),
            E(
                "reserved_user_originating_sessions",
                "reservedUserOriginatingSessions",
                int,
            ),
            E(
                "reserved_user_terminating_sessions",
                "reservedUserTerminatingSessions",
                int,
            ),
            E("become_default_group", "becomeDefaultGroup", bool, is_required=True),
            E(
                "count_intra_sac_group_sessions",
                "countIntraSACGroupSessions",
                bool,
                is_required=True,
            ),
            E(
                "devices",
                "devices",
                OCI.EnterpriseAccessDevice,
                is_complex=True,
                is_array=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): serviceProviderId
        name (str): name
        max_session (int): maxSession
        max_user_originating_sessions (int): maxUserOriginatingSessions *Optional*
        max_user_terminating_sessions (int): maxUserTerminatingSessions *Optional*
        reserved_session (int): reservedSession
        reserved_user_originating_sessions (int): reservedUserOriginatingSessions
            *Optional*
        reserved_user_terminating_sessions (int): reservedUserTerminatingSessions
            *Optional*
        become_default_group (bool): becomeDefaultGroup
        count_intra_sac_group_sessions (bool): countIntraSACGroupSessions
        devices (List[OCI.devices]): devices *Optional*
        block_emergency_and_repair_calls_due_to_sac_limits (bool):
            blockEmergencyAndRepairCallsDueToSACLimits
        media_group_name (str): mediaGroupName *Optional*
        access_info_pattern (str): accessInfoPattern *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "max_session",
        "max_user_originating_sessions",
        "max_user_terminating_sessions",
        "reserved_session",
        "reserved_user_originating_sessions",
        "reserved_user_terminating_sessions",
        "become_default_group",
        "count_intra_sac_group_sessions",
        "devices",
        "block_emergency_and_repair_calls_due_to_sac_limits",
        "media_group_name",
        "access_info_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("max_session", "maxSession", int, is_required=True),
            E("max_user_originating_sessions", "maxUserOriginatingSessions", int),
            E("max_user_terminating_sessions", "maxUserTerminatingSessions", int),
            E("reserved_session", "reservedSession", int, is_required=True),
            E(
                "reserved_user_originating_sessions",
                "reservedUserOriginatingSessions",
                int,
            ),
            E(
                "reserved_user_terminating_sessions",
                "reservedUserTerminatingSessions",
                int,
            ),
            E("become_default_group", "becomeDefaultGroup", bool, is_required=True),
            E(
                "count_intra_sac_group_sessions",
                "countIntraSACGroupSessions",
                bool,
                is_required=True,
            ),
            E(
                "devices",
                "devices",
                OCI.EnterpriseAccessDevice,
                is_complex=True,
                is_array=True,
            ),
            E(
                "block_emergency_and_repair_calls_due_to_sac_limits",
                "blockEmergencyAndRepairCallsDueToSACLimits",
                bool,
                is_required=True,
            ),
            E("media_group_name", "mediaGroupName", str),
            E("access_info_pattern", "accessInfoPattern", str),
        )


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): serviceProviderId
        name (str): name
        devices (List[OCI.devices]): devices
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "devices",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "devices",
                "devices",
                OCI.EnterpriseAccessDevice,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        call_forwarding_service (str): callForwardingService
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_user_last_name (OCI.sortByUserLastName): sortByUserLastName *Optional*
        sort_by_user_first_name (OCI.sortByUserFirstName): sortByUserFirstName *Optional*
        sort_by_user_department (OCI.sortByUserDepartment): sortByUserDepartment
            *Optional*
        sort_by_dn (OCI.sortByDn): sortByDn *Optional*
        sort_by_extension (OCI.sortByExtension): sortByExtension *Optional*
        sort_by_group_id (OCI.sortByGroupId): sortByGroupId *Optional*
        sort_by_forwarded_to_number (OCI.sortByForwardedToNumber): sortByForwardedToNumber
            *Optional*
        include_virtual_users (bool): includeVirtualUsers *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_in_trunk_group
            (OCI.searchCriteriaExactUserInTrunkGroup): searchCriteriaExactUserInTrunkGroup
            *Optional*
        search_criteria_forwarded_to_number (List[OCI.searchCriteriaForwardedToNumber]):
            searchCriteriaForwardedToNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "call_forwarding_service",
        "response_paging_control",
        "sort_by_user_last_name",
        "sort_by_user_first_name",
        "sort_by_user_department",
        "sort_by_dn",
        "sort_by_extension",
        "sort_by_group_id",
        "sort_by_forwarded_to_number",
        "include_virtual_users",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_in_trunk_group",
        "search_criteria_forwarded_to_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "call_forwarding_service",
                "callForwardingService",
                str,
                is_required=True,
            ),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_user_last_name",
                "sortByUserLastName",
                OCI.SortByUserLastName,
                is_complex=True,
            ),
            E(
                "sort_by_user_first_name",
                "sortByUserFirstName",
                OCI.SortByUserFirstName,
                is_complex=True,
            ),
            E(
                "sort_by_user_department",
                "sortByUserDepartment",
                OCI.SortByUserDepartment,
                is_complex=True,
            ),
            E("sort_by_dn", "sortByDn", OCI.SortByDn, is_complex=True),
            E(
                "sort_by_extension",
                "sortByExtension",
                OCI.SortByExtension,
                is_complex=True,
            ),
            E("sort_by_group_id", "sortByGroupId", OCI.SortByGroupId, is_complex=True),
            E(
                "sort_by_forwarded_to_number",
                "sortByForwardedToNumber",
                OCI.SortByForwardedToNumber,
                is_complex=True,
            ),
            E("include_virtual_users", "includeVirtualUsers", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_in_trunk_group",
                "searchCriteriaExactUserInTrunkGroup",
                OCI.SearchCriteriaExactUserInTrunkGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_forwarded_to_number",
                "searchCriteriaForwardedToNumber",
                OCI.SearchCriteriaForwardedToNumber,
                is_complex=True,
                is_array=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): serviceProviderId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_user_last_name (OCI.sortByUserLastName): sortByUserLastName *Optional*
        sort_by_user_first_name (OCI.sortByUserFirstName): sortByUserFirstName *Optional*
        sort_by_user_department (OCI.sortByUserDepartment): sortByUserDepartment
            *Optional*
        sort_by_dn (OCI.sortByDn): sortByDn *Optional*
        sort_by_extension (OCI.sortByExtension): sortByExtension *Optional*
        sort_by_service_status (OCI.sortByServiceStatus): sortByServiceStatus *Optional*
        sort_by_group_id (OCI.sortByGroupId): sortByGroupId *Optional*
        include_virtual_users (bool): includeVirtualUsers *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_in_trunk_group
            (OCI.searchCriteriaExactUserInTrunkGroup): searchCriteriaExactUserInTrunkGroup
            *Optional*
        search_criteria_service_status (OCI.searchCriteriaServiceStatus):
            searchCriteriaServiceStatus *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_paging_control",
        "sort_by_user_last_name",
        "sort_by_user_first_name",
        "sort_by_user_department",
        "sort_by_dn",
        "sort_by_extension",
        "sort_by_service_status",
        "sort_by_group_id",
        "include_virtual_users",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_in_trunk_group",
        "search_criteria_service_status",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_user_last_name",
                "sortByUserLastName",
                OCI.SortByUserLastName,
                is_complex=True,
            ),
            E(
                "sort_by_user_first_name",
                "sortByUserFirstName",
                OCI.SortByUserFirstName,
                is_complex=True,
            ),
            E(
                "sort_by_user_department",
                "sortByUserDepartment",
                OCI.SortByUserDepartment,
                is_complex=True,
            ),
            E("sort_by_dn", "sortByDn", OCI.SortByDn, is_complex=True),
            E(
                "sort_by_extension",
                "sortByExtension",
                OCI.SortByExtension,
                is_complex=True,
            ),
            E(
                "sort_by_service_status",
                "sortByServiceStatus",
                OCI.SortByServiceStatus,
                is_complex=True,
            ),
            E("sort_by_group_id", "sortByGroupId", OCI.SortByGroupId, is_complex=True),
            E("include_virtual_users", "includeVirtualUsers", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_in_trunk_group",
                "searchCriteriaExactUserInTrunkGroup",
                OCI.SearchCriteriaExactUserInTrunkGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_service_status",
                "searchCriteriaServiceStatus",
                OCI.SearchCriteriaServiceStatus,
                is_complex=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): serviceProviderId
        calling_plan_service (str): callingPlanService
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_user_last_name (OCI.sortByUserLastName): sortByUserLastName *Optional*
        sort_by_user_first_name (OCI.sortByUserFirstName): sortByUserFirstName *Optional*
        sort_by_user_department (OCI.sortByUserDepartment): sortByUserDepartment
            *Optional*
        sort_by_dn (OCI.sortByDn): sortByDn *Optional*
        sort_by_extension (OCI.sortByExtension): sortByExtension *Optional*
        sort_by_group_id (OCI.sortByGroupId): sortByGroupId *Optional*
        include_virtual_users (bool): includeVirtualUsers *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_in_trunk_group
            (OCI.searchCriteriaExactUserInTrunkGroup): searchCriteriaExactUserInTrunkGroup
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "calling_plan_service",
        "response_paging_control",
        "sort_by_user_last_name",
        "sort_by_user_first_name",
        "sort_by_user_department",
        "sort_by_dn",
        "sort_by_extension",
        "sort_by_group_id",
        "include_virtual_users",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_in_trunk_group",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("calling_plan_service", "callingPlanService", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_user_last_name",
                "sortByUserLastName",
                OCI.SortByUserLastName,
                is_complex=True,
            ),
            E(
                "sort_by_user_first_name",
                "sortByUserFirstName",
                OCI.SortByUserFirstName,
                is_complex=True,
            ),
            E(
                "sort_by_user_department",
                "sortByUserDepartment",
                OCI.SortByUserDepartment,
                is_complex=True,
            ),
            E("sort_by_dn", "sortByDn", OCI.SortByDn, is_complex=True),
            E(
                "sort_by_extension",
                "sortByExtension",
                OCI.SortByExtension,
                is_complex=True,
            ),
            E("sort_by_group_id", "sortByGroupId", OCI.SortByGroupId, is_complex=True),
            E("include_virtual_users", "includeVirtualUsers", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_in_trunk_group",
                "searchCriteriaExactUserInTrunkGroup",
                OCI.SearchCriteriaExactUserInTrunkGroup,
                is_complex=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): serviceProviderId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_user_last_name (OCI.sortByUserLastName): sortByUserLastName *Optional*
        sort_by_user_first_name (OCI.sortByUserFirstName): sortByUserFirstName *Optional*
        sort_by_user_department (OCI.sortByUserDepartment): sortByUserDepartment
            *Optional*
        sort_by_dn (OCI.sortByDn): sortByDn *Optional*
        sort_by_extension (OCI.sortByExtension): sortByExtension *Optional*
        sort_by_service_status (OCI.sortByServiceStatus): sortByServiceStatus *Optional*
        sort_by_group_id (OCI.sortByGroupId): sortByGroupId *Optional*
        include_virtual_users (bool): includeVirtualUsers *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_in_trunk_group
            (OCI.searchCriteriaExactUserInTrunkGroup): searchCriteriaExactUserInTrunkGroup
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_paging_control",
        "sort_by_user_last_name",
        "sort_by_user_first_name",
        "sort_by_user_department",
        "sort_by_dn",
        "sort_by_extension",
        "sort_by_service_status",
        "sort_by_group_id",
        "include_virtual_users",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_in_trunk_group",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_user_last_name",
                "sortByUserLastName",
                OCI.SortByUserLastName,
                is_complex=True,
            ),
            E(
                "sort_by_user_first_name",
                "sortByUserFirstName",
                OCI.SortByUserFirstName,
                is_complex=True,
            ),
            E(
                "sort_by_user_department",
                "sortByUserDepartment",
                OCI.SortByUserDepartment,
                is_complex=True,
            ),
            E("sort_by_dn", "sortByDn", OCI.SortByDn, is_complex=True),
            E(
                "sort_by_extension",
                "sortByExtension",
                OCI.SortByExtension,
                is_complex=True,
            ),
            E(
                "sort_by_service_status",
                "sortByServiceStatus",
                OCI.SortByServiceStatus,
                is_complex=True,
            ),
            E("sort_by_group_id", "sortByGroupId", OCI.SortByGroupId, is_complex=True),
            E("include_virtual_users", "includeVirtualUsers", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_in_trunk_group",
                "searchCriteriaExactUserInTrunkGroup",
                OCI.SearchCriteriaExactUserInTrunkGroup,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        include_total_number_of_rows (bool): includeTotalNumberOfRows *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_exact_device_type (List[OCI.searchCriteriaExactDeviceType]):
            searchCriteriaExactDeviceType *Optional*
        search_criteria_access_device_version
            (List[OCI.searchCriteriaAccessDeviceVersion]):
            searchCriteriaAccessDeviceVersion *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        get_visual_device_management_api_devices_only (bool):
            getVisualDeviceManagementAPIDevicesOnly *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "include_total_number_of_rows",
        "response_paging_control",
        "sort_order",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_exact_device_type",
        "search_criteria_access_device_version",
        "search_criteria_mode_or",
        "get_visual_device_management_api_devices_only",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("include_total_number_of_rows", "includeTotalNumberOfRows", bool),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupAccessDeviceGetPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_device_type",
                "searchCriteriaExactDeviceType",
                OCI.SearchCriteriaExactDeviceType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_access_device_version",
                "searchCriteriaAccessDeviceVersion",
                OCI.SearchCriteriaAccessDeviceVersion,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "get_visual_device_management_api_devices_only",
                "getVisualDeviceManagementAPIDevicesOnly",
                bool,
            ),
        )


class GroupAccessDeviceGetUserListRequest(OCIRequest):
    """
    Requests the configuration of a specified group access device.

    The response is either `GroupAccessDeviceGetUserListResponse()` or `ErrorResponse()`.
    The following elements are only used in XS data mode and ignored in AS data mode:
    searchCriteriaAccessDeviceEndpointPrivateIdentity Replaced by:
    `GroupAccessDeviceGetUserListRequest21sp1()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_line_port_user_part (List[OCI.searchCriteriaLinePortUserPart]):
            searchCriteriaLinePortUserPart *Optional*
        search_criteria_line_port_domain (List[OCI.searchCriteriaLinePortDomain]):
            searchCriteriaLinePortDomain *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_exact_endpoint_type (OCI.searchCriteriaExactEndpointType):
            searchCriteriaExactEndpointType *Optional*
        search_criteria_exact_user_type (OCI.searchCriteriaExactUserType):
            searchCriteriaExactUserType *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_port_number (OCI.searchCriteriaExactPortNumber):
            searchCriteriaExactPortNumber *Optional*
        search_criteria_access_device_endpoint_private_identity
            (List[OCI.searchCriteriaAccessDeviceEndpointPrivateIdentity]):
            searchCriteriaAccessDeviceEndpointPrivateIdentity *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "response_size_limit",
        "search_criteria_line_port_user_part",
        "search_criteria_line_port_domain",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_user_id",
        "search_criteria_exact_endpoint_type",
        "search_criteria_exact_user_type",
        "search_criteria_extension",
        "search_criteria_exact_user_department",
        "search_criteria_exact_port_number",
        "search_criteria_access_device_endpoint_private_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_line_port_user_part",
                "searchCriteriaLinePortUserPart",
                OCI.SearchCriteriaLinePortUserPart,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_domain",
                "searchCriteriaLinePortDomain",
                OCI.SearchCriteriaLinePortDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_endpoint_type",
                "searchCriteriaExactEndpointType",
                OCI.SearchCriteriaExactEndpointType,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_type",
                "searchCriteriaExactUserType",
                OCI.SearchCriteriaExactUserType,
                is_complex=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_port_number",
                "searchCriteriaExactPortNumber",
                OCI.SearchCriteriaExactPortNumber,
                is_complex=True,
            ),
            E(
                "search_criteria_access_device_endpoint_private_identity",
                "searchCriteriaAccessDeviceEndpointPrivateIdentity",
                OCI.SearchCriteriaAccessDeviceEndpointPrivateIdentity,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        device_name (str): deviceName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_line_port_user_part (List[OCI.searchCriteriaLinePortUserPart]):
            searchCriteriaLinePortUserPart *Optional*
        search_criteria_line_port_domain (List[OCI.searchCriteriaLinePortDomain]):
            searchCriteriaLinePortDomain *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_exact_endpoint_type (OCI.searchCriteriaExactEndpointType):
            searchCriteriaExactEndpointType *Optional*
        search_criteria_exact_user_type (OCI.searchCriteriaExactUserType):
            searchCriteriaExactUserType *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_port_number (OCI.searchCriteriaExactPortNumber):
            searchCriteriaExactPortNumber *Optional*
        search_criteria_access_device_endpoint_private_identity
            (List[OCI.searchCriteriaAccessDeviceEndpointPrivateIdentity]):
            searchCriteriaAccessDeviceEndpointPrivateIdentity *Optional*
        search_criteria_user_hotline_contact (List[OCI.searchCriteriaUserHotlineContact]):
            searchCriteriaUserHotlineContact *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "device_name",
        "response_size_limit",
        "search_criteria_line_port_user_part",
        "search_criteria_line_port_domain",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_user_id",
        "search_criteria_exact_endpoint_type",
        "search_criteria_exact_user_type",
        "search_criteria_extension",
        "search_criteria_exact_user_department",
        "search_criteria_exact_port_number",
        "search_criteria_access_device_endpoint_private_identity",
        "search_criteria_user_hotline_contact",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_line_port_user_part",
                "searchCriteriaLinePortUserPart",
                OCI.SearchCriteriaLinePortUserPart,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_domain",
                "searchCriteriaLinePortDomain",
                OCI.SearchCriteriaLinePortDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_endpoint_type",
                "searchCriteriaExactEndpointType",
                OCI.SearchCriteriaExactEndpointType21sp1,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_type",
                "searchCriteriaExactUserType",
                OCI.SearchCriteriaExactUserType,
                is_complex=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_port_number",
                "searchCriteriaExactPortNumber",
                OCI.SearchCriteriaExactPortNumber,
                is_complex=True,
            ),
            E(
                "search_criteria_access_device_endpoint_private_identity",
                "searchCriteriaAccessDeviceEndpointPrivateIdentity",
                OCI.SearchCriteriaAccessDeviceEndpointPrivateIdentity,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_hotline_contact",
                "searchCriteriaUserHotlineContact",
                OCI.SearchCriteriaUserHotlineContact,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_admin_id (List[OCI.searchCriteriaAdminId]): searchCriteriaAdminId
            *Optional*
        search_criteria_admin_last_name (List[OCI.searchCriteriaAdminLastName]):
            searchCriteriaAdminLastName *Optional*
        search_criteria_admin_first_name (List[OCI.searchCriteriaAdminFirstName]):
            searchCriteriaAdminFirstName *Optional*
        search_criteria_exact_group_admin_type
            (List[OCI.searchCriteriaExactGroupAdminType]):
            searchCriteriaExactGroupAdminType *Optional*
        search_criteria_language (List[OCI.searchCriteriaLanguage]):
            searchCriteriaLanguage *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_admin_id",
        "search_criteria_admin_last_name",
        "search_criteria_admin_first_name",
        "search_criteria_exact_group_admin_type",
        "search_criteria_language",
        "search_criteria_department_name",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupAdminGetPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_admin_id",
                "searchCriteriaAdminId",
                OCI.SearchCriteriaAdminId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_admin_last_name",
                "searchCriteriaAdminLastName",
                OCI.SearchCriteriaAdminLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_admin_first_name",
                "searchCriteriaAdminFirstName",
                OCI.SearchCriteriaAdminFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_group_admin_type",
                "searchCriteriaExactGroupAdminType",
                OCI.SearchCriteriaExactGroupAdminType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_language",
                "searchCriteriaLanguage",
                OCI.SearchCriteriaLanguage,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_dn_activation (OCI.searchCriteriaExactDnActivation):
            searchCriteriaExactDnActivation *Optional*
        search_criteria_service_status (OCI.searchCriteriaServiceStatus):
            searchCriteriaServiceStatus *Optional*
        search_criteria_exact_auto_attendant_type
            (OCI.searchCriteriaExactAutoAttendantType):
            searchCriteriaExactAutoAttendantType *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_exact_dn_activation",
        "search_criteria_service_status",
        "search_criteria_exact_auto_attendant_type",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupAutoAttendantGetInstancePagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_dn_activation",
                "searchCriteriaExactDnActivation",
                OCI.SearchCriteriaExactDnActivation,
                is_complex=True,
            ),
            E(
                "search_criteria_service_status",
                "searchCriteriaServiceStatus",
                OCI.SearchCriteriaServiceStatus,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_auto_attendant_type",
                "searchCriteriaExactAutoAttendantType",
                OCI.SearchCriteriaExactAutoAttendantType,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        broad_works_anywhere_scope (str): broadWorksAnywhereScope
        prompt_for_clid (str): promptForCLID
        silent_prompt_mode (bool): silentPromptMode
        prompt_for_passcode (bool): promptForPasscode
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "broad_works_anywhere_scope",
        "prompt_for_clid",
        "silent_prompt_mode",
        "prompt_for_passcode",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E(
                "broad_works_anywhere_scope",
                "broadWorksAnywhereScope",
                str,
                is_required=True,
            ),
            E("prompt_for_clid", "promptForCLID", str, is_required=True),
            E("silent_prompt_mode", "silentPromptMode", bool, is_required=True),
            E("prompt_for_passcode", "promptForPasscode", bool, is_required=True),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        broad_works_anywhere_scope (str): broadWorksAnywhereScope *Optional*
        prompt_for_clid (str): promptForCLID *Optional*
        silent_prompt_mode (bool): silentPromptMode *Optional*
        prompt_for_passcode (bool): promptForPasscode *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "broad_works_anywhere_scope",
        "prompt_for_clid",
        "silent_prompt_mode",
        "prompt_for_passcode",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("broad_works_anywhere_scope", "broadWorksAnywhereScope", str),
            E("prompt_for_clid", "promptForCLID", str),
            E("silent_prompt_mode", "silentPromptMode", bool),
            E("prompt_for_passcode", "promptForPasscode", bool),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_mobile_subscriber_directory_number
            (List[OCI.searchCriteriaMobileSubscriberDirectoryNumber]):
            searchCriteriaMobileSubscriberDirectoryNumber *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_mobile_subscriber_directory_number",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_exact_user_department",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_mobile_subscriber_directory_number",
                "searchCriteriaMobileSubscriberDirectoryNumber",
                OCI.SearchCriteriaMobileSubscriberDirectoryNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        name (str): name *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupCallCenterAddInstanceRequest14(OCIRequest):
    """
    Add a Call Center instance to a group.

    The domain is required in the serviceUserId.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `GroupCallCenterAddInstanceRequest14sp3()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        policy (str): policy
        hunt_after_no_answer (bool): huntAfterNoAnswer
        no_answer_number_of_rings (int): noAnswerNumberOfRings
        forward_after_timeout (bool): forwardAfterTimeout
        forward_timeout_seconds (int): forwardTimeoutSeconds
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        enable_video (bool): enableVideo
        queue_length (int): queueLength
        allow_agent_logoff (bool): allowAgentLogoff
        play_music_on_hold (bool): playMusicOnHold
        play_comfort_message (bool): playComfortMessage
        time_between_comfort_messages_seconds (int): timeBetweenComfortMessagesSeconds
        enable_guard_timer (bool): enableGuardTimer
        guard_timer_seconds (int): guardTimerSeconds
        agent_user_id (List[str]): agentUserId *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "policy",
        "hunt_after_no_answer",
        "no_answer_number_of_rings",
        "forward_after_timeout",
        "forward_timeout_seconds",
        "forward_to_phone_number",
        "enable_video",
        "queue_length",
        "allow_agent_logoff",
        "play_music_on_hold",
        "play_comfort_message",
        "time_between_comfort_messages_seconds",
        "enable_guard_timer",
        "guard_timer_seconds",
        "agent_user_id",
        "allow_call_waiting_for_agents",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileCallCenter,
                is_complex=True,
                is_required=True,
            ),
            E("policy", "policy", str, is_required=True),
            E("hunt_after_no_answer", "huntAfterNoAnswer", bool, is_required=True),
            E(
                "no_answer_number_of_rings",
                "noAnswerNumberOfRings",
                int,
                is_required=True,
            ),
            E("forward_after_timeout", "forwardAfterTimeout", bool, is_required=True),
            E(
                "forward_timeout_seconds",
                "forwardTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("queue_length", "queueLength", int, is_required=True),
            E("allow_agent_logoff", "allowAgentLogoff", bool, is_required=True),
            E("play_music_on_hold", "playMusicOnHold", bool, is_required=True),
            E("play_comfort_message", "playComfortMessage", bool, is_required=True),
            E(
                "time_between_comfort_messages_seconds",
                "timeBetweenComfortMessagesSeconds",
                int,
                is_required=True,
            ),
            E("enable_guard_timer", "enableGuardTimer", bool, is_required=True),
            E("guard_timer_seconds", "guardTimerSeconds", int, is_required=True),
            E("agent_user_id", "agentUserId", str, is_array=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
        )


class GroupCallCenterAddInstanceRequest14sp3(OCIRequest):
    """
    Add a Call Center instance to a group.

    The domain is required in the serviceUserId.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `GroupCallCenterAddInstanceRequest14sp9()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        policy (str): policy
        hunt_after_no_answer (bool): huntAfterNoAnswer
        no_answer_number_of_rings (int): noAnswerNumberOfRings
        forward_after_timeout (bool): forwardAfterTimeout
        forward_timeout_seconds (int): forwardTimeoutSeconds
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        enable_video (bool): enableVideo
        queue_length (int): queueLength
        allow_agent_logoff (bool): allowAgentLogoff
        play_music_on_hold (bool): playMusicOnHold
        play_comfort_message (bool): playComfortMessage
        time_between_comfort_messages_seconds (int): timeBetweenComfortMessagesSeconds
        enable_guard_timer (bool): enableGuardTimer
        guard_timer_seconds (int): guardTimerSeconds
        agent_user_id (List[str]): agentUserId *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp
        enable_call_queue_when_no_agents_available (bool):
            enableCallQueueWhenNoAgentsAvailable
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "policy",
        "hunt_after_no_answer",
        "no_answer_number_of_rings",
        "forward_after_timeout",
        "forward_timeout_seconds",
        "forward_to_phone_number",
        "enable_video",
        "queue_length",
        "allow_agent_logoff",
        "play_music_on_hold",
        "play_comfort_message",
        "time_between_comfort_messages_seconds",
        "enable_guard_timer",
        "guard_timer_seconds",
        "agent_user_id",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "enable_call_queue_when_no_agents_available",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileCallCenter,
                is_complex=True,
                is_required=True,
            ),
            E("policy", "policy", str, is_required=True),
            E("hunt_after_no_answer", "huntAfterNoAnswer", bool, is_required=True),
            E(
                "no_answer_number_of_rings",
                "noAnswerNumberOfRings",
                int,
                is_required=True,
            ),
            E("forward_after_timeout", "forwardAfterTimeout", bool, is_required=True),
            E(
                "forward_timeout_seconds",
                "forwardTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("queue_length", "queueLength", int, is_required=True),
            E("allow_agent_logoff", "allowAgentLogoff", bool, is_required=True),
            E("play_music_on_hold", "playMusicOnHold", bool, is_required=True),
            E("play_comfort_message", "playComfortMessage", bool, is_required=True),
            E(
                "time_between_comfort_messages_seconds",
                "timeBetweenComfortMessagesSeconds",
                int,
                is_required=True,
            ),
            E("enable_guard_timer", "enableGuardTimer", bool, is_required=True),
            E("guard_timer_seconds", "guardTimerSeconds", int, is_required=True),
            E("agent_user_id", "agentUserId", str, is_array=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E(
                "allow_calls_to_agents_in_wrap_up",
                "allowCallsToAgentsInWrapUp",
                bool,
                is_required=True,
            ),
            E(
                "enable_call_queue_when_no_agents_available",
                "enableCallQueueWhenNoAgentsAvailable",
                bool,
                is_required=True,
            ),
        )


class GroupCallCenterAddInstanceRequest14sp9(OCIRequest):
    """
    Add a Call Center instance to a group.

    The domain is required in the serviceUserId.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `GroupCallCenterAddInstanceRequest16()`,
    `GroupCallCenterAddAgentListRequest()`, `GroupCallCenterModifyPolicyRequest()`,
    `GroupCallCenterModifyAnnouncementRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        policy (str): policy
        hunt_after_no_answer (bool): huntAfterNoAnswer
        no_answer_number_of_rings (int): noAnswerNumberOfRings
        forward_after_timeout (bool): forwardAfterTimeout
        forward_timeout_seconds (int): forwardTimeoutSeconds
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        enable_video (bool): enableVideo
        queue_length (int): queueLength
        allow_agent_logoff (bool): allowAgentLogoff
        play_music_on_hold (bool): playMusicOnHold
        play_comfort_message (bool): playComfortMessage
        time_between_comfort_messages_seconds (int): timeBetweenComfortMessagesSeconds
        enable_guard_timer (bool): enableGuardTimer
        guard_timer_seconds (int): guardTimerSeconds
        agent_user_id (List[str]): agentUserId *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp
        enable_call_queue_when_no_agents_available (bool):
            enableCallQueueWhenNoAgentsAvailable
        statistics_source (str): statisticsSource
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "policy",
        "hunt_after_no_answer",
        "no_answer_number_of_rings",
        "forward_after_timeout",
        "forward_timeout_seconds",
        "forward_to_phone_number",
        "enable_video",
        "queue_length",
        "allow_agent_logoff",
        "play_music_on_hold",
        "play_comfort_message",
        "time_between_comfort_messages_seconds",
        "enable_guard_timer",
        "guard_timer_seconds",
        "agent_user_id",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "enable_call_queue_when_no_agents_available",
        "statistics_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileCallCenter,
                is_complex=True,
                is_required=True,
            ),
            E("policy", "policy", str, is_required=True),
            E("hunt_after_no_answer", "huntAfterNoAnswer", bool, is_required=True),
            E(
                "no_answer_number_of_rings",
                "noAnswerNumberOfRings",
                int,
                is_required=True,
            ),
            E("forward_after_timeout", "forwardAfterTimeout", bool, is_required=True),
            E(
                "forward_timeout_seconds",
                "forwardTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("queue_length", "queueLength", int, is_required=True),
            E("allow_agent_logoff", "allowAgentLogoff", bool, is_required=True),
            E("play_music_on_hold", "playMusicOnHold", bool, is_required=True),
            E("play_comfort_message", "playComfortMessage", bool, is_required=True),
            E(
                "time_between_comfort_messages_seconds",
                "timeBetweenComfortMessagesSeconds",
                int,
                is_required=True,
            ),
            E("enable_guard_timer", "enableGuardTimer", bool, is_required=True),
            E("guard_timer_seconds", "guardTimerSeconds", int, is_required=True),
            E("agent_user_id", "agentUserId", str, is_array=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E(
                "allow_calls_to_agents_in_wrap_up",
                "allowCallsToAgentsInWrapUp",
                bool,
                is_required=True,
            ),
            E(
                "enable_call_queue_when_no_agents_available",
                "enableCallQueueWhenNoAgentsAvailable",
                bool,
                is_required=True,
            ),
            E("statistics_source", "statisticsSource", str, is_required=True),
        )


class GroupCallCenterAddInstanceRequest16(OCIRequest):
    """
    Add a Call Center instance to a group.

    The domain is required in the serviceUserId.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `GroupCallCenterAddInstanceRequest17()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        type (str): type
        policy (str): policy
        enable_video (bool): enableVideo
        queue_length (int): queueLength
        reporting_server_name (str): reportingServerName *Optional*
        allow_caller_to_dial_escape_digit (bool): allowCallerToDialEscapeDigit
        escape_digit (str): escapeDigit
        reset_call_statistics_upon_entry_in_queue (bool):
            resetCallStatisticsUponEntryInQueue *Optional*
        allow_agent_logoff (bool): allowAgentLogoff
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp *Optional*
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls *Optional*
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec
        internal_preferred_audio_codec (str): internalPreferredAudioCodec
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "type",
        "policy",
        "enable_video",
        "queue_length",
        "reporting_server_name",
        "allow_caller_to_dial_escape_digit",
        "escape_digit",
        "reset_call_statistics_upon_entry_in_queue",
        "allow_agent_logoff",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "play_ringing_when_offering_call",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileCallCenter,
                is_complex=True,
                is_required=True,
            ),
            E("type", "type", str, is_required=True),
            E("policy", "policy", str, is_required=True),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("queue_length", "queueLength", int, is_required=True),
            E("reporting_server_name", "reportingServerName", str),
            E(
                "allow_caller_to_dial_escape_digit",
                "allowCallerToDialEscapeDigit",
                bool,
                is_required=True,
            ),
            E("escape_digit", "escapeDigit", str, is_required=True),
            E(
                "reset_call_statistics_upon_entry_in_queue",
                "resetCallStatisticsUponEntryInQueue",
                bool,
            ),
            E("allow_agent_logoff", "allowAgentLogoff", bool, is_required=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E("allow_calls_to_agents_in_wrap_up", "allowCallsToAgentsInWrapUp", bool),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E("force_delivery_of_calls", "forceDeliveryOfCalls", bool),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
            E(
                "external_preferred_audio_codec",
                "externalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "internal_preferred_audio_codec",
                "internalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "play_ringing_when_offering_call",
                "playRingingWhenOfferingCall",
                bool,
                is_required=True,
            ),
        )


class GroupCallCenterAddInstanceRequest17(OCIRequest):
    """
    Add a Call Center instance to a group.

    The domain is required in the serviceUserId.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        type (str): type
        policy (str): policy
        enable_video (bool): enableVideo
        queue_length (int): queueLength
        reporting_server_name (str): reportingServerName *Optional*
        allow_caller_to_dial_escape_digit (bool): allowCallerToDialEscapeDigit
        escape_digit (str): escapeDigit
        reset_call_statistics_upon_entry_in_queue (bool):
            resetCallStatisticsUponEntryInQueue *Optional*
        allow_agent_logoff (bool): allowAgentLogoff
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp *Optional*
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls *Optional*
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents *Optional*
        agent_state_after_call (str): agentStateAfterCall *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec
        internal_preferred_audio_codec (str): internalPreferredAudioCodec
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "type",
        "policy",
        "enable_video",
        "queue_length",
        "reporting_server_name",
        "allow_caller_to_dial_escape_digit",
        "escape_digit",
        "reset_call_statistics_upon_entry_in_queue",
        "allow_agent_logoff",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "play_ringing_when_offering_call",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileCallCenter,
                is_complex=True,
                is_required=True,
            ),
            E("type", "type", str, is_required=True),
            E("policy", "policy", str, is_required=True),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("queue_length", "queueLength", int, is_required=True),
            E("reporting_server_name", "reportingServerName", str),
            E(
                "allow_caller_to_dial_escape_digit",
                "allowCallerToDialEscapeDigit",
                bool,
                is_required=True,
            ),
            E("escape_digit", "escapeDigit", str, is_required=True),
            E(
                "reset_call_statistics_upon_entry_in_queue",
                "resetCallStatisticsUponEntryInQueue",
                bool,
            ),
            E("allow_agent_logoff", "allowAgentLogoff", bool, is_required=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E("allow_calls_to_agents_in_wrap_up", "allowCallsToAgentsInWrapUp", bool),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E("force_delivery_of_calls", "forceDeliveryOfCalls", bool),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E(
                "external_preferred_audio_codec",
                "externalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "internal_preferred_audio_codec",
                "internalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "play_ringing_when_offering_call",
                "playRingingWhenOfferingCall",
                bool,
                is_required=True,
            ),
        )


class GroupCallCenterAddInstanceRequest17sp1(OCIRequest):
    """
    Add a Call Center instance to a group.

    The domain is required in the serviceUserId.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `GroupCallCenterAddInstanceRequest17sp3()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        type (str): type
        policy (str): policy
        enable_video (bool): enableVideo
        queue_length (int): queueLength
        enable_reporting (bool): enableReporting *Optional*
        reporting_server_name (str): reportingServerName *Optional*
        allow_caller_to_dial_escape_digit (bool): allowCallerToDialEscapeDigit
        escape_digit (str): escapeDigit
        reset_call_statistics_upon_entry_in_queue (bool):
            resetCallStatisticsUponEntryInQueue *Optional*
        allow_agent_logoff (bool): allowAgentLogoff
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp *Optional*
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls *Optional*
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents *Optional*
        agent_state_after_call (str): agentStateAfterCall *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec
        internal_preferred_audio_codec (str): internalPreferredAudioCodec
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "type",
        "policy",
        "enable_video",
        "queue_length",
        "enable_reporting",
        "reporting_server_name",
        "allow_caller_to_dial_escape_digit",
        "escape_digit",
        "reset_call_statistics_upon_entry_in_queue",
        "allow_agent_logoff",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "play_ringing_when_offering_call",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileCallCenter,
                is_complex=True,
                is_required=True,
            ),
            E("type", "type", str, is_required=True),
            E("policy", "policy", str, is_required=True),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("queue_length", "queueLength", int, is_required=True),
            E("enable_reporting", "enableReporting", bool),
            E("reporting_server_name", "reportingServerName", str),
            E(
                "allow_caller_to_dial_escape_digit",
                "allowCallerToDialEscapeDigit",
                bool,
                is_required=True,
            ),
            E("escape_digit", "escapeDigit", str, is_required=True),
            E(
                "reset_call_statistics_upon_entry_in_queue",
                "resetCallStatisticsUponEntryInQueue",
                bool,
            ),
            E("allow_agent_logoff", "allowAgentLogoff", bool, is_required=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E("allow_calls_to_agents_in_wrap_up", "allowCallsToAgentsInWrapUp", bool),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E("force_delivery_of_calls", "forceDeliveryOfCalls", bool),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E(
                "external_preferred_audio_codec",
                "externalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "internal_preferred_audio_codec",
                "internalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "play_ringing_when_offering_call",
                "playRingingWhenOfferingCall",
                bool,
                is_required=True,
            ),
        )


class GroupCallCenterAddInstanceRequest17sp3(OCIRequest):
    """
    Add a Call Center instance to a group.

    The domain is required in the serviceUserId.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by
    `GroupCallCenterAddInstanceRequest19()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        type (str): type
        policy (str): policy
        enable_video (bool): enableVideo
        queue_length (int): queueLength
        enable_reporting (bool): enableReporting *Optional*
        reporting_server_name (str): reportingServerName *Optional*
        allow_caller_to_dial_escape_digit (bool): allowCallerToDialEscapeDigit
        escape_digit (str): escapeDigit
        reset_call_statistics_upon_entry_in_queue (bool):
            resetCallStatisticsUponEntryInQueue
        allow_agent_logoff (bool): allowAgentLogoff
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp *Optional*
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls *Optional*
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents *Optional*
        agent_state_after_call (str): agentStateAfterCall *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec
        internal_preferred_audio_codec (str): internalPreferredAudioCodec
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "type",
        "policy",
        "enable_video",
        "queue_length",
        "enable_reporting",
        "reporting_server_name",
        "allow_caller_to_dial_escape_digit",
        "escape_digit",
        "reset_call_statistics_upon_entry_in_queue",
        "allow_agent_logoff",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "play_ringing_when_offering_call",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileCallCenter,
                is_complex=True,
                is_required=True,
            ),
            E("type", "type", str, is_required=True),
            E("policy", "policy", str, is_required=True),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("queue_length", "queueLength", int, is_required=True),
            E("enable_reporting", "enableReporting", bool),
            E("reporting_server_name", "reportingServerName", str),
            E(
                "allow_caller_to_dial_escape_digit",
                "allowCallerToDialEscapeDigit",
                bool,
                is_required=True,
            ),
            E("escape_digit", "escapeDigit", str, is_required=True),
            E(
                "reset_call_statistics_upon_entry_in_queue",
                "resetCallStatisticsUponEntryInQueue",
                bool,
                is_required=True,
            ),
            E("allow_agent_logoff", "allowAgentLogoff", bool, is_required=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E("allow_calls_to_agents_in_wrap_up", "allowCallsToAgentsInWrapUp", bool),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E("force_delivery_of_calls", "forceDeliveryOfCalls", bool),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E(
                "external_preferred_audio_codec",
                "externalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "internal_preferred_audio_codec",
                "internalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "play_ringing_when_offering_call",
                "playRingingWhenOfferingCall",
                bool,
                is_required=True,
            ),
        )


class GroupCallCenterAddInstanceRequest19(OCIRequest):
    """
    Add a Call Center instance to a group.

    The domain is required in the serviceUserId.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by
    `GroupCallCenterAddInstanceRequest22()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        type (str): type
        routing_type (str): routingType *Optional*
        policy (str): policy
        enable_video (bool): enableVideo
        queue_length (int): queueLength
        enable_reporting (bool): enableReporting *Optional*
        allow_caller_to_dial_escape_digit (bool): allowCallerToDialEscapeDigit
        escape_digit (str): escapeDigit
        reset_call_statistics_upon_entry_in_queue (bool):
            resetCallStatisticsUponEntryInQueue
        allow_agent_logoff (bool): allowAgentLogoff
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp *Optional*
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls *Optional*
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents *Optional*
        agent_state_after_call (str): agentStateAfterCall *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec
        internal_preferred_audio_codec (str): internalPreferredAudioCodec
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "type",
        "routing_type",
        "policy",
        "enable_video",
        "queue_length",
        "enable_reporting",
        "allow_caller_to_dial_escape_digit",
        "escape_digit",
        "reset_call_statistics_upon_entry_in_queue",
        "allow_agent_logoff",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "play_ringing_when_offering_call",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileCallCenter,
                is_complex=True,
                is_required=True,
            ),
            E("type", "type", str, is_required=True),
            E("routing_type", "routingType", str),
            E("policy", "policy", str, is_required=True),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("queue_length", "queueLength", int, is_required=True),
            E("enable_reporting", "enableReporting", bool),
            E(
                "allow_caller_to_dial_escape_digit",
                "allowCallerToDialEscapeDigit",
                bool,
                is_required=True,
            ),
            E("escape_digit", "escapeDigit", str, is_required=True),
            E(
                "reset_call_statistics_upon_entry_in_queue",
                "resetCallStatisticsUponEntryInQueue",
                bool,
                is_required=True,
            ),
            E("allow_agent_logoff", "allowAgentLogoff", bool, is_required=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E("allow_calls_to_agents_in_wrap_up", "allowCallsToAgentsInWrapUp", bool),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E("force_delivery_of_calls", "forceDeliveryOfCalls", bool),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E(
                "external_preferred_audio_codec",
                "externalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "internal_preferred_audio_codec",
                "internalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "play_ringing_when_offering_call",
                "playRingingWhenOfferingCall",
                bool,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        type (str): type
        routing_type (str): routingType *Optional*
        policy (str): policy
        enable_video (bool): enableVideo
        queue_length (int): queueLength
        enable_reporting (bool): enableReporting *Optional*
        allow_caller_to_dial_escape_digit (bool): allowCallerToDialEscapeDigit
        escape_digit (str): escapeDigit
        reset_call_statistics_upon_entry_in_queue (bool):
            resetCallStatisticsUponEntryInQueue
        allow_agent_logoff (bool): allowAgentLogoff
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp *Optional*
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls *Optional*
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents *Optional*
        agent_state_after_call (str): agentStateAfterCall *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec
        internal_preferred_audio_codec (str): internalPreferredAudioCodec
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "type",
        "routing_type",
        "policy",
        "enable_video",
        "queue_length",
        "enable_reporting",
        "allow_caller_to_dial_escape_digit",
        "escape_digit",
        "reset_call_statistics_upon_entry_in_queue",
        "allow_agent_logoff",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "play_ringing_when_offering_call",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileCallCenter,
                is_complex=True,
                is_required=True,
            ),
            E("type", "type", str, is_required=True),
            E("routing_type", "routingType", str),
            E("policy", "policy", str, is_required=True),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("queue_length", "queueLength", int, is_required=True),
            E("enable_reporting", "enableReporting", bool),
            E(
                "allow_caller_to_dial_escape_digit",
                "allowCallerToDialEscapeDigit",
                bool,
                is_required=True,
            ),
            E("escape_digit", "escapeDigit", str, is_required=True),
            E(
                "reset_call_statistics_upon_entry_in_queue",
                "resetCallStatisticsUponEntryInQueue",
                bool,
                is_required=True,
            ),
            E("allow_agent_logoff", "allowAgentLogoff", bool, is_required=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E("allow_calls_to_agents_in_wrap_up", "allowCallsToAgentsInWrapUp", bool),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E("force_delivery_of_calls", "forceDeliveryOfCalls", bool),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E(
                "external_preferred_audio_codec",
                "externalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "internal_preferred_audio_codec",
                "internalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "play_ringing_when_offering_call",
                "playRingingWhenOfferingCall",
                bool,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        include_agents_table (bool): includeAgentsTable
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "include_agents_table",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("include_agents_table", "includeAgentsTable", bool, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        exclude_agents_assigned_to_profile_name (str): excludeAgentsAssignedToProfileName
            *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_agent_threshold_profile
            (List[OCI.searchCriteriaAgentThresholdProfile]):
            searchCriteriaAgentThresholdProfile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "exclude_agents_assigned_to_profile_name",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_agent_threshold_profile",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "exclude_agents_assigned_to_profile_name",
                "excludeAgentsAssignedToProfileName",
                str,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_agent_threshold_profile",
                "searchCriteriaAgentThresholdProfile",
                OCI.SearchCriteriaAgentThresholdProfile,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        exclude_agents_assigned_to_profile_name (str): excludeAgentsAssignedToProfileName
            *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_agent_threshold_profile
            (List[OCI.searchCriteriaAgentThresholdProfile]):
            searchCriteriaAgentThresholdProfile *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "exclude_agents_assigned_to_profile_name",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_email_address",
        "search_criteria_agent_threshold_profile",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "exclude_agents_assigned_to_profile_name",
                "excludeAgentsAssignedToProfileName",
                str,
            ),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_agent_threshold_profile",
                "searchCriteriaAgentThresholdProfile",
                OCI.SearchCriteriaAgentThresholdProfile,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        profile_name (str): profileName
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "profile_name",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_email_address",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("profile_name", "profileName", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupCallCenterAgentThresholdProfileGetPagedSorted,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


class GroupCallCenterComfortMessageBypassModifyRequest(OCIRequest):
    """
    Modify a call center's comfort message bypass settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        is_active (bool): isActive *Optional*
        call_waiting_age_threshold_seconds (int): callWaitingAgeThresholdSeconds
            *Optional*
        play_announcement_after_ringing (bool): playAnnouncementAfterRinging *Optional*
        ring_time_before_playing_announcement_seconds (int):
            ringTimeBeforePlayingAnnouncementSeconds *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "is_active",
        "call_waiting_age_threshold_seconds",
        "play_announcement_after_ringing",
        "ring_time_before_playing_announcement_seconds",
        "audio_message_selection",
        "audio_file",
        "video_message_selection",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("is_active", "isActive", bool),
            E(
                "call_waiting_age_threshold_seconds",
                "callWaitingAgeThresholdSeconds",
                int,
            ),
            E("play_announcement_after_ringing", "playAnnouncementAfterRinging", bool),
            E(
                "ring_time_before_playing_announcement_seconds",
                "ringTimeBeforePlayingAnnouncementSeconds",
                int,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
        )


class GroupCallCenterComfortMessageBypassModifyRequest17(OCIRequest):
    """
    Modify a call center's comfort message bypass settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        is_active (bool): isActive *Optional*
        call_waiting_age_threshold_seconds (int): callWaitingAgeThresholdSeconds
            *Optional*
        play_announcement_after_ringing (bool): playAnnouncementAfterRinging *Optional*
        ring_time_before_playing_announcement_seconds (int):
            ringTimeBeforePlayingAnnouncementSeconds *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "is_active",
        "call_waiting_age_threshold_seconds",
        "play_announcement_after_ringing",
        "ring_time_before_playing_announcement_seconds",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("is_active", "isActive", bool),
            E(
                "call_waiting_age_threshold_seconds",
                "callWaitingAgeThresholdSeconds",
                int,
            ),
            E("play_announcement_after_ringing", "playAnnouncementAfterRinging", bool),
            E(
                "ring_time_before_playing_announcement_seconds",
                "ringTimeBeforePlayingAnnouncementSeconds",
                int,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=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): serviceUserId
        is_active (bool): isActive *Optional*
        call_waiting_age_threshold_seconds (int): callWaitingAgeThresholdSeconds
            *Optional*
        play_announcement_after_ringing (bool): playAnnouncementAfterRinging *Optional*
        ring_time_before_playing_announcement_seconds (int):
            ringTimeBeforePlayingAnnouncementSeconds *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "is_active",
        "call_waiting_age_threshold_seconds",
        "play_announcement_after_ringing",
        "ring_time_before_playing_announcement_seconds",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("is_active", "isActive", bool),
            E(
                "call_waiting_age_threshold_seconds",
                "callWaitingAgeThresholdSeconds",
                int,
            ),
            E("play_announcement_after_ringing", "playAnnouncementAfterRinging", bool),
            E(
                "ring_time_before_playing_announcement_seconds",
                "ringTimeBeforePlayingAnnouncementSeconds",
                int,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_call_center_scheduled_report_name
            (List[OCI.searchCriteriaCallCenterScheduledReportName]):
            searchCriteriaCallCenterScheduledReportName *Optional*
        search_criteria_exact_call_center_scheduled_report_created_by_supervisor
            (OCI.searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor):
            searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor *Optional*
        search_criteria_exact_call_center_report_template_key
            (OCI.searchCriteriaExactCallCenterReportTemplateKey):
            searchCriteriaExactCallCenterReportTemplateKey *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_call_center_scheduled_report_name",
        "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
        "search_criteria_exact_call_center_report_template_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_call_center_scheduled_report_name",
                "searchCriteriaCallCenterScheduledReportName",
                OCI.SearchCriteriaCallCenterScheduledReportName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
                "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor",
                OCI.SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_call_center_report_template_key",
                "searchCriteriaExactCallCenterReportTemplateKey",
                OCI.SearchCriteriaExactCallCenterReportTemplateKey,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_call_center_scheduled_report_name
            (List[OCI.searchCriteriaCallCenterScheduledReportName]):
            searchCriteriaCallCenterScheduledReportName *Optional*
        search_criteria_exact_call_center_scheduled_report_created_by_supervisor
            (OCI.searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor):
            searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor *Optional*
        search_criteria_exact_call_center_report_template_key
            (OCI.searchCriteriaExactCallCenterReportTemplateKey):
            searchCriteriaExactCallCenterReportTemplateKey *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_call_center_scheduled_report_name",
        "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
        "search_criteria_exact_call_center_report_template_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_call_center_scheduled_report_name",
                "searchCriteriaCallCenterScheduledReportName",
                OCI.SearchCriteriaCallCenterScheduledReportName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
                "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor",
                OCI.SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_call_center_report_template_key",
                "searchCriteriaExactCallCenterReportTemplateKey",
                OCI.SearchCriteriaExactCallCenterReportTemplateKey,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_call_center_scheduled_report_name
            (List[OCI.searchCriteriaCallCenterScheduledReportName]):
            searchCriteriaCallCenterScheduledReportName *Optional*
        search_criteria_exact_call_center_scheduled_report_created_by_supervisor
            (OCI.searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor):
            searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor *Optional*
        search_criteria_exact_call_center_report_template_key
            (OCI.searchCriteriaExactCallCenterReportTemplateKey):
            searchCriteriaExactCallCenterReportTemplateKey *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_call_center_scheduled_report_name",
        "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
        "search_criteria_exact_call_center_report_template_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_call_center_scheduled_report_name",
                "searchCriteriaCallCenterScheduledReportName",
                OCI.SearchCriteriaCallCenterScheduledReportName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_scheduled_report_created_by_supervisor",
                "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor",
                OCI.SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_call_center_report_template_key",
                "searchCriteriaExactCallCenterReportTemplateKey",
                OCI.SearchCriteriaExactCallCenterReportTemplateKey,
                is_complex=True,
            ),
        )


class GroupCallCenterForcedForwardingModifyRequest(OCIRequest):
    """
    Modify a call center's forced forwarding settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        is_active (bool): isActive *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        allow_enable_via_fac (bool): allowEnableViaFAC *Optional*
        play_announcement_before_forwarding (bool): playAnnouncementBeforeForwarding
            *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "is_active",
        "forward_to_phone_number",
        "allow_enable_via_fac",
        "play_announcement_before_forwarding",
        "audio_message_selection",
        "audio_file",
        "video_message_selection",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("allow_enable_via_fac", "allowEnableViaFAC", bool),
            E(
                "play_announcement_before_forwarding",
                "playAnnouncementBeforeForwarding",
                bool,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
        )


class GroupCallCenterForcedForwardingModifyRequest17(OCIRequest):
    """
    Modify a call center's forced forwarding settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        is_active (bool): isActive *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        allow_enable_via_fac (bool): allowEnableViaFAC *Optional*
        play_announcement_before_forwarding (bool): playAnnouncementBeforeForwarding
            *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "is_active",
        "forward_to_phone_number",
        "allow_enable_via_fac",
        "play_announcement_before_forwarding",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("allow_enable_via_fac", "allowEnableViaFAC", bool),
            E(
                "play_announcement_before_forwarding",
                "playAnnouncementBeforeForwarding",
                bool,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=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): serviceUserId
        is_active (bool): isActive *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        allow_enable_via_fac (bool): allowEnableViaFAC *Optional*
        play_announcement_before_forwarding (bool): playAnnouncementBeforeForwarding
            *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "is_active",
        "forward_to_phone_number",
        "allow_enable_via_fac",
        "play_announcement_before_forwarding",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("allow_enable_via_fac", "allowEnableViaFAC", bool),
            E(
                "play_announcement_before_forwarding",
                "playAnnouncementBeforeForwarding",
                bool,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=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): serviceUserId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_skill_level (OCI.searchCriteriaExactSkillLevel):
            searchCriteriaExactSkillLevel *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_exact_skill_level",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_skill_level",
                "searchCriteriaExactSkillLevel",
                OCI.SearchCriteriaExactSkillLevel,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        call_center_type (str): callCenterType
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "call_center_type",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("call_center_type", "callCenterType", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        call_center_type (str): callCenterType
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_group (List[OCI.searchCriteriaExactUserGroup]):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "call_center_type",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_email_address",
        "search_criteria_exact_user_group",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("call_center_type", "callCenterType", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupCallCenterGetAvailableAgentPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupCallCenterGetAvailableUserListRequest(OCIRequest):
    """
    Get a list of users that can be assigned to a Call Center group.

    Searching for users by group only makes sense when the call center is part of an
    Enterprise.

    The response is either `GroupCallCenterGetAvailableUserListResponse()` or
    `ErrorResponse()`.

    Replaced By: `GroupCallCenterGetAvailableAgentListRequest()` and
    `GroupCallCenterGetAvailableSupervisorListRequest()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_call_center_name (List[OCI.searchCriteriaCallCenterName]):
            searchCriteriaCallCenterName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_service_status (OCI.searchCriteriaServiceStatus):
            searchCriteriaServiceStatus *Optional*
        search_criteria_exact_hunt_policy (List[OCI.searchCriteriaExactHuntPolicy]):
            searchCriteriaExactHuntPolicy *Optional*
        search_criteria_exact_call_center_type
            (List[OCI.searchCriteriaExactCallCenterType]):
            searchCriteriaExactCallCenterType *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_id",
        "search_criteria_call_center_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_service_status",
        "search_criteria_exact_hunt_policy",
        "search_criteria_exact_call_center_type",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupCallCenterGetInstancePagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_call_center_name",
                "searchCriteriaCallCenterName",
                OCI.SearchCriteriaCallCenterName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_service_status",
                "searchCriteriaServiceStatus",
                OCI.SearchCriteriaServiceStatus,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_hunt_policy",
                "searchCriteriaExactHuntPolicy",
                OCI.SearchCriteriaExactHuntPolicy,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_call_center_type",
                "searchCriteriaExactCallCenterType",
                OCI.SearchCriteriaExactCallCenterType,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


class GroupCallCenterHolidayServiceModifyRequest(OCIRequest):
    """
    Modify a call center's holiday service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        action (str): action *Optional*
        holiday_schedule (str): holidaySchedule *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "holiday_schedule",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_file",
        "video_message_selection",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("holiday_schedule", "holidaySchedule", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
        )


class GroupCallCenterHolidayServiceModifyRequest17(OCIRequest):
    """
    Modify a call center's holiday service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        action (str): action *Optional*
        holiday_schedule (str): holidaySchedule *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "holiday_schedule",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("holiday_schedule", "holidaySchedule", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
        )


class GroupCallCenterHolidayServiceModifyRequest17sp1(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): serviceUserId
        action (str): action *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "holiday_schedule",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=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): serviceUserId
        action (str): action *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "holiday_schedule",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=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): serviceUserId
        agent_user_id_list (OCI.agentUserIdList): agentUserIdList *Optional*
        skilled_agent_user_id_list (List[OCI.skilledAgentUserIdList]):
            skilledAgentUserIdList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "agent_user_id_list",
        "skilled_agent_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "agent_user_id_list",
                "agentUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E(
                "skilled_agent_user_id_list",
                "skilledAgentUserIdList",
                OCI.CallCenterReplacementSkilledAgents,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupCallCenterModifyInstanceRequest(OCIRequest):
    """
    Request to modify a Call Center instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `GroupCallCenterModifyInstanceRequest16()`

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        policy (str): policy *Optional*
        hunt_after_no_answer (bool): huntAfterNoAnswer *Optional*
        no_answer_number_of_rings (int): noAnswerNumberOfRings *Optional*
        forward_after_timeout (bool): forwardAfterTimeout *Optional*
        forward_timeout_seconds (int): forwardTimeoutSeconds *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        enable_video (bool): enableVideo *Optional*
        queue_length (int): queueLength *Optional*
        allow_agent_logoff (bool): allowAgentLogoff *Optional*
        play_music_on_hold (bool): playMusicOnHold *Optional*
        play_comfort_message (bool): playComfortMessage *Optional*
        time_between_comfort_messages_seconds (int): timeBetweenComfortMessagesSeconds
            *Optional*
        enable_guard_timer (bool): enableGuardTimer *Optional*
        guard_timer_seconds (int): guardTimerSeconds *Optional*
        agent_user_id_list (OCI.agentUserIdList): agentUserIdList *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents *Optional*
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp *Optional*
        enable_call_queue_when_no_agents_available (bool):
            enableCallQueueWhenNoAgentsAvailable *Optional*
        statistics_source (str): statisticsSource *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "policy",
        "hunt_after_no_answer",
        "no_answer_number_of_rings",
        "forward_after_timeout",
        "forward_timeout_seconds",
        "forward_to_phone_number",
        "enable_video",
        "queue_length",
        "allow_agent_logoff",
        "play_music_on_hold",
        "play_comfort_message",
        "time_between_comfort_messages_seconds",
        "enable_guard_timer",
        "guard_timer_seconds",
        "agent_user_id_list",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "enable_call_queue_when_no_agents_available",
        "statistics_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("policy", "policy", str),
            E("hunt_after_no_answer", "huntAfterNoAnswer", bool),
            E("no_answer_number_of_rings", "noAnswerNumberOfRings", int),
            E("forward_after_timeout", "forwardAfterTimeout", bool),
            E("forward_timeout_seconds", "forwardTimeoutSeconds", int),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("enable_video", "enableVideo", bool),
            E("queue_length", "queueLength", int),
            E("allow_agent_logoff", "allowAgentLogoff", bool),
            E("play_music_on_hold", "playMusicOnHold", bool),
            E("play_comfort_message", "playComfortMessage", bool),
            E(
                "time_between_comfort_messages_seconds",
                "timeBetweenComfortMessagesSeconds",
                int,
            ),
            E("enable_guard_timer", "enableGuardTimer", bool),
            E("guard_timer_seconds", "guardTimerSeconds", int),
            E(
                "agent_user_id_list",
                "agentUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E("allow_call_waiting_for_agents", "allowCallWaitingForAgents", bool),
            E("allow_calls_to_agents_in_wrap_up", "allowCallsToAgentsInWrapUp", bool),
            E(
                "enable_call_queue_when_no_agents_available",
                "enableCallQueueWhenNoAgentsAvailable",
                bool,
            ),
            E("statistics_source", "statisticsSource", str),
        )


class GroupCallCenterModifyInstanceRequest16(OCIRequest):
    """
    Request to modify a Call Center instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        type (str): type *Optional*
        policy (str): policy *Optional*
        enable_video (bool): enableVideo *Optional*
        queue_length (int): queueLength *Optional*
        reporting_server_name (str): reportingServerName *Optional*
        allow_caller_to_dial_escape_digit (bool): allowCallerToDialEscapeDigit *Optional*
        escape_digit (str): escapeDigit *Optional*
        reset_call_statistics_upon_entry_in_queue (bool):
            resetCallStatisticsUponEntryInQueue *Optional*
        allow_agent_logoff (bool): allowAgentLogoff *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents *Optional*
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp *Optional*
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls *Optional*
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents *Optional*
        agent_state_after_call (str): agentStateAfterCall *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec *Optional*
        internal_preferred_audio_codec (str): internalPreferredAudioCodec *Optional*
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "type",
        "policy",
        "enable_video",
        "queue_length",
        "reporting_server_name",
        "allow_caller_to_dial_escape_digit",
        "escape_digit",
        "reset_call_statistics_upon_entry_in_queue",
        "allow_agent_logoff",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "play_ringing_when_offering_call",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("type", "type", str),
            E("policy", "policy", str),
            E("enable_video", "enableVideo", bool),
            E("queue_length", "queueLength", int),
            E("reporting_server_name", "reportingServerName", str),
            E(
                "allow_caller_to_dial_escape_digit",
                "allowCallerToDialEscapeDigit",
                bool,
            ),
            E("escape_digit", "escapeDigit", str),
            E(
                "reset_call_statistics_upon_entry_in_queue",
                "resetCallStatisticsUponEntryInQueue",
                bool,
            ),
            E("allow_agent_logoff", "allowAgentLogoff", bool),
            E("allow_call_waiting_for_agents", "allowCallWaitingForAgents", bool),
            E("allow_calls_to_agents_in_wrap_up", "allowCallsToAgentsInWrapUp", bool),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E("force_delivery_of_calls", "forceDeliveryOfCalls", bool),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E("external_preferred_audio_codec", "externalPreferredAudioCodec", str),
            E("internal_preferred_audio_codec", "internalPreferredAudioCodec", str),
            E("play_ringing_when_offering_call", "playRingingWhenOfferingCall", bool),
        )


class GroupCallCenterModifyInstanceRequest17sp1(OCIRequest):
    """
    Request to modify a Call Center instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `GroupCallCenterModifyInstanceRequest19()`

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        type (str): type *Optional*
        policy (str): policy *Optional*
        enable_video (bool): enableVideo *Optional*
        queue_length (int): queueLength *Optional*
        enable_reporting (bool): enableReporting *Optional*
        reporting_server_name (str): reportingServerName *Optional*
        allow_caller_to_dial_escape_digit (bool): allowCallerToDialEscapeDigit *Optional*
        escape_digit (str): escapeDigit *Optional*
        reset_call_statistics_upon_entry_in_queue (bool):
            resetCallStatisticsUponEntryInQueue *Optional*
        allow_agent_logoff (bool): allowAgentLogoff *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents *Optional*
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp *Optional*
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls *Optional*
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents *Optional*
        agent_state_after_call (str): agentStateAfterCall *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec *Optional*
        internal_preferred_audio_codec (str): internalPreferredAudioCodec *Optional*
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "type",
        "policy",
        "enable_video",
        "queue_length",
        "enable_reporting",
        "reporting_server_name",
        "allow_caller_to_dial_escape_digit",
        "escape_digit",
        "reset_call_statistics_upon_entry_in_queue",
        "allow_agent_logoff",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "play_ringing_when_offering_call",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("type", "type", str),
            E("policy", "policy", str),
            E("enable_video", "enableVideo", bool),
            E("queue_length", "queueLength", int),
            E("enable_reporting", "enableReporting", bool),
            E("reporting_server_name", "reportingServerName", str),
            E(
                "allow_caller_to_dial_escape_digit",
                "allowCallerToDialEscapeDigit",
                bool,
            ),
            E("escape_digit", "escapeDigit", str),
            E(
                "reset_call_statistics_upon_entry_in_queue",
                "resetCallStatisticsUponEntryInQueue",
                bool,
            ),
            E("allow_agent_logoff", "allowAgentLogoff", bool),
            E("allow_call_waiting_for_agents", "allowCallWaitingForAgents", bool),
            E("allow_calls_to_agents_in_wrap_up", "allowCallsToAgentsInWrapUp", bool),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E("force_delivery_of_calls", "forceDeliveryOfCalls", bool),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E("external_preferred_audio_codec", "externalPreferredAudioCodec", str),
            E("internal_preferred_audio_codec", "internalPreferredAudioCodec", str),
            E("play_ringing_when_offering_call", "playRingingWhenOfferingCall", bool),
        )


class GroupCallCenterModifyInstanceRequest19(OCIRequest):
    """
    Request to modify a Call Center instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        type (str): type *Optional*
        routing_type (str): routingType *Optional*
        policy (str): policy *Optional*
        enable_video (bool): enableVideo *Optional*
        queue_length (int): queueLength *Optional*
        enable_reporting (bool): enableReporting *Optional*
        allow_caller_to_dial_escape_digit (bool): allowCallerToDialEscapeDigit *Optional*
        escape_digit (str): escapeDigit *Optional*
        reset_call_statistics_upon_entry_in_queue (bool):
            resetCallStatisticsUponEntryInQueue *Optional*
        allow_agent_logoff (bool): allowAgentLogoff *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents *Optional*
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp *Optional*
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls *Optional*
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents *Optional*
        agent_state_after_call (str): agentStateAfterCall *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec *Optional*
        internal_preferred_audio_codec (str): internalPreferredAudioCodec *Optional*
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "type",
        "routing_type",
        "policy",
        "enable_video",
        "queue_length",
        "enable_reporting",
        "allow_caller_to_dial_escape_digit",
        "escape_digit",
        "reset_call_statistics_upon_entry_in_queue",
        "allow_agent_logoff",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "play_ringing_when_offering_call",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("type", "type", str),
            E("routing_type", "routingType", str),
            E("policy", "policy", str),
            E("enable_video", "enableVideo", bool),
            E("queue_length", "queueLength", int),
            E("enable_reporting", "enableReporting", bool),
            E(
                "allow_caller_to_dial_escape_digit",
                "allowCallerToDialEscapeDigit",
                bool,
            ),
            E("escape_digit", "escapeDigit", str),
            E(
                "reset_call_statistics_upon_entry_in_queue",
                "resetCallStatisticsUponEntryInQueue",
                bool,
            ),
            E("allow_agent_logoff", "allowAgentLogoff", bool),
            E("allow_call_waiting_for_agents", "allowCallWaitingForAgents", bool),
            E("allow_calls_to_agents_in_wrap_up", "allowCallsToAgentsInWrapUp", bool),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E("force_delivery_of_calls", "forceDeliveryOfCalls", bool),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E("external_preferred_audio_codec", "externalPreferredAudioCodec", str),
            E("internal_preferred_audio_codec", "internalPreferredAudioCodec", str),
            E("play_ringing_when_offering_call", "playRingingWhenOfferingCall", bool),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        type (str): type *Optional*
        routing_type (str): routingType *Optional*
        policy (str): policy *Optional*
        enable_video (bool): enableVideo *Optional*
        queue_length (int): queueLength *Optional*
        enable_reporting (bool): enableReporting *Optional*
        allow_caller_to_dial_escape_digit (bool): allowCallerToDialEscapeDigit *Optional*
        escape_digit (str): escapeDigit *Optional*
        reset_call_statistics_upon_entry_in_queue (bool):
            resetCallStatisticsUponEntryInQueue *Optional*
        allow_agent_logoff (bool): allowAgentLogoff *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents *Optional*
        allow_calls_to_agents_in_wrap_up (bool): allowCallsToAgentsInWrapUp *Optional*
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls *Optional*
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents *Optional*
        agent_state_after_call (str): agentStateAfterCall *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec *Optional*
        internal_preferred_audio_codec (str): internalPreferredAudioCodec *Optional*
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "type",
        "routing_type",
        "policy",
        "enable_video",
        "queue_length",
        "enable_reporting",
        "allow_caller_to_dial_escape_digit",
        "escape_digit",
        "reset_call_statistics_upon_entry_in_queue",
        "allow_agent_logoff",
        "allow_call_waiting_for_agents",
        "allow_calls_to_agents_in_wrap_up",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "play_ringing_when_offering_call",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("type", "type", str),
            E("routing_type", "routingType", str),
            E("policy", "policy", str),
            E("enable_video", "enableVideo", bool),
            E("queue_length", "queueLength", int),
            E("enable_reporting", "enableReporting", bool),
            E(
                "allow_caller_to_dial_escape_digit",
                "allowCallerToDialEscapeDigit",
                bool,
            ),
            E("escape_digit", "escapeDigit", str),
            E(
                "reset_call_statistics_upon_entry_in_queue",
                "resetCallStatisticsUponEntryInQueue",
                bool,
            ),
            E("allow_agent_logoff", "allowAgentLogoff", bool),
            E("allow_call_waiting_for_agents", "allowCallWaitingForAgents", bool),
            E("allow_calls_to_agents_in_wrap_up", "allowCallsToAgentsInWrapUp", bool),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E("force_delivery_of_calls", "forceDeliveryOfCalls", bool),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E("external_preferred_audio_codec", "externalPreferredAudioCodec", str),
            E("internal_preferred_audio_codec", "internalPreferredAudioCodec", str),
            E("play_ringing_when_offering_call", "playRingingWhenOfferingCall", bool),
            E("network_class_of_service", "networkClassOfService", str),
        )


class GroupCallCenterNightServiceModifyRequest(OCIRequest):
    """
    Modify a call center's night service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        action (str): action *Optional*
        business_hours (str): businessHours *Optional*
        force_night_service (bool): forceNightService *Optional*
        allow_manual_override_via_fac (bool): allowManualOverrideViaFAC *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        manual_announcement_mode (str): manualAnnouncementMode *Optional*
        manual_audio_message_selection (str): manualAudioMessageSelection *Optional*
        manual_audio_file (OCI.manualAudioFile): manualAudioFile *Optional*
        manual_video_message_selection (str): manualVideoMessageSelection *Optional*
        manual_video_file (OCI.manualVideoFile): manualVideoFile *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "business_hours",
        "force_night_service",
        "allow_manual_override_via_fac",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_file",
        "video_message_selection",
        "video_file",
        "manual_announcement_mode",
        "manual_audio_message_selection",
        "manual_audio_file",
        "manual_video_message_selection",
        "manual_video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("business_hours", "businessHours", str),
            E("force_night_service", "forceNightService", bool),
            E("allow_manual_override_via_fac", "allowManualOverrideViaFAC", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("manual_announcement_mode", "manualAnnouncementMode", str),
            E("manual_audio_message_selection", "manualAudioMessageSelection", str),
            E(
                "manual_audio_file",
                "manualAudioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("manual_video_message_selection", "manualVideoMessageSelection", str),
            E(
                "manual_video_file",
                "manualVideoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
        )


class GroupCallCenterNightServiceModifyRequest17(OCIRequest):
    """
    Modify a call center's night service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        action (str): action *Optional*
        business_hours (str): businessHours *Optional*
        force_night_service (bool): forceNightService *Optional*
        allow_manual_override_via_fac (bool): allowManualOverrideViaFAC *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
        manual_announcement_mode (str): manualAnnouncementMode *Optional*
        manual_audio_message_selection (str): manualAudioMessageSelection *Optional*
        manual_audio_url_list (OCI.manualAudioUrlList): manualAudioUrlList *Optional*
        manual_audio_file_list (OCI.manualAudioFileList): manualAudioFileList *Optional*
        manual_video_message_selection (str): manualVideoMessageSelection *Optional*
        manual_video_url_list (OCI.manualVideoUrlList): manualVideoUrlList *Optional*
        manual_video_file_list (OCI.manualVideoFileList): manualVideoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "business_hours",
        "force_night_service",
        "allow_manual_override_via_fac",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
        "manual_announcement_mode",
        "manual_audio_message_selection",
        "manual_audio_url_list",
        "manual_audio_file_list",
        "manual_video_message_selection",
        "manual_video_url_list",
        "manual_video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("business_hours", "businessHours", str),
            E("force_night_service", "forceNightService", bool),
            E("allow_manual_override_via_fac", "allowManualOverrideViaFAC", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("manual_announcement_mode", "manualAnnouncementMode", str),
            E("manual_audio_message_selection", "manualAudioMessageSelection", str),
            E(
                "manual_audio_url_list",
                "manualAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "manual_audio_file_list",
                "manualAudioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("manual_video_message_selection", "manualVideoMessageSelection", str),
            E(
                "manual_video_url_list",
                "manualVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "manual_video_file_list",
                "manualVideoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
        )


class GroupCallCenterNightServiceModifyRequest17sp1(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): serviceUserId
        action (str): action *Optional*
        business_hours (OCI.businessHours): businessHours *Optional*
        force_night_service (bool): forceNightService *Optional*
        allow_manual_override_via_fac (bool): allowManualOverrideViaFAC *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
        manual_announcement_mode (str): manualAnnouncementMode *Optional*
        manual_audio_message_selection (str): manualAudioMessageSelection *Optional*
        manual_audio_url_list (OCI.manualAudioUrlList): manualAudioUrlList *Optional*
        manual_audio_file_list (OCI.manualAudioFileList): manualAudioFileList *Optional*
        manual_video_message_selection (str): manualVideoMessageSelection *Optional*
        manual_video_url_list (OCI.manualVideoUrlList): manualVideoUrlList *Optional*
        manual_video_file_list (OCI.manualVideoFileList): manualVideoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "business_hours",
        "force_night_service",
        "allow_manual_override_via_fac",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
        "manual_announcement_mode",
        "manual_audio_message_selection",
        "manual_audio_url_list",
        "manual_audio_file_list",
        "manual_video_message_selection",
        "manual_video_url_list",
        "manual_video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("business_hours", "businessHours", OCI.TimeSchedule, is_complex=True),
            E("force_night_service", "forceNightService", bool),
            E("allow_manual_override_via_fac", "allowManualOverrideViaFAC", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("manual_announcement_mode", "manualAnnouncementMode", str),
            E("manual_audio_message_selection", "manualAudioMessageSelection", str),
            E(
                "manual_audio_url_list",
                "manualAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "manual_audio_file_list",
                "manualAudioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("manual_video_message_selection", "manualVideoMessageSelection", str),
            E(
                "manual_video_url_list",
                "manualVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "manual_video_file_list",
                "manualVideoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=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): serviceUserId
        action (str): action *Optional*
        business_hours (OCI.businessHours): businessHours *Optional*
        force_night_service (bool): forceNightService *Optional*
        allow_manual_override_via_fac (bool): allowManualOverrideViaFAC *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
        manual_announcement_mode (str): manualAnnouncementMode *Optional*
        manual_audio_message_selection (str): manualAudioMessageSelection *Optional*
        manual_audio_url_list (OCI.manualAudioUrlList): manualAudioUrlList *Optional*
        manual_audio_file_list (OCI.manualAudioFileList): manualAudioFileList *Optional*
        manual_video_message_selection (str): manualVideoMessageSelection *Optional*
        manual_video_url_list (OCI.manualVideoUrlList): manualVideoUrlList *Optional*
        manual_video_file_list (OCI.manualVideoFileList): manualVideoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "business_hours",
        "force_night_service",
        "allow_manual_override_via_fac",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
        "manual_announcement_mode",
        "manual_audio_message_selection",
        "manual_audio_url_list",
        "manual_audio_file_list",
        "manual_video_message_selection",
        "manual_video_url_list",
        "manual_video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("business_hours", "businessHours", OCI.TimeSchedule, is_complex=True),
            E("force_night_service", "forceNightService", bool),
            E("allow_manual_override_via_fac", "allowManualOverrideViaFAC", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("manual_announcement_mode", "manualAnnouncementMode", str),
            E("manual_audio_message_selection", "manualAudioMessageSelection", str),
            E(
                "manual_audio_url_list",
                "manualAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "manual_audio_file_list",
                "manualAudioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("manual_video_message_selection", "manualVideoMessageSelection", str),
            E(
                "manual_video_url_list",
                "manualVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "manual_video_file_list",
                "manualVideoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
        )


class GroupCallCenterOverflowModifyRequest(OCIRequest):
    """
    Modify a call center's overflow settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        action (str): action *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        overflow_after_timeout (bool): overflowAfterTimeout *Optional*
        timeout_seconds (int): timeoutSeconds *Optional*
        play_announcement_before_overflow_processing (bool):
            playAnnouncementBeforeOverflowProcessing *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "transfer_phone_number",
        "overflow_after_timeout",
        "timeout_seconds",
        "play_announcement_before_overflow_processing",
        "audio_message_selection",
        "audio_file",
        "video_message_selection",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("overflow_after_timeout", "overflowAfterTimeout", bool),
            E("timeout_seconds", "timeoutSeconds", int),
            E(
                "play_announcement_before_overflow_processing",
                "playAnnouncementBeforeOverflowProcessing",
                bool,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
        )


class GroupCallCenterOverflowModifyRequest17(OCIRequest):
    """
    Modify a call center's overflow settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        action (str): action *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        overflow_after_timeout (bool): overflowAfterTimeout *Optional*
        timeout_seconds (int): timeoutSeconds *Optional*
        play_announcement_before_overflow_processing (bool):
            playAnnouncementBeforeOverflowProcessing *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "transfer_phone_number",
        "overflow_after_timeout",
        "timeout_seconds",
        "play_announcement_before_overflow_processing",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("overflow_after_timeout", "overflowAfterTimeout", bool),
            E("timeout_seconds", "timeoutSeconds", int),
            E(
                "play_announcement_before_overflow_processing",
                "playAnnouncementBeforeOverflowProcessing",
                bool,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=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): serviceUserId
        action (str): action *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        overflow_after_timeout (bool): overflowAfterTimeout *Optional*
        timeout_seconds (int): timeoutSeconds *Optional*
        play_announcement_before_overflow_processing (bool):
            playAnnouncementBeforeOverflowProcessing *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "transfer_phone_number",
        "overflow_after_timeout",
        "timeout_seconds",
        "play_announcement_before_overflow_processing",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("overflow_after_timeout", "overflowAfterTimeout", bool),
            E("timeout_seconds", "timeoutSeconds", int),
            E(
                "play_announcement_before_overflow_processing",
                "playAnnouncementBeforeOverflowProcessing",
                bool,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
        )


class GroupCallCenterStrandedCallModifyRequest(OCIRequest):
    """
    Modify a call center's stranded call settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        action (str): action *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "transfer_phone_number",
        "audio_message_selection",
        "audio_file",
        "video_message_selection",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
        )


class GroupCallCenterStrandedCallModifyRequest17(OCIRequest):
    """
    Modify a call center's stranded call settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        action (str): action *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "transfer_phone_number",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=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): serviceUserId
        action (str): action *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "transfer_phone_number",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
        )


class GroupCallCenterStrandedCallUnavailableModifyRequest(OCIRequest):
    """
    Modify a call center's stranded calls - unavailable settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        condition_policy_on_number_of_agents_with_specified_unavailable_code (bool):
            conditionPolicyOnNumberOfAgentsWithSpecifiedUnavailableCode *Optional*
        number_of_agents_with_specified_unavailable_code (int):
            numberOfAgentsWithSpecifiedUnavailableCode *Optional*
        agents_unavailable_code (str): agentsUnavailableCode *Optional*
        action (str): action *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "condition_policy_on_number_of_agents_with_specified_unavailable_code",
        "number_of_agents_with_specified_unavailable_code",
        "agents_unavailable_code",
        "action",
        "transfer_phone_number",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "condition_policy_on_number_of_agents_with_specified_unavailable_code",
                "conditionPolicyOnNumberOfAgentsWithSpecifiedUnavailableCode",
                bool,
            ),
            E(
                "number_of_agents_with_specified_unavailable_code",
                "numberOfAgentsWithSpecifiedUnavailableCode",
                int,
            ),
            E("agents_unavailable_code", "agentsUnavailableCode", str),
            E("action", "action", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=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): serviceUserId
        condition_policy_on_number_of_agents_with_specified_unavailable_code (bool):
            conditionPolicyOnNumberOfAgentsWithSpecifiedUnavailableCode *Optional*
        number_of_agents_with_specified_unavailable_code (int):
            numberOfAgentsWithSpecifiedUnavailableCode *Optional*
        agents_unavailable_code (str): agentsUnavailableCode *Optional*
        action (str): action *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "condition_policy_on_number_of_agents_with_specified_unavailable_code",
        "number_of_agents_with_specified_unavailable_code",
        "agents_unavailable_code",
        "action",
        "transfer_phone_number",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "condition_policy_on_number_of_agents_with_specified_unavailable_code",
                "conditionPolicyOnNumberOfAgentsWithSpecifiedUnavailableCode",
                bool,
            ),
            E(
                "number_of_agents_with_specified_unavailable_code",
                "numberOfAgentsWithSpecifiedUnavailableCode",
                int,
            ),
            E("agents_unavailable_code", "agentsUnavailableCode", str),
            E("action", "action", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupCallParkGetAvailableAlternateRecallUserPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        name (str): name *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        name (str): name *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_email_address",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupCallParkGetAvailableUserPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        name (str): name *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        name (str): name *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_email_address",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupCallPickupGetAvailableUserPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        name (str): name
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_department_name",
        "search_criteria_email_address",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupCallPickupGetInstancePagedSorted,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


class GroupCollaborateBridgeAddInstanceRequest(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()`. Replaced by
    `GroupCollaborateBridgeAddInstanceRequest20sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        maximum_bridge_participants (OCI.maximumBridgeParticipants):
            maximumBridgeParticipants
        network_class_of_service (str): networkClassOfService *Optional*
        max_collaborate_room_participants (int): maxCollaborateRoomParticipants
        support_outdial (bool): supportOutdial
        collaborate_owner_user_id (List[str]): collaborateOwnerUserId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "maximum_bridge_participants",
        "network_class_of_service",
        "max_collaborate_room_participants",
        "support_outdial",
        "collaborate_owner_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E(
                "maximum_bridge_participants",
                "maximumBridgeParticipants",
                OCI.CollaborateBridgeMaximumParticipants,
                is_complex=True,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "max_collaborate_room_participants",
                "maxCollaborateRoomParticipants",
                int,
                is_required=True,
            ),
            E("support_outdial", "supportOutdial", bool, is_required=True),
            E(
                "collaborate_owner_user_id",
                "collaborateOwnerUserId",
                str,
                is_array=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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        maximum_bridge_participants (OCI.maximumBridgeParticipants):
            maximumBridgeParticipants
        network_class_of_service (str): networkClassOfService *Optional*
        max_collaborate_room_participants (int): maxCollaborateRoomParticipants
        support_outdial (bool): supportOutdial
        collaborate_owner_user_id (List[str]): collaborateOwnerUserId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "maximum_bridge_participants",
        "network_class_of_service",
        "max_collaborate_room_participants",
        "support_outdial",
        "collaborate_owner_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E(
                "maximum_bridge_participants",
                "maximumBridgeParticipants",
                OCI.CollaborateBridgeMaximumParticipants,
                is_complex=True,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "max_collaborate_room_participants",
                "maxCollaborateRoomParticipants",
                int,
                is_required=True,
            ),
            E("support_outdial", "supportOutdial", bool, is_required=True),
            E(
                "collaborate_owner_user_id",
                "collaborateOwnerUserId",
                str,
                is_array=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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        add_phone_number_to_group (bool): addPhoneNumberToGroup *Optional*
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        maximum_bridge_participants (OCI.maximumBridgeParticipants):
            maximumBridgeParticipants
        network_class_of_service (str): networkClassOfService *Optional*
        max_collaborate_room_participants (int): maxCollaborateRoomParticipants
        support_outdial (bool): supportOutdial
        collaborate_owner_user_id (List[str]): collaborateOwnerUserId *Optional*
        service (List[OCI.service]): service *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "add_phone_number_to_group",
        "service_instance_profile",
        "maximum_bridge_participants",
        "network_class_of_service",
        "max_collaborate_room_participants",
        "support_outdial",
        "collaborate_owner_user_id",
        "service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("add_phone_number_to_group", "addPhoneNumberToGroup", bool),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E(
                "maximum_bridge_participants",
                "maximumBridgeParticipants",
                OCI.CollaborateBridgeMaximumParticipants,
                is_complex=True,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "max_collaborate_room_participants",
                "maxCollaborateRoomParticipants",
                int,
                is_required=True,
            ),
            E("support_outdial", "supportOutdial", bool, is_required=True),
            E(
                "collaborate_owner_user_id",
                "collaborateOwnerUserId",
                str,
                is_array=True,
            ),
            E(
                "service",
                "service",
                OCI.ConsolidatedUserServiceAssignment,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_dn_activation (OCI.searchCriteriaExactDnActivation):
            searchCriteriaExactDnActivation *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_department_name",
        "search_criteria_group_id",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_exact_dn_activation",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupCollaborateBridgeGetAvailableUserPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_dn_activation",
                "searchCriteriaExactDnActivation",
                OCI.SearchCriteriaExactDnActivation,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_dn_activation (OCI.searchCriteriaExactDnActivation):
            searchCriteriaExactDnActivation *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_last_name",
        "search_criteria_department_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_exact_dn_activation",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupCollaborateBridgeGetInstancePagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_dn_activation",
                "searchCriteriaExactDnActivation",
                OCI.SearchCriteriaExactDnActivation,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


class GroupCollaborateBridgeModifyInstanceRequest(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()`. Replaced by:
    `GroupCollaborateBridgeModifyInstanceRequest20sp1()`

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        maximum_bridge_participants (OCI.maximumBridgeParticipants):
            maximumBridgeParticipants *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        max_collaborate_room_participants (int): maxCollaborateRoomParticipants *Optional*
        support_outdial (bool): supportOutdial *Optional*
        collaborate_owner_user_id_list (OCI.collaborateOwnerUserIdList):
            collaborateOwnerUserIdList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "maximum_bridge_participants",
        "network_class_of_service",
        "max_collaborate_room_participants",
        "support_outdial",
        "collaborate_owner_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E(
                "maximum_bridge_participants",
                "maximumBridgeParticipants",
                OCI.CollaborateBridgeMaximumParticipants,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "max_collaborate_room_participants",
                "maxCollaborateRoomParticipants",
                int,
            ),
            E("support_outdial", "supportOutdial", bool),
            E(
                "collaborate_owner_user_id_list",
                "collaborateOwnerUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        maximum_bridge_participants (OCI.maximumBridgeParticipants):
            maximumBridgeParticipants *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        max_collaborate_room_participants (int): maxCollaborateRoomParticipants *Optional*
        support_outdial (bool): supportOutdial *Optional*
        collaborate_owner_user_id_list (OCI.collaborateOwnerUserIdList):
            collaborateOwnerUserIdList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "maximum_bridge_participants",
        "network_class_of_service",
        "max_collaborate_room_participants",
        "support_outdial",
        "collaborate_owner_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E(
                "maximum_bridge_participants",
                "maximumBridgeParticipants",
                OCI.CollaborateBridgeMaximumParticipants,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "max_collaborate_room_participants",
                "maxCollaborateRoomParticipants",
                int,
            ),
            E("support_outdial", "supportOutdial", bool),
            E(
                "collaborate_owner_user_id_list",
                "collaborateOwnerUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=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 only used in
    Amplify data mode and ignored in AS and XS data mode: servicePolicy,
    callProcessingSliceId, provisioningSliceId, subscriberPartition.  When the
    callProcessingSliceId or provisioningSliceId is not specified in the AmplifyDataMode,
    the default slice Id is assigned to the Group.  Only Provisioning admin and above can
    change the callProcessingSliceId, provisioningSliceId, and subscriberPartition.  The
    following elements are only used in Amplify and 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 Amplify and 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 (str): serviceProviderId *Optional*
        service_provider_external_id (str): serviceProviderExternalId *Optional*
        group_id (str): groupId *Optional*
        group_external_id (str): groupExternalId *Optional*
        default_domain (str): defaultDomain
        user_limit (int): userLimit
        group_name (str): groupName *Optional*
        calling_line_id_name (str): callingLineIdName *Optional*
        time_zone (str): timeZone *Optional*
        location_dialing_code (str): locationDialingCode *Optional*
        contact (OCI.contact): contact *Optional*
        address (OCI.address): address *Optional*
        service_policy (str): servicePolicy *Optional*
        call_processing_slice_id (str): callProcessingSliceId *Optional*
        provisioning_slice_id (str): provisioningSliceId *Optional*
        subscriber_partition (str): subscriberPartition *Optional*
        preferred_data_center (str): preferredDataCenter *Optional*
        default_user_calling_line_id_phone_number (str):
            defaultUserCallingLineIdPhoneNumber *Optional*
        domain (List[str]): domain *Optional*
        admin (List[OCI.admin]): admin *Optional*
        min_extension_length (int): minExtensionLength *Optional*
        max_extension_length (int): maxExtensionLength *Optional*
        default_extension_length (int): defaultExtensionLength *Optional*
        group_service_authorization_and_assignment
            (List[OCI.groupServiceAuthorizationAndAssignment]):
            groupServiceAuthorizationAndAssignment *Optional*
        user_service_authorization (List[OCI.userServiceAuthorization]):
            userServiceAuthorization *Optional*
        service_pack_authorization (List[OCI.servicePackAuthorization]):
            servicePackAuthorization *Optional*
        activatable_phone_number (List[OCI.activatablePhoneNumber]):
            activatablePhoneNumber *Optional*
        activatable_dn_range (List[OCI.activatableDNRange]): activatableDNRange *Optional*
        routing_profile (str): routingProfile *Optional*
        meet_me_conferencing_allocated_ports (OCI.meetMeConferencingAllocatedPorts):
            meetMeConferencingAllocatedPorts *Optional*
        trunk_group_max_active_calls (int): trunkGroupMaxActiveCalls *Optional*
        trunk_group_bursting_max_active_calls (OCI.trunkGroupBurstingMaxActiveCalls):
            trunkGroupBurstingMaxActiveCalls *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_provider_external_id",
        "group_id",
        "group_external_id",
        "default_domain",
        "user_limit",
        "group_name",
        "calling_line_id_name",
        "time_zone",
        "location_dialing_code",
        "contact",
        "address",
        "service_policy",
        "call_processing_slice_id",
        "provisioning_slice_id",
        "subscriber_partition",
        "preferred_data_center",
        "default_user_calling_line_id_phone_number",
        "domain",
        "admin",
        "min_extension_length",
        "max_extension_length",
        "default_extension_length",
        "group_service_authorization_and_assignment",
        "user_service_authorization",
        "service_pack_authorization",
        "activatable_phone_number",
        "activatable_dn_range",
        "routing_profile",
        "meet_me_conferencing_allocated_ports",
        "trunk_group_max_active_calls",
        "trunk_group_bursting_max_active_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("service_provider_external_id", "serviceProviderExternalId", str),
            E("group_id", "groupId", str),
            E("group_external_id", "groupExternalId", str),
            E("default_domain", "defaultDomain", str, is_required=True),
            E("user_limit", "userLimit", int, is_required=True),
            E("group_name", "groupName", str),
            E("calling_line_id_name", "callingLineIdName", str),
            E("time_zone", "timeZone", str),
            E("location_dialing_code", "locationDialingCode", str),
            E("contact", "contact", OCI.Contact, is_complex=True),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("service_policy", "servicePolicy", str),
            E("call_processing_slice_id", "callProcessingSliceId", str),
            E("provisioning_slice_id", "provisioningSliceId", str),
            E("subscriber_partition", "subscriberPartition", str),
            E("preferred_data_center", "preferredDataCenter", str),
            E(
                "default_user_calling_line_id_phone_number",
                "defaultUserCallingLineIdPhoneNumber",
                str,
            ),
            E("domain", "domain", str, is_array=True),
            E("admin", "admin", OCI.GroupAdmin, is_complex=True, is_array=True),
            E("min_extension_length", "minExtensionLength", int),
            E("max_extension_length", "maxExtensionLength", int),
            E("default_extension_length", "defaultExtensionLength", int),
            E(
                "group_service_authorization_and_assignment",
                "groupServiceAuthorizationAndAssignment",
                OCI.GroupServiceAuthorizationAndAssignment,
                is_complex=True,
                is_array=True,
            ),
            E(
                "user_service_authorization",
                "userServiceAuthorization",
                OCI.UserServiceAuthorization,
                is_complex=True,
                is_array=True,
            ),
            E(
                "service_pack_authorization",
                "servicePackAuthorization",
                OCI.ServicePackAuthorization,
                is_complex=True,
                is_array=True,
            ),
            E(
                "activatable_phone_number",
                "activatablePhoneNumber",
                OCI.ActivatableDN,
                is_complex=True,
                is_array=True,
            ),
            E(
                "activatable_dn_range",
                "activatableDNRange",
                OCI.ActivatableDNRange,
                is_complex=True,
                is_array=True,
            ),
            E("routing_profile", "routingProfile", str),
            E(
                "meet_me_conferencing_allocated_ports",
                "meetMeConferencingAllocatedPorts",
                OCI.MeetMeConferencingConferencePorts,
                is_complex=True,
            ),
            E("trunk_group_max_active_calls", "trunkGroupMaxActiveCalls", int),
            E(
                "trunk_group_bursting_max_active_calls",
                "trunkGroupBurstingMaxActiveCalls",
                OCI.UnboundedNonNegativeInt,
                is_complex=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 only used in
    Amplify data mode and ignored in AS and XS data mode: servicePolicy,
    callProcessingSliceId, provisioningSliceId, subscriberPartition.  When the
    callProcessingSliceId or provisioningSliceId is not specified in the AmplifyDataMode,
    the default slice Id is assigned to the Group.  Only Provisioning admin and above can
    change the callProcessingSliceId, provisioningSliceId, and subscriberPartition.  The
    following elements are only used in Amplify and 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 Amplify and 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 (str): serviceProviderId *Optional*
        service_provider_external_id (str): serviceProviderExternalId *Optional*
        group_id (str): groupId *Optional*
        group_external_id (str): groupExternalId *Optional*
        default_domain (str): defaultDomain
        user_limit (int): userLimit
        group_name (str): groupName *Optional*
        calling_line_id_name (str): callingLineIdName *Optional*
        time_zone (str): timeZone *Optional*
        location_dialing_code (str): locationDialingCode *Optional*
        contact (OCI.contact): contact *Optional*
        address (OCI.address): address *Optional*
        service_policy (str): servicePolicy *Optional*
        call_processing_slice_id (str): callProcessingSliceId *Optional*
        provisioning_slice_id (str): provisioningSliceId *Optional*
        subscriber_partition (str): subscriberPartition *Optional*
        preferred_data_center (str): preferredDataCenter *Optional*
        default_user_calling_line_id_phone_number (str):
            defaultUserCallingLineIdPhoneNumber *Optional*
        domain (List[str]): domain *Optional*
        admin (List[OCI.admin]): admin *Optional*
        min_extension_length (int): minExtensionLength *Optional*
        max_extension_length (int): maxExtensionLength *Optional*
        default_extension_length (int): defaultExtensionLength *Optional*
        group_service_authorization_and_assignment
            (List[OCI.groupServiceAuthorizationAndAssignment]):
            groupServiceAuthorizationAndAssignment *Optional*
        user_service_authorization (List[OCI.userServiceAuthorization]):
            userServiceAuthorization *Optional*
        service_pack_authorization (List[OCI.servicePackAuthorization]):
            servicePackAuthorization *Optional*
        activatable_phone_number (List[OCI.activatablePhoneNumber]):
            activatablePhoneNumber *Optional*
        activatable_dn_range (List[OCI.activatableDNRange]): activatableDNRange *Optional*
        routing_profile (str): routingProfile *Optional*
        meet_me_conferencing_allocated_ports (OCI.meetMeConferencingAllocatedPorts):
            meetMeConferencingAllocatedPorts *Optional*
        trunk_group_max_active_calls (int): trunkGroupMaxActiveCalls *Optional*
        trunk_group_bursting_max_active_calls (OCI.trunkGroupBurstingMaxActiveCalls):
            trunkGroupBurstingMaxActiveCalls *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_provider_external_id",
        "group_id",
        "group_external_id",
        "default_domain",
        "user_limit",
        "group_name",
        "calling_line_id_name",
        "time_zone",
        "location_dialing_code",
        "contact",
        "address",
        "service_policy",
        "call_processing_slice_id",
        "provisioning_slice_id",
        "subscriber_partition",
        "preferred_data_center",
        "default_user_calling_line_id_phone_number",
        "domain",
        "admin",
        "min_extension_length",
        "max_extension_length",
        "default_extension_length",
        "group_service_authorization_and_assignment",
        "user_service_authorization",
        "service_pack_authorization",
        "activatable_phone_number",
        "activatable_dn_range",
        "routing_profile",
        "meet_me_conferencing_allocated_ports",
        "trunk_group_max_active_calls",
        "trunk_group_bursting_max_active_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("service_provider_external_id", "serviceProviderExternalId", str),
            E("group_id", "groupId", str),
            E("group_external_id", "groupExternalId", str),
            E("default_domain", "defaultDomain", str, is_required=True),
            E("user_limit", "userLimit", int, is_required=True),
            E("group_name", "groupName", str),
            E("calling_line_id_name", "callingLineIdName", str),
            E("time_zone", "timeZone", str),
            E("location_dialing_code", "locationDialingCode", str),
            E("contact", "contact", OCI.Contact, is_complex=True),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("service_policy", "servicePolicy", str),
            E("call_processing_slice_id", "callProcessingSliceId", str),
            E("provisioning_slice_id", "provisioningSliceId", str),
            E("subscriber_partition", "subscriberPartition", str),
            E("preferred_data_center", "preferredDataCenter", str),
            E(
                "default_user_calling_line_id_phone_number",
                "defaultUserCallingLineIdPhoneNumber",
                str,
            ),
            E("domain", "domain", str, is_array=True),
            E("admin", "admin", OCI.GroupAdmin, is_complex=True, is_array=True),
            E("min_extension_length", "minExtensionLength", int),
            E("max_extension_length", "maxExtensionLength", int),
            E("default_extension_length", "defaultExtensionLength", int),
            E(
                "group_service_authorization_and_assignment",
                "groupServiceAuthorizationAndAssignment",
                OCI.GroupServiceAuthorizationAndAssignment,
                is_complex=True,
                is_array=True,
            ),
            E(
                "user_service_authorization",
                "userServiceAuthorization",
                OCI.UserServiceAuthorization,
                is_complex=True,
                is_array=True,
            ),
            E(
                "service_pack_authorization",
                "servicePackAuthorization",
                OCI.ServicePackAuthorization,
                is_complex=True,
                is_array=True,
            ),
            E(
                "activatable_phone_number",
                "activatablePhoneNumber",
                OCI.ActivatableDN,
                is_complex=True,
                is_array=True,
            ),
            E(
                "activatable_dn_range",
                "activatableDNRange",
                OCI.ActivatableDNRange,
                is_complex=True,
                is_array=True,
            ),
            E("routing_profile", "routingProfile", str),
            E(
                "meet_me_conferencing_allocated_ports",
                "meetMeConferencingAllocatedPorts",
                OCI.MeetMeConferencingConferencePorts,
                is_complex=True,
            ),
            E("trunk_group_max_active_calls", "trunkGroupMaxActiveCalls", int),
            E(
                "trunk_group_bursting_max_active_calls",
                "trunkGroupBurstingMaxActiveCalls",
                OCI.UnboundedNonNegativeInt,
                is_complex=True,
            ),
        )


class GroupCustomContactDirectoryGetAvailableUserListRequest(OCIRequest):
    """
    Get a list of users that can be part of a custom contact directory.

    The response is either `GroupCustomContactDirectoryGetAvailableUserListResponse()` or
    `ErrorResponse()`. Replace by:
    `GroupCustomContactDirectoryGetAvailableUserListRequest17()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
        search_criteria_title (List[OCI.searchCriteriaTitle]): searchCriteriaTitle
            *Optional*
        search_criteria_receptionist_note (List[OCI.searchCriteriaReceptionistNote]):
            searchCriteriaReceptionistNote *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "response_size_limit",
        "search_criteria_mode_or",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_user_id",
        "search_criteria_exact_user_department",
        "search_criteria_imp_id",
        "search_criteria_title",
        "search_criteria_receptionist_note",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_title",
                "searchCriteriaTitle",
                OCI.SearchCriteriaTitle,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_receptionist_note",
                "searchCriteriaReceptionistNote",
                OCI.SearchCriteriaReceptionistNote,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupCustomContactDirectoryModifyRequest17(OCIRequest):
    """
    Adds a Custom Contact Directory to a group.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        new_name (str): newName *Optional*
        entry_list (OCI.entryList): entryList *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "new_name",
        "entry_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E(
                "entry_list",
                "entryList",
                OCI.ReplacementCustomContactDirectoryEntryList,
                is_complex=True,
            ),
        )


class GroupCustomRingbackGroupModifyRequest(OCIRequest):
    """
    Modify the group's custom ring back service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `GroupCustomRingbackGroupModifyRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_active (bool): isActive *Optional*
        audio_selection (str): audioSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_active",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("audio_selection", "audioSelection", str),
            E("audio_file", "audioFile", OCI.ExtendedFileResource, is_complex=True),
            E("video_selection", "videoSelection", str),
            E("video_file", "videoFile", OCI.ExtendedFileResource, is_complex=True),
        )


class GroupCustomRingbackGroupModifyRequest16(OCIRequest):
    """
    Modify the group's custom ring back service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `GroupCustomRingbackGroupModifyRequest20()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_active (bool): isActive *Optional*
        audio_selection (str): audioSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_active",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("audio_selection", "audioSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("video_selection", "videoSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        is_active (bool): isActive *Optional*
        audio_selection (str): audioSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_active",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("audio_selection", "audioSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource20,
                is_complex=True,
            ),
            E("video_selection", "videoSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource20,
                is_complex=True,
            ),
        )


class GroupDnGetAssignmentListRequest(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.

    The response is either a `GroupDnGetAssignmentListResponse()` or an `ErrorResponse()`.
    Replaced by: `GroupDnGetAssignmentListRequest18()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_exact_dn_department (OCI.searchCriteriaExactDnDepartment):
            searchCriteriaExactDnDepartment *Optional*
        search_criteria_exact_dn_activation (OCI.searchCriteriaExactDnActivation):
            searchCriteriaExactDnActivation *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_dn",
        "search_criteria_user_first_name",
        "search_criteria_user_last_name",
        "search_criteria_exact_dn_department",
        "search_criteria_exact_dn_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_dn_department",
                "searchCriteriaExactDnDepartment",
                OCI.SearchCriteriaExactDnDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_dn_activation",
                "searchCriteriaExactDnActivation",
                OCI.SearchCriteriaExactDnActivation,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_exact_dn_department (OCI.searchCriteriaExactDnDepartment):
            searchCriteriaExactDnDepartment *Optional*
        search_criteria_exact_dn_activation (OCI.searchCriteriaExactDnActivation):
            searchCriteriaExactDnActivation *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_dn",
        "search_criteria_user_first_name",
        "search_criteria_user_last_name",
        "search_criteria_exact_dn_department",
        "search_criteria_exact_dn_activation",
        "search_criteria_user_id",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_dn_department",
                "searchCriteriaExactDnDepartment",
                OCI.SearchCriteriaExactDnDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_dn_activation",
                "searchCriteriaExactDnActivation",
                OCI.SearchCriteriaExactDnActivation,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_exact_dn_activation (OCI.searchCriteriaExactDnActivation):
            searchCriteriaExactDnActivation *Optional*
        search_criteria_exact_dn_availability (OCI.searchCriteriaExactDnAvailability):
            searchCriteriaExactDnAvailability *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_exact_user_type (List[OCI.searchCriteriaExactUserType]):
            searchCriteriaExactUserType *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_dn",
        "search_criteria_department_name",
        "search_criteria_exact_dn_activation",
        "search_criteria_exact_dn_availability",
        "search_criteria_user_id",
        "search_criteria_user_first_name",
        "search_criteria_user_last_name",
        "search_criteria_exact_user_type",
        "search_criteria_extension",
        "search_criteria_email_address",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupDnGetAssignmentPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_dn_activation",
                "searchCriteriaExactDnActivation",
                OCI.SearchCriteriaExactDnActivation,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_dn_availability",
                "searchCriteriaExactDnAvailability",
                OCI.SearchCriteriaExactDnAvailability,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_type",
                "searchCriteriaExactUserType",
                OCI.SearchCriteriaExactUserType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        domain (str): domain
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "domain",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("domain", "domain", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupEndpointGetListRequest(OCIRequest):
    """
    Request to search endpoints in the group.

    The response is either `GroupEndpointGetListResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_line_port_user_part (List[OCI.searchCriteriaLinePortUserPart]):
            searchCriteriaLinePortUserPart *Optional*
        search_criteria_line_port_domain (List[OCI.searchCriteriaLinePortDomain]):
            searchCriteriaLinePortDomain *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_device_type (List[OCI.searchCriteriaDeviceType]):
            searchCriteriaDeviceType *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_line_port_user_part",
        "search_criteria_line_port_domain",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_device_type",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_line_port_user_part",
                "searchCriteriaLinePortUserPart",
                OCI.SearchCriteriaLinePortUserPart,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_domain",
                "searchCriteriaLinePortDomain",
                OCI.SearchCriteriaLinePortDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_type",
                "searchCriteriaDeviceType",
                OCI.SearchCriteriaDeviceType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_alternate_trunk_identity
            (List[OCI.searchCriteriaAlternateTrunkIdentity]):
            searchCriteriaAlternateTrunkIdentity *Optional*
        search_criteria_alternate_trunk_identity_domain
            (List[OCI.searchCriteriaAlternateTrunkIdentityDomain]):
            searchCriteriaAlternateTrunkIdentityDomain *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_user_id",
        "search_criteria_alternate_trunk_identity",
        "search_criteria_alternate_trunk_identity_domain",
        "search_criteria_extension",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_alternate_trunk_identity",
                "searchCriteriaAlternateTrunkIdentity",
                OCI.SearchCriteriaAlternateTrunkIdentity,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_alternate_trunk_identity_domain",
                "searchCriteriaAlternateTrunkIdentityDomain",
                OCI.SearchCriteriaAlternateTrunkIdentityDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        enterprise_trunk_name (str): enterpriseTrunkName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_alternate_trunk_identity
            (List[OCI.searchCriteriaAlternateTrunkIdentity]):
            searchCriteriaAlternateTrunkIdentity *Optional*
        search_criteria_alternate_trunk_identity_domain
            (List[OCI.searchCriteriaAlternateTrunkIdentityDomain]):
            searchCriteriaAlternateTrunkIdentityDomain *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_route_list_assigned
            (OCI.searchCriteriaExactUserRouteListAssigned):
            searchCriteriaExactUserRouteListAssigned *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "enterprise_trunk_name",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_user_id",
        "search_criteria_group_id",
        "search_criteria_alternate_trunk_identity",
        "search_criteria_alternate_trunk_identity_domain",
        "search_criteria_extension",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_route_list_assigned",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("enterprise_trunk_name", "enterpriseTrunkName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_alternate_trunk_identity",
                "searchCriteriaAlternateTrunkIdentity",
                OCI.SearchCriteriaAlternateTrunkIdentity,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_alternate_trunk_identity_domain",
                "searchCriteriaAlternateTrunkIdentityDomain",
                OCI.SearchCriteriaAlternateTrunkIdentityDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_route_list_assigned",
                "searchCriteriaExactUserRouteListAssigned",
                OCI.SearchCriteriaExactUserRouteListAssigned,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceUserId
        alerting_group_name (str): alertingGroupName
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
        call_to_number_list (OCI.callToNumberList): callToNumberList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "alerting_group_name",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "from_dn_criteria",
        "holiday_schedule",
        "blacklisted",
        "call_to_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("alerting_group_name", "alertingGroupName", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=True,
            ),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
            E(
                "call_to_number_list",
                "callToNumberList",
                OCI.ReplacementCallToNumberList,
                is_complex=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): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


class GroupFlexibleSeatingHostAddInstanceRequest(OCIRequest):
    """
    Add a flexible seating host instance to a group.

    The domain is required in the serviceUserId.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `GroupFlexibleSeatingHostAddInstanceRequest22()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "access_device_endpoint",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileFlexibleSeatingHost,
                is_complex=True,
                is_required=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceMultipleContactEndpointAdd,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "access_device_endpoint",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileFlexibleSeatingHost,
                is_complex=True,
                is_required=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceMultipleContactEndpointAdd22,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        group_department_name (str): groupDepartmentName *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_service_instance_name
            (List[OCI.searchCriteriaServiceInstanceName]):
            searchCriteriaServiceInstanceName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_department_name",
        "response_size_limit",
        "search_criteria_exact_user_department",
        "search_criteria_service_instance_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("group_department_name", "groupDepartmentName", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_service_instance_name",
                "searchCriteriaServiceInstanceName",
                OCI.SearchCriteriaServiceInstanceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupFlexibleSeatingHostModifyInstanceRequest(OCIRequest):
    """
    Request to modify a flexible seating host instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `GroupFlexibleSeatingHostModifyInstanceRequest22()`.

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "access_device_endpoint",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfileFlexibleSeatingHost,
                is_complex=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceMultipleContactEndpointModify,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_group_name (List[OCI.searchCriteriaGroupName]):
            searchCriteriaGroupName *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_group_id",
        "search_criteria_group_name",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupGetListInServiceProviderPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_name",
                "searchCriteriaGroupName",
                OCI.SearchCriteriaGroupName,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        confirmation_tone_timeout_seconds (int): confirmationToneTimeoutSeconds
        deliver_originator_clid_instead (bool): deliverOriginatorCLIDInstead
        originator_clid_prefix (str): originatorCLIDPrefix *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "confirmation_tone_timeout_seconds",
        "deliver_originator_clid_instead",
        "originator_clid_prefix",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E(
                "confirmation_tone_timeout_seconds",
                "confirmationToneTimeoutSeconds",
                int,
                is_required=True,
            ),
            E(
                "deliver_originator_clid_instead",
                "deliverOriginatorCLIDInstead",
                bool,
                is_required=True,
            ),
            E("originator_clid_prefix", "originatorCLIDPrefix", str),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceUserId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        confirmation_tone_timeout_seconds (int): confirmationToneTimeoutSeconds *Optional*
        deliver_originator_clid_instead (bool): deliverOriginatorCLIDInstead *Optional*
        originator_clid_prefix (str): originatorCLIDPrefix *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "confirmation_tone_timeout_seconds",
        "deliver_originator_clid_instead",
        "originator_clid_prefix",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E(
                "confirmation_tone_timeout_seconds",
                "confirmationToneTimeoutSeconds",
                int,
            ),
            E("deliver_originator_clid_instead", "deliverOriginatorCLIDInstead", bool),
            E("originator_clid_prefix", "originatorCLIDPrefix", str),
            E("network_class_of_service", "networkClassOfService", str),
        )


class GroupHuntGroupAddInstanceRequest14(OCIRequest):
    """
    Add a Hunt Group instance to a group.

    The domain is required in the serviceUserId.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        policy (str): policy
        hunt_after_no_answer (bool): huntAfterNoAnswer
        no_answer_number_of_rings (int): noAnswerNumberOfRings
        forward_after_timeout (bool): forwardAfterTimeout
        forward_timeout_seconds (int): forwardTimeoutSeconds
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        agent_user_id (List[str]): agentUserId *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "policy",
        "hunt_after_no_answer",
        "no_answer_number_of_rings",
        "forward_after_timeout",
        "forward_timeout_seconds",
        "forward_to_phone_number",
        "agent_user_id",
        "allow_call_waiting_for_agents",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("policy", "policy", str, is_required=True),
            E("hunt_after_no_answer", "huntAfterNoAnswer", bool, is_required=True),
            E(
                "no_answer_number_of_rings",
                "noAnswerNumberOfRings",
                int,
                is_required=True,
            ),
            E("forward_after_timeout", "forwardAfterTimeout", bool, is_required=True),
            E(
                "forward_timeout_seconds",
                "forwardTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("agent_user_id", "agentUserId", str, is_array=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
        )


class GroupHuntGroupAddInstanceRequest17sp3(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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        policy (str): policy
        hunt_after_no_answer (bool): huntAfterNoAnswer
        no_answer_number_of_rings (int): noAnswerNumberOfRings
        forward_after_timeout (bool): forwardAfterTimeout
        forward_timeout_seconds (int): forwardTimeoutSeconds
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        agent_user_id (List[str]): agentUserId *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        use_system_hunt_group_clid_setting (bool): useSystemHuntGroupCLIDSetting
        include_hunt_group_name_in_clid (bool): includeHuntGroupNameInCLID
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "policy",
        "hunt_after_no_answer",
        "no_answer_number_of_rings",
        "forward_after_timeout",
        "forward_timeout_seconds",
        "forward_to_phone_number",
        "agent_user_id",
        "allow_call_waiting_for_agents",
        "use_system_hunt_group_clid_setting",
        "include_hunt_group_name_in_clid",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("policy", "policy", str, is_required=True),
            E("hunt_after_no_answer", "huntAfterNoAnswer", bool, is_required=True),
            E(
                "no_answer_number_of_rings",
                "noAnswerNumberOfRings",
                int,
                is_required=True,
            ),
            E("forward_after_timeout", "forwardAfterTimeout", bool, is_required=True),
            E(
                "forward_timeout_seconds",
                "forwardTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("agent_user_id", "agentUserId", str, is_array=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E(
                "use_system_hunt_group_clid_setting",
                "useSystemHuntGroupCLIDSetting",
                bool,
                is_required=True,
            ),
            E(
                "include_hunt_group_name_in_clid",
                "includeHuntGroupNameInCLID",
                bool,
                is_required=True,
            ),
        )


class GroupHuntGroupAddInstanceRequest17sp4(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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        policy (str): policy
        hunt_after_no_answer (bool): huntAfterNoAnswer
        no_answer_number_of_rings (int): noAnswerNumberOfRings
        forward_after_timeout (bool): forwardAfterTimeout
        forward_timeout_seconds (int): forwardTimeoutSeconds
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        agent_user_id (List[str]): agentUserId *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        use_system_hunt_group_clid_setting (bool): useSystemHuntGroupCLIDSetting
        include_hunt_group_name_in_clid (bool): includeHuntGroupNameInCLID
        enable_not_reachable_forwarding (bool): enableNotReachableForwarding
        not_reachable_forward_to_phone_number (str): notReachableForwardToPhoneNumber
            *Optional*
        make_busy_when_not_reachable (bool): makeBusyWhenNotReachable
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "policy",
        "hunt_after_no_answer",
        "no_answer_number_of_rings",
        "forward_after_timeout",
        "forward_timeout_seconds",
        "forward_to_phone_number",
        "agent_user_id",
        "allow_call_waiting_for_agents",
        "use_system_hunt_group_clid_setting",
        "include_hunt_group_name_in_clid",
        "enable_not_reachable_forwarding",
        "not_reachable_forward_to_phone_number",
        "make_busy_when_not_reachable",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("policy", "policy", str, is_required=True),
            E("hunt_after_no_answer", "huntAfterNoAnswer", bool, is_required=True),
            E(
                "no_answer_number_of_rings",
                "noAnswerNumberOfRings",
                int,
                is_required=True,
            ),
            E("forward_after_timeout", "forwardAfterTimeout", bool, is_required=True),
            E(
                "forward_timeout_seconds",
                "forwardTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("agent_user_id", "agentUserId", str, is_array=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E(
                "use_system_hunt_group_clid_setting",
                "useSystemHuntGroupCLIDSetting",
                bool,
                is_required=True,
            ),
            E(
                "include_hunt_group_name_in_clid",
                "includeHuntGroupNameInCLID",
                bool,
                is_required=True,
            ),
            E(
                "enable_not_reachable_forwarding",
                "enableNotReachableForwarding",
                bool,
                is_required=True,
            ),
            E(
                "not_reachable_forward_to_phone_number",
                "notReachableForwardToPhoneNumber",
                str,
            ),
            E(
                "make_busy_when_not_reachable",
                "makeBusyWhenNotReachable",
                bool,
                is_required=True,
            ),
        )


class GroupHuntGroupAddInstanceRequest19(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
    Replaced by: `GroupHuntGroupAddInstanceRequest20()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        policy (str): policy
        hunt_after_no_answer (bool): huntAfterNoAnswer
        no_answer_number_of_rings (int): noAnswerNumberOfRings
        forward_after_timeout (bool): forwardAfterTimeout
        forward_timeout_seconds (int): forwardTimeoutSeconds
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        agent_user_id (List[str]): agentUserId *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        use_system_hunt_group_clid_setting (bool): useSystemHuntGroupCLIDSetting
        include_hunt_group_name_in_clid (bool): includeHuntGroupNameInCLID
        enable_not_reachable_forwarding (bool): enableNotReachableForwarding
        not_reachable_forward_to_phone_number (str): notReachableForwardToPhoneNumber
            *Optional*
        make_busy_when_not_reachable (bool): makeBusyWhenNotReachable
        allow_members_to_control_group_busy (bool): allowMembersToControlGroupBusy
        enable_group_busy (bool): enableGroupBusy
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "policy",
        "hunt_after_no_answer",
        "no_answer_number_of_rings",
        "forward_after_timeout",
        "forward_timeout_seconds",
        "forward_to_phone_number",
        "agent_user_id",
        "allow_call_waiting_for_agents",
        "use_system_hunt_group_clid_setting",
        "include_hunt_group_name_in_clid",
        "enable_not_reachable_forwarding",
        "not_reachable_forward_to_phone_number",
        "make_busy_when_not_reachable",
        "allow_members_to_control_group_busy",
        "enable_group_busy",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("policy", "policy", str, is_required=True),
            E("hunt_after_no_answer", "huntAfterNoAnswer", bool, is_required=True),
            E(
                "no_answer_number_of_rings",
                "noAnswerNumberOfRings",
                int,
                is_required=True,
            ),
            E("forward_after_timeout", "forwardAfterTimeout", bool, is_required=True),
            E(
                "forward_timeout_seconds",
                "forwardTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("agent_user_id", "agentUserId", str, is_array=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E(
                "use_system_hunt_group_clid_setting",
                "useSystemHuntGroupCLIDSetting",
                bool,
                is_required=True,
            ),
            E(
                "include_hunt_group_name_in_clid",
                "includeHuntGroupNameInCLID",
                bool,
                is_required=True,
            ),
            E(
                "enable_not_reachable_forwarding",
                "enableNotReachableForwarding",
                bool,
                is_required=True,
            ),
            E(
                "not_reachable_forward_to_phone_number",
                "notReachableForwardToPhoneNumber",
                str,
            ),
            E(
                "make_busy_when_not_reachable",
                "makeBusyWhenNotReachable",
                bool,
                is_required=True,
            ),
            E(
                "allow_members_to_control_group_busy",
                "allowMembersToControlGroupBusy",
                bool,
                is_required=True,
            ),
            E("enable_group_busy", "enableGroupBusy", bool, is_required=True),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        policy (str): policy
        hunt_after_no_answer (bool): huntAfterNoAnswer
        no_answer_number_of_rings (int): noAnswerNumberOfRings
        forward_after_timeout (bool): forwardAfterTimeout
        forward_timeout_seconds (int): forwardTimeoutSeconds
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        agent_user_id (List[str]): agentUserId *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        use_system_hunt_group_clid_setting (bool): useSystemHuntGroupCLIDSetting
        include_hunt_group_name_in_clid (bool): includeHuntGroupNameInCLID
        enable_not_reachable_forwarding (bool): enableNotReachableForwarding
        not_reachable_forward_to_phone_number (str): notReachableForwardToPhoneNumber
            *Optional*
        make_busy_when_not_reachable (bool): makeBusyWhenNotReachable
        allow_members_to_control_group_busy (bool): allowMembersToControlGroupBusy
        enable_group_busy (bool): enableGroupBusy
        apply_group_busy_when_terminating_to_agent (bool):
            applyGroupBusyWhenTerminatingToAgent
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "policy",
        "hunt_after_no_answer",
        "no_answer_number_of_rings",
        "forward_after_timeout",
        "forward_timeout_seconds",
        "forward_to_phone_number",
        "agent_user_id",
        "allow_call_waiting_for_agents",
        "use_system_hunt_group_clid_setting",
        "include_hunt_group_name_in_clid",
        "enable_not_reachable_forwarding",
        "not_reachable_forward_to_phone_number",
        "make_busy_when_not_reachable",
        "allow_members_to_control_group_busy",
        "enable_group_busy",
        "apply_group_busy_when_terminating_to_agent",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("policy", "policy", str, is_required=True),
            E("hunt_after_no_answer", "huntAfterNoAnswer", bool, is_required=True),
            E(
                "no_answer_number_of_rings",
                "noAnswerNumberOfRings",
                int,
                is_required=True,
            ),
            E("forward_after_timeout", "forwardAfterTimeout", bool, is_required=True),
            E(
                "forward_timeout_seconds",
                "forwardTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("agent_user_id", "agentUserId", str, is_array=True),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E(
                "use_system_hunt_group_clid_setting",
                "useSystemHuntGroupCLIDSetting",
                bool,
                is_required=True,
            ),
            E(
                "include_hunt_group_name_in_clid",
                "includeHuntGroupNameInCLID",
                bool,
                is_required=True,
            ),
            E(
                "enable_not_reachable_forwarding",
                "enableNotReachableForwarding",
                bool,
                is_required=True,
            ),
            E(
                "not_reachable_forward_to_phone_number",
                "notReachableForwardToPhoneNumber",
                str,
            ),
            E(
                "make_busy_when_not_reachable",
                "makeBusyWhenNotReachable",
                bool,
                is_required=True,
            ),
            E(
                "allow_members_to_control_group_busy",
                "allowMembersToControlGroupBusy",
                bool,
                is_required=True,
            ),
            E("enable_group_busy", "enableGroupBusy", bool, is_required=True),
            E(
                "apply_group_busy_when_terminating_to_agent",
                "applyGroupBusyWhenTerminatingToAgent",
                bool,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        add_phone_number_to_group (bool): addPhoneNumberToGroup *Optional*
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        policy (str): policy
        hunt_after_no_answer (bool): huntAfterNoAnswer
        no_answer_number_of_rings (int): noAnswerNumberOfRings
        forward_after_timeout (bool): forwardAfterTimeout
        forward_timeout_seconds (int): forwardTimeoutSeconds
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        agent_user_id (List[str]): agentUserId *Optional*
        agent_weight (List[OCI.agentWeight]): agentWeight *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents
        use_system_hunt_group_clid_setting (bool): useSystemHuntGroupCLIDSetting
        include_hunt_group_name_in_clid (bool): includeHuntGroupNameInCLID
        enable_not_reachable_forwarding (bool): enableNotReachableForwarding
        not_reachable_forward_to_phone_number (str): notReachableForwardToPhoneNumber
            *Optional*
        make_busy_when_not_reachable (bool): makeBusyWhenNotReachable
        allow_members_to_control_group_busy (bool): allowMembersToControlGroupBusy
        enable_group_busy (bool): enableGroupBusy
        apply_group_busy_when_terminating_to_agent (bool):
            applyGroupBusyWhenTerminatingToAgent
        network_class_of_service (str): networkClassOfService *Optional*
        service (List[OCI.service]): service *Optional*
        is_active (bool): isActive
        directory_number_hunting_agent_user_id_list (List[str]):
            directoryNumberHuntingAgentUserIdList *Optional*
        directory_number_hunting_use_terminate_call_to_agent_first (bool):
            directoryNumberHuntingUseTerminateCallToAgentFirst *Optional*
        directory_number_hunting_use_original_agent_services_for_busy_and_no_answer_calls
            (bool): directoryNumberHuntingUseOriginalAgentServicesForBusyAndNoAnswerCalls
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "add_phone_number_to_group",
        "service_instance_profile",
        "policy",
        "hunt_after_no_answer",
        "no_answer_number_of_rings",
        "forward_after_timeout",
        "forward_timeout_seconds",
        "forward_to_phone_number",
        "agent_user_id",
        "agent_weight",
        "allow_call_waiting_for_agents",
        "use_system_hunt_group_clid_setting",
        "include_hunt_group_name_in_clid",
        "enable_not_reachable_forwarding",
        "not_reachable_forward_to_phone_number",
        "make_busy_when_not_reachable",
        "allow_members_to_control_group_busy",
        "enable_group_busy",
        "apply_group_busy_when_terminating_to_agent",
        "network_class_of_service",
        "service",
        "is_active",
        "directory_number_hunting_agent_user_id_list",
        "directory_number_hunting_use_terminate_call_to_agent_first",
        "directory_number_hunting_use_original_agent_services_for_busy_and_no_answer_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("add_phone_number_to_group", "addPhoneNumberToGroup", bool),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("policy", "policy", str, is_required=True),
            E("hunt_after_no_answer", "huntAfterNoAnswer", bool, is_required=True),
            E(
                "no_answer_number_of_rings",
                "noAnswerNumberOfRings",
                int,
                is_required=True,
            ),
            E("forward_after_timeout", "forwardAfterTimeout", bool, is_required=True),
            E(
                "forward_timeout_seconds",
                "forwardTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E("agent_user_id", "agentUserId", str, is_array=True),
            E(
                "agent_weight",
                "agentWeight",
                OCI.HuntAgentWeight,
                is_complex=True,
                is_array=True,
            ),
            E(
                "allow_call_waiting_for_agents",
                "allowCallWaitingForAgents",
                bool,
                is_required=True,
            ),
            E(
                "use_system_hunt_group_clid_setting",
                "useSystemHuntGroupCLIDSetting",
                bool,
                is_required=True,
            ),
            E(
                "include_hunt_group_name_in_clid",
                "includeHuntGroupNameInCLID",
                bool,
                is_required=True,
            ),
            E(
                "enable_not_reachable_forwarding",
                "enableNotReachableForwarding",
                bool,
                is_required=True,
            ),
            E(
                "not_reachable_forward_to_phone_number",
                "notReachableForwardToPhoneNumber",
                str,
            ),
            E(
                "make_busy_when_not_reachable",
                "makeBusyWhenNotReachable",
                bool,
                is_required=True,
            ),
            E(
                "allow_members_to_control_group_busy",
                "allowMembersToControlGroupBusy",
                bool,
                is_required=True,
            ),
            E("enable_group_busy", "enableGroupBusy", bool, is_required=True),
            E(
                "apply_group_busy_when_terminating_to_agent",
                "applyGroupBusyWhenTerminatingToAgent",
                bool,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "service",
                "service",
                OCI.ConsolidatedUserServiceAssignment,
                is_complex=True,
                is_array=True,
            ),
            E("is_active", "isActive", bool, is_required=True),
            E(
                "directory_number_hunting_agent_user_id_list",
                "directoryNumberHuntingAgentUserIdList",
                str,
                is_array=True,
            ),
            E(
                "directory_number_hunting_use_terminate_call_to_agent_first",
                "directoryNumberHuntingUseTerminateCallToAgentFirst",
                bool,
            ),
            E(
                "directory_number_hunting_use_original_agent_services_for_busy_and_no_answer_calls",
                "directoryNumberHuntingUseOriginalAgentServicesForBusyAndNoAnswerCalls",
                bool,
            ),
        )


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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_dn_activation (OCI.searchCriteriaExactDnActivation):
            searchCriteriaExactDnActivation *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_department_name",
        "search_criteria_group_id",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_exact_dn_activation",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupHuntGroupGetAvailableUserPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_dn_activation",
                "searchCriteriaExactDnActivation",
                OCI.SearchCriteriaExactDnActivation,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_dn_activation (OCI.searchCriteriaExactDnActivation):
            searchCriteriaExactDnActivation *Optional*
        search_criteria_service_status (OCI.searchCriteriaServiceStatus):
            searchCriteriaServiceStatus *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_last_name",
        "search_criteria_department_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_exact_dn_activation",
        "search_criteria_service_status",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupHuntGroupGetInstancePagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_dn_activation",
                "searchCriteriaExactDnActivation",
                OCI.SearchCriteriaExactDnActivation,
                is_complex=True,
            ),
            E(
                "search_criteria_service_status",
                "searchCriteriaServiceStatus",
                OCI.SearchCriteriaServiceStatus,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        policy (str): policy *Optional*
        hunt_after_no_answer (bool): huntAfterNoAnswer *Optional*
        no_answer_number_of_rings (int): noAnswerNumberOfRings *Optional*
        forward_after_timeout (bool): forwardAfterTimeout *Optional*
        forward_timeout_seconds (int): forwardTimeoutSeconds *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        agent_user_id_list (OCI.agentUserIdList): agentUserIdList *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents *Optional*
        use_system_hunt_group_clid_setting (bool): useSystemHuntGroupCLIDSetting
            *Optional*
        include_hunt_group_name_in_clid (bool): includeHuntGroupNameInCLID *Optional*
        enable_not_reachable_forwarding (bool): enableNotReachableForwarding *Optional*
        not_reachable_forward_to_phone_number (str): notReachableForwardToPhoneNumber
            *Optional*
        make_busy_when_not_reachable (bool): makeBusyWhenNotReachable *Optional*
        allow_members_to_control_group_busy (bool): allowMembersToControlGroupBusy
            *Optional*
        enable_group_busy (bool): enableGroupBusy *Optional*
        apply_group_busy_when_terminating_to_agent (bool):
            applyGroupBusyWhenTerminatingToAgent *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "policy",
        "hunt_after_no_answer",
        "no_answer_number_of_rings",
        "forward_after_timeout",
        "forward_timeout_seconds",
        "forward_to_phone_number",
        "agent_user_id_list",
        "allow_call_waiting_for_agents",
        "use_system_hunt_group_clid_setting",
        "include_hunt_group_name_in_clid",
        "enable_not_reachable_forwarding",
        "not_reachable_forward_to_phone_number",
        "make_busy_when_not_reachable",
        "allow_members_to_control_group_busy",
        "enable_group_busy",
        "apply_group_busy_when_terminating_to_agent",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("policy", "policy", str),
            E("hunt_after_no_answer", "huntAfterNoAnswer", bool),
            E("no_answer_number_of_rings", "noAnswerNumberOfRings", int),
            E("forward_after_timeout", "forwardAfterTimeout", bool),
            E("forward_timeout_seconds", "forwardTimeoutSeconds", int),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E(
                "agent_user_id_list",
                "agentUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E("allow_call_waiting_for_agents", "allowCallWaitingForAgents", bool),
            E(
                "use_system_hunt_group_clid_setting",
                "useSystemHuntGroupCLIDSetting",
                bool,
            ),
            E("include_hunt_group_name_in_clid", "includeHuntGroupNameInCLID", bool),
            E("enable_not_reachable_forwarding", "enableNotReachableForwarding", bool),
            E(
                "not_reachable_forward_to_phone_number",
                "notReachableForwardToPhoneNumber",
                str,
            ),
            E("make_busy_when_not_reachable", "makeBusyWhenNotReachable", bool),
            E(
                "allow_members_to_control_group_busy",
                "allowMembersToControlGroupBusy",
                bool,
            ),
            E("enable_group_busy", "enableGroupBusy", bool),
            E(
                "apply_group_busy_when_terminating_to_agent",
                "applyGroupBusyWhenTerminatingToAgent",
                bool,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        group_permissions (OCI.groupPermissions): groupPermissions *Optional*
        department_permissions (List[OCI.departmentPermissions]): departmentPermissions
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_permissions",
        "department_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "group_permissions",
                "groupPermissions",
                OCI.IncomingCallingPlanPermissionsModify,
                is_complex=True,
            ),
            E(
                "department_permissions",
                "departmentPermissions",
                OCI.IncomingCallingPlanDepartmentPermissionsModify,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        destination_phone_number (List[str]): destinationPhoneNumber *Optional*
        is_answer_timeout_enabled (bool): isAnswerTimeoutEnabled
        answer_timeout_minutes (int): answerTimeoutMinutes *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "destination_phone_number",
        "is_answer_timeout_enabled",
        "answer_timeout_minutes",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("destination_phone_number", "destinationPhoneNumber", str, is_array=True),
            E(
                "is_answer_timeout_enabled",
                "isAnswerTimeoutEnabled",
                bool,
                is_required=True,
            ),
            E("answer_timeout_minutes", "answerTimeoutMinutes", int),
            E("network_class_of_service", "networkClassOfService", str),
        )


class GroupInstantGroupCallModifyInstanceRequest(OCIRequest):
    """
    Request to modify an Instant Group Call service instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        destination_phone_number_list (OCI.destinationPhoneNumberList):
            destinationPhoneNumberList *Optional*
        is_answer_timeout_enabled (bool): isAnswerTimeoutEnabled *Optional*
        answer_timeout_minutes (int): answerTimeoutMinutes *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "destination_phone_number_list",
        "is_answer_timeout_enabled",
        "answer_timeout_minutes",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E(
                "destination_phone_number_list",
                "destinationPhoneNumberList",
                OCI.ReplacementOutgoingDNorSIPURIList,
                is_complex=True,
            ),
            E("is_answer_timeout_enabled", "isAnswerTimeoutEnabled", bool),
            E("answer_timeout_minutes", "answerTimeoutMinutes", int),
            E("network_class_of_service", "networkClassOfService", str),
        )


class GroupMWIDeliveryToMobileEndpointCustomTemplateAddRequest(OCIRequest):
    """
    Create a MWI Delivery to Mobile Endpoint Custom Template.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        language (str): language
        type (str): type
        is_enabled (bool): isEnabled
        template_body (OCI.templateBody): templateBody
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "language",
        "type",
        "is_enabled",
        "template_body",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("language", "language", str, is_required=True),
            E("type", "type", str, is_required=True),
            E("is_enabled", "isEnabled", bool, is_required=True),
            E(
                "template_body",
                "templateBody",
                OCI.MWIDeliveryToMobileEndpointTemplateBody,
                is_complex=True,
                is_required=True,
            ),
        )


class GroupMWIDeliveryToMobileEndpointCustomTemplateModifyRequest(OCIRequest):
    """
    Modify a MWI Delivery to Mobile Endpoint Custom Template.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        language (str): language
        type (str): type
        is_enabled (bool): isEnabled *Optional*
        template_body (OCI.templateBody): templateBody *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "language",
        "type",
        "is_enabled",
        "template_body",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("language", "language", str, is_required=True),
            E("type", "type", str, is_required=True),
            E("is_enabled", "isEnabled", bool),
            E(
                "template_body",
                "templateBody",
                OCI.MWIDeliveryToMobileEndpointTemplateBody,
                is_complex=True,
            ),
        )


class GroupMeetMeConferencingAddInstanceRequest(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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        allocated_ports (OCI.allocatedPorts): allocatedPorts
        network_class_of_service (str): networkClassOfService *Optional*
        allow_individual_out_dial (bool): allowIndividualOutDial
        operator_number (str): operatorNumber *Optional*
        conference_host_user_id (List[str]): conferenceHostUserId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "allocated_ports",
        "network_class_of_service",
        "allow_individual_out_dial",
        "operator_number",
        "conference_host_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E(
                "allocated_ports",
                "allocatedPorts",
                OCI.MeetMeConferencingConferencePorts,
                is_complex=True,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "allow_individual_out_dial",
                "allowIndividualOutDial",
                bool,
                is_required=True,
            ),
            E("operator_number", "operatorNumber", str),
            E("conference_host_user_id", "conferenceHostUserId", str, is_array=True),
        )


class GroupMeetMeConferencingAddInstanceRequest18(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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        allocated_ports (OCI.allocatedPorts): allocatedPorts
        network_class_of_service (str): networkClassOfService *Optional*
        allow_individual_out_dial (bool): allowIndividualOutDial
        operator_number (str): operatorNumber *Optional*
        conference_host_user_id (List[str]): conferenceHostUserId *Optional*
        play_warning_prompt (bool): playWarningPrompt
        conference_end_warning_prompt_minutes (int): conferenceEndWarningPromptMinutes
        enable_max_conference_duration (bool): enableMaxConferenceDuration
        max_conference_duration_minutes (OCI.maxConferenceDurationMinutes):
            maxConferenceDurationMinutes
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "allocated_ports",
        "network_class_of_service",
        "allow_individual_out_dial",
        "operator_number",
        "conference_host_user_id",
        "play_warning_prompt",
        "conference_end_warning_prompt_minutes",
        "enable_max_conference_duration",
        "max_conference_duration_minutes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E(
                "allocated_ports",
                "allocatedPorts",
                OCI.MeetMeConferencingConferencePorts,
                is_complex=True,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "allow_individual_out_dial",
                "allowIndividualOutDial",
                bool,
                is_required=True,
            ),
            E("operator_number", "operatorNumber", str),
            E("conference_host_user_id", "conferenceHostUserId", str, is_array=True),
            E("play_warning_prompt", "playWarningPrompt", bool, is_required=True),
            E(
                "conference_end_warning_prompt_minutes",
                "conferenceEndWarningPromptMinutes",
                int,
                is_required=True,
            ),
            E(
                "enable_max_conference_duration",
                "enableMaxConferenceDuration",
                bool,
                is_required=True,
            ),
            E(
                "max_conference_duration_minutes",
                "maxConferenceDurationMinutes",
                OCI.MeetMeConferencingConferenceDuration,
                is_complex=True,
                is_required=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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        allocated_ports (OCI.allocatedPorts): allocatedPorts
        network_class_of_service (str): networkClassOfService *Optional*
        security_pin_length (int): securityPinLength
        allow_individual_out_dial (bool): allowIndividualOutDial
        operator_number (str): operatorNumber *Optional*
        conference_host_user_id (List[str]): conferenceHostUserId *Optional*
        play_warning_prompt (bool): playWarningPrompt
        conference_end_warning_prompt_minutes (int): conferenceEndWarningPromptMinutes
        enable_max_conference_duration (bool): enableMaxConferenceDuration
        max_conference_duration_minutes (OCI.maxConferenceDurationMinutes):
            maxConferenceDurationMinutes
        max_scheduled_conference_duration_minutes
            (OCI.maxScheduledConferenceDurationMinutes):
            maxScheduledConferenceDurationMinutes
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "allocated_ports",
        "network_class_of_service",
        "security_pin_length",
        "allow_individual_out_dial",
        "operator_number",
        "conference_host_user_id",
        "play_warning_prompt",
        "conference_end_warning_prompt_minutes",
        "enable_max_conference_duration",
        "max_conference_duration_minutes",
        "max_scheduled_conference_duration_minutes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E(
                "allocated_ports",
                "allocatedPorts",
                OCI.MeetMeConferencingConferencePorts,
                is_complex=True,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E("security_pin_length", "securityPinLength", int, is_required=True),
            E(
                "allow_individual_out_dial",
                "allowIndividualOutDial",
                bool,
                is_required=True,
            ),
            E("operator_number", "operatorNumber", str),
            E("conference_host_user_id", "conferenceHostUserId", str, is_array=True),
            E("play_warning_prompt", "playWarningPrompt", bool, is_required=True),
            E(
                "conference_end_warning_prompt_minutes",
                "conferenceEndWarningPromptMinutes",
                int,
                is_required=True,
            ),
            E(
                "enable_max_conference_duration",
                "enableMaxConferenceDuration",
                bool,
                is_required=True,
            ),
            E(
                "max_conference_duration_minutes",
                "maxConferenceDurationMinutes",
                OCI.MeetMeConferencingConferenceDuration,
                is_complex=True,
                is_required=True,
            ),
            E(
                "max_scheduled_conference_duration_minutes",
                "maxScheduledConferenceDurationMinutes",
                OCI.MeetMeConferencingConferenceDuration,
                is_complex=True,
                is_required=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): serviceProviderId
        group_id (str): groupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupMeetMeConferencingModifyInstanceRequest(OCIRequest):
    """
    Request to modify a Meet-Me Conferencing bridge.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        allocated_ports (OCI.allocatedPorts): allocatedPorts *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        security_pin_length (int): securityPinLength *Optional*
        allow_individual_out_dial (bool): allowIndividualOutDial *Optional*
        operator_number (str): operatorNumber *Optional*
        conference_host_user_id_list (OCI.conferenceHostUserIdList):
            conferenceHostUserIdList *Optional*
        play_warning_prompt (bool): playWarningPrompt *Optional*
        conference_end_warning_prompt_minutes (int): conferenceEndWarningPromptMinutes
            *Optional*
        enable_max_conference_duration (bool): enableMaxConferenceDuration *Optional*
        max_conference_duration_minutes (OCI.maxConferenceDurationMinutes):
            maxConferenceDurationMinutes *Optional*
        max_scheduled_conference_duration_minutes
            (OCI.maxScheduledConferenceDurationMinutes):
            maxScheduledConferenceDurationMinutes *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "allocated_ports",
        "network_class_of_service",
        "security_pin_length",
        "allow_individual_out_dial",
        "operator_number",
        "conference_host_user_id_list",
        "play_warning_prompt",
        "conference_end_warning_prompt_minutes",
        "enable_max_conference_duration",
        "max_conference_duration_minutes",
        "max_scheduled_conference_duration_minutes",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E(
                "allocated_ports",
                "allocatedPorts",
                OCI.MeetMeConferencingConferencePorts,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E("security_pin_length", "securityPinLength", int),
            E("allow_individual_out_dial", "allowIndividualOutDial", bool),
            E("operator_number", "operatorNumber", str),
            E(
                "conference_host_user_id_list",
                "conferenceHostUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E("play_warning_prompt", "playWarningPrompt", bool),
            E(
                "conference_end_warning_prompt_minutes",
                "conferenceEndWarningPromptMinutes",
                int,
            ),
            E("enable_max_conference_duration", "enableMaxConferenceDuration", bool),
            E(
                "max_conference_duration_minutes",
                "maxConferenceDurationMinutes",
                OCI.MeetMeConferencingConferenceDuration,
                is_complex=True,
            ),
            E(
                "max_scheduled_conference_duration_minutes",
                "maxScheduledConferenceDurationMinutes",
                OCI.MeetMeConferencingConferenceDuration,
                is_complex=True,
            ),
        )


class GroupMusicOnHoldAddInstanceRequest14(OCIRequest):
    """
    Add a Music On Hold Instance to a department.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: GroupMusicOnHoldAddInstanceRequest14Sp4

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department
        is_active_during_call_hold (bool): isActiveDuringCallHold
        is_active_during_call_park (bool): isActiveDuringCallPark
        message_selection (str): messageSelection
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "message_selection",
        "access_device_endpoint",
        "audio_file",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "department",
                "department",
                OCI.DepartmentKey,
                is_complex=True,
                is_required=True,
            ),
            E(
                "is_active_during_call_hold",
                "isActiveDuringCallHold",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_call_park",
                "isActiveDuringCallPark",
                bool,
                is_required=True,
            ),
            E("message_selection", "messageSelection", str, is_required=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAdd,
                is_complex=True,
            ),
            E("audio_file", "audioFile", OCI.LabeledFileResource, is_complex=True),
            E("video_file", "videoFile", OCI.LabeledFileResource, is_complex=True),
        )


class GroupMusicOnHoldAddInstanceRequest14sp4(OCIRequest):
    """
    Add a Music On Hold Instance to a department.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department
        is_active_during_call_hold (bool): isActiveDuringCallHold
        is_active_during_call_park (bool): isActiveDuringCallPark
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn
        message_selection (str): messageSelection
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "message_selection",
        "access_device_endpoint",
        "audio_file",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "department",
                "department",
                OCI.DepartmentKey,
                is_complex=True,
                is_required=True,
            ),
            E(
                "is_active_during_call_hold",
                "isActiveDuringCallHold",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_call_park",
                "isActiveDuringCallPark",
                bool,
                is_required=True,
            ),
            E(
                "is_active_during_busy_camp_on",
                "isActiveDuringBusyCampOn",
                bool,
                is_required=True,
            ),
            E("message_selection", "messageSelection", str, is_required=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAdd,
                is_complex=True,
            ),
            E("audio_file", "audioFile", OCI.LabeledFileResource, is_complex=True),
            E("video_file", "videoFile", OCI.LabeledFileResource, is_complex=True),
        )


class GroupMusicOnHoldModifyInstanceRequest14(OCIRequest):
    """
    Modify data for a group or department Music On Hold Instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        department (OCI.department): department *Optional*
        is_active_during_call_hold (bool): isActiveDuringCallHold *Optional*
        is_active_during_call_park (bool): isActiveDuringCallPark *Optional*
        is_active_during_busy_camp_on (bool): isActiveDuringBusyCampOn *Optional*
        message_selection (str): messageSelection *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "department",
        "is_active_during_call_hold",
        "is_active_during_call_park",
        "is_active_during_busy_camp_on",
        "message_selection",
        "access_device_endpoint",
        "audio_file",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("is_active_during_call_hold", "isActiveDuringCallHold", bool),
            E("is_active_during_call_park", "isActiveDuringCallPark", bool),
            E("is_active_during_busy_camp_on", "isActiveDuringBusyCampOn", bool),
            E("message_selection", "messageSelection", str),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointModify,
                is_complex=True,
            ),
            E("audio_file", "audioFile", OCI.LabeledFileResource, is_complex=True),
            E("video_file", "videoFile", OCI.LabeledFileResource, is_complex=True),
        )


class GroupNetworkClassOfServiceGetAssignedUserListRequest(OCIRequest):
    """
    Get a list of users within a group that have a given Network Class of Service
    assigned.

    The response is either a `GroupNetworkClassOfServiceGetAssignedUserListResponse()` or
    an `ErorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        network_class_of_service (str): networkClassOfService
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "network_class_of_service",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "network_class_of_service",
                "networkClassOfService",
                str,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        network_class_of_service (str): networkClassOfService
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "network_class_of_service",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "network_class_of_service",
                "networkClassOfService",
                str,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        office_zone_name (str): officeZoneName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "office_zone_name",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("office_zone_name", "officeZoneName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        group_permissions (OCI.groupPermissions): groupPermissions *Optional*
        department_permissions (List[OCI.departmentPermissions]): departmentPermissions
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_permissions",
        "department_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "group_permissions",
                "groupPermissions",
                OCI.OutgoingCallingPlanCallMeNowPermissionsModify,
                is_complex=True,
            ),
            E(
                "department_permissions",
                "departmentPermissions",
                OCI.OutgoingCallingPlanCallMeNowDepartmentPermissionsModify,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        group_permissions (OCI.groupPermissions): groupPermissions *Optional*
        department_permissions (List[OCI.departmentPermissions]): departmentPermissions
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_permissions",
        "department_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "group_permissions",
                "groupPermissions",
                OCI.OutgoingCallingPlanOriginatingPermissionsModify,
                is_complex=True,
            ),
            E(
                "department_permissions",
                "departmentPermissions",
                OCI.OutgoingCallingPlanOriginatingDepartmentPermissionsModify,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        group_permissions (OCI.groupPermissions): groupPermissions *Optional*
        department_permissions (List[OCI.departmentPermissions]): departmentPermissions
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_permissions",
        "department_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "group_permissions",
                "groupPermissions",
                OCI.OutgoingCallingPlanRedirectedPermissionsModify,
                is_complex=True,
            ),
            E(
                "department_permissions",
                "departmentPermissions",
                OCI.OutgoingCallingPlanRedirectedDepartmentPermissionsModify,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        group_permissions (OCI.groupPermissions): groupPermissions *Optional*
        department_permissions (List[OCI.departmentPermissions]): departmentPermissions
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_permissions",
        "department_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "group_permissions",
                "groupPermissions",
                OCI.OutgoingCallingPlanRedirectingPermissionsModify,
                is_complex=True,
            ),
            E(
                "department_permissions",
                "departmentPermissions",
                OCI.OutgoingCallingPlanRedirectingDepartmentPermissionsModify,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        group_numbers (OCI.groupNumbers): groupNumbers *Optional*
        department_numbers (List[OCI.departmentNumbers]): departmentNumbers *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_numbers",
        "department_numbers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "group_numbers",
                "groupNumbers",
                OCI.OutgoingCallingPlanTransferNumbersModify,
                is_complex=True,
            ),
            E(
                "department_numbers",
                "departmentNumbers",
                OCI.OutgoingCallingPlanDepartmentTransferNumbersModify,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupPhoneDirectoryGetListRequest(OCIRequest):
    """
    Request a table containing the phone directory for a group.

    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.  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 `GroupPhoneDirectoryGetListResponse()` or `ErrorResponse()`.
    Replace by: `GroupPhoneDirectoryGetListRequest17()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_extended_info_requested (bool): isExtendedInfoRequested
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_extended_info_requested",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_yahoo_id",
        "search_criteria_exact_user_group",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "is_extended_info_requested",
                "isExtendedInfoRequested",
                bool,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
        )


class GroupPhoneDirectoryGetListRequest17(OCIRequest):
    """
    Request a table containing the phone directory for a group.

    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.  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 `GroupPhoneDirectoryGetListResponse17()` or `ErrorResponse()`.
    Replaced by: `GroupPhoneDirectoryGetListRequest18()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_extended_info_requested (bool): isExtendedInfoRequested
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_extended_info_requested",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_yahoo_id",
        "search_criteria_exact_user_group",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "is_extended_info_requested",
                "isExtendedInfoRequested",
                bool,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
        )


class GroupPhoneDirectoryGetListRequest17sp3(OCIRequest):
    """
    Request a table containing the phone directory for a group.

    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.  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 `GroupPhoneDirectoryGetListResponse17sp3()` or
    `ErrorResponse()`. Replaced by: `GroupPhoneDirectoryGetListRequest18()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_extended_info_requested (bool): isExtendedInfoRequested
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_extended_info_requested",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_yahoo_id",
        "search_criteria_exact_user_group",
        "search_criteria_exact_user_department",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "is_extended_info_requested",
                "isExtendedInfoRequested",
                bool,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupPhoneDirectoryGetListRequest18(OCIRequest):
    """
    Request a table containing the phone directory for a group.

    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.  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 `GroupPhoneDirectoryGetListResponse18()` or `ErrorResponse()`.

    Replaced By: `GroupPhoneDirectoryGetPagedSortedListRequest()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_extended_info_requested (bool): isExtendedInfoRequested
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_extended_info_requested",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_yahoo_id",
        "search_criteria_exact_user_group",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "is_extended_info_requested",
                "isExtendedInfoRequested",
                bool,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupPhoneDirectoryGetPagedListRequest(OCIRequest):
    """
    Request a table containing the phone directory for a group.

    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.  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 `GroupPhoneDirectoryGetPagedListResponse()` or
    `ErrorResponse()`.

    Replaced By: `GroupPhoneDirectoryGetPagedSortedListRequest()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_extended_info_requested (bool): isExtendedInfoRequested
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_extended_info_requested",
        "response_paging_control",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_yahoo_id",
        "search_criteria_exact_user_group",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "is_extended_info_requested",
                "isExtendedInfoRequested",
                bool,
                is_required=True,
            ),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=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
    Amplify and XS data mode: "sortByImpId" "searchCriteriaImpId"

    The response is either `GroupPhoneDirectoryGetPagedSortedListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        is_extended_info_requested (bool): isExtendedInfoRequested
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "is_extended_info_requested",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_department_name",
        "search_criteria_exact_user_group",
        "search_criteria_yahoo_id",
        "search_criteria_user_id",
        "search_criteria_imp_id",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "is_extended_info_requested",
                "isExtendedInfoRequested",
                bool,
                is_required=True,
            ),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderGroupPhoneDirectoryGetPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


class GroupPreAlertingAnnouncementModifyRequest(OCIRequest):
    """
    Modify the group level pre-alerting service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `GroupPreAlertingAnnouncementModifyRequest20()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        announcement_interruption (str): announcementInterruption *Optional*
        interruption_digit_sequence (str): interruptionDigitSequence *Optional*
        audio_selection (str): audioSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "announcement_interruption",
        "interruption_digit_sequence",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("announcement_interruption", "announcementInterruption", str),
            E("interruption_digit_sequence", "interruptionDigitSequence", str),
            E("audio_selection", "audioSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("video_selection", "videoSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        announcement_interruption (str): announcementInterruption *Optional*
        interruption_digit_sequence (str): interruptionDigitSequence *Optional*
        audio_selection (str): audioSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "announcement_interruption",
        "interruption_digit_sequence",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("announcement_interruption", "announcementInterruption", str),
            E("interruption_digit_sequence", "interruptionDigitSequence", str),
            E("audio_selection", "audioSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource20,
                is_complex=True,
            ),
            E("video_selection", "videoSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource20,
                is_complex=True,
            ),
        )


class GroupRoutePointAddInstanceRequest(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()`. Replace by
    `GroupRoutePointAddInstanceRequest22()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        network_class_of_service (str): networkClassOfService *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec
        internal_preferred_audio_codec (str): internalPreferredAudioCodec
        queue_length (int): queueLength
        no_answer_timeout_rings (int): noAnswerTimeoutRings
        enable_video (bool): enableVideo
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents
        agent_state_after_call (str): agentStateAfterCall
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "network_class_of_service",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "queue_length",
        "no_answer_timeout_rings",
        "enable_video",
        "play_ringing_when_offering_call",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileCallCenter,
                is_complex=True,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "external_preferred_audio_codec",
                "externalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "internal_preferred_audio_codec",
                "internalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E("queue_length", "queueLength", int, is_required=True),
            E("no_answer_timeout_rings", "noAnswerTimeoutRings", int, is_required=True),
            E("enable_video", "enableVideo", bool, is_required=True),
            E(
                "play_ringing_when_offering_call",
                "playRingingWhenOfferingCall",
                bool,
                is_required=True,
            ),
            E(
                "override_agent_wrap_up_time",
                "overrideAgentWrapUpTime",
                bool,
                is_required=True,
            ),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
                is_required=True,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str, is_required=True),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E(
                "force_delivery_of_calls",
                "forceDeliveryOfCalls",
                bool,
                is_required=True,
            ),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
        )


class GroupRoutePointAddInstanceRequest22(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()`. Replaced by
    `GroupRoutePointAddInstanceRequest23()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        network_class_of_service (str): networkClassOfService *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec
        internal_preferred_audio_codec (str): internalPreferredAudioCodec
        queue_length (int): queueLength
        no_answer_timeout_rings (int): noAnswerTimeoutRings
        enable_video (bool): enableVideo
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents
        agent_state_after_call (str): agentStateAfterCall
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "network_class_of_service",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "queue_length",
        "no_answer_timeout_rings",
        "enable_video",
        "play_ringing_when_offering_call",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileCallCenter,
                is_complex=True,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "external_preferred_audio_codec",
                "externalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "internal_preferred_audio_codec",
                "internalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E("queue_length", "queueLength", int, is_required=True),
            E("no_answer_timeout_rings", "noAnswerTimeoutRings", int, is_required=True),
            E("enable_video", "enableVideo", bool, is_required=True),
            E(
                "play_ringing_when_offering_call",
                "playRingingWhenOfferingCall",
                bool,
                is_required=True,
            ),
            E(
                "override_agent_wrap_up_time",
                "overrideAgentWrapUpTime",
                bool,
                is_required=True,
            ),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
                is_required=True,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str, is_required=True),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E(
                "force_delivery_of_calls",
                "forceDeliveryOfCalls",
                bool,
                is_required=True,
            ),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
        )


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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        network_class_of_service (str): networkClassOfService *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec
        internal_preferred_audio_codec (str): internalPreferredAudioCodec
        queue_length (int): queueLength
        no_answer_timeout_rings (int): noAnswerTimeoutRings
        enable_video (bool): enableVideo
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents
        agent_state_after_call (str): agentStateAfterCall
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
        send_call_admission_notification (bool): sendCallAdmissionNotification
        call_admission_timer_seconds (int): callAdmissionTimerSeconds
        enable_unlimited_queue_length (bool): enableUnlimitedQueueLength *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "network_class_of_service",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "queue_length",
        "no_answer_timeout_rings",
        "enable_video",
        "play_ringing_when_offering_call",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
        "send_call_admission_notification",
        "call_admission_timer_seconds",
        "enable_unlimited_queue_length",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "external_preferred_audio_codec",
                "externalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E(
                "internal_preferred_audio_codec",
                "internalPreferredAudioCodec",
                str,
                is_required=True,
            ),
            E("queue_length", "queueLength", int, is_required=True),
            E("no_answer_timeout_rings", "noAnswerTimeoutRings", int, is_required=True),
            E("enable_video", "enableVideo", bool, is_required=True),
            E(
                "play_ringing_when_offering_call",
                "playRingingWhenOfferingCall",
                bool,
                is_required=True,
            ),
            E(
                "override_agent_wrap_up_time",
                "overrideAgentWrapUpTime",
                bool,
                is_required=True,
            ),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
                is_required=True,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str, is_required=True),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E(
                "force_delivery_of_calls",
                "forceDeliveryOfCalls",
                bool,
                is_required=True,
            ),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
            E(
                "send_call_admission_notification",
                "sendCallAdmissionNotification",
                bool,
                is_required=True,
            ),
            E(
                "call_admission_timer_seconds",
                "callAdmissionTimerSeconds",
                int,
                is_required=True,
            ),
            E("enable_unlimited_queue_length", "enableUnlimitedQueueLength", bool),
        )


class GroupRoutePointForcedForwardingModifyRequest(OCIRequest):
    """
    Modify a route point's forced forwarding settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        is_active (bool): isActive *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        play_announcement_before_forwarding (bool): playAnnouncementBeforeForwarding
            *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "is_active",
        "forward_to_phone_number",
        "play_announcement_before_forwarding",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E(
                "play_announcement_before_forwarding",
                "playAnnouncementBeforeForwarding",
                bool,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=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): serviceUserId
        is_active (bool): isActive *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        play_announcement_before_forwarding (bool): playAnnouncementBeforeForwarding
            *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "is_active",
        "forward_to_phone_number",
        "play_announcement_before_forwarding",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E(
                "play_announcement_before_forwarding",
                "playAnnouncementBeforeForwarding",
                bool,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
        )


class GroupRoutePointHolidayServiceModifyRequest(OCIRequest):
    """
    Modify a route point's holiday service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        action (str): action *Optional*
        holiday_schedule (str): holidaySchedule *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "holiday_schedule",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("holiday_schedule", "holidaySchedule", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
        )


class GroupRoutePointHolidayServiceModifyRequest17sp1(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): serviceUserId
        action (str): action *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "holiday_schedule",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=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): serviceUserId
        action (str): action *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "holiday_schedule",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
        )


class GroupRoutePointModifyInstanceRequest(OCIRequest):
    """
    Request to modify a Route Point instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by
    `GroupRoutePointModifyInstanceRequest22()`.

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec *Optional*
        internal_preferred_audio_codec (str): internalPreferredAudioCodec *Optional*
        queue_length (int): queueLength *Optional*
        no_answer_timeout_rings (int): noAnswerTimeoutRings *Optional*
        enable_video (bool): enableVideo *Optional*
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall *Optional*
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents *Optional*
        agent_state_after_call (str): agentStateAfterCall *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls *Optional*
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "network_class_of_service",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "queue_length",
        "no_answer_timeout_rings",
        "enable_video",
        "play_ringing_when_offering_call",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E("external_preferred_audio_codec", "externalPreferredAudioCodec", str),
            E("internal_preferred_audio_codec", "internalPreferredAudioCodec", str),
            E("queue_length", "queueLength", int),
            E("no_answer_timeout_rings", "noAnswerTimeoutRings", int),
            E("enable_video", "enableVideo", bool),
            E("play_ringing_when_offering_call", "playRingingWhenOfferingCall", bool),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E("force_delivery_of_calls", "forceDeliveryOfCalls", bool),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
        )


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): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        external_preferred_audio_codec (str): externalPreferredAudioCodec *Optional*
        internal_preferred_audio_codec (str): internalPreferredAudioCodec *Optional*
        queue_length (int): queueLength *Optional*
        no_answer_timeout_rings (int): noAnswerTimeoutRings *Optional*
        enable_video (bool): enableVideo *Optional*
        play_ringing_when_offering_call (bool): playRingingWhenOfferingCall *Optional*
        override_agent_wrap_up_time (bool): overrideAgentWrapUpTime *Optional*
        wrap_up_seconds (int): wrapUpSeconds *Optional*
        enable_automatic_state_change_for_agents (bool):
            enableAutomaticStateChangeForAgents *Optional*
        agent_state_after_call (str): agentStateAfterCall *Optional*
        agent_unavailable_code (str): agentUnavailableCode *Optional*
        force_delivery_of_calls (bool): forceDeliveryOfCalls *Optional*
        force_delivery_wait_time_seconds (int): forceDeliveryWaitTimeSeconds *Optional*
        send_call_admission_notification (bool): sendCallAdmissionNotification *Optional*
        call_admission_timer_seconds (int): callAdmissionTimerSeconds *Optional*
        enable_unlimited_queue_length (bool): enableUnlimitedQueueLength *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "network_class_of_service",
        "external_preferred_audio_codec",
        "internal_preferred_audio_codec",
        "queue_length",
        "no_answer_timeout_rings",
        "enable_video",
        "play_ringing_when_offering_call",
        "override_agent_wrap_up_time",
        "wrap_up_seconds",
        "enable_automatic_state_change_for_agents",
        "agent_state_after_call",
        "agent_unavailable_code",
        "force_delivery_of_calls",
        "force_delivery_wait_time_seconds",
        "send_call_admission_notification",
        "call_admission_timer_seconds",
        "enable_unlimited_queue_length",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E("external_preferred_audio_codec", "externalPreferredAudioCodec", str),
            E("internal_preferred_audio_codec", "internalPreferredAudioCodec", str),
            E("queue_length", "queueLength", int),
            E("no_answer_timeout_rings", "noAnswerTimeoutRings", int),
            E("enable_video", "enableVideo", bool),
            E("play_ringing_when_offering_call", "playRingingWhenOfferingCall", bool),
            E("override_agent_wrap_up_time", "overrideAgentWrapUpTime", bool),
            E("wrap_up_seconds", "wrapUpSeconds", int),
            E(
                "enable_automatic_state_change_for_agents",
                "enableAutomaticStateChangeForAgents",
                bool,
            ),
            E("agent_state_after_call", "agentStateAfterCall", str),
            E("agent_unavailable_code", "agentUnavailableCode", str),
            E("force_delivery_of_calls", "forceDeliveryOfCalls", bool),
            E("force_delivery_wait_time_seconds", "forceDeliveryWaitTimeSeconds", int),
            E(
                "send_call_admission_notification",
                "sendCallAdmissionNotification",
                bool,
            ),
            E("call_admission_timer_seconds", "callAdmissionTimerSeconds", int),
            E("enable_unlimited_queue_length", "enableUnlimitedQueueLength", bool),
        )


class GroupRoutePointNightServiceModifyRequest(OCIRequest):
    """
    Modify a route point's night service settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        action (str): action *Optional*
        business_hours (str): businessHours *Optional*
        force_night_service (bool): forceNightService *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
        manual_announcement_mode (str): manualAnnouncementMode *Optional*
        manual_audio_message_selection (str): manualAudioMessageSelection *Optional*
        manual_audio_url_list (OCI.manualAudioUrlList): manualAudioUrlList *Optional*
        manual_audio_file_list (OCI.manualAudioFileList): manualAudioFileList *Optional*
        manual_video_message_selection (str): manualVideoMessageSelection *Optional*
        manual_video_url_list (OCI.manualVideoUrlList): manualVideoUrlList *Optional*
        manual_video_file_list (OCI.manualVideoFileList): manualVideoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "business_hours",
        "force_night_service",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
        "manual_announcement_mode",
        "manual_audio_message_selection",
        "manual_audio_url_list",
        "manual_audio_file_list",
        "manual_video_message_selection",
        "manual_video_url_list",
        "manual_video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("business_hours", "businessHours", str),
            E("force_night_service", "forceNightService", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("manual_announcement_mode", "manualAnnouncementMode", str),
            E("manual_audio_message_selection", "manualAudioMessageSelection", str),
            E(
                "manual_audio_url_list",
                "manualAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "manual_audio_file_list",
                "manualAudioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("manual_video_message_selection", "manualVideoMessageSelection", str),
            E(
                "manual_video_url_list",
                "manualVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "manual_video_file_list",
                "manualVideoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
        )


class GroupRoutePointNightServiceModifyRequest17sp1(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): serviceUserId
        action (str): action *Optional*
        business_hours (OCI.businessHours): businessHours *Optional*
        force_night_service (bool): forceNightService *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
        manual_announcement_mode (str): manualAnnouncementMode *Optional*
        manual_audio_message_selection (str): manualAudioMessageSelection *Optional*
        manual_audio_url_list (OCI.manualAudioUrlList): manualAudioUrlList *Optional*
        manual_audio_file_list (OCI.manualAudioFileList): manualAudioFileList *Optional*
        manual_video_message_selection (str): manualVideoMessageSelection *Optional*
        manual_video_url_list (OCI.manualVideoUrlList): manualVideoUrlList *Optional*
        manual_video_file_list (OCI.manualVideoFileList): manualVideoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "business_hours",
        "force_night_service",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
        "manual_announcement_mode",
        "manual_audio_message_selection",
        "manual_audio_url_list",
        "manual_audio_file_list",
        "manual_video_message_selection",
        "manual_video_url_list",
        "manual_video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("business_hours", "businessHours", OCI.TimeSchedule, is_complex=True),
            E("force_night_service", "forceNightService", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("manual_announcement_mode", "manualAnnouncementMode", str),
            E("manual_audio_message_selection", "manualAudioMessageSelection", str),
            E(
                "manual_audio_url_list",
                "manualAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "manual_audio_file_list",
                "manualAudioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("manual_video_message_selection", "manualVideoMessageSelection", str),
            E(
                "manual_video_url_list",
                "manualVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "manual_video_file_list",
                "manualVideoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=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): serviceUserId
        action (str): action *Optional*
        business_hours (OCI.businessHours): businessHours *Optional*
        force_night_service (bool): forceNightService *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        play_announcement_before_action (bool): playAnnouncementBeforeAction *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
        manual_announcement_mode (str): manualAnnouncementMode *Optional*
        manual_audio_message_selection (str): manualAudioMessageSelection *Optional*
        manual_audio_url_list (OCI.manualAudioUrlList): manualAudioUrlList *Optional*
        manual_audio_file_list (OCI.manualAudioFileList): manualAudioFileList *Optional*
        manual_video_message_selection (str): manualVideoMessageSelection *Optional*
        manual_video_url_list (OCI.manualVideoUrlList): manualVideoUrlList *Optional*
        manual_video_file_list (OCI.manualVideoFileList): manualVideoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "business_hours",
        "force_night_service",
        "transfer_phone_number",
        "play_announcement_before_action",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
        "manual_announcement_mode",
        "manual_audio_message_selection",
        "manual_audio_url_list",
        "manual_audio_file_list",
        "manual_video_message_selection",
        "manual_video_url_list",
        "manual_video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("business_hours", "businessHours", OCI.TimeSchedule, is_complex=True),
            E("force_night_service", "forceNightService", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("play_announcement_before_action", "playAnnouncementBeforeAction", bool),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("manual_announcement_mode", "manualAnnouncementMode", str),
            E("manual_audio_message_selection", "manualAudioMessageSelection", str),
            E(
                "manual_audio_url_list",
                "manualAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "manual_audio_file_list",
                "manualAudioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("manual_video_message_selection", "manualVideoMessageSelection", str),
            E(
                "manual_video_url_list",
                "manualVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "manual_video_file_list",
                "manualVideoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
        )


class GroupRoutePointOverflowModifyRequest(OCIRequest):
    """
    Modify a route point's overflow settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        action (str): action *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        overflow_after_timeout (bool): overflowAfterTimeout *Optional*
        timeout_seconds (int): timeoutSeconds *Optional*
        play_announcement_before_overflow_processing (bool):
            playAnnouncementBeforeOverflowProcessing *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "transfer_phone_number",
        "overflow_after_timeout",
        "timeout_seconds",
        "play_announcement_before_overflow_processing",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("overflow_after_timeout", "overflowAfterTimeout", bool),
            E("timeout_seconds", "timeoutSeconds", int),
            E(
                "play_announcement_before_overflow_processing",
                "playAnnouncementBeforeOverflowProcessing",
                bool,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=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): serviceUserId
        action (str): action *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        overflow_after_timeout (bool): overflowAfterTimeout *Optional*
        timeout_seconds (int): timeoutSeconds *Optional*
        play_announcement_before_overflow_processing (bool):
            playAnnouncementBeforeOverflowProcessing *Optional*
        audio_message_selection (str): audioMessageSelection *Optional*
        audio_url_list (OCI.audioUrlList): audioUrlList *Optional*
        audio_file_list (OCI.audioFileList): audioFileList *Optional*
        video_message_selection (str): videoMessageSelection *Optional*
        video_url_list (OCI.videoUrlList): videoUrlList *Optional*
        video_file_list (OCI.videoFileList): videoFileList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "action",
        "transfer_phone_number",
        "overflow_after_timeout",
        "timeout_seconds",
        "play_announcement_before_overflow_processing",
        "audio_message_selection",
        "audio_url_list",
        "audio_file_list",
        "video_message_selection",
        "video_url_list",
        "video_file_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("action", "action", str),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("overflow_after_timeout", "overflowAfterTimeout", bool),
            E("timeout_seconds", "timeoutSeconds", int),
            E(
                "play_announcement_before_overflow_processing",
                "playAnnouncementBeforeOverflowProcessing",
                bool,
            ),
            E("audio_message_selection", "audioMessageSelection", str),
            E(
                "audio_url_list",
                "audioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "audio_file_list",
                "audioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("video_message_selection", "videoMessageSelection", str),
            E(
                "video_url_list",
                "videoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "video_file_list",
                "videoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        name (str): name *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        service_pack_authorization (List[OCI.servicePackAuthorization]):
            servicePackAuthorization *Optional*
        group_service_authorization (List[OCI.groupServiceAuthorization]):
            groupServiceAuthorization *Optional*
        user_service_authorization (List[OCI.userServiceAuthorization]):
            userServiceAuthorization *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_pack_authorization",
        "group_service_authorization",
        "user_service_authorization",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "service_pack_authorization",
                "servicePackAuthorization",
                OCI.ServicePackAuthorization,
                is_complex=True,
                is_array=True,
            ),
            E(
                "group_service_authorization",
                "groupServiceAuthorization",
                OCI.GroupServiceAuthorization,
                is_complex=True,
                is_array=True,
            ),
            E(
                "user_service_authorization",
                "userServiceAuthorization",
                OCI.UserServiceAuthorization,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        new_name (str): newName *Optional*
        max_session (int): maxSession *Optional*
        max_user_originating_sessions (int): maxUserOriginatingSessions *Optional*
        max_user_terminating_sessions (int): maxUserTerminatingSessions *Optional*
        reserved_session (int): reservedSession *Optional*
        reserved_user_originating_sessions (int): reservedUserOriginatingSessions
            *Optional*
        reserved_user_terminating_sessions (int): reservedUserTerminatingSessions
            *Optional*
        become_default_group (bool): becomeDefaultGroup *Optional*
        count_intra_sac_group_sessions (bool): countIntraSACGroupSessions *Optional*
        device_list (OCI.deviceList): deviceList *Optional*
        block_emergency_and_repair_calls_due_to_sac_limits (bool):
            blockEmergencyAndRepairCallsDueToSACLimits *Optional*
        media_group_name (str): mediaGroupName *Optional*
        access_info_pattern (str): accessInfoPattern *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "new_name",
        "max_session",
        "max_user_originating_sessions",
        "max_user_terminating_sessions",
        "reserved_session",
        "reserved_user_originating_sessions",
        "reserved_user_terminating_sessions",
        "become_default_group",
        "count_intra_sac_group_sessions",
        "device_list",
        "block_emergency_and_repair_calls_due_to_sac_limits",
        "media_group_name",
        "access_info_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("max_session", "maxSession", int),
            E("max_user_originating_sessions", "maxUserOriginatingSessions", int),
            E("max_user_terminating_sessions", "maxUserTerminatingSessions", int),
            E("reserved_session", "reservedSession", int),
            E(
                "reserved_user_originating_sessions",
                "reservedUserOriginatingSessions",
                int,
            ),
            E(
                "reserved_user_terminating_sessions",
                "reservedUserTerminatingSessions",
                int,
            ),
            E("become_default_group", "becomeDefaultGroup", bool),
            E("count_intra_sac_group_sessions", "countIntraSACGroupSessions", bool),
            E("device_list", "deviceList", OCI.ReplacementDeviceList, is_complex=True),
            E(
                "block_emergency_and_repair_calls_due_to_sac_limits",
                "blockEmergencyAndRepairCallsDueToSACLimits",
                bool,
            ),
            E("media_group_name", "mediaGroupName", str),
            E("access_info_pattern", "accessInfoPattern", str),
        )


class GroupTrunkGroupAddInstanceRequest14(OCIRequest):
    """
    Add a Trunk Group instance to a group.

    The domain is required in the serviceUserId.  The publicUserIdentity in the
    ServiceInstanceAddProfile is not allowed for trunk groups.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "access_device_endpoint",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileTrunkGroup,
                is_complex=True,
                is_required=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAdd,
                is_complex=True,
            ),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
        )


class GroupTrunkGroupAddInstanceRequest14sp1(OCIRequest):
    """
    Add a Trunk Group instance to a group.

    The domain is required in the serviceUserId.  The publicUserIdentity in the
    ServiceInstanceAddProfile is not allowed for trunk groups.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_id (str):
            capacityExceededRerouteTrunkGroupId *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_id (str):
            unreachableDestinationRerouteTrunkGroupId *Optional*
        unreachable_destination_trap_initial_calls (int):
            unreachableDestinationTrapInitialCalls
        unreachable_destination_trap_offset_calls (int):
            unreachableDestinationTrapOffsetCalls
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "access_device_endpoint",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "bursting_max_active_calls",
        "bursting_max_incoming_calls",
        "bursting_max_outgoing_calls",
        "capacity_exceeded_action",
        "capacity_exceeded_forward_address",
        "capacity_exceeded_reroute_trunk_group_id",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_id",
        "unreachable_destination_trap_initial_calls",
        "unreachable_destination_trap_offset_calls",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfileTrunkGroup,
                is_complex=True,
                is_required=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAdd,
                is_complex=True,
            ),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_id",
                "capacityExceededRerouteTrunkGroupId",
                str,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_id",
                "unreachableDestinationRerouteTrunkGroupId",
                str,
            ),
            E(
                "unreachable_destination_trap_initial_calls",
                "unreachableDestinationTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "unreachable_destination_trap_offset_calls",
                "unreachableDestinationTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
        )


class GroupTrunkGroupAddInstanceRequest14sp4(OCIRequest):
    """
    Add a Trunk Group instance to a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        pilot_user (OCI.pilotUser): pilotUser *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        unreachable_destination_trap_initial_calls (int):
            unreachableDestinationTrapInitialCalls
        unreachable_destination_trap_offset_calls (int):
            unreachableDestinationTrapOffsetCalls
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id (List[str]): hostedUserId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "pilot_user",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "unreachable_destination_trap_initial_calls",
        "unreachable_destination_trap_offset_calls",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("pilot_user", "pilotUser", OCI.TrunkGroupPilotUser, is_complex=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "unreachable_destination_trap_initial_calls",
                "unreachableDestinationTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "unreachable_destination_trap_offset_calls",
                "unreachableDestinationTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E("hosted_user_id", "hostedUserId", str, is_array=True),
        )


class GroupTrunkGroupAddInstanceRequest14sp9(OCIRequest):
    """
    Add a Trunk Group instance to a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        pilot_user (OCI.pilotUser): pilotUser *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        unreachable_destination_trap_initial_calls (int):
            unreachableDestinationTrapInitialCalls
        unreachable_destination_trap_offset_calls (int):
            unreachableDestinationTrapOffsetCalls
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id (List[str]): hostedUserId *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        include_trunk_group_identity (bool): includeTrunkGroupIdentity
        include_dtg_identity (bool): includeDtgIdentity
        enable_network_address_identity (bool): enableNetworkAddressIdentity
        allow_unscreened_calls (bool): allowUnscreenedCalls
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls
        use_pilot_user_calling_line_identity (bool): usePilotUserCallingLineIdentity
        use_pilot_user_charge_number (bool): usePilotUserChargeNumber
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "pilot_user",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "unreachable_destination_trap_initial_calls",
        "unreachable_destination_trap_offset_calls",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id",
        "trunk_group_identity",
        "otg_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "use_pilot_user_calling_line_identity",
        "use_pilot_user_charge_number",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("pilot_user", "pilotUser", OCI.TrunkGroupPilotUser, is_complex=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "unreachable_destination_trap_initial_calls",
                "unreachableDestinationTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "unreachable_destination_trap_offset_calls",
                "unreachableDestinationTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E("hosted_user_id", "hostedUserId", str, is_array=True),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "include_trunk_group_identity",
                "includeTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E("include_dtg_identity", "includeDtgIdentity", bool, is_required=True),
            E(
                "enable_network_address_identity",
                "enableNetworkAddressIdentity",
                bool,
                is_required=True,
            ),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool, is_required=True),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
                is_required=True,
            ),
            E(
                "use_pilot_user_calling_line_identity",
                "usePilotUserCallingLineIdentity",
                bool,
                is_required=True,
            ),
            E(
                "use_pilot_user_charge_number",
                "usePilotUserChargeNumber",
                bool,
                is_required=True,
            ),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
        )


class GroupTrunkGroupAddInstanceRequest15(OCIRequest):
    """
    Add a Trunk Group instance to a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        pilot_user (OCI.pilotUser): pilotUser *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id (List[str]): hostedUserId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "pilot_user",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("pilot_user", "pilotUser", OCI.TrunkGroupPilotUser, is_complex=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E("hosted_user_id", "hostedUserId", str, is_array=True),
        )


class GroupTrunkGroupAddInstanceRequest15sp2(OCIRequest):
    """
    Add a Trunk Group instance to a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        pilot_user (OCI.pilotUser): pilotUser *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id (List[str]): hostedUserId *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        include_trunk_group_identity (bool): includeTrunkGroupIdentity
        include_dtg_identity (bool): includeDtgIdentity
        enable_network_address_identity (bool): enableNetworkAddressIdentity
        allow_unscreened_calls (bool): allowUnscreenedCalls
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls
        pilot_user_calling_line_identity_policy (str): pilotUserCallingLineIdentityPolicy
        pilot_user_charge_number_policy (str): pilotUserChargeNumberPolicy
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "pilot_user",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id",
        "trunk_group_identity",
        "otg_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "pilot_user_calling_line_identity_policy",
        "pilot_user_charge_number_policy",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("pilot_user", "pilotUser", OCI.TrunkGroupPilotUser, is_complex=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E("hosted_user_id", "hostedUserId", str, is_array=True),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "include_trunk_group_identity",
                "includeTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E("include_dtg_identity", "includeDtgIdentity", bool, is_required=True),
            E(
                "enable_network_address_identity",
                "enableNetworkAddressIdentity",
                bool,
                is_required=True,
            ),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool, is_required=True),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_policy",
                "pilotUserCallingLineIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_charge_number_policy",
                "pilotUserChargeNumberPolicy",
                str,
                is_required=True,
            ),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
        )


class GroupTrunkGroupAddInstanceRequest17(OCIRequest):
    """
    Replaced By `GroupTrunkGroupAddInstanceRequest17sp4()` Add a Trunk Group instance to a
    group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        pilot_user (OCI.pilotUser): pilotUser *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id (List[str]): hostedUserId *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        include_trunk_group_identity (bool): includeTrunkGroupIdentity
        include_dtg_identity (bool): includeDtgIdentity
        enable_network_address_identity (bool): enableNetworkAddressIdentity
        allow_unscreened_calls (bool): allowUnscreenedCalls
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls
        pilot_user_calling_line_identity_policy (str): pilotUserCallingLineIdentityPolicy
        pilot_user_charge_number_policy (str): pilotUserChargeNumberPolicy
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
        peering_domain (str): peeringDomain *Optional*
        route_to_peering_domain (bool): routeToPeeringDomain
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "pilot_user",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id",
        "trunk_group_identity",
        "otg_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "pilot_user_calling_line_identity_policy",
        "pilot_user_charge_number_policy",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
        "peering_domain",
        "route_to_peering_domain",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("pilot_user", "pilotUser", OCI.TrunkGroupPilotUser, is_complex=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E("hosted_user_id", "hostedUserId", str, is_array=True),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "include_trunk_group_identity",
                "includeTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E("include_dtg_identity", "includeDtgIdentity", bool, is_required=True),
            E(
                "enable_network_address_identity",
                "enableNetworkAddressIdentity",
                bool,
                is_required=True,
            ),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool, is_required=True),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_policy",
                "pilotUserCallingLineIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_charge_number_policy",
                "pilotUserChargeNumberPolicy",
                str,
                is_required=True,
            ),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("peering_domain", "peeringDomain", str),
            E(
                "route_to_peering_domain",
                "routeToPeeringDomain",
                bool,
                is_required=True,
            ),
        )


class GroupTrunkGroupAddInstanceRequest17sp3(OCIRequest):
    """
    Add a Trunk Group instance to a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `GroupTrunkGroupAddInstanceRequest17sp4()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        pilot_user (OCI.pilotUser): pilotUser *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id (List[str]): hostedUserId *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        include_trunk_group_identity (bool): includeTrunkGroupIdentity
        include_dtg_identity (bool): includeDtgIdentity
        enable_network_address_identity (bool): enableNetworkAddressIdentity
        allow_unscreened_calls (bool): allowUnscreenedCalls
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls
        pilot_user_calling_line_identity_policy (str): pilotUserCallingLineIdentityPolicy
        pilot_user_charge_number_policy (str): pilotUserChargeNumberPolicy
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
        peering_domain (str): peeringDomain *Optional*
        route_to_peering_domain (bool): routeToPeeringDomain
        prefix_enabled (bool): prefixEnabled
        prefix (str): prefix *Optional*
        stateful_rerouting_enabled (bool): statefulReroutingEnabled
        send_continuous_options_message (bool): sendContinuousOptionsMessage
        continuous_options_sending_interval_seconds (int):
            continuousOptionsSendingIntervalSeconds
        failure_options_sending_interval_seconds (int):
            failureOptionsSendingIntervalSeconds
        failure_threshold_counter (int): failureThresholdCounter
        success_threshold_counter (int): successThresholdCounter
        invite_failure_threshold_counter (int): inviteFailureThresholdCounter
        invite_failure_threshold_window_seconds (int): inviteFailureThresholdWindowSeconds
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "pilot_user",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id",
        "trunk_group_identity",
        "otg_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "pilot_user_calling_line_identity_policy",
        "pilot_user_charge_number_policy",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
        "peering_domain",
        "route_to_peering_domain",
        "prefix_enabled",
        "prefix",
        "stateful_rerouting_enabled",
        "send_continuous_options_message",
        "continuous_options_sending_interval_seconds",
        "failure_options_sending_interval_seconds",
        "failure_threshold_counter",
        "success_threshold_counter",
        "invite_failure_threshold_counter",
        "invite_failure_threshold_window_seconds",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("pilot_user", "pilotUser", OCI.TrunkGroupPilotUser, is_complex=True),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E("hosted_user_id", "hostedUserId", str, is_array=True),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "include_trunk_group_identity",
                "includeTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E("include_dtg_identity", "includeDtgIdentity", bool, is_required=True),
            E(
                "enable_network_address_identity",
                "enableNetworkAddressIdentity",
                bool,
                is_required=True,
            ),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool, is_required=True),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_policy",
                "pilotUserCallingLineIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_charge_number_policy",
                "pilotUserChargeNumberPolicy",
                str,
                is_required=True,
            ),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("peering_domain", "peeringDomain", str),
            E(
                "route_to_peering_domain",
                "routeToPeeringDomain",
                bool,
                is_required=True,
            ),
            E("prefix_enabled", "prefixEnabled", bool, is_required=True),
            E("prefix", "prefix", str),
            E(
                "stateful_rerouting_enabled",
                "statefulReroutingEnabled",
                bool,
                is_required=True,
            ),
            E(
                "send_continuous_options_message",
                "sendContinuousOptionsMessage",
                bool,
                is_required=True,
            ),
            E(
                "continuous_options_sending_interval_seconds",
                "continuousOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_options_sending_interval_seconds",
                "failureOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_threshold_counter",
                "failureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "success_threshold_counter",
                "successThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_counter",
                "inviteFailureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_window_seconds",
                "inviteFailureThresholdWindowSeconds",
                int,
                is_required=True,
            ),
        )


class GroupTrunkGroupAddInstanceRequest17sp4(OCIRequest):
    """
    Add a Trunk Group instance to a group.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        pilot_user (OCI.pilotUser): pilotUser *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id (List[str]): hostedUserId *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        allow_termination_to_trunk_group_identity (bool):
            allowTerminationToTrunkGroupIdentity
        allow_termination_to_dtg_identity (bool): allowTerminationToDtgIdentity
        include_trunk_group_identity (bool): includeTrunkGroupIdentity
        include_dtg_identity (bool): includeDtgIdentity
        include_trunk_group_identity_for_network_calls (bool):
            includeTrunkGroupIdentityForNetworkCalls
        include_otg_identity_for_network_calls (bool): includeOtgIdentityForNetworkCalls
        enable_network_address_identity (bool): enableNetworkAddressIdentity
        allow_unscreened_calls (bool): allowUnscreenedCalls
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls
        pilot_user_calling_line_identity_policy (str): pilotUserCallingLineIdentityPolicy
        pilot_user_charge_number_policy (str): pilotUserChargeNumberPolicy
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
        peering_domain (str): peeringDomain *Optional*
        route_to_peering_domain (bool): routeToPeeringDomain
        prefix_enabled (bool): prefixEnabled
        prefix (str): prefix *Optional*
        stateful_rerouting_enabled (bool): statefulReroutingEnabled
        send_continuous_options_message (bool): sendContinuousOptionsMessage
        continuous_options_sending_interval_seconds (int):
            continuousOptionsSendingIntervalSeconds
        failure_options_sending_interval_seconds (int):
            failureOptionsSendingIntervalSeconds
        failure_threshold_counter (int): failureThresholdCounter
        success_threshold_counter (int): successThresholdCounter
        invite_failure_threshold_counter (int): inviteFailureThresholdCounter
        invite_failure_threshold_window_seconds (int): inviteFailureThresholdWindowSeconds
        pilot_user_calling_line_asserted_identity_policy (str):
            pilotUserCallingLineAssertedIdentityPolicy
        use_system_calling_line_asserted_identity_policy (bool):
            useSystemCallingLineAssertedIdentityPolicy
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "pilot_user",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id",
        "trunk_group_identity",
        "otg_dtg_identity",
        "allow_termination_to_trunk_group_identity",
        "allow_termination_to_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "include_trunk_group_identity_for_network_calls",
        "include_otg_identity_for_network_calls",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "pilot_user_calling_line_identity_policy",
        "pilot_user_charge_number_policy",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
        "peering_domain",
        "route_to_peering_domain",
        "prefix_enabled",
        "prefix",
        "stateful_rerouting_enabled",
        "send_continuous_options_message",
        "continuous_options_sending_interval_seconds",
        "failure_options_sending_interval_seconds",
        "failure_threshold_counter",
        "success_threshold_counter",
        "invite_failure_threshold_counter",
        "invite_failure_threshold_window_seconds",
        "pilot_user_calling_line_asserted_identity_policy",
        "use_system_calling_line_asserted_identity_policy",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "pilot_user",
                "pilotUser",
                OCI.TrunkGroupMultipleContactPilotUser,
                is_complex=True,
            ),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E("hosted_user_id", "hostedUserId", str, is_array=True),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "allow_termination_to_trunk_group_identity",
                "allowTerminationToTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E(
                "allow_termination_to_dtg_identity",
                "allowTerminationToDtgIdentity",
                bool,
                is_required=True,
            ),
            E(
                "include_trunk_group_identity",
                "includeTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E("include_dtg_identity", "includeDtgIdentity", bool, is_required=True),
            E(
                "include_trunk_group_identity_for_network_calls",
                "includeTrunkGroupIdentityForNetworkCalls",
                bool,
                is_required=True,
            ),
            E(
                "include_otg_identity_for_network_calls",
                "includeOtgIdentityForNetworkCalls",
                bool,
                is_required=True,
            ),
            E(
                "enable_network_address_identity",
                "enableNetworkAddressIdentity",
                bool,
                is_required=True,
            ),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool, is_required=True),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_policy",
                "pilotUserCallingLineIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_charge_number_policy",
                "pilotUserChargeNumberPolicy",
                str,
                is_required=True,
            ),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("peering_domain", "peeringDomain", str),
            E(
                "route_to_peering_domain",
                "routeToPeeringDomain",
                bool,
                is_required=True,
            ),
            E("prefix_enabled", "prefixEnabled", bool, is_required=True),
            E("prefix", "prefix", str),
            E(
                "stateful_rerouting_enabled",
                "statefulReroutingEnabled",
                bool,
                is_required=True,
            ),
            E(
                "send_continuous_options_message",
                "sendContinuousOptionsMessage",
                bool,
                is_required=True,
            ),
            E(
                "continuous_options_sending_interval_seconds",
                "continuousOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_options_sending_interval_seconds",
                "failureOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_threshold_counter",
                "failureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "success_threshold_counter",
                "successThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_counter",
                "inviteFailureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_window_seconds",
                "inviteFailureThresholdWindowSeconds",
                int,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_asserted_identity_policy",
                "pilotUserCallingLineAssertedIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_calling_line_asserted_identity_policy",
                "useSystemCallingLineAssertedIdentityPolicy",
                bool,
                is_required=True,
            ),
        )


class GroupTrunkGroupAddInstanceRequest19(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()`. Replaced by
    `GroupTrunkGroupAddInstanceRequest19sp1()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        pilot_user (OCI.pilotUser): pilotUser *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id (List[str]): hostedUserId *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        allow_termination_to_trunk_group_identity (bool):
            allowTerminationToTrunkGroupIdentity
        allow_termination_to_dtg_identity (bool): allowTerminationToDtgIdentity
        include_trunk_group_identity (bool): includeTrunkGroupIdentity
        include_dtg_identity (bool): includeDtgIdentity
        include_trunk_group_identity_for_network_calls (bool):
            includeTrunkGroupIdentityForNetworkCalls
        include_otg_identity_for_network_calls (bool): includeOtgIdentityForNetworkCalls
        enable_network_address_identity (bool): enableNetworkAddressIdentity
        allow_unscreened_calls (bool): allowUnscreenedCalls
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls
        pilot_user_calling_line_identity_policy (str): pilotUserCallingLineIdentityPolicy
        pilot_user_charge_number_policy (str): pilotUserChargeNumberPolicy
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
        peering_domain (str): peeringDomain *Optional*
        route_to_peering_domain (bool): routeToPeeringDomain
        prefix_enabled (bool): prefixEnabled
        prefix (str): prefix *Optional*
        stateful_rerouting_enabled (bool): statefulReroutingEnabled
        send_continuous_options_message (bool): sendContinuousOptionsMessage
        continuous_options_sending_interval_seconds (int):
            continuousOptionsSendingIntervalSeconds
        failure_options_sending_interval_seconds (int):
            failureOptionsSendingIntervalSeconds
        failure_threshold_counter (int): failureThresholdCounter
        success_threshold_counter (int): successThresholdCounter
        invite_failure_threshold_counter (int): inviteFailureThresholdCounter
        invite_failure_threshold_window_seconds (int): inviteFailureThresholdWindowSeconds
        pilot_user_calling_line_asserted_identity_policy (str):
            pilotUserCallingLineAssertedIdentityPolicy
        use_system_calling_line_asserted_identity_policy (bool):
            useSystemCallingLineAssertedIdentityPolicy
        pilot_user_call_optimization_policy (str): pilotUserCallOptimizationPolicy
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "pilot_user",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id",
        "trunk_group_identity",
        "otg_dtg_identity",
        "allow_termination_to_trunk_group_identity",
        "allow_termination_to_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "include_trunk_group_identity_for_network_calls",
        "include_otg_identity_for_network_calls",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "pilot_user_calling_line_identity_policy",
        "pilot_user_charge_number_policy",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
        "peering_domain",
        "route_to_peering_domain",
        "prefix_enabled",
        "prefix",
        "stateful_rerouting_enabled",
        "send_continuous_options_message",
        "continuous_options_sending_interval_seconds",
        "failure_options_sending_interval_seconds",
        "failure_threshold_counter",
        "success_threshold_counter",
        "invite_failure_threshold_counter",
        "invite_failure_threshold_window_seconds",
        "pilot_user_calling_line_asserted_identity_policy",
        "use_system_calling_line_asserted_identity_policy",
        "pilot_user_call_optimization_policy",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "pilot_user",
                "pilotUser",
                OCI.TrunkGroupMultipleContactPilotUser,
                is_complex=True,
            ),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E("hosted_user_id", "hostedUserId", str, is_array=True),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "allow_termination_to_trunk_group_identity",
                "allowTerminationToTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E(
                "allow_termination_to_dtg_identity",
                "allowTerminationToDtgIdentity",
                bool,
                is_required=True,
            ),
            E(
                "include_trunk_group_identity",
                "includeTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E("include_dtg_identity", "includeDtgIdentity", bool, is_required=True),
            E(
                "include_trunk_group_identity_for_network_calls",
                "includeTrunkGroupIdentityForNetworkCalls",
                bool,
                is_required=True,
            ),
            E(
                "include_otg_identity_for_network_calls",
                "includeOtgIdentityForNetworkCalls",
                bool,
                is_required=True,
            ),
            E(
                "enable_network_address_identity",
                "enableNetworkAddressIdentity",
                bool,
                is_required=True,
            ),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool, is_required=True),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_policy",
                "pilotUserCallingLineIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_charge_number_policy",
                "pilotUserChargeNumberPolicy",
                str,
                is_required=True,
            ),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("peering_domain", "peeringDomain", str),
            E(
                "route_to_peering_domain",
                "routeToPeeringDomain",
                bool,
                is_required=True,
            ),
            E("prefix_enabled", "prefixEnabled", bool, is_required=True),
            E("prefix", "prefix", str),
            E(
                "stateful_rerouting_enabled",
                "statefulReroutingEnabled",
                bool,
                is_required=True,
            ),
            E(
                "send_continuous_options_message",
                "sendContinuousOptionsMessage",
                bool,
                is_required=True,
            ),
            E(
                "continuous_options_sending_interval_seconds",
                "continuousOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_options_sending_interval_seconds",
                "failureOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_threshold_counter",
                "failureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "success_threshold_counter",
                "successThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_counter",
                "inviteFailureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_window_seconds",
                "inviteFailureThresholdWindowSeconds",
                int,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_asserted_identity_policy",
                "pilotUserCallingLineAssertedIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_calling_line_asserted_identity_policy",
                "useSystemCallingLineAssertedIdentityPolicy",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_call_optimization_policy",
                "pilotUserCallOptimizationPolicy",
                str,
                is_required=True,
            ),
        )


class GroupTrunkGroupAddInstanceRequest19sp1(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()`. Replaced by:
    `GroupTrunkGroupAddInstanceRequest20sp1()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        pilot_user (OCI.pilotUser): pilotUser *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id (List[str]): hostedUserId *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        allow_termination_to_trunk_group_identity (bool):
            allowTerminationToTrunkGroupIdentity
        allow_termination_to_dtg_identity (bool): allowTerminationToDtgIdentity
        include_trunk_group_identity (bool): includeTrunkGroupIdentity
        include_dtg_identity (bool): includeDtgIdentity
        include_trunk_group_identity_for_network_calls (bool):
            includeTrunkGroupIdentityForNetworkCalls
        include_otg_identity_for_network_calls (bool): includeOtgIdentityForNetworkCalls
        enable_network_address_identity (bool): enableNetworkAddressIdentity
        allow_unscreened_calls (bool): allowUnscreenedCalls
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls
        pilot_user_calling_line_identity_for_external_calls_policy (str):
            pilotUserCallingLineIdentityForExternalCallsPolicy
        pilot_user_charge_number_policy (str): pilotUserChargeNumberPolicy
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
        peering_domain (str): peeringDomain *Optional*
        route_to_peering_domain (bool): routeToPeeringDomain
        prefix_enabled (bool): prefixEnabled
        prefix (str): prefix *Optional*
        stateful_rerouting_enabled (bool): statefulReroutingEnabled
        send_continuous_options_message (bool): sendContinuousOptionsMessage
        continuous_options_sending_interval_seconds (int):
            continuousOptionsSendingIntervalSeconds
        failure_options_sending_interval_seconds (int):
            failureOptionsSendingIntervalSeconds
        failure_threshold_counter (int): failureThresholdCounter
        success_threshold_counter (int): successThresholdCounter
        invite_failure_threshold_counter (int): inviteFailureThresholdCounter
        invite_failure_threshold_window_seconds (int): inviteFailureThresholdWindowSeconds
        pilot_user_calling_line_asserted_identity_policy (str):
            pilotUserCallingLineAssertedIdentityPolicy
        use_system_calling_line_asserted_identity_policy (bool):
            useSystemCallingLineAssertedIdentityPolicy
        pilot_user_call_optimization_policy (str): pilotUserCallOptimizationPolicy
        clid_source_for_screened_calls_policy (str): clidSourceForScreenedCallsPolicy
        use_system_clid_source_for_screened_calls_policy (bool):
            useSystemCLIDSourceForScreenedCallsPolicy
        user_lookup_policy (str): userLookupPolicy
        use_system_user_lookup_policy (bool): useSystemUserLookupPolicy
        pilot_user_calling_line_identity_for_emergency_calls_policy (str):
            pilotUserCallingLineIdentityForEmergencyCallsPolicy
        pilot_user_network_class_of_service (str): pilotUserNetworkClassOfService
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "pilot_user",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id",
        "trunk_group_identity",
        "otg_dtg_identity",
        "allow_termination_to_trunk_group_identity",
        "allow_termination_to_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "include_trunk_group_identity_for_network_calls",
        "include_otg_identity_for_network_calls",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "pilot_user_calling_line_identity_for_external_calls_policy",
        "pilot_user_charge_number_policy",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
        "peering_domain",
        "route_to_peering_domain",
        "prefix_enabled",
        "prefix",
        "stateful_rerouting_enabled",
        "send_continuous_options_message",
        "continuous_options_sending_interval_seconds",
        "failure_options_sending_interval_seconds",
        "failure_threshold_counter",
        "success_threshold_counter",
        "invite_failure_threshold_counter",
        "invite_failure_threshold_window_seconds",
        "pilot_user_calling_line_asserted_identity_policy",
        "use_system_calling_line_asserted_identity_policy",
        "pilot_user_call_optimization_policy",
        "clid_source_for_screened_calls_policy",
        "use_system_clid_source_for_screened_calls_policy",
        "user_lookup_policy",
        "use_system_user_lookup_policy",
        "pilot_user_calling_line_identity_for_emergency_calls_policy",
        "pilot_user_network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "pilot_user",
                "pilotUser",
                OCI.TrunkGroupMultipleContactPilotUser,
                is_complex=True,
            ),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E("hosted_user_id", "hostedUserId", str, is_array=True),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "allow_termination_to_trunk_group_identity",
                "allowTerminationToTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E(
                "allow_termination_to_dtg_identity",
                "allowTerminationToDtgIdentity",
                bool,
                is_required=True,
            ),
            E(
                "include_trunk_group_identity",
                "includeTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E("include_dtg_identity", "includeDtgIdentity", bool, is_required=True),
            E(
                "include_trunk_group_identity_for_network_calls",
                "includeTrunkGroupIdentityForNetworkCalls",
                bool,
                is_required=True,
            ),
            E(
                "include_otg_identity_for_network_calls",
                "includeOtgIdentityForNetworkCalls",
                bool,
                is_required=True,
            ),
            E(
                "enable_network_address_identity",
                "enableNetworkAddressIdentity",
                bool,
                is_required=True,
            ),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool, is_required=True),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_for_external_calls_policy",
                "pilotUserCallingLineIdentityForExternalCallsPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_charge_number_policy",
                "pilotUserChargeNumberPolicy",
                str,
                is_required=True,
            ),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("peering_domain", "peeringDomain", str),
            E(
                "route_to_peering_domain",
                "routeToPeeringDomain",
                bool,
                is_required=True,
            ),
            E("prefix_enabled", "prefixEnabled", bool, is_required=True),
            E("prefix", "prefix", str),
            E(
                "stateful_rerouting_enabled",
                "statefulReroutingEnabled",
                bool,
                is_required=True,
            ),
            E(
                "send_continuous_options_message",
                "sendContinuousOptionsMessage",
                bool,
                is_required=True,
            ),
            E(
                "continuous_options_sending_interval_seconds",
                "continuousOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_options_sending_interval_seconds",
                "failureOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_threshold_counter",
                "failureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "success_threshold_counter",
                "successThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_counter",
                "inviteFailureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_window_seconds",
                "inviteFailureThresholdWindowSeconds",
                int,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_asserted_identity_policy",
                "pilotUserCallingLineAssertedIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_calling_line_asserted_identity_policy",
                "useSystemCallingLineAssertedIdentityPolicy",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_call_optimization_policy",
                "pilotUserCallOptimizationPolicy",
                str,
                is_required=True,
            ),
            E(
                "clid_source_for_screened_calls_policy",
                "clidSourceForScreenedCallsPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_clid_source_for_screened_calls_policy",
                "useSystemCLIDSourceForScreenedCallsPolicy",
                bool,
                is_required=True,
            ),
            E("user_lookup_policy", "userLookupPolicy", str, is_required=True),
            E(
                "use_system_user_lookup_policy",
                "useSystemUserLookupPolicy",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_for_emergency_calls_policy",
                "pilotUserCallingLineIdentityForEmergencyCallsPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_network_class_of_service",
                "pilotUserNetworkClassOfService",
                str,
            ),
        )


class GroupTrunkGroupAddInstanceRequest20sp1(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()`. Replaced by:
    `GroupTrunkGroupAddInstanceRequest21()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        pilot_user (OCI.pilotUser): pilotUser *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id (List[str]): hostedUserId *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        allow_termination_to_trunk_group_identity (bool):
            allowTerminationToTrunkGroupIdentity
        allow_termination_to_dtg_identity (bool): allowTerminationToDtgIdentity
        include_trunk_group_identity (bool): includeTrunkGroupIdentity
        include_dtg_identity (bool): includeDtgIdentity
        include_trunk_group_identity_for_network_calls (bool):
            includeTrunkGroupIdentityForNetworkCalls
        include_otg_identity_for_network_calls (bool): includeOtgIdentityForNetworkCalls
        enable_network_address_identity (bool): enableNetworkAddressIdentity
        allow_unscreened_calls (bool): allowUnscreenedCalls
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls
        pilot_user_calling_line_identity_for_external_calls_policy (str):
            pilotUserCallingLineIdentityForExternalCallsPolicy
        pilot_user_charge_number_policy (str): pilotUserChargeNumberPolicy
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
        peering_domain (str): peeringDomain *Optional*
        route_to_peering_domain (bool): routeToPeeringDomain
        prefix_enabled (bool): prefixEnabled
        prefix (str): prefix *Optional*
        stateful_rerouting_enabled (bool): statefulReroutingEnabled
        send_continuous_options_message (bool): sendContinuousOptionsMessage
        continuous_options_sending_interval_seconds (int):
            continuousOptionsSendingIntervalSeconds
        failure_options_sending_interval_seconds (int):
            failureOptionsSendingIntervalSeconds
        failure_threshold_counter (int): failureThresholdCounter
        success_threshold_counter (int): successThresholdCounter
        invite_failure_threshold_counter (int): inviteFailureThresholdCounter
        invite_failure_threshold_window_seconds (int): inviteFailureThresholdWindowSeconds
        pilot_user_calling_line_asserted_identity_policy (str):
            pilotUserCallingLineAssertedIdentityPolicy
        use_system_calling_line_asserted_identity_policy (bool):
            useSystemCallingLineAssertedIdentityPolicy
        pilot_user_call_optimization_policy (str): pilotUserCallOptimizationPolicy
        clid_source_for_screened_calls_policy (str): clidSourceForScreenedCallsPolicy
        use_system_clid_source_for_screened_calls_policy (bool):
            useSystemCLIDSourceForScreenedCallsPolicy
        user_lookup_policy (str): userLookupPolicy
        use_system_user_lookup_policy (bool): useSystemUserLookupPolicy
        pilot_user_calling_line_identity_for_emergency_calls_policy (str):
            pilotUserCallingLineIdentityForEmergencyCallsPolicy
        pilot_user_network_class_of_service (str): pilotUserNetworkClassOfService
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "pilot_user",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id",
        "trunk_group_identity",
        "otg_dtg_identity",
        "allow_termination_to_trunk_group_identity",
        "allow_termination_to_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "include_trunk_group_identity_for_network_calls",
        "include_otg_identity_for_network_calls",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "pilot_user_calling_line_identity_for_external_calls_policy",
        "pilot_user_charge_number_policy",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
        "peering_domain",
        "route_to_peering_domain",
        "prefix_enabled",
        "prefix",
        "stateful_rerouting_enabled",
        "send_continuous_options_message",
        "continuous_options_sending_interval_seconds",
        "failure_options_sending_interval_seconds",
        "failure_threshold_counter",
        "success_threshold_counter",
        "invite_failure_threshold_counter",
        "invite_failure_threshold_window_seconds",
        "pilot_user_calling_line_asserted_identity_policy",
        "use_system_calling_line_asserted_identity_policy",
        "pilot_user_call_optimization_policy",
        "clid_source_for_screened_calls_policy",
        "use_system_clid_source_for_screened_calls_policy",
        "user_lookup_policy",
        "use_system_user_lookup_policy",
        "pilot_user_calling_line_identity_for_emergency_calls_policy",
        "pilot_user_network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "pilot_user",
                "pilotUser",
                OCI.TrunkGroupMultipleContactPilotUser,
                is_complex=True,
            ),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E("hosted_user_id", "hostedUserId", str, is_array=True),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "allow_termination_to_trunk_group_identity",
                "allowTerminationToTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E(
                "allow_termination_to_dtg_identity",
                "allowTerminationToDtgIdentity",
                bool,
                is_required=True,
            ),
            E(
                "include_trunk_group_identity",
                "includeTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E("include_dtg_identity", "includeDtgIdentity", bool, is_required=True),
            E(
                "include_trunk_group_identity_for_network_calls",
                "includeTrunkGroupIdentityForNetworkCalls",
                bool,
                is_required=True,
            ),
            E(
                "include_otg_identity_for_network_calls",
                "includeOtgIdentityForNetworkCalls",
                bool,
                is_required=True,
            ),
            E(
                "enable_network_address_identity",
                "enableNetworkAddressIdentity",
                bool,
                is_required=True,
            ),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool, is_required=True),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_for_external_calls_policy",
                "pilotUserCallingLineIdentityForExternalCallsPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_charge_number_policy",
                "pilotUserChargeNumberPolicy",
                str,
                is_required=True,
            ),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("peering_domain", "peeringDomain", str),
            E(
                "route_to_peering_domain",
                "routeToPeeringDomain",
                bool,
                is_required=True,
            ),
            E("prefix_enabled", "prefixEnabled", bool, is_required=True),
            E("prefix", "prefix", str),
            E(
                "stateful_rerouting_enabled",
                "statefulReroutingEnabled",
                bool,
                is_required=True,
            ),
            E(
                "send_continuous_options_message",
                "sendContinuousOptionsMessage",
                bool,
                is_required=True,
            ),
            E(
                "continuous_options_sending_interval_seconds",
                "continuousOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_options_sending_interval_seconds",
                "failureOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_threshold_counter",
                "failureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "success_threshold_counter",
                "successThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_counter",
                "inviteFailureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_window_seconds",
                "inviteFailureThresholdWindowSeconds",
                int,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_asserted_identity_policy",
                "pilotUserCallingLineAssertedIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_calling_line_asserted_identity_policy",
                "useSystemCallingLineAssertedIdentityPolicy",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_call_optimization_policy",
                "pilotUserCallOptimizationPolicy",
                str,
                is_required=True,
            ),
            E(
                "clid_source_for_screened_calls_policy",
                "clidSourceForScreenedCallsPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_clid_source_for_screened_calls_policy",
                "useSystemCLIDSourceForScreenedCallsPolicy",
                bool,
                is_required=True,
            ),
            E("user_lookup_policy", "userLookupPolicy", str, is_required=True),
            E(
                "use_system_user_lookup_policy",
                "useSystemUserLookupPolicy",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_for_emergency_calls_policy",
                "pilotUserCallingLineIdentityForEmergencyCallsPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_network_class_of_service",
                "pilotUserNetworkClassOfService",
                str,
            ),
        )


class GroupTrunkGroupAddInstanceRequest21(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 Replaced by:
    `GroupTrunkGroupAddInstanceRequest22()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        name (str): name
        pilot_user (OCI.pilotUser): pilotUser *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id (List[str]): hostedUserId *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        allow_termination_to_trunk_group_identity (bool):
            allowTerminationToTrunkGroupIdentity
        allow_termination_to_dtg_identity (bool): allowTerminationToDtgIdentity
        include_trunk_group_identity (bool): includeTrunkGroupIdentity
        include_dtg_identity (bool): includeDtgIdentity
        include_trunk_group_identity_for_network_calls (bool):
            includeTrunkGroupIdentityForNetworkCalls
        include_otg_identity_for_network_calls (bool): includeOtgIdentityForNetworkCalls
        enable_network_address_identity (bool): enableNetworkAddressIdentity
        allow_unscreened_calls (bool): allowUnscreenedCalls
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls
        pilot_user_calling_line_identity_for_external_calls_policy (str):
            pilotUserCallingLineIdentityForExternalCallsPolicy
        pilot_user_charge_number_policy (str): pilotUserChargeNumberPolicy
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
        peering_domain (str): peeringDomain *Optional*
        route_to_peering_domain (bool): routeToPeeringDomain
        prefix_enabled (bool): prefixEnabled
        prefix (str): prefix *Optional*
        stateful_rerouting_enabled (bool): statefulReroutingEnabled
        send_continuous_options_message (bool): sendContinuousOptionsMessage
        continuous_options_sending_interval_seconds (int):
            continuousOptionsSendingIntervalSeconds
        failure_options_sending_interval_seconds (int):
            failureOptionsSendingIntervalSeconds
        failure_threshold_counter (int): failureThresholdCounter
        success_threshold_counter (int): successThresholdCounter
        invite_failure_threshold_counter (int): inviteFailureThresholdCounter
        invite_failure_threshold_window_seconds (int): inviteFailureThresholdWindowSeconds
        pilot_user_calling_line_asserted_identity_policy (str):
            pilotUserCallingLineAssertedIdentityPolicy
        use_system_calling_line_asserted_identity_policy (bool):
            useSystemCallingLineAssertedIdentityPolicy
        pilot_user_call_optimization_policy (str): pilotUserCallOptimizationPolicy
        clid_source_for_screened_calls_policy (str): clidSourceForScreenedCallsPolicy
        use_system_clid_source_for_screened_calls_policy (bool):
            useSystemCLIDSourceForScreenedCallsPolicy
        user_lookup_policy (str): userLookupPolicy
        use_system_user_lookup_policy (bool): useSystemUserLookupPolicy
        pilot_user_calling_line_identity_for_emergency_calls_policy (str):
            pilotUserCallingLineIdentityForEmergencyCallsPolicy
        pilot_user_network_class_of_service (str): pilotUserNetworkClassOfService
            *Optional*
        implicit_registration_set_support_policy (str):
            implicitRegistrationSetSupportPolicy
        use_system_implicit_registration_set_support_policy (bool):
            useSystemImplicitRegistrationSetSupportPolicy
        sip_identity_for_pilot_and_proxy_trunk_modes_policy (str):
            sipIdentityForPilotAndProxyTrunkModesPolicy
        use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy (bool):
            useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy
        use_system_support_connected_identity_policy (bool):
            useSystemSupportConnectedIdentityPolicy
        support_connected_identity_policy (str): supportConnectedIdentityPolicy
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "pilot_user",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id",
        "trunk_group_identity",
        "otg_dtg_identity",
        "allow_termination_to_trunk_group_identity",
        "allow_termination_to_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "include_trunk_group_identity_for_network_calls",
        "include_otg_identity_for_network_calls",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "pilot_user_calling_line_identity_for_external_calls_policy",
        "pilot_user_charge_number_policy",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
        "peering_domain",
        "route_to_peering_domain",
        "prefix_enabled",
        "prefix",
        "stateful_rerouting_enabled",
        "send_continuous_options_message",
        "continuous_options_sending_interval_seconds",
        "failure_options_sending_interval_seconds",
        "failure_threshold_counter",
        "success_threshold_counter",
        "invite_failure_threshold_counter",
        "invite_failure_threshold_window_seconds",
        "pilot_user_calling_line_asserted_identity_policy",
        "use_system_calling_line_asserted_identity_policy",
        "pilot_user_call_optimization_policy",
        "clid_source_for_screened_calls_policy",
        "use_system_clid_source_for_screened_calls_policy",
        "user_lookup_policy",
        "use_system_user_lookup_policy",
        "pilot_user_calling_line_identity_for_emergency_calls_policy",
        "pilot_user_network_class_of_service",
        "implicit_registration_set_support_policy",
        "use_system_implicit_registration_set_support_policy",
        "sip_identity_for_pilot_and_proxy_trunk_modes_policy",
        "use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy",
        "use_system_support_connected_identity_policy",
        "support_connected_identity_policy",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "pilot_user",
                "pilotUser",
                OCI.TrunkGroupMultipleContactPilotUser,
                is_complex=True,
            ),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E("hosted_user_id", "hostedUserId", str, is_array=True),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "allow_termination_to_trunk_group_identity",
                "allowTerminationToTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E(
                "allow_termination_to_dtg_identity",
                "allowTerminationToDtgIdentity",
                bool,
                is_required=True,
            ),
            E(
                "include_trunk_group_identity",
                "includeTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E("include_dtg_identity", "includeDtgIdentity", bool, is_required=True),
            E(
                "include_trunk_group_identity_for_network_calls",
                "includeTrunkGroupIdentityForNetworkCalls",
                bool,
                is_required=True,
            ),
            E(
                "include_otg_identity_for_network_calls",
                "includeOtgIdentityForNetworkCalls",
                bool,
                is_required=True,
            ),
            E(
                "enable_network_address_identity",
                "enableNetworkAddressIdentity",
                bool,
                is_required=True,
            ),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool, is_required=True),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_for_external_calls_policy",
                "pilotUserCallingLineIdentityForExternalCallsPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_charge_number_policy",
                "pilotUserChargeNumberPolicy",
                str,
                is_required=True,
            ),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("peering_domain", "peeringDomain", str),
            E(
                "route_to_peering_domain",
                "routeToPeeringDomain",
                bool,
                is_required=True,
            ),
            E("prefix_enabled", "prefixEnabled", bool, is_required=True),
            E("prefix", "prefix", str),
            E(
                "stateful_rerouting_enabled",
                "statefulReroutingEnabled",
                bool,
                is_required=True,
            ),
            E(
                "send_continuous_options_message",
                "sendContinuousOptionsMessage",
                bool,
                is_required=True,
            ),
            E(
                "continuous_options_sending_interval_seconds",
                "continuousOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_options_sending_interval_seconds",
                "failureOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_threshold_counter",
                "failureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "success_threshold_counter",
                "successThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_counter",
                "inviteFailureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_window_seconds",
                "inviteFailureThresholdWindowSeconds",
                int,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_asserted_identity_policy",
                "pilotUserCallingLineAssertedIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_calling_line_asserted_identity_policy",
                "useSystemCallingLineAssertedIdentityPolicy",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_call_optimization_policy",
                "pilotUserCallOptimizationPolicy",
                str,
                is_required=True,
            ),
            E(
                "clid_source_for_screened_calls_policy",
                "clidSourceForScreenedCallsPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_clid_source_for_screened_calls_policy",
                "useSystemCLIDSourceForScreenedCallsPolicy",
                bool,
                is_required=True,
            ),
            E("user_lookup_policy", "userLookupPolicy", str, is_required=True),
            E(
                "use_system_user_lookup_policy",
                "useSystemUserLookupPolicy",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_for_emergency_calls_policy",
                "pilotUserCallingLineIdentityForEmergencyCallsPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_network_class_of_service",
                "pilotUserNetworkClassOfService",
                str,
            ),
            E(
                "implicit_registration_set_support_policy",
                "implicitRegistrationSetSupportPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_implicit_registration_set_support_policy",
                "useSystemImplicitRegistrationSetSupportPolicy",
                bool,
                is_required=True,
            ),
            E(
                "sip_identity_for_pilot_and_proxy_trunk_modes_policy",
                "sipIdentityForPilotAndProxyTrunkModesPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy",
                "useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy",
                bool,
                is_required=True,
            ),
            E(
                "use_system_support_connected_identity_policy",
                "useSystemSupportConnectedIdentityPolicy",
                bool,
                is_required=True,
            ),
            E(
                "support_connected_identity_policy",
                "supportConnectedIdentityPolicy",
                str,
                is_required=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        pilot_user (OCI.pilotUser): pilotUser *Optional*
        department (OCI.department): department *Optional*
        access_device (OCI.accessDevice): accessDevice *Optional*
        max_active_calls (int): maxActiveCalls
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_key
            (OCI.capacityExceededRerouteTrunkGroupKey):
            capacityExceededRerouteTrunkGroupKey *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_key
            (OCI.unreachableDestinationRerouteTrunkGroupKey):
            unreachableDestinationRerouteTrunkGroupKey *Optional*
        invitation_timeout (int): invitationTimeout
        require_authentication (bool): requireAuthentication
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
        hosted_user_id (List[str]): hostedUserId *Optional*
        trunk_group_identity (str): trunkGroupIdentity *Optional*
        otg_dtg_identity (str): otgDtgIdentity *Optional*
        allow_termination_to_trunk_group_identity (bool):
            allowTerminationToTrunkGroupIdentity
        allow_termination_to_dtg_identity (bool): allowTerminationToDtgIdentity
        include_trunk_group_identity (bool): includeTrunkGroupIdentity
        include_dtg_identity (bool): includeDtgIdentity
        include_trunk_group_identity_for_network_calls (bool):
            includeTrunkGroupIdentityForNetworkCalls
        include_otg_identity_for_network_calls (bool): includeOtgIdentityForNetworkCalls
        enable_network_address_identity (bool): enableNetworkAddressIdentity
        allow_unscreened_calls (bool): allowUnscreenedCalls
        allow_unscreened_emergency_calls (bool): allowUnscreenedEmergencyCalls
        pilot_user_calling_line_identity_for_external_calls_policy (str):
            pilotUserCallingLineIdentityForExternalCallsPolicy
        pilot_user_charge_number_policy (str): pilotUserChargeNumberPolicy
        call_forwarding_always_action (str): callForwardingAlwaysAction *Optional*
        call_forwarding_always_forward_address (str): callForwardingAlwaysForwardAddress
            *Optional*
        call_forwarding_always_reroute_trunk_group_key
            (OCI.callForwardingAlwaysRerouteTrunkGroupKey):
            callForwardingAlwaysRerouteTrunkGroupKey *Optional*
        peering_domain (str): peeringDomain *Optional*
        route_to_peering_domain (bool): routeToPeeringDomain
        prefix_enabled (bool): prefixEnabled
        prefix (str): prefix *Optional*
        stateful_rerouting_enabled (bool): statefulReroutingEnabled
        send_continuous_options_message (bool): sendContinuousOptionsMessage
        continuous_options_sending_interval_seconds (int):
            continuousOptionsSendingIntervalSeconds
        failure_options_sending_interval_seconds (int):
            failureOptionsSendingIntervalSeconds
        failure_threshold_counter (int): failureThresholdCounter
        success_threshold_counter (int): successThresholdCounter
        invite_failure_threshold_counter (int): inviteFailureThresholdCounter
        invite_failure_threshold_window_seconds (int): inviteFailureThresholdWindowSeconds
        pilot_user_calling_line_asserted_identity_policy (str):
            pilotUserCallingLineAssertedIdentityPolicy
        use_system_calling_line_asserted_identity_policy (bool):
            useSystemCallingLineAssertedIdentityPolicy
        pilot_user_call_optimization_policy (str): pilotUserCallOptimizationPolicy
        clid_source_for_screened_calls_policy (str): clidSourceForScreenedCallsPolicy
        use_system_clid_source_for_screened_calls_policy (bool):
            useSystemCLIDSourceForScreenedCallsPolicy
        user_lookup_policy (str): userLookupPolicy
        use_system_user_lookup_policy (bool): useSystemUserLookupPolicy
        pilot_user_calling_line_identity_for_emergency_calls_policy (str):
            pilotUserCallingLineIdentityForEmergencyCallsPolicy
        pilot_user_network_class_of_service (str): pilotUserNetworkClassOfService
            *Optional*
        implicit_registration_set_support_policy (str):
            implicitRegistrationSetSupportPolicy
        use_system_implicit_registration_set_support_policy (bool):
            useSystemImplicitRegistrationSetSupportPolicy
        sip_identity_for_pilot_and_proxy_trunk_modes_policy (str):
            sipIdentityForPilotAndProxyTrunkModesPolicy
        use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy (bool):
            useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy
        use_system_support_connected_identity_policy (bool):
            useSystemSupportConnectedIdentityPolicy
        support_connected_identity_policy (str): supportConnectedIdentityPolicy
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "pilot_user",
        "department",
        "access_device",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "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",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_key",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
        "hosted_user_id",
        "trunk_group_identity",
        "otg_dtg_identity",
        "allow_termination_to_trunk_group_identity",
        "allow_termination_to_dtg_identity",
        "include_trunk_group_identity",
        "include_dtg_identity",
        "include_trunk_group_identity_for_network_calls",
        "include_otg_identity_for_network_calls",
        "enable_network_address_identity",
        "allow_unscreened_calls",
        "allow_unscreened_emergency_calls",
        "pilot_user_calling_line_identity_for_external_calls_policy",
        "pilot_user_charge_number_policy",
        "call_forwarding_always_action",
        "call_forwarding_always_forward_address",
        "call_forwarding_always_reroute_trunk_group_key",
        "peering_domain",
        "route_to_peering_domain",
        "prefix_enabled",
        "prefix",
        "stateful_rerouting_enabled",
        "send_continuous_options_message",
        "continuous_options_sending_interval_seconds",
        "failure_options_sending_interval_seconds",
        "failure_threshold_counter",
        "success_threshold_counter",
        "invite_failure_threshold_counter",
        "invite_failure_threshold_window_seconds",
        "pilot_user_calling_line_asserted_identity_policy",
        "use_system_calling_line_asserted_identity_policy",
        "pilot_user_call_optimization_policy",
        "clid_source_for_screened_calls_policy",
        "use_system_clid_source_for_screened_calls_policy",
        "user_lookup_policy",
        "use_system_user_lookup_policy",
        "pilot_user_calling_line_identity_for_emergency_calls_policy",
        "pilot_user_network_class_of_service",
        "implicit_registration_set_support_policy",
        "use_system_implicit_registration_set_support_policy",
        "sip_identity_for_pilot_and_proxy_trunk_modes_policy",
        "use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy",
        "use_system_support_connected_identity_policy",
        "support_connected_identity_policy",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E(
                "pilot_user",
                "pilotUser",
                OCI.TrunkGroupMultipleContactPilotUser22,
                is_complex=True,
            ),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("access_device", "accessDevice", OCI.AccessDevice, is_complex=True),
            E("max_active_calls", "maxActiveCalls", int, is_required=True),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool, is_required=True),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_key",
                "capacityExceededRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
                is_required=True,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
                is_required=True,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_key",
                "unreachableDestinationRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("invitation_timeout", "invitationTimeout", int, is_required=True),
            E(
                "require_authentication",
                "requireAuthentication",
                bool,
                is_required=True,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
            E("hosted_user_id", "hostedUserId", str, is_array=True),
            E("trunk_group_identity", "trunkGroupIdentity", str),
            E("otg_dtg_identity", "otgDtgIdentity", str),
            E(
                "allow_termination_to_trunk_group_identity",
                "allowTerminationToTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E(
                "allow_termination_to_dtg_identity",
                "allowTerminationToDtgIdentity",
                bool,
                is_required=True,
            ),
            E(
                "include_trunk_group_identity",
                "includeTrunkGroupIdentity",
                bool,
                is_required=True,
            ),
            E("include_dtg_identity", "includeDtgIdentity", bool, is_required=True),
            E(
                "include_trunk_group_identity_for_network_calls",
                "includeTrunkGroupIdentityForNetworkCalls",
                bool,
                is_required=True,
            ),
            E(
                "include_otg_identity_for_network_calls",
                "includeOtgIdentityForNetworkCalls",
                bool,
                is_required=True,
            ),
            E(
                "enable_network_address_identity",
                "enableNetworkAddressIdentity",
                bool,
                is_required=True,
            ),
            E("allow_unscreened_calls", "allowUnscreenedCalls", bool, is_required=True),
            E(
                "allow_unscreened_emergency_calls",
                "allowUnscreenedEmergencyCalls",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_for_external_calls_policy",
                "pilotUserCallingLineIdentityForExternalCallsPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_charge_number_policy",
                "pilotUserChargeNumberPolicy",
                str,
                is_required=True,
            ),
            E("call_forwarding_always_action", "callForwardingAlwaysAction", str),
            E(
                "call_forwarding_always_forward_address",
                "callForwardingAlwaysForwardAddress",
                str,
            ),
            E(
                "call_forwarding_always_reroute_trunk_group_key",
                "callForwardingAlwaysRerouteTrunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
            ),
            E("peering_domain", "peeringDomain", str),
            E(
                "route_to_peering_domain",
                "routeToPeeringDomain",
                bool,
                is_required=True,
            ),
            E("prefix_enabled", "prefixEnabled", bool, is_required=True),
            E("prefix", "prefix", str),
            E(
                "stateful_rerouting_enabled",
                "statefulReroutingEnabled",
                bool,
                is_required=True,
            ),
            E(
                "send_continuous_options_message",
                "sendContinuousOptionsMessage",
                bool,
                is_required=True,
            ),
            E(
                "continuous_options_sending_interval_seconds",
                "continuousOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_options_sending_interval_seconds",
                "failureOptionsSendingIntervalSeconds",
                int,
                is_required=True,
            ),
            E(
                "failure_threshold_counter",
                "failureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "success_threshold_counter",
                "successThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_counter",
                "inviteFailureThresholdCounter",
                int,
                is_required=True,
            ),
            E(
                "invite_failure_threshold_window_seconds",
                "inviteFailureThresholdWindowSeconds",
                int,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_asserted_identity_policy",
                "pilotUserCallingLineAssertedIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_calling_line_asserted_identity_policy",
                "useSystemCallingLineAssertedIdentityPolicy",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_call_optimization_policy",
                "pilotUserCallOptimizationPolicy",
                str,
                is_required=True,
            ),
            E(
                "clid_source_for_screened_calls_policy",
                "clidSourceForScreenedCallsPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_clid_source_for_screened_calls_policy",
                "useSystemCLIDSourceForScreenedCallsPolicy",
                bool,
                is_required=True,
            ),
            E("user_lookup_policy", "userLookupPolicy", str, is_required=True),
            E(
                "use_system_user_lookup_policy",
                "useSystemUserLookupPolicy",
                bool,
                is_required=True,
            ),
            E(
                "pilot_user_calling_line_identity_for_emergency_calls_policy",
                "pilotUserCallingLineIdentityForEmergencyCallsPolicy",
                str,
                is_required=True,
            ),
            E(
                "pilot_user_network_class_of_service",
                "pilotUserNetworkClassOfService",
                str,
            ),
            E(
                "implicit_registration_set_support_policy",
                "implicitRegistrationSetSupportPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_implicit_registration_set_support_policy",
                "useSystemImplicitRegistrationSetSupportPolicy",
                bool,
                is_required=True,
            ),
            E(
                "sip_identity_for_pilot_and_proxy_trunk_modes_policy",
                "sipIdentityForPilotAndProxyTrunkModesPolicy",
                str,
                is_required=True,
            ),
            E(
                "use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy",
                "useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy",
                bool,
                is_required=True,
            ),
            E(
                "use_system_support_connected_identity_policy",
                "useSystemSupportConnectedIdentityPolicy",
                bool,
                is_required=True,
            ),
            E(
                "support_connected_identity_policy",
                "supportConnectedIdentityPolicy",
                str,
                is_required=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 (OCI.trunkGroupKey): trunkGroupKey
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "trunk_group_key",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupTrunkGroupGetInstanceUserListRequest(OCIRequest):
    """
    Get a list of user's on a Trunk Group Instance.

    The response is either a `GroupTrunkGroupGetInstanceUserListResponse()` or an
    `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=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 (OCI.trunkGroupKey): trunkGroupKey
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "trunk_group_key",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "trunk_group_key",
                "trunkGroupKey",
                OCI.TrunkGroupKey,
                is_complex=True,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupTrunkGroupModifyInstanceRequest14(OCIRequest):
    """
    Modify a Trunk Group Instance in a group.

    The publicUserIdentity in the ServiceInstanceModifyProfile is not allowed for trunk
    groups.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        max_active_calls (int): maxActiveCalls *Optional*
        max_incoming_calls (int): maxIncomingCalls *Optional*
        max_outgoing_calls (int): maxOutgoingCalls *Optional*
        enable_bursting (bool): enableBursting *Optional*
        bursting_max_active_calls (int): burstingMaxActiveCalls *Optional*
        bursting_max_incoming_calls (int): burstingMaxIncomingCalls *Optional*
        bursting_max_outgoing_calls (int): burstingMaxOutgoingCalls *Optional*
        capacity_exceeded_action (str): capacityExceededAction *Optional*
        capacity_exceeded_forward_address (str): capacityExceededForwardAddress *Optional*
        capacity_exceeded_reroute_trunk_group_id (str):
            capacityExceededRerouteTrunkGroupId *Optional*
        capacity_exceeded_trap_initial_calls (int): capacityExceededTrapInitialCalls
            *Optional*
        capacity_exceeded_trap_offset_calls (int): capacityExceededTrapOffsetCalls
            *Optional*
        unreachable_destination_action (str): unreachableDestinationAction *Optional*
        unreachable_destination_forward_address (str):
            unreachableDestinationForwardAddress *Optional*
        unreachable_destination_reroute_trunk_group_id (str):
            unreachableDestinationRerouteTrunkGroupId *Optional*
        unreachable_destination_trap_initial_calls (int):
            unreachableDestinationTrapInitialCalls *Optional*
        unreachable_destination_trap_offset_calls (int):
            unreachableDestinationTrapOffsetCalls *Optional*
        invitation_timeout (int): invitationTimeout *Optional*
        require_authentication (bool): requireAuthentication *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        sip_authentication_password (str): sipAuthenticationPassword *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "access_device_endpoint",
        "max_active_calls",
        "max_incoming_calls",
        "max_outgoing_calls",
        "enable_bursting",
        "bursting_max_active_calls",
        "bursting_max_incoming_calls",
        "bursting_max_outgoing_calls",
        "capacity_exceeded_action",
        "capacity_exceeded_forward_address",
        "capacity_exceeded_reroute_trunk_group_id",
        "capacity_exceeded_trap_initial_calls",
        "capacity_exceeded_trap_offset_calls",
        "unreachable_destination_action",
        "unreachable_destination_forward_address",
        "unreachable_destination_reroute_trunk_group_id",
        "unreachable_destination_trap_initial_calls",
        "unreachable_destination_trap_offset_calls",
        "invitation_timeout",
        "require_authentication",
        "sip_authentication_user_name",
        "sip_authentication_password",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfileTrunkGroup,
                is_complex=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointModify,
                is_complex=True,
            ),
            E("max_active_calls", "maxActiveCalls", int),
            E("max_incoming_calls", "maxIncomingCalls", int),
            E("max_outgoing_calls", "maxOutgoingCalls", int),
            E("enable_bursting", "enableBursting", bool),
            E("bursting_max_active_calls", "burstingMaxActiveCalls", int),
            E("bursting_max_incoming_calls", "burstingMaxIncomingCalls", int),
            E("bursting_max_outgoing_calls", "burstingMaxOutgoingCalls", int),
            E("capacity_exceeded_action", "capacityExceededAction", str),
            E(
                "capacity_exceeded_forward_address",
                "capacityExceededForwardAddress",
                str,
            ),
            E(
                "capacity_exceeded_reroute_trunk_group_id",
                "capacityExceededRerouteTrunkGroupId",
                str,
            ),
            E(
                "capacity_exceeded_trap_initial_calls",
                "capacityExceededTrapInitialCalls",
                int,
            ),
            E(
                "capacity_exceeded_trap_offset_calls",
                "capacityExceededTrapOffsetCalls",
                int,
            ),
            E("unreachable_destination_action", "unreachableDestinationAction", str),
            E(
                "unreachable_destination_forward_address",
                "unreachableDestinationForwardAddress",
                str,
            ),
            E(
                "unreachable_destination_reroute_trunk_group_id",
                "unreachableDestinationRerouteTrunkGroupId",
                str,
            ),
            E(
                "unreachable_destination_trap_initial_calls",
                "unreachableDestinationTrapInitialCalls",
                int,
            ),
            E(
                "unreachable_destination_trap_offset_calls",
                "unreachableDestinationTrapOffsetCalls",
                int,
            ),
            E("invitation_timeout", "invitationTimeout", int),
            E("require_authentication", "requireAuthentication", bool),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("sip_authentication_password", "sipAuthenticationPassword", str),
        )


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): serviceProviderId
        group_id (str): groupId
        call_forwarding_service (str): callForwardingService
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_user_last_name (OCI.sortByUserLastName): sortByUserLastName *Optional*
        sort_by_user_first_name (OCI.sortByUserFirstName): sortByUserFirstName *Optional*
        sort_by_user_department (OCI.sortByUserDepartment): sortByUserDepartment
            *Optional*
        sort_by_dn (OCI.sortByDn): sortByDn *Optional*
        sort_by_extension (OCI.sortByExtension): sortByExtension *Optional*
        sort_by_forwarded_to_number (OCI.sortByForwardedToNumber): sortByForwardedToNumber
            *Optional*
        include_virtual_users (bool): includeVirtualUsers *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_in_trunk_group
            (OCI.searchCriteriaExactUserInTrunkGroup): searchCriteriaExactUserInTrunkGroup
            *Optional*
        search_criteria_forwarded_to_number (List[OCI.searchCriteriaForwardedToNumber]):
            searchCriteriaForwardedToNumber *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "call_forwarding_service",
        "response_paging_control",
        "sort_by_user_last_name",
        "sort_by_user_first_name",
        "sort_by_user_department",
        "sort_by_dn",
        "sort_by_extension",
        "sort_by_forwarded_to_number",
        "include_virtual_users",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_in_trunk_group",
        "search_criteria_forwarded_to_number",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "call_forwarding_service",
                "callForwardingService",
                str,
                is_required=True,
            ),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_user_last_name",
                "sortByUserLastName",
                OCI.SortByUserLastName,
                is_complex=True,
            ),
            E(
                "sort_by_user_first_name",
                "sortByUserFirstName",
                OCI.SortByUserFirstName,
                is_complex=True,
            ),
            E(
                "sort_by_user_department",
                "sortByUserDepartment",
                OCI.SortByUserDepartment,
                is_complex=True,
            ),
            E("sort_by_dn", "sortByDn", OCI.SortByDn, is_complex=True),
            E(
                "sort_by_extension",
                "sortByExtension",
                OCI.SortByExtension,
                is_complex=True,
            ),
            E(
                "sort_by_forwarded_to_number",
                "sortByForwardedToNumber",
                OCI.SortByForwardedToNumber,
                is_complex=True,
            ),
            E("include_virtual_users", "includeVirtualUsers", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_in_trunk_group",
                "searchCriteriaExactUserInTrunkGroup",
                OCI.SearchCriteriaExactUserInTrunkGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_forwarded_to_number",
                "searchCriteriaForwardedToNumber",
                OCI.SearchCriteriaForwardedToNumber,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_user_last_name (OCI.sortByUserLastName): sortByUserLastName *Optional*
        sort_by_user_first_name (OCI.sortByUserFirstName): sortByUserFirstName *Optional*
        sort_by_user_department (OCI.sortByUserDepartment): sortByUserDepartment
            *Optional*
        sort_by_dn (OCI.sortByDn): sortByDn *Optional*
        sort_by_extension (OCI.sortByExtension): sortByExtension *Optional*
        sort_by_service_status (OCI.sortByServiceStatus): sortByServiceStatus *Optional*
        include_virtual_users (bool): includeVirtualUsers *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_in_trunk_group
            (OCI.searchCriteriaExactUserInTrunkGroup): searchCriteriaExactUserInTrunkGroup
            *Optional*
        search_criteria_service_status (OCI.searchCriteriaServiceStatus):
            searchCriteriaServiceStatus *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_by_user_last_name",
        "sort_by_user_first_name",
        "sort_by_user_department",
        "sort_by_dn",
        "sort_by_extension",
        "sort_by_service_status",
        "include_virtual_users",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_in_trunk_group",
        "search_criteria_service_status",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_user_last_name",
                "sortByUserLastName",
                OCI.SortByUserLastName,
                is_complex=True,
            ),
            E(
                "sort_by_user_first_name",
                "sortByUserFirstName",
                OCI.SortByUserFirstName,
                is_complex=True,
            ),
            E(
                "sort_by_user_department",
                "sortByUserDepartment",
                OCI.SortByUserDepartment,
                is_complex=True,
            ),
            E("sort_by_dn", "sortByDn", OCI.SortByDn, is_complex=True),
            E(
                "sort_by_extension",
                "sortByExtension",
                OCI.SortByExtension,
                is_complex=True,
            ),
            E(
                "sort_by_service_status",
                "sortByServiceStatus",
                OCI.SortByServiceStatus,
                is_complex=True,
            ),
            E("include_virtual_users", "includeVirtualUsers", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_in_trunk_group",
                "searchCriteriaExactUserInTrunkGroup",
                OCI.SearchCriteriaExactUserInTrunkGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_service_status",
                "searchCriteriaServiceStatus",
                OCI.SearchCriteriaServiceStatus,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        calling_plan_service (str): callingPlanService
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_user_last_name (OCI.sortByUserLastName): sortByUserLastName *Optional*
        sort_by_user_first_name (OCI.sortByUserFirstName): sortByUserFirstName *Optional*
        sort_by_user_department (OCI.sortByUserDepartment): sortByUserDepartment
            *Optional*
        sort_by_dn (OCI.sortByDn): sortByDn *Optional*
        sort_by_extension (OCI.sortByExtension): sortByExtension *Optional*
        include_virtual_users (bool): includeVirtualUsers *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_in_trunk_group
            (OCI.searchCriteriaExactUserInTrunkGroup): searchCriteriaExactUserInTrunkGroup
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "calling_plan_service",
        "response_paging_control",
        "sort_by_user_last_name",
        "sort_by_user_first_name",
        "sort_by_user_department",
        "sort_by_dn",
        "sort_by_extension",
        "include_virtual_users",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_in_trunk_group",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("calling_plan_service", "callingPlanService", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_user_last_name",
                "sortByUserLastName",
                OCI.SortByUserLastName,
                is_complex=True,
            ),
            E(
                "sort_by_user_first_name",
                "sortByUserFirstName",
                OCI.SortByUserFirstName,
                is_complex=True,
            ),
            E(
                "sort_by_user_department",
                "sortByUserDepartment",
                OCI.SortByUserDepartment,
                is_complex=True,
            ),
            E("sort_by_dn", "sortByDn", OCI.SortByDn, is_complex=True),
            E(
                "sort_by_extension",
                "sortByExtension",
                OCI.SortByExtension,
                is_complex=True,
            ),
            E("include_virtual_users", "includeVirtualUsers", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_in_trunk_group",
                "searchCriteriaExactUserInTrunkGroup",
                OCI.SearchCriteriaExactUserInTrunkGroup,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        sort_by_user_last_name (OCI.sortByUserLastName): sortByUserLastName *Optional*
        sort_by_user_first_name (OCI.sortByUserFirstName): sortByUserFirstName *Optional*
        sort_by_user_department (OCI.sortByUserDepartment): sortByUserDepartment
            *Optional*
        sort_by_dn (OCI.sortByDn): sortByDn *Optional*
        sort_by_extension (OCI.sortByExtension): sortByExtension *Optional*
        sort_by_service_status (OCI.sortByServiceStatus): sortByServiceStatus *Optional*
        include_virtual_users (bool): includeVirtualUsers *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_in_trunk_group
            (OCI.searchCriteriaExactUserInTrunkGroup): searchCriteriaExactUserInTrunkGroup
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_paging_control",
        "sort_by_user_last_name",
        "sort_by_user_first_name",
        "sort_by_user_department",
        "sort_by_dn",
        "sort_by_extension",
        "sort_by_service_status",
        "include_virtual_users",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_in_trunk_group",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E(
                "sort_by_user_last_name",
                "sortByUserLastName",
                OCI.SortByUserLastName,
                is_complex=True,
            ),
            E(
                "sort_by_user_first_name",
                "sortByUserFirstName",
                OCI.SortByUserFirstName,
                is_complex=True,
            ),
            E(
                "sort_by_user_department",
                "sortByUserDepartment",
                OCI.SortByUserDepartment,
                is_complex=True,
            ),
            E("sort_by_dn", "sortByDn", OCI.SortByDn, is_complex=True),
            E(
                "sort_by_extension",
                "sortByExtension",
                OCI.SortByExtension,
                is_complex=True,
            ),
            E(
                "sort_by_service_status",
                "sortByServiceStatus",
                OCI.SortByServiceStatus,
                is_complex=True,
            ),
            E("include_virtual_users", "includeVirtualUsers", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_in_trunk_group",
                "searchCriteriaExactUserInTrunkGroup",
                OCI.SearchCriteriaExactUserInTrunkGroup,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        virtual_on_net_user (List[OCI.virtualOnNetUser]): virtualOnNetUser *Optional*
        virtual_on_net_user_range (OCI.virtualOnNetUserRange): virtualOnNetUserRange
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "virtual_on_net_user",
        "virtual_on_net_user_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "virtual_on_net_user",
                "virtualOnNetUser",
                OCI.VirtualOnNetUser,
                is_complex=True,
                is_array=True,
            ),
            E(
                "virtual_on_net_user_range",
                "virtualOnNetUserRange",
                OCI.VirtualOnNetUserRange,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        unassign_phone_numbers (str): unassignPhoneNumbers *Optional*
        add_phone_number_to_group (bool): addPhoneNumberToGroup *Optional*
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        is_active (bool): isActive *Optional*
        enable_extended_scope (bool): enableExtendedScope *Optional*
        allow_identification_by_phone_number_or_voice_mail_aliases_on_login (bool):
            allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin *Optional*
        use_voice_portal_wizard (bool): useVoicePortalWizard *Optional*
        voice_portal_external_routing_scope (str): voicePortalExternalRoutingScope
            *Optional*
        use_external_routing (bool): useExternalRouting *Optional*
        external_routing_address (str): externalRoutingAddress *Optional*
        home_zone_name (str): homeZoneName *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        voice_portal_greeting_selection (str): voicePortalGreetingSelection *Optional*
        voice_portal_greeting_file (OCI.voicePortalGreetingFile): voicePortalGreetingFile
            *Optional*
        voice_messaging_greeting_selection (str): voiceMessagingGreetingSelection
            *Optional*
        voice_messaging_greeting_file (OCI.voiceMessagingGreetingFile):
            voiceMessagingGreetingFile *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "unassign_phone_numbers",
        "add_phone_number_to_group",
        "service_instance_profile",
        "is_active",
        "enable_extended_scope",
        "allow_identification_by_phone_number_or_voice_mail_aliases_on_login",
        "use_voice_portal_wizard",
        "voice_portal_external_routing_scope",
        "use_external_routing",
        "external_routing_address",
        "home_zone_name",
        "network_class_of_service",
        "voice_portal_greeting_selection",
        "voice_portal_greeting_file",
        "voice_messaging_greeting_selection",
        "voice_messaging_greeting_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("unassign_phone_numbers", "unassignPhoneNumbers", str),
            E("add_phone_number_to_group", "addPhoneNumberToGroup", bool),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("is_active", "isActive", bool),
            E("enable_extended_scope", "enableExtendedScope", bool),
            E(
                "allow_identification_by_phone_number_or_voice_mail_aliases_on_login",
                "allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin",
                bool,
            ),
            E("use_voice_portal_wizard", "useVoicePortalWizard", bool),
            E(
                "voice_portal_external_routing_scope",
                "voicePortalExternalRoutingScope",
                str,
            ),
            E("use_external_routing", "useExternalRouting", bool),
            E("external_routing_address", "externalRoutingAddress", str),
            E("home_zone_name", "homeZoneName", str),
            E("network_class_of_service", "networkClassOfService", str),
            E("voice_portal_greeting_selection", "voicePortalGreetingSelection", str),
            E(
                "voice_portal_greeting_file",
                "voicePortalGreetingFile",
                OCI.AnnouncementFileKey,
                is_complex=True,
            ),
            E(
                "voice_messaging_greeting_selection",
                "voiceMessagingGreetingSelection",
                str,
            ),
            E(
                "voice_messaging_greeting_file",
                "voiceMessagingGreetingFile",
                OCI.AnnouncementFileKey,
                is_complex=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): serviceProviderId
        group_id (str): groupId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        is_active (bool): isActive *Optional*
        enable_extended_scope (bool): enableExtendedScope *Optional*
        allow_identification_by_phone_number_or_voice_mail_aliases_on_login (bool):
            allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin *Optional*
        use_voice_portal_wizard (bool): useVoicePortalWizard *Optional*
        voice_portal_external_routing_scope (str): voicePortalExternalRoutingScope
            *Optional*
        use_external_routing (bool): useExternalRouting *Optional*
        external_routing_address (str): externalRoutingAddress *Optional*
        home_zone_name (str): homeZoneName *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        express_mode (bool): expressMode *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_instance_profile",
        "is_active",
        "enable_extended_scope",
        "allow_identification_by_phone_number_or_voice_mail_aliases_on_login",
        "use_voice_portal_wizard",
        "voice_portal_external_routing_scope",
        "use_external_routing",
        "external_routing_address",
        "home_zone_name",
        "network_class_of_service",
        "express_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("is_active", "isActive", bool),
            E("enable_extended_scope", "enableExtendedScope", bool),
            E(
                "allow_identification_by_phone_number_or_voice_mail_aliases_on_login",
                "allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin",
                bool,
            ),
            E("use_voice_portal_wizard", "useVoicePortalWizard", bool),
            E(
                "voice_portal_external_routing_scope",
                "voicePortalExternalRoutingScope",
                str,
            ),
            E("use_external_routing", "useExternalRouting", bool),
            E("external_routing_address", "externalRoutingAddress", str),
            E("home_zone_name", "homeZoneName", str),
            E("network_class_of_service", "networkClassOfService", str),
            E("express_mode", "expressMode", bool),
        )


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.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        network_class_of_service (str): networkClassOfService *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "network_class_of_service",
        "access_device_endpoint",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAdd,
                is_complex=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 response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "network_class_of_service",
        "access_device_endpoint",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointModify,
                is_complex=True,
            ),
        )


class ServiceProviderAccessDeviceGetUserListRequest(OCIRequest):
    """
    Requests the list of users on a specified device.

    The response is either `ServiceProviderAccessDeviceGetResponse()` or
    `ErrorResponse()`. The following elements are only used in XS data mode and ignored in
    AS data mode: searchCriteriaAccessDeviceEndpointPrivateIdentity Replaced by:
    `ServiceProviderAccessDeviceGetUserListRequest21sp1()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        device_name (str): deviceName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_line_port_user_part (List[OCI.searchCriteriaLinePortUserPart]):
            searchCriteriaLinePortUserPart *Optional*
        search_criteria_line_port_domain (List[OCI.searchCriteriaLinePortDomain]):
            searchCriteriaLinePortDomain *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_endpoint_type (OCI.searchCriteriaExactEndpointType):
            searchCriteriaExactEndpointType *Optional*
        search_criteria_exact_user_type (OCI.searchCriteriaExactUserType):
            searchCriteriaExactUserType *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_port_number (OCI.searchCriteriaExactPortNumber):
            searchCriteriaExactPortNumber *Optional*
        search_criteria_access_device_endpoint_private_identity
            (List[OCI.searchCriteriaAccessDeviceEndpointPrivateIdentity]):
            searchCriteriaAccessDeviceEndpointPrivateIdentity *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "response_size_limit",
        "search_criteria_line_port_user_part",
        "search_criteria_line_port_domain",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_user_id",
        "search_criteria_group_id",
        "search_criteria_exact_endpoint_type",
        "search_criteria_exact_user_type",
        "search_criteria_extension",
        "search_criteria_exact_user_department",
        "search_criteria_exact_port_number",
        "search_criteria_access_device_endpoint_private_identity",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_line_port_user_part",
                "searchCriteriaLinePortUserPart",
                OCI.SearchCriteriaLinePortUserPart,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_domain",
                "searchCriteriaLinePortDomain",
                OCI.SearchCriteriaLinePortDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_endpoint_type",
                "searchCriteriaExactEndpointType",
                OCI.SearchCriteriaExactEndpointType,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_type",
                "searchCriteriaExactUserType",
                OCI.SearchCriteriaExactUserType,
                is_complex=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_port_number",
                "searchCriteriaExactPortNumber",
                OCI.SearchCriteriaExactPortNumber,
                is_complex=True,
            ),
            E(
                "search_criteria_access_device_endpoint_private_identity",
                "searchCriteriaAccessDeviceEndpointPrivateIdentity",
                OCI.SearchCriteriaAccessDeviceEndpointPrivateIdentity,
                is_complex=True,
                is_array=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): serviceProviderId
        device_name (str): deviceName
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_line_port_user_part (List[OCI.searchCriteriaLinePortUserPart]):
            searchCriteriaLinePortUserPart *Optional*
        search_criteria_line_port_domain (List[OCI.searchCriteriaLinePortDomain]):
            searchCriteriaLinePortDomain *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_exact_endpoint_type (OCI.searchCriteriaExactEndpointType):
            searchCriteriaExactEndpointType *Optional*
        search_criteria_exact_user_type (OCI.searchCriteriaExactUserType):
            searchCriteriaExactUserType *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_port_number (OCI.searchCriteriaExactPortNumber):
            searchCriteriaExactPortNumber *Optional*
        search_criteria_access_device_endpoint_private_identity
            (List[OCI.searchCriteriaAccessDeviceEndpointPrivateIdentity]):
            searchCriteriaAccessDeviceEndpointPrivateIdentity *Optional*
        search_criteria_user_hotline_contact (List[OCI.searchCriteriaUserHotlineContact]):
            searchCriteriaUserHotlineContact *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "device_name",
        "response_size_limit",
        "search_criteria_line_port_user_part",
        "search_criteria_line_port_domain",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_user_id",
        "search_criteria_group_id",
        "search_criteria_exact_endpoint_type",
        "search_criteria_exact_user_type",
        "search_criteria_extension",
        "search_criteria_exact_user_department",
        "search_criteria_exact_port_number",
        "search_criteria_access_device_endpoint_private_identity",
        "search_criteria_user_hotline_contact",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("device_name", "deviceName", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_line_port_user_part",
                "searchCriteriaLinePortUserPart",
                OCI.SearchCriteriaLinePortUserPart,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_domain",
                "searchCriteriaLinePortDomain",
                OCI.SearchCriteriaLinePortDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_endpoint_type",
                "searchCriteriaExactEndpointType",
                OCI.SearchCriteriaExactEndpointType21sp1,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_type",
                "searchCriteriaExactUserType",
                OCI.SearchCriteriaExactUserType,
                is_complex=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_port_number",
                "searchCriteriaExactPortNumber",
                OCI.SearchCriteriaExactPortNumber,
                is_complex=True,
            ),
            E(
                "search_criteria_access_device_endpoint_private_identity",
                "searchCriteriaAccessDeviceEndpointPrivateIdentity",
                OCI.SearchCriteriaAccessDeviceEndpointPrivateIdentity,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_hotline_contact",
                "searchCriteriaUserHotlineContact",
                OCI.SearchCriteriaUserHotlineContact,
                is_complex=True,
                is_array=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): serviceProviderId
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_admin_id (List[OCI.searchCriteriaAdminId]): searchCriteriaAdminId
            *Optional*
        search_criteria_admin_last_name (List[OCI.searchCriteriaAdminLastName]):
            searchCriteriaAdminLastName *Optional*
        search_criteria_admin_first_name (List[OCI.searchCriteriaAdminFirstName]):
            searchCriteriaAdminFirstName *Optional*
        search_criteria_exact_service_provider_admin_type
            (List[OCI.searchCriteriaExactServiceProviderAdminType]):
            searchCriteriaExactServiceProviderAdminType *Optional*
        search_criteria_language (List[OCI.searchCriteriaLanguage]):
            searchCriteriaLanguage *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_admin_id",
        "search_criteria_admin_last_name",
        "search_criteria_admin_first_name",
        "search_criteria_exact_service_provider_admin_type",
        "search_criteria_language",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderServiceProviderAdminGetPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_admin_id",
                "searchCriteriaAdminId",
                OCI.SearchCriteriaAdminId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_admin_last_name",
                "searchCriteriaAdminLastName",
                OCI.SearchCriteriaAdminLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_admin_first_name",
                "searchCriteriaAdminFirstName",
                OCI.SearchCriteriaAdminFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_service_provider_admin_type",
                "searchCriteriaExactServiceProviderAdminType",
                OCI.SearchCriteriaExactServiceProviderAdminType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_language",
                "searchCriteriaLanguage",
                OCI.SearchCriteriaLanguage,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        originating_default_action (str): originatingDefaultAction *Optional*
        originating_default_treatment_id (str): originatingDefaultTreatmentId *Optional*
        originating_default_transfer_number (str): originatingDefaultTransferNumber
            *Optional*
        originating_default_call_timeout (int): originatingDefaultCallTimeout *Optional*
        originating_rule (OCI.originatingRule): originatingRule *Optional*
        redirecting_default_action (str): redirectingDefaultAction *Optional*
        redirecting_default_call_timeout (int): redirectingDefaultCallTimeout *Optional*
        redirecting_rule (OCI.redirectingRule): redirectingRule *Optional*
        call_me_now_default_action (str): callMeNowDefaultAction *Optional*
        call_me_now_default_call_timeout (int): callMeNowDefaultCallTimeout *Optional*
        call_me_now_rule (OCI.callMeNowRule): callMeNowRule *Optional*
        incoming_default_action (str): incomingDefaultAction *Optional*
        incoming_default_call_timeout (int): incomingDefaultCallTimeout *Optional*
        incoming_rule (OCI.incomingRule): incomingRule *Optional*
        become_default (bool): becomeDefault *Optional*
        apply_to_attended_call_transfers (bool): applyToAttendedCallTransfers *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "new_name",
        "description",
        "originating_default_action",
        "originating_default_treatment_id",
        "originating_default_transfer_number",
        "originating_default_call_timeout",
        "originating_rule",
        "redirecting_default_action",
        "redirecting_default_call_timeout",
        "redirecting_rule",
        "call_me_now_default_action",
        "call_me_now_default_call_timeout",
        "call_me_now_rule",
        "incoming_default_action",
        "incoming_default_call_timeout",
        "incoming_rule",
        "become_default",
        "apply_to_attended_call_transfers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E("originating_default_action", "originatingDefaultAction", str),
            E("originating_default_treatment_id", "originatingDefaultTreatmentId", str),
            E(
                "originating_default_transfer_number",
                "originatingDefaultTransferNumber",
                str,
            ),
            E("originating_default_call_timeout", "originatingDefaultCallTimeout", int),
            E(
                "originating_rule",
                "originatingRule",
                OCI.ServiceProviderReplacementCommunicationBarringHierarchicalOriginatingRuleList,
                is_complex=True,
            ),
            E("redirecting_default_action", "redirectingDefaultAction", str),
            E("redirecting_default_call_timeout", "redirectingDefaultCallTimeout", int),
            E(
                "redirecting_rule",
                "redirectingRule",
                OCI.ServiceProviderReplacementCommunicationBarringHierarchicalRedirectingRuleList,
                is_complex=True,
            ),
            E("call_me_now_default_action", "callMeNowDefaultAction", str),
            E("call_me_now_default_call_timeout", "callMeNowDefaultCallTimeout", int),
            E(
                "call_me_now_rule",
                "callMeNowRule",
                OCI.ServiceProviderReplacementCommunicationBarringHierarchicalCallMeNowRuleList,
                is_complex=True,
            ),
            E("incoming_default_action", "incomingDefaultAction", str),
            E("incoming_default_call_timeout", "incomingDefaultCallTimeout", int),
            E(
                "incoming_rule",
                "incomingRule",
                OCI.ReplacementCommunicationBarringIncomingRuleList19sp1,
                is_complex=True,
            ),
            E("become_default", "becomeDefault", bool),
            E("apply_to_attended_call_transfers", "applyToAttendedCallTransfers", bool),
        )


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 The following elements are only used in Amplify data mode and
    ignored in AS and XS data mode: servicePolicy, callProcessingSliceId,
    provisioningSliceId, subscriberPartition.  When the callProcessingSliceId or
    provisioningSliceId is not specified in the AmplifyDataMode, the default slice Id is
    assigned to the service provider.  Only Provisioning admin and above can change the
    callProcessingSliceId, provisioningSliceId, andsubscriberPartition.  The following
    elements are only used in Amplify and XS data mode and ignored in AS data mode:
    preferredDataCenter.  Only Provisioning admin and above can change the
    preferredDataCenter.  The following data elements are only used in AS data mode:
    resellerId resellerName The following behavior is only applicable in CloudPBX: - when
    new resellerId, that does not exist in the system, is specified, the new Reseller is
    created the given resellerId and resellerName (if provided) and enterprise/Service
    Provider is moved to the newly created Reseller.  resellerName element is ignored if
    the reseller the service provider is being moved to already exists.  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 (bool): isEnterprise *Optional*
        use_custom_routing_profile (bool): useCustomRoutingProfile *Optional*
        service_provider_id (str): serviceProviderId *Optional*
        service_provider_external_id (str): serviceProviderExternalId *Optional*
        default_domain (str): defaultDomain
        service_provider_name (str): serviceProviderName *Optional*
        support_email (str): supportEmail *Optional*
        contact (OCI.contact): contact *Optional*
        address (OCI.address): address *Optional*
        service_policy (str): servicePolicy *Optional*
        call_processing_slice_id (str): callProcessingSliceId *Optional*
        provisioning_slice_id (str): provisioningSliceId *Optional*
        subscriber_partition (str): subscriberPartition *Optional*
        preferred_data_center (str): preferredDataCenter *Optional*
        reseller_id (str): resellerId *Optional*
        reseller_name (str): resellerName *Optional*
        domain (List[str]): domain *Optional*
        admin (List[OCI.admin]): admin *Optional*
        group_service_authorization (List[OCI.groupServiceAuthorization]):
            groupServiceAuthorization *Optional*
        user_service_authorization (List[OCI.userServiceAuthorization]):
            userServiceAuthorization *Optional*
        service_pack (List[OCI.servicePack]): servicePack *Optional*
        phone_number (List[str]): phoneNumber *Optional*
        dn_range (List[OCI.dnRange]): dnRange *Optional*
        routing_profile (str): routingProfile *Optional*
        meet_me_conferencing_allocated_ports (OCI.meetMeConferencingAllocatedPorts):
            meetMeConferencingAllocatedPorts *Optional*
        trunk_group_max_active_calls (OCI.trunkGroupMaxActiveCalls):
            trunkGroupMaxActiveCalls *Optional*
        trunk_group_bursting_max_active_calls (OCI.trunkGroupBurstingMaxActiveCalls):
            trunkGroupBurstingMaxActiveCalls *Optional*
        voice_messaging_group_settings (OCI.voiceMessagingGroupSettings):
            voiceMessagingGroupSettings *Optional*
        voice_messaging_group_voice_portal_scope (str):
            voiceMessagingGroupVoicePortalScope *Optional*
    """

    __slots__: List[str] = [
        "is_enterprise",
        "use_custom_routing_profile",
        "service_provider_id",
        "service_provider_external_id",
        "default_domain",
        "service_provider_name",
        "support_email",
        "contact",
        "address",
        "service_policy",
        "call_processing_slice_id",
        "provisioning_slice_id",
        "subscriber_partition",
        "preferred_data_center",
        "reseller_id",
        "reseller_name",
        "domain",
        "admin",
        "group_service_authorization",
        "user_service_authorization",
        "service_pack",
        "phone_number",
        "dn_range",
        "routing_profile",
        "meet_me_conferencing_allocated_ports",
        "trunk_group_max_active_calls",
        "trunk_group_bursting_max_active_calls",
        "voice_messaging_group_settings",
        "voice_messaging_group_voice_portal_scope",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("is_enterprise", "isEnterprise", bool),
            E("use_custom_routing_profile", "useCustomRoutingProfile", bool),
            E("service_provider_id", "serviceProviderId", str),
            E("service_provider_external_id", "serviceProviderExternalId", str),
            E("default_domain", "defaultDomain", str, is_required=True),
            E("service_provider_name", "serviceProviderName", str),
            E("support_email", "supportEmail", str),
            E("contact", "contact", OCI.Contact, is_complex=True),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("service_policy", "servicePolicy", str),
            E("call_processing_slice_id", "callProcessingSliceId", str),
            E("provisioning_slice_id", "provisioningSliceId", str),
            E("subscriber_partition", "subscriberPartition", str),
            E("preferred_data_center", "preferredDataCenter", str),
            E("reseller_id", "resellerId", str),
            E("reseller_name", "resellerName", str),
            E("domain", "domain", str, is_array=True),
            E(
                "admin",
                "admin",
                OCI.ServiceProviderAdmin,
                is_complex=True,
                is_array=True,
            ),
            E(
                "group_service_authorization",
                "groupServiceAuthorization",
                OCI.GroupServiceAuthorization,
                is_complex=True,
                is_array=True,
            ),
            E(
                "user_service_authorization",
                "userServiceAuthorization",
                OCI.UserServiceAuthorization,
                is_complex=True,
                is_array=True,
            ),
            E(
                "service_pack",
                "servicePack",
                OCI.ServicePack,
                is_complex=True,
                is_array=True,
            ),
            E("phone_number", "phoneNumber", str, is_array=True),
            E("dn_range", "dnRange", OCI.DNRange, is_complex=True, is_array=True),
            E("routing_profile", "routingProfile", str),
            E(
                "meet_me_conferencing_allocated_ports",
                "meetMeConferencingAllocatedPorts",
                OCI.MeetMeConferencingConferencePorts,
                is_complex=True,
            ),
            E(
                "trunk_group_max_active_calls",
                "trunkGroupMaxActiveCalls",
                OCI.UnboundedNonNegativeInt,
                is_complex=True,
            ),
            E(
                "trunk_group_bursting_max_active_calls",
                "trunkGroupBurstingMaxActiveCalls",
                OCI.UnboundedNonNegativeInt,
                is_complex=True,
            ),
            E(
                "voice_messaging_group_settings",
                "voiceMessagingGroupSettings",
                OCI.ServiceProviderVoiceMessagingGroupSettingsAdd,
                is_complex=True,
            ),
            E(
                "voice_messaging_group_voice_portal_scope",
                "voiceMessagingGroupVoicePortalScope",
                str,
            ),
        )


class ServiceProviderEndpointGetListRequest(OCIRequest):
    """
    Request to search endpoints in the service provider/enterprise.

    The response is either `ServiceProviderEndpointGetListResponse()` or
    `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.searchCriteriaGroupId]): searchCriteriaGroupId
            *Optional*
        search_criteria_line_port_user_part (List[OCI.searchCriteriaLinePortUserPart]):
            searchCriteriaLinePortUserPart *Optional*
        search_criteria_line_port_domain (List[OCI.searchCriteriaLinePortDomain]):
            searchCriteriaLinePortDomain *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_device_type (List[OCI.searchCriteriaDeviceType]):
            searchCriteriaDeviceType *Optional*
        search_criteria_device_name (List[OCI.searchCriteriaDeviceName]):
            searchCriteriaDeviceName *Optional*
        search_criteria_device_mac_address (List[OCI.searchCriteriaDeviceMACAddress]):
            searchCriteriaDeviceMACAddress *Optional*
        search_criteria_device_net_address (List[OCI.searchCriteriaDeviceNetAddress]):
            searchCriteriaDeviceNetAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_line_port_user_part",
        "search_criteria_line_port_domain",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_device_type",
        "search_criteria_device_name",
        "search_criteria_device_mac_address",
        "search_criteria_device_net_address",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "searchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_user_part",
                "searchCriteriaLinePortUserPart",
                OCI.SearchCriteriaLinePortUserPart,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_line_port_domain",
                "searchCriteriaLinePortDomain",
                OCI.SearchCriteriaLinePortDomain,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_type",
                "searchCriteriaDeviceType",
                OCI.SearchCriteriaDeviceType,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_name",
                "searchCriteriaDeviceName",
                OCI.SearchCriteriaDeviceName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_mac_address",
                "searchCriteriaDeviceMACAddress",
                OCI.SearchCriteriaDeviceMACAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_device_net_address",
                "searchCriteriaDeviceNetAddress",
                OCI.SearchCriteriaDeviceNetAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=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 (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_service_provider_id (List[OCI.searchCriteriaServiceProviderId]):
            searchCriteriaServiceProviderId *Optional*
        search_criteria_service_provider_name
            (List[OCI.searchCriteriaServiceProviderName]):
            searchCriteriaServiceProviderName *Optional*
        search_criteria_exact_organization_type (OCI.searchCriteriaExactOrganizationType):
            searchCriteriaExactOrganizationType *Optional*
        search_criteria_reseller_id (List[OCI.searchCriteriaResellerId]):
            searchCriteriaResellerId *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "response_paging_control",
        "sort_order",
        "search_criteria_service_provider_id",
        "search_criteria_service_provider_name",
        "search_criteria_exact_organization_type",
        "search_criteria_reseller_id",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderServiceProviderGetPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_service_provider_id",
                "searchCriteriaServiceProviderId",
                OCI.SearchCriteriaServiceProviderId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_service_provider_name",
                "searchCriteriaServiceProviderName",
                OCI.SearchCriteriaServiceProviderName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_organization_type",
                "searchCriteriaExactOrganizationType",
                OCI.SearchCriteriaExactOrganizationType,
                is_complex=True,
            ),
            E(
                "search_criteria_reseller_id",
                "searchCriteriaResellerId",
                OCI.SearchCriteriaResellerId,
                is_complex=True,
                is_array=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


class ServiceProviderMWIDeliveryToMobileEndpointCustomTemplateAddRequest(OCIRequest):
    """
    Create a MWI Delivery to Mobile Endpoint Custom Template.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        language (str): language
        type (str): type
        is_enabled (bool): isEnabled
        template_body (OCI.templateBody): templateBody
    """

    __slots__: List[str] = [
        "service_provider_id",
        "language",
        "type",
        "is_enabled",
        "template_body",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("language", "language", str, is_required=True),
            E("type", "type", str, is_required=True),
            E("is_enabled", "isEnabled", bool, is_required=True),
            E(
                "template_body",
                "templateBody",
                OCI.MWIDeliveryToMobileEndpointTemplateBody,
                is_complex=True,
                is_required=True,
            ),
        )


class ServiceProviderMWIDeliveryToMobileEndpointCustomTemplateModifyRequest(OCIRequest):
    """
    Modify a MWI Delivery to Mobile Endpoint Custom Template.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        language (str): language
        type (str): type
        is_enabled (bool): isEnabled *Optional*
        template_body (OCI.templateBody): templateBody *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "language",
        "type",
        "is_enabled",
        "template_body",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("language", "language", str, is_required=True),
            E("type", "type", str, is_required=True),
            E("is_enabled", "isEnabled", bool),
            E(
                "template_body",
                "templateBody",
                OCI.MWIDeliveryToMobileEndpointTemplateBody,
                is_complex=True,
            ),
        )


class ServiceProviderRouteListEnterpriseTrunkNumberPrefixAddListRequest22(OCIRequest):
    """
    Add number prefixes to a service provider.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        prefix (List[OCI.prefix]): prefix
    """

    __slots__: List[str] = [
        "service_provider_id",
        "prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "prefix",
                "prefix",
                OCI.EnterpriseTrunkNumberPrefix22,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        number_prefix (List[OCI.numberPrefix]): numberPrefix *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "number_prefix",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "number_prefix",
                "numberPrefix",
                OCI.EnterpriseTrunkNumberPrefixModify,
                is_complex=True,
                is_array=True,
            ),
        )


class ServiceProviderRouteListEnterpriseTrunkNumberRangeAddListRequest22(OCIRequest):
    """
    Add number ranges to a service provider.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        number_range (List[OCI.numberRange]): numberRange
    """

    __slots__: List[str] = [
        "service_provider_id",
        "number_range",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "number_range",
                "numberRange",
                OCI.EnterpriseTrunkNumberRange,
                is_complex=True,
                is_required=True,
                is_array=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): serviceProviderId
        group_service_authorization (List[OCI.groupServiceAuthorization]):
            groupServiceAuthorization *Optional*
        user_service_authorization (List[OCI.userServiceAuthorization]):
            userServiceAuthorization *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_service_authorization",
        "user_service_authorization",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E(
                "group_service_authorization",
                "groupServiceAuthorization",
                OCI.GroupServiceAuthorization,
                is_complex=True,
                is_array=True,
            ),
            E(
                "user_service_authorization",
                "userServiceAuthorization",
                OCI.UserServiceAuthorization,
                is_complex=True,
                is_array=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): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        originating_default_action (str): originatingDefaultAction *Optional*
        originating_default_treatment_id (str): originatingDefaultTreatmentId *Optional*
        originating_default_transfer_number (str): originatingDefaultTransferNumber
            *Optional*
        originating_default_call_timeout (int): originatingDefaultCallTimeout *Optional*
        originating_rule (OCI.originatingRule): originatingRule *Optional*
        redirecting_default_action (str): redirectingDefaultAction *Optional*
        redirecting_default_call_timeout (int): redirectingDefaultCallTimeout *Optional*
        redirecting_rule (OCI.redirectingRule): redirectingRule *Optional*
        incoming_default_action (str): incomingDefaultAction *Optional*
        incoming_default_call_timeout (int): incomingDefaultCallTimeout *Optional*
        incoming_rule (OCI.incomingRule): incomingRule *Optional*
        call_me_now_default_action (str): callMeNowDefaultAction *Optional*
        call_me_now_default_call_timeout (int): callMeNowDefaultCallTimeout *Optional*
        call_me_now_rule (OCI.callMeNowRule): callMeNowRule *Optional*
        apply_to_attended_call_transfers (bool): applyToAttendedCallTransfers *Optional*
    """

    __slots__: List[str] = [
        "name",
        "new_name",
        "description",
        "originating_default_action",
        "originating_default_treatment_id",
        "originating_default_transfer_number",
        "originating_default_call_timeout",
        "originating_rule",
        "redirecting_default_action",
        "redirecting_default_call_timeout",
        "redirecting_rule",
        "incoming_default_action",
        "incoming_default_call_timeout",
        "incoming_rule",
        "call_me_now_default_action",
        "call_me_now_default_call_timeout",
        "call_me_now_rule",
        "apply_to_attended_call_transfers",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E("originating_default_action", "originatingDefaultAction", str),
            E("originating_default_treatment_id", "originatingDefaultTreatmentId", str),
            E(
                "originating_default_transfer_number",
                "originatingDefaultTransferNumber",
                str,
            ),
            E("originating_default_call_timeout", "originatingDefaultCallTimeout", int),
            E(
                "originating_rule",
                "originatingRule",
                OCI.ReplacementCommunicationBarringOriginatingRuleList,
                is_complex=True,
            ),
            E("redirecting_default_action", "redirectingDefaultAction", str),
            E("redirecting_default_call_timeout", "redirectingDefaultCallTimeout", int),
            E(
                "redirecting_rule",
                "redirectingRule",
                OCI.ReplacementCommunicationBarringRedirectingRuleList,
                is_complex=True,
            ),
            E("incoming_default_action", "incomingDefaultAction", str),
            E("incoming_default_call_timeout", "incomingDefaultCallTimeout", int),
            E(
                "incoming_rule",
                "incomingRule",
                OCI.ReplacementCommunicationBarringIncomingRuleList19sp1,
                is_complex=True,
            ),
            E("call_me_now_default_action", "callMeNowDefaultAction", str),
            E("call_me_now_default_call_timeout", "callMeNowDefaultCallTimeout", int),
            E(
                "call_me_now_rule",
                "callMeNowRule",
                OCI.ReplacementCommunicationBarringCallMeNowRuleList,
                is_complex=True,
            ),
            E("apply_to_attended_call_transfers", "applyToAttendedCallTransfers", bool),
        )


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 (OCI.parameters): parameters *Optional*
        sip_message (str): sipMessage *Optional*
    """

    __slots__: List[str] = [
        "parameters",
        "sip_message",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E(
                "parameters",
                "parameters",
                OCI.VerifyTranslationAndRoutingParameters,
                is_complex=True,
            ),
            E("sip_message", "sipMessage", str),
        )


class UserAddRequest14(OCIRequest):
    """
    Request to add a user.

    The domain is required in the userId.  The password is not required if external
    authentication is enabled.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        user_id (str): userId
        last_name (str): lastName
        first_name (str): firstName
        calling_line_id_last_name (str): callingLineIdLastName
        calling_line_id_first_name (str): callingLineIdFirstName
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        password (str): password *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        alias (List[str]): alias *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        trunk_group_device_endpoint (OCI.trunkGroupDeviceEndpoint):
            trunkGroupDeviceEndpoint *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "extension",
        "calling_line_id_phone_number",
        "password",
        "department",
        "language",
        "time_zone",
        "alias",
        "access_device_endpoint",
        "trunk_group_device_endpoint",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("user_id", "userId", str, is_required=True),
            E("last_name", "lastName", str, is_required=True),
            E("first_name", "firstName", str, is_required=True),
            E(
                "calling_line_id_last_name",
                "callingLineIdLastName",
                str,
                is_required=True,
            ),
            E(
                "calling_line_id_first_name",
                "callingLineIdFirstName",
                str,
                is_required=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("password", "password", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E("alias", "alias", str, is_array=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAdd,
                is_complex=True,
            ),
            E(
                "trunk_group_device_endpoint",
                "trunkGroupDeviceEndpoint",
                OCI.TrunkGroupDeviceEndpointAdd,
                is_complex=True,
            ),
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
        )


class UserAddRequest14sp9(OCIRequest):
    """
    Replaced By `UserAddRequest17sp4()` Request to add a user.

    The domain is required in the userId.  The password is not required if external
    authentication is enabled.  The officeZoneName and primaryZoneName elements are
    ignored and provided here for backwards compatibility only.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        user_id (str): userId
        last_name (str): lastName
        first_name (str): firstName
        calling_line_id_last_name (str): callingLineIdLastName
        calling_line_id_first_name (str): callingLineIdFirstName
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        password (str): password *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        alias (List[str]): alias *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        trunk_addressing (OCI.trunkAddressing): trunkAddressing *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        office_zone_name (str): officeZoneName *Optional*
        primary_zone_name (str): primaryZoneName *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "extension",
        "calling_line_id_phone_number",
        "password",
        "department",
        "language",
        "time_zone",
        "alias",
        "access_device_endpoint",
        "trunk_addressing",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "office_zone_name",
        "primary_zone_name",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("user_id", "userId", str, is_required=True),
            E("last_name", "lastName", str, is_required=True),
            E("first_name", "firstName", str, is_required=True),
            E(
                "calling_line_id_last_name",
                "callingLineIdLastName",
                str,
                is_required=True,
            ),
            E(
                "calling_line_id_first_name",
                "callingLineIdFirstName",
                str,
                is_required=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("password", "password", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E("alias", "alias", str, is_array=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAdd,
                is_complex=True,
            ),
            E(
                "trunk_addressing",
                "trunkAddressing",
                OCI.TrunkAddressingAdd,
                is_complex=True,
            ),
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E("office_zone_name", "officeZoneName", str),
            E("primary_zone_name", "primaryZoneName", str),
        )


class UserAddRequest17sp4(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
    ignored in XS data mode: nameDialingName alternateUserId

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `UserAddRequest21()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        user_id (str): userId
        last_name (str): lastName
        first_name (str): firstName
        calling_line_id_last_name (str): callingLineIdLastName
        calling_line_id_first_name (str): callingLineIdFirstName
        name_dialing_name (OCI.nameDialingName): nameDialingName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        password (str): password *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        alias (List[str]): alias *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        trunk_addressing (OCI.trunkAddressing): trunkAddressing *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        alternate_user_id (List[OCI.alternateUserId]): alternateUserId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "name_dialing_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "extension",
        "calling_line_id_phone_number",
        "password",
        "department",
        "language",
        "time_zone",
        "alias",
        "access_device_endpoint",
        "trunk_addressing",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "alternate_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("user_id", "userId", str, is_required=True),
            E("last_name", "lastName", str, is_required=True),
            E("first_name", "firstName", str, is_required=True),
            E(
                "calling_line_id_last_name",
                "callingLineIdLastName",
                str,
                is_required=True,
            ),
            E(
                "calling_line_id_first_name",
                "callingLineIdFirstName",
                str,
                is_required=True,
            ),
            E(
                "name_dialing_name",
                "nameDialingName",
                OCI.NameDialingName,
                is_complex=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("password", "password", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E("alias", "alias", str, is_array=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceMultipleContactEndpointAdd,
                is_complex=True,
            ),
            E(
                "trunk_addressing",
                "trunkAddressing",
                OCI.TrunkAddressingMultipleContactAdd,
                is_complex=True,
            ),
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "alternate_user_id",
                "alternateUserId",
                OCI.AlternateUserIdEntry,
                is_complex=True,
                is_array=True,
            ),
        )


class UserAddRequest21(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 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 alternateUserId The
    following elements can only be used by a provisioning administrator:. alternateUserId
    Replaced by: `UserAddRequest22()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        user_id (str): userId
        last_name (str): lastName
        first_name (str): firstName
        calling_line_id_last_name (str): callingLineIdLastName
        calling_line_id_first_name (str): callingLineIdFirstName
        name_dialing_name (OCI.nameDialingName): nameDialingName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        password (str): password *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        alias (List[str]): alias *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        trunk_addressing (OCI.trunkAddressing): trunkAddressing *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        alternate_user_id (List[OCI.alternateUserId]): alternateUserId *Optional*
        allow_video (bool): allowVideo *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "name_dialing_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "extension",
        "calling_line_id_phone_number",
        "password",
        "department",
        "language",
        "time_zone",
        "alias",
        "access_device_endpoint",
        "trunk_addressing",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "alternate_user_id",
        "allow_video",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("user_id", "userId", str, is_required=True),
            E("last_name", "lastName", str, is_required=True),
            E("first_name", "firstName", str, is_required=True),
            E(
                "calling_line_id_last_name",
                "callingLineIdLastName",
                str,
                is_required=True,
            ),
            E(
                "calling_line_id_first_name",
                "callingLineIdFirstName",
                str,
                is_required=True,
            ),
            E(
                "name_dialing_name",
                "nameDialingName",
                OCI.NameDialingName,
                is_complex=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("password", "password", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E("alias", "alias", str, is_array=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceMultipleIdentityAndContactEndpointAdd,
                is_complex=True,
            ),
            E(
                "trunk_addressing",
                "trunkAddressing",
                OCI.TrunkAddressingMultipleContactAdd,
                is_complex=True,
            ),
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "alternate_user_id",
                "alternateUserId",
                OCI.AlternateUserIdEntry,
                is_complex=True,
                is_array=True,
            ),
            E("allow_video", "allowVideo", bool),
        )


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): userId
        phone_number (str): phoneNumber
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
        call_to_number_list (OCI.callToNumberList): callToNumberList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "phone_number",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "from_dn_criteria",
        "holiday_schedule",
        "blacklisted",
        "call_to_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("phone_number", "phoneNumber", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=True,
            ),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
            E(
                "call_to_number_list",
                "callToNumberList",
                OCI.ReplacementCallToNumberList,
                is_complex=True,
            ),
        )


class UserBroadWorksMobilityMobileIdentityAddRequest(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.  Replaced by: `UserBroadWorksMobilityMobileIdentityAddRequest21sp1()`.

    Attributes:
        user_id (str): userId
        mobile_number (str): mobileNumber
        description (str): description *Optional*
        is_primary (bool): isPrimary
        enable_alerting (bool): enableAlerting
        alert_agent_calls (bool): alertAgentCalls
        alert_click_to_dial_calls (bool): alertClickToDialCalls
        alert_group_paging_calls (bool): alertGroupPagingCalls
        use_mobility_calling_line_id (bool): useMobilityCallingLineID
        enable_diversion_inhibitor (bool): enableDiversionInhibitor
        require_answer_confirmation (bool): requireAnswerConfirmation
        broadworks_call_control (bool): broadworksCallControl
        use_setting_level (str): useSettingLevel
        deny_call_originations (bool): denyCallOriginations
        deny_call_terminations (bool): denyCallTerminations
        devices_to_ring (str): devicesToRing
        include_shared_call_appearance (bool): includeSharedCallAppearance
        include_broadworks_anywhere (bool): includeBroadworksAnywhere
        include_executive_assistant (bool): includeExecutiveAssistant
        mobile_number_alerted (List[str]): mobileNumberAlerted *Optional*
        enable_call_anchoring (bool): enableCallAnchoring
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
        "description",
        "is_primary",
        "enable_alerting",
        "alert_agent_calls",
        "alert_click_to_dial_calls",
        "alert_group_paging_calls",
        "use_mobility_calling_line_id",
        "enable_diversion_inhibitor",
        "require_answer_confirmation",
        "broadworks_call_control",
        "use_setting_level",
        "deny_call_originations",
        "deny_call_terminations",
        "devices_to_ring",
        "include_shared_call_appearance",
        "include_broadworks_anywhere",
        "include_executive_assistant",
        "mobile_number_alerted",
        "enable_call_anchoring",
        "time_schedule",
        "holiday_schedule",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
            E("description", "description", str),
            E("is_primary", "isPrimary", bool, is_required=True),
            E("enable_alerting", "enableAlerting", bool, is_required=True),
            E("alert_agent_calls", "alertAgentCalls", bool, is_required=True),
            E(
                "alert_click_to_dial_calls",
                "alertClickToDialCalls",
                bool,
                is_required=True,
            ),
            E(
                "alert_group_paging_calls",
                "alertGroupPagingCalls",
                bool,
                is_required=True,
            ),
            E(
                "use_mobility_calling_line_id",
                "useMobilityCallingLineID",
                bool,
                is_required=True,
            ),
            E(
                "enable_diversion_inhibitor",
                "enableDiversionInhibitor",
                bool,
                is_required=True,
            ),
            E(
                "require_answer_confirmation",
                "requireAnswerConfirmation",
                bool,
                is_required=True,
            ),
            E(
                "broadworks_call_control",
                "broadworksCallControl",
                bool,
                is_required=True,
            ),
            E("use_setting_level", "useSettingLevel", str, is_required=True),
            E("deny_call_originations", "denyCallOriginations", bool, is_required=True),
            E("deny_call_terminations", "denyCallTerminations", bool, is_required=True),
            E("devices_to_ring", "devicesToRing", str, is_required=True),
            E(
                "include_shared_call_appearance",
                "includeSharedCallAppearance",
                bool,
                is_required=True,
            ),
            E(
                "include_broadworks_anywhere",
                "includeBroadworksAnywhere",
                bool,
                is_required=True,
            ),
            E(
                "include_executive_assistant",
                "includeExecutiveAssistant",
                bool,
                is_required=True,
            ),
            E("mobile_number_alerted", "mobileNumberAlerted", str, is_array=True),
            E("enable_call_anchoring", "enableCallAnchoring", bool, is_required=True),
            E("time_schedule", "timeSchedule", OCI.ScheduleGlobalKey, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.ScheduleGlobalKey,
                is_complex=True,
            ),
        )


class UserBroadWorksMobilityMobileIdentityAddRequest21sp1(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.  Replaced by: `UserBroadWorksMobilityMobileIdentityAddRequest22()`.

    Attributes:
        user_id (str): userId
        mobile_number (str): mobileNumber
        description (str): description *Optional*
        is_primary (bool): isPrimary
        enable_alerting (bool): enableAlerting
        alert_agent_calls (bool): alertAgentCalls
        alert_click_to_dial_calls (bool): alertClickToDialCalls
        alert_group_paging_calls (bool): alertGroupPagingCalls
        use_mobility_calling_line_id (bool): useMobilityCallingLineID
        enable_diversion_inhibitor (bool): enableDiversionInhibitor
        require_answer_confirmation (bool): requireAnswerConfirmation
        broadworks_call_control (bool): broadworksCallControl
        use_setting_level (str): useSettingLevel
        deny_call_originations (bool): denyCallOriginations
        deny_call_terminations (bool): denyCallTerminations
        devices_to_ring (str): devicesToRing
        include_shared_call_appearance (bool): includeSharedCallAppearance
        include_broadworks_anywhere (bool): includeBroadworksAnywhere
        include_executive_assistant (bool): includeExecutiveAssistant
        mobile_number_alerted (List[str]): mobileNumberAlerted *Optional*
        enable_call_anchoring (bool): enableCallAnchoring
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        outbound_alternate_number (str): outboundAlternateNumber *Optional*
        enable_direct_routing (bool): enableDirectRouting
        mark_cdr_as_enterprise_group_calls (bool): markCDRAsEnterpriseGroupCalls
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
        "description",
        "is_primary",
        "enable_alerting",
        "alert_agent_calls",
        "alert_click_to_dial_calls",
        "alert_group_paging_calls",
        "use_mobility_calling_line_id",
        "enable_diversion_inhibitor",
        "require_answer_confirmation",
        "broadworks_call_control",
        "use_setting_level",
        "deny_call_originations",
        "deny_call_terminations",
        "devices_to_ring",
        "include_shared_call_appearance",
        "include_broadworks_anywhere",
        "include_executive_assistant",
        "mobile_number_alerted",
        "enable_call_anchoring",
        "time_schedule",
        "holiday_schedule",
        "access_device_endpoint",
        "outbound_alternate_number",
        "enable_direct_routing",
        "mark_cdr_as_enterprise_group_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
            E("description", "description", str),
            E("is_primary", "isPrimary", bool, is_required=True),
            E("enable_alerting", "enableAlerting", bool, is_required=True),
            E("alert_agent_calls", "alertAgentCalls", bool, is_required=True),
            E(
                "alert_click_to_dial_calls",
                "alertClickToDialCalls",
                bool,
                is_required=True,
            ),
            E(
                "alert_group_paging_calls",
                "alertGroupPagingCalls",
                bool,
                is_required=True,
            ),
            E(
                "use_mobility_calling_line_id",
                "useMobilityCallingLineID",
                bool,
                is_required=True,
            ),
            E(
                "enable_diversion_inhibitor",
                "enableDiversionInhibitor",
                bool,
                is_required=True,
            ),
            E(
                "require_answer_confirmation",
                "requireAnswerConfirmation",
                bool,
                is_required=True,
            ),
            E(
                "broadworks_call_control",
                "broadworksCallControl",
                bool,
                is_required=True,
            ),
            E("use_setting_level", "useSettingLevel", str, is_required=True),
            E("deny_call_originations", "denyCallOriginations", bool, is_required=True),
            E("deny_call_terminations", "denyCallTerminations", bool, is_required=True),
            E("devices_to_ring", "devicesToRing", str, is_required=True),
            E(
                "include_shared_call_appearance",
                "includeSharedCallAppearance",
                bool,
                is_required=True,
            ),
            E(
                "include_broadworks_anywhere",
                "includeBroadworksAnywhere",
                bool,
                is_required=True,
            ),
            E(
                "include_executive_assistant",
                "includeExecutiveAssistant",
                bool,
                is_required=True,
            ),
            E("mobile_number_alerted", "mobileNumberAlerted", str, is_array=True),
            E("enable_call_anchoring", "enableCallAnchoring", bool, is_required=True),
            E("time_schedule", "timeSchedule", OCI.ScheduleGlobalKey, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.ScheduleGlobalKey,
                is_complex=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAdd,
                is_complex=True,
            ),
            E("outbound_alternate_number", "outboundAlternateNumber", str),
            E("enable_direct_routing", "enableDirectRouting", bool, is_required=True),
            E(
                "mark_cdr_as_enterprise_group_calls",
                "markCDRAsEnterpriseGroupCalls",
                bool,
                is_required=True,
            ),
        )


class UserBroadWorksMobilityMobileIdentityAddRequest22(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.

    Replaced By: `UserBroadWorksMobilityMobileIdentityAddRequest22V2()`

    Attributes:
        user_id (str): userId
        mobile_number (str): mobileNumber
        description (str): description *Optional*
        is_primary (bool): isPrimary
        enable_alerting (bool): enableAlerting
        alert_agent_calls (bool): alertAgentCalls
        alert_click_to_dial_calls (bool): alertClickToDialCalls
        alert_group_paging_calls (bool): alertGroupPagingCalls
        use_mobility_calling_line_id (bool): useMobilityCallingLineID
        enable_diversion_inhibitor (bool): enableDiversionInhibitor
        require_answer_confirmation (bool): requireAnswerConfirmation
        broadworks_call_control (bool): broadworksCallControl
        use_setting_level (str): useSettingLevel
        deny_call_originations (bool): denyCallOriginations
        deny_call_terminations (bool): denyCallTerminations
        devices_to_ring (str): devicesToRing
        include_shared_call_appearance (bool): includeSharedCallAppearance
        include_broadworks_anywhere (bool): includeBroadworksAnywhere
        include_executive_assistant (bool): includeExecutiveAssistant
        mobile_number_alerted (List[str]): mobileNumberAlerted *Optional*
        enable_call_anchoring (bool): enableCallAnchoring
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        outbound_alternate_number (str): outboundAlternateNumber *Optional*
        enable_direct_routing (bool): enableDirectRouting
        mark_cdr_as_enterprise_group_calls (bool): markCDRAsEnterpriseGroupCalls
        use_mobility_connected_identity (bool): useMobilityConnectedIdentity
        network_translation_index (str): networkTranslationIndex *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
        "description",
        "is_primary",
        "enable_alerting",
        "alert_agent_calls",
        "alert_click_to_dial_calls",
        "alert_group_paging_calls",
        "use_mobility_calling_line_id",
        "enable_diversion_inhibitor",
        "require_answer_confirmation",
        "broadworks_call_control",
        "use_setting_level",
        "deny_call_originations",
        "deny_call_terminations",
        "devices_to_ring",
        "include_shared_call_appearance",
        "include_broadworks_anywhere",
        "include_executive_assistant",
        "mobile_number_alerted",
        "enable_call_anchoring",
        "time_schedule",
        "holiday_schedule",
        "access_device_endpoint",
        "outbound_alternate_number",
        "enable_direct_routing",
        "mark_cdr_as_enterprise_group_calls",
        "use_mobility_connected_identity",
        "network_translation_index",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
            E("description", "description", str),
            E("is_primary", "isPrimary", bool, is_required=True),
            E("enable_alerting", "enableAlerting", bool, is_required=True),
            E("alert_agent_calls", "alertAgentCalls", bool, is_required=True),
            E(
                "alert_click_to_dial_calls",
                "alertClickToDialCalls",
                bool,
                is_required=True,
            ),
            E(
                "alert_group_paging_calls",
                "alertGroupPagingCalls",
                bool,
                is_required=True,
            ),
            E(
                "use_mobility_calling_line_id",
                "useMobilityCallingLineID",
                bool,
                is_required=True,
            ),
            E(
                "enable_diversion_inhibitor",
                "enableDiversionInhibitor",
                bool,
                is_required=True,
            ),
            E(
                "require_answer_confirmation",
                "requireAnswerConfirmation",
                bool,
                is_required=True,
            ),
            E(
                "broadworks_call_control",
                "broadworksCallControl",
                bool,
                is_required=True,
            ),
            E("use_setting_level", "useSettingLevel", str, is_required=True),
            E("deny_call_originations", "denyCallOriginations", bool, is_required=True),
            E("deny_call_terminations", "denyCallTerminations", bool, is_required=True),
            E("devices_to_ring", "devicesToRing", str, is_required=True),
            E(
                "include_shared_call_appearance",
                "includeSharedCallAppearance",
                bool,
                is_required=True,
            ),
            E(
                "include_broadworks_anywhere",
                "includeBroadworksAnywhere",
                bool,
                is_required=True,
            ),
            E(
                "include_executive_assistant",
                "includeExecutiveAssistant",
                bool,
                is_required=True,
            ),
            E("mobile_number_alerted", "mobileNumberAlerted", str, is_array=True),
            E("enable_call_anchoring", "enableCallAnchoring", bool, is_required=True),
            E("time_schedule", "timeSchedule", OCI.ScheduleGlobalKey, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.ScheduleGlobalKey,
                is_complex=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAdd,
                is_complex=True,
            ),
            E("outbound_alternate_number", "outboundAlternateNumber", str),
            E("enable_direct_routing", "enableDirectRouting", bool, is_required=True),
            E(
                "mark_cdr_as_enterprise_group_calls",
                "markCDRAsEnterpriseGroupCalls",
                bool,
                is_required=True,
            ),
            E(
                "use_mobility_connected_identity",
                "useMobilityConnectedIdentity",
                bool,
                is_required=True,
            ),
            E("network_translation_index", "networkTranslationIndex", str),
        )


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): userId
        mobile_number (str): mobileNumber
        description (str): description *Optional*
        is_primary (bool): isPrimary
        enable_alerting (bool): enableAlerting
        alert_agent_calls (bool): alertAgentCalls
        alert_click_to_dial_calls (bool): alertClickToDialCalls
        alert_group_paging_calls (bool): alertGroupPagingCalls
        use_mobility_calling_line_id (bool): useMobilityCallingLineID
        enable_diversion_inhibitor (bool): enableDiversionInhibitor
        require_answer_confirmation (bool): requireAnswerConfirmation
        broadworks_call_control (bool): broadworksCallControl
        use_setting_level (str): useSettingLevel
        deny_call_originations (bool): denyCallOriginations
        deny_call_terminations (bool): denyCallTerminations
        devices_to_ring (str): devicesToRing
        include_shared_call_appearance (bool): includeSharedCallAppearance
        include_broadworks_anywhere (bool): includeBroadworksAnywhere
        include_executive_assistant (bool): includeExecutiveAssistant
        mobile_number_alerted (List[str]): mobileNumberAlerted *Optional*
        enable_call_anchoring (bool): enableCallAnchoring
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        outbound_alternate_number (str): outboundAlternateNumber *Optional*
        enable_direct_routing (bool): enableDirectRouting
        mark_cdr_as_enterprise_group_calls (bool): markCDRAsEnterpriseGroupCalls
        use_mobility_connected_identity (bool): useMobilityConnectedIdentity
        network_translation_index (str): networkTranslationIndex *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
        "description",
        "is_primary",
        "enable_alerting",
        "alert_agent_calls",
        "alert_click_to_dial_calls",
        "alert_group_paging_calls",
        "use_mobility_calling_line_id",
        "enable_diversion_inhibitor",
        "require_answer_confirmation",
        "broadworks_call_control",
        "use_setting_level",
        "deny_call_originations",
        "deny_call_terminations",
        "devices_to_ring",
        "include_shared_call_appearance",
        "include_broadworks_anywhere",
        "include_executive_assistant",
        "mobile_number_alerted",
        "enable_call_anchoring",
        "time_schedule",
        "holiday_schedule",
        "access_device_endpoint",
        "outbound_alternate_number",
        "enable_direct_routing",
        "mark_cdr_as_enterprise_group_calls",
        "use_mobility_connected_identity",
        "network_translation_index",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
            E("description", "description", str),
            E("is_primary", "isPrimary", bool, is_required=True),
            E("enable_alerting", "enableAlerting", bool, is_required=True),
            E("alert_agent_calls", "alertAgentCalls", bool, is_required=True),
            E(
                "alert_click_to_dial_calls",
                "alertClickToDialCalls",
                bool,
                is_required=True,
            ),
            E(
                "alert_group_paging_calls",
                "alertGroupPagingCalls",
                bool,
                is_required=True,
            ),
            E(
                "use_mobility_calling_line_id",
                "useMobilityCallingLineID",
                bool,
                is_required=True,
            ),
            E(
                "enable_diversion_inhibitor",
                "enableDiversionInhibitor",
                bool,
                is_required=True,
            ),
            E(
                "require_answer_confirmation",
                "requireAnswerConfirmation",
                bool,
                is_required=True,
            ),
            E(
                "broadworks_call_control",
                "broadworksCallControl",
                bool,
                is_required=True,
            ),
            E("use_setting_level", "useSettingLevel", str, is_required=True),
            E("deny_call_originations", "denyCallOriginations", bool, is_required=True),
            E("deny_call_terminations", "denyCallTerminations", bool, is_required=True),
            E("devices_to_ring", "devicesToRing", str, is_required=True),
            E(
                "include_shared_call_appearance",
                "includeSharedCallAppearance",
                bool,
                is_required=True,
            ),
            E(
                "include_broadworks_anywhere",
                "includeBroadworksAnywhere",
                bool,
                is_required=True,
            ),
            E(
                "include_executive_assistant",
                "includeExecutiveAssistant",
                bool,
                is_required=True,
            ),
            E("mobile_number_alerted", "mobileNumberAlerted", str, is_array=True),
            E("enable_call_anchoring", "enableCallAnchoring", bool, is_required=True),
            E("time_schedule", "timeSchedule", OCI.ScheduleGlobalKey, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.ScheduleGlobalKey,
                is_complex=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAndHotlineAdd,
                is_complex=True,
            ),
            E("outbound_alternate_number", "outboundAlternateNumber", str),
            E("enable_direct_routing", "enableDirectRouting", bool, is_required=True),
            E(
                "mark_cdr_as_enterprise_group_calls",
                "markCDRAsEnterpriseGroupCalls",
                bool,
                is_required=True,
            ),
            E(
                "use_mobility_connected_identity",
                "useMobilityConnectedIdentity",
                bool,
                is_required=True,
            ),
            E("network_translation_index", "networkTranslationIndex", str),
        )


class UserBroadWorksMobilityMobileIdentityConsolidatedAddRequest(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.

    Replaced By: `UserBroadWorksMobilityMobileIdentityConsolidatedAddRequest22()`

    Attributes:
        user_id (str): userId
        mobile_number (str): mobileNumber
        description (str): description *Optional*
        is_primary (bool): isPrimary
        enable_alerting (bool): enableAlerting
        alert_agent_calls (bool): alertAgentCalls
        alert_click_to_dial_calls (bool): alertClickToDialCalls
        alert_group_paging_calls (bool): alertGroupPagingCalls
        use_mobility_calling_line_id (bool): useMobilityCallingLineID
        enable_diversion_inhibitor (bool): enableDiversionInhibitor
        require_answer_confirmation (bool): requireAnswerConfirmation
        broadworks_call_control (bool): broadworksCallControl
        use_setting_level (str): useSettingLevel
        deny_call_originations (bool): denyCallOriginations
        deny_call_terminations (bool): denyCallTerminations
        devices_to_ring (str): devicesToRing
        include_shared_call_appearance (bool): includeSharedCallAppearance
        include_broadworks_anywhere (bool): includeBroadworksAnywhere
        include_executive_assistant (bool): includeExecutiveAssistant
        mobile_number_alerted (List[str]): mobileNumberAlerted *Optional*
        enable_call_anchoring (bool): enableCallAnchoring
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        outbound_alternate_number (str): outboundAlternateNumber *Optional*
        enable_direct_routing (bool): enableDirectRouting
        mark_cdr_as_enterprise_group_calls (bool): markCDRAsEnterpriseGroupCalls
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
        "description",
        "is_primary",
        "enable_alerting",
        "alert_agent_calls",
        "alert_click_to_dial_calls",
        "alert_group_paging_calls",
        "use_mobility_calling_line_id",
        "enable_diversion_inhibitor",
        "require_answer_confirmation",
        "broadworks_call_control",
        "use_setting_level",
        "deny_call_originations",
        "deny_call_terminations",
        "devices_to_ring",
        "include_shared_call_appearance",
        "include_broadworks_anywhere",
        "include_executive_assistant",
        "mobile_number_alerted",
        "enable_call_anchoring",
        "time_schedule",
        "holiday_schedule",
        "access_device_endpoint",
        "outbound_alternate_number",
        "enable_direct_routing",
        "mark_cdr_as_enterprise_group_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
            E("description", "description", str),
            E("is_primary", "isPrimary", bool, is_required=True),
            E("enable_alerting", "enableAlerting", bool, is_required=True),
            E("alert_agent_calls", "alertAgentCalls", bool, is_required=True),
            E(
                "alert_click_to_dial_calls",
                "alertClickToDialCalls",
                bool,
                is_required=True,
            ),
            E(
                "alert_group_paging_calls",
                "alertGroupPagingCalls",
                bool,
                is_required=True,
            ),
            E(
                "use_mobility_calling_line_id",
                "useMobilityCallingLineID",
                bool,
                is_required=True,
            ),
            E(
                "enable_diversion_inhibitor",
                "enableDiversionInhibitor",
                bool,
                is_required=True,
            ),
            E(
                "require_answer_confirmation",
                "requireAnswerConfirmation",
                bool,
                is_required=True,
            ),
            E(
                "broadworks_call_control",
                "broadworksCallControl",
                bool,
                is_required=True,
            ),
            E("use_setting_level", "useSettingLevel", str, is_required=True),
            E("deny_call_originations", "denyCallOriginations", bool, is_required=True),
            E("deny_call_terminations", "denyCallTerminations", bool, is_required=True),
            E("devices_to_ring", "devicesToRing", str, is_required=True),
            E(
                "include_shared_call_appearance",
                "includeSharedCallAppearance",
                bool,
                is_required=True,
            ),
            E(
                "include_broadworks_anywhere",
                "includeBroadworksAnywhere",
                bool,
                is_required=True,
            ),
            E(
                "include_executive_assistant",
                "includeExecutiveAssistant",
                bool,
                is_required=True,
            ),
            E("mobile_number_alerted", "mobileNumberAlerted", str, is_array=True),
            E("enable_call_anchoring", "enableCallAnchoring", bool, is_required=True),
            E("time_schedule", "timeSchedule", OCI.ScheduleGlobalKey, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.ScheduleGlobalKey,
                is_complex=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpoint,
                is_complex=True,
            ),
            E("outbound_alternate_number", "outboundAlternateNumber", str),
            E("enable_direct_routing", "enableDirectRouting", bool, is_required=True),
            E(
                "mark_cdr_as_enterprise_group_calls",
                "markCDRAsEnterpriseGroupCalls",
                bool,
                is_required=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): userId
        mobile_number (str): mobileNumber
        description (str): description *Optional*
        is_primary (bool): isPrimary
        enable_alerting (bool): enableAlerting
        alert_agent_calls (bool): alertAgentCalls
        alert_click_to_dial_calls (bool): alertClickToDialCalls
        alert_group_paging_calls (bool): alertGroupPagingCalls
        use_mobility_calling_line_id (bool): useMobilityCallingLineID
        enable_diversion_inhibitor (bool): enableDiversionInhibitor
        require_answer_confirmation (bool): requireAnswerConfirmation
        broadworks_call_control (bool): broadworksCallControl
        use_setting_level (str): useSettingLevel
        deny_call_originations (bool): denyCallOriginations
        deny_call_terminations (bool): denyCallTerminations
        devices_to_ring (str): devicesToRing
        include_shared_call_appearance (bool): includeSharedCallAppearance
        include_broadworks_anywhere (bool): includeBroadworksAnywhere
        include_executive_assistant (bool): includeExecutiveAssistant
        mobile_number_alerted (List[str]): mobileNumberAlerted *Optional*
        enable_call_anchoring (bool): enableCallAnchoring
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        outbound_alternate_number (str): outboundAlternateNumber *Optional*
        enable_direct_routing (bool): enableDirectRouting
        mark_cdr_as_enterprise_group_calls (bool): markCDRAsEnterpriseGroupCalls
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
        "description",
        "is_primary",
        "enable_alerting",
        "alert_agent_calls",
        "alert_click_to_dial_calls",
        "alert_group_paging_calls",
        "use_mobility_calling_line_id",
        "enable_diversion_inhibitor",
        "require_answer_confirmation",
        "broadworks_call_control",
        "use_setting_level",
        "deny_call_originations",
        "deny_call_terminations",
        "devices_to_ring",
        "include_shared_call_appearance",
        "include_broadworks_anywhere",
        "include_executive_assistant",
        "mobile_number_alerted",
        "enable_call_anchoring",
        "time_schedule",
        "holiday_schedule",
        "access_device_endpoint",
        "outbound_alternate_number",
        "enable_direct_routing",
        "mark_cdr_as_enterprise_group_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
            E("description", "description", str),
            E("is_primary", "isPrimary", bool, is_required=True),
            E("enable_alerting", "enableAlerting", bool, is_required=True),
            E("alert_agent_calls", "alertAgentCalls", bool, is_required=True),
            E(
                "alert_click_to_dial_calls",
                "alertClickToDialCalls",
                bool,
                is_required=True,
            ),
            E(
                "alert_group_paging_calls",
                "alertGroupPagingCalls",
                bool,
                is_required=True,
            ),
            E(
                "use_mobility_calling_line_id",
                "useMobilityCallingLineID",
                bool,
                is_required=True,
            ),
            E(
                "enable_diversion_inhibitor",
                "enableDiversionInhibitor",
                bool,
                is_required=True,
            ),
            E(
                "require_answer_confirmation",
                "requireAnswerConfirmation",
                bool,
                is_required=True,
            ),
            E(
                "broadworks_call_control",
                "broadworksCallControl",
                bool,
                is_required=True,
            ),
            E("use_setting_level", "useSettingLevel", str, is_required=True),
            E("deny_call_originations", "denyCallOriginations", bool, is_required=True),
            E("deny_call_terminations", "denyCallTerminations", bool, is_required=True),
            E("devices_to_ring", "devicesToRing", str, is_required=True),
            E(
                "include_shared_call_appearance",
                "includeSharedCallAppearance",
                bool,
                is_required=True,
            ),
            E(
                "include_broadworks_anywhere",
                "includeBroadworksAnywhere",
                bool,
                is_required=True,
            ),
            E(
                "include_executive_assistant",
                "includeExecutiveAssistant",
                bool,
                is_required=True,
            ),
            E("mobile_number_alerted", "mobileNumberAlerted", str, is_array=True),
            E("enable_call_anchoring", "enableCallAnchoring", bool, is_required=True),
            E("time_schedule", "timeSchedule", OCI.ScheduleGlobalKey, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.ScheduleGlobalKey,
                is_complex=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointAdd22,
                is_complex=True,
            ),
            E("outbound_alternate_number", "outboundAlternateNumber", str),
            E("enable_direct_routing", "enableDirectRouting", bool, is_required=True),
            E(
                "mark_cdr_as_enterprise_group_calls",
                "markCDRAsEnterpriseGroupCalls",
                bool,
                is_required=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): userId
        mobile_number (str): mobileNumber
        delete_existing_devices (bool): deleteExistingDevices *Optional*
        description (str): description *Optional*
        is_primary (bool): isPrimary *Optional*
        enable_alerting (bool): enableAlerting *Optional*
        alert_agent_calls (bool): alertAgentCalls *Optional*
        alert_click_to_dial_calls (bool): alertClickToDialCalls *Optional*
        alert_group_paging_calls (bool): alertGroupPagingCalls *Optional*
        use_mobility_calling_line_id (bool): useMobilityCallingLineID *Optional*
        enable_diversion_inhibitor (bool): enableDiversionInhibitor *Optional*
        require_answer_confirmation (bool): requireAnswerConfirmation *Optional*
        broadworks_call_control (bool): broadworksCallControl *Optional*
        use_setting_level (str): useSettingLevel *Optional*
        deny_call_originations (bool): denyCallOriginations *Optional*
        deny_call_terminations (bool): denyCallTerminations *Optional*
        devices_to_ring (str): devicesToRing *Optional*
        include_shared_call_appearance (bool): includeSharedCallAppearance *Optional*
        include_broadworks_anywhere (bool): includeBroadworksAnywhere *Optional*
        include_executive_assistant (bool): includeExecutiveAssistant *Optional*
        mobile_numbers_alerted (OCI.mobileNumbersAlerted): mobileNumbersAlerted *Optional*
        enable_call_anchoring (bool): enableCallAnchoring *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        outbound_alternate_number (str): outboundAlternateNumber *Optional*
        enable_direct_routing (bool): enableDirectRouting *Optional*
        mark_cdr_as_enterprise_group_calls (bool): markCDRAsEnterpriseGroupCalls
            *Optional*
        use_mobility_connected_identity (bool): useMobilityConnectedIdentity *Optional*
        network_translation_index (str): networkTranslationIndex *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
        "delete_existing_devices",
        "description",
        "is_primary",
        "enable_alerting",
        "alert_agent_calls",
        "alert_click_to_dial_calls",
        "alert_group_paging_calls",
        "use_mobility_calling_line_id",
        "enable_diversion_inhibitor",
        "require_answer_confirmation",
        "broadworks_call_control",
        "use_setting_level",
        "deny_call_originations",
        "deny_call_terminations",
        "devices_to_ring",
        "include_shared_call_appearance",
        "include_broadworks_anywhere",
        "include_executive_assistant",
        "mobile_numbers_alerted",
        "enable_call_anchoring",
        "time_schedule",
        "holiday_schedule",
        "access_device_endpoint",
        "outbound_alternate_number",
        "enable_direct_routing",
        "mark_cdr_as_enterprise_group_calls",
        "use_mobility_connected_identity",
        "network_translation_index",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
            E("delete_existing_devices", "deleteExistingDevices", bool),
            E("description", "description", str),
            E("is_primary", "isPrimary", bool),
            E("enable_alerting", "enableAlerting", bool),
            E("alert_agent_calls", "alertAgentCalls", bool),
            E("alert_click_to_dial_calls", "alertClickToDialCalls", bool),
            E("alert_group_paging_calls", "alertGroupPagingCalls", bool),
            E("use_mobility_calling_line_id", "useMobilityCallingLineID", bool),
            E("enable_diversion_inhibitor", "enableDiversionInhibitor", bool),
            E("require_answer_confirmation", "requireAnswerConfirmation", bool),
            E("broadworks_call_control", "broadworksCallControl", bool),
            E("use_setting_level", "useSettingLevel", str),
            E("deny_call_originations", "denyCallOriginations", bool),
            E("deny_call_terminations", "denyCallTerminations", bool),
            E("devices_to_ring", "devicesToRing", str),
            E("include_shared_call_appearance", "includeSharedCallAppearance", bool),
            E("include_broadworks_anywhere", "includeBroadworksAnywhere", bool),
            E("include_executive_assistant", "includeExecutiveAssistant", bool),
            E(
                "mobile_numbers_alerted",
                "mobileNumbersAlerted",
                OCI.BroadWorksMobilityAlertingMobileNumberReplacementList,
                is_complex=True,
            ),
            E("enable_call_anchoring", "enableCallAnchoring", bool),
            E("time_schedule", "timeSchedule", OCI.ScheduleGlobalKey, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.ScheduleGlobalKey,
                is_complex=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpoint,
                is_complex=True,
            ),
            E("outbound_alternate_number", "outboundAlternateNumber", str),
            E("enable_direct_routing", "enableDirectRouting", bool),
            E(
                "mark_cdr_as_enterprise_group_calls",
                "markCDRAsEnterpriseGroupCalls",
                bool,
            ),
            E("use_mobility_connected_identity", "useMobilityConnectedIdentity", bool),
            E("network_translation_index", "networkTranslationIndex", str),
        )


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): userId
        mobile_number (str): mobileNumber
        description (str): description *Optional*
        is_primary (bool): isPrimary *Optional*
        enable_alerting (bool): enableAlerting *Optional*
        alert_agent_calls (bool): alertAgentCalls *Optional*
        alert_click_to_dial_calls (bool): alertClickToDialCalls *Optional*
        alert_group_paging_calls (bool): alertGroupPagingCalls *Optional*
        use_mobility_calling_line_id (bool): useMobilityCallingLineID *Optional*
        enable_diversion_inhibitor (bool): enableDiversionInhibitor *Optional*
        require_answer_confirmation (bool): requireAnswerConfirmation *Optional*
        broadworks_call_control (bool): broadworksCallControl *Optional*
        use_setting_level (str): useSettingLevel *Optional*
        deny_call_originations (bool): denyCallOriginations *Optional*
        deny_call_terminations (bool): denyCallTerminations *Optional*
        devices_to_ring (str): devicesToRing *Optional*
        include_shared_call_appearance (bool): includeSharedCallAppearance *Optional*
        include_broadworks_anywhere (bool): includeBroadworksAnywhere *Optional*
        include_executive_assistant (bool): includeExecutiveAssistant *Optional*
        mobile_numbers_alerted (OCI.mobileNumbersAlerted): mobileNumbersAlerted *Optional*
        enable_call_anchoring (bool): enableCallAnchoring *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        outbound_alternate_number (str): outboundAlternateNumber *Optional*
        enable_direct_routing (bool): enableDirectRouting *Optional*
        mark_cdr_as_enterprise_group_calls (bool): markCDRAsEnterpriseGroupCalls
            *Optional*
        use_mobility_connected_identity (bool): useMobilityConnectedIdentity *Optional*
        network_translation_index (str): networkTranslationIndex *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "mobile_number",
        "description",
        "is_primary",
        "enable_alerting",
        "alert_agent_calls",
        "alert_click_to_dial_calls",
        "alert_group_paging_calls",
        "use_mobility_calling_line_id",
        "enable_diversion_inhibitor",
        "require_answer_confirmation",
        "broadworks_call_control",
        "use_setting_level",
        "deny_call_originations",
        "deny_call_terminations",
        "devices_to_ring",
        "include_shared_call_appearance",
        "include_broadworks_anywhere",
        "include_executive_assistant",
        "mobile_numbers_alerted",
        "enable_call_anchoring",
        "time_schedule",
        "holiday_schedule",
        "access_device_endpoint",
        "outbound_alternate_number",
        "enable_direct_routing",
        "mark_cdr_as_enterprise_group_calls",
        "use_mobility_connected_identity",
        "network_translation_index",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mobile_number", "mobileNumber", str, is_required=True),
            E("description", "description", str),
            E("is_primary", "isPrimary", bool),
            E("enable_alerting", "enableAlerting", bool),
            E("alert_agent_calls", "alertAgentCalls", bool),
            E("alert_click_to_dial_calls", "alertClickToDialCalls", bool),
            E("alert_group_paging_calls", "alertGroupPagingCalls", bool),
            E("use_mobility_calling_line_id", "useMobilityCallingLineID", bool),
            E("enable_diversion_inhibitor", "enableDiversionInhibitor", bool),
            E("require_answer_confirmation", "requireAnswerConfirmation", bool),
            E("broadworks_call_control", "broadworksCallControl", bool),
            E("use_setting_level", "useSettingLevel", str),
            E("deny_call_originations", "denyCallOriginations", bool),
            E("deny_call_terminations", "denyCallTerminations", bool),
            E("devices_to_ring", "devicesToRing", str),
            E("include_shared_call_appearance", "includeSharedCallAppearance", bool),
            E("include_broadworks_anywhere", "includeBroadworksAnywhere", bool),
            E("include_executive_assistant", "includeExecutiveAssistant", bool),
            E(
                "mobile_numbers_alerted",
                "mobileNumbersAlerted",
                OCI.BroadWorksMobilityAlertingMobileNumberReplacementList,
                is_complex=True,
            ),
            E("enable_call_anchoring", "enableCallAnchoring", bool),
            E("time_schedule", "timeSchedule", OCI.ScheduleGlobalKey, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.ScheduleGlobalKey,
                is_complex=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAndHotlineModify,
                is_complex=True,
            ),
            E("outbound_alternate_number", "outboundAlternateNumber", str),
            E("enable_direct_routing", "enableDirectRouting", bool),
            E(
                "mark_cdr_as_enterprise_group_calls",
                "markCDRAsEnterpriseGroupCalls",
                bool,
            ),
            E("use_mobility_connected_identity", "useMobilityConnectedIdentity", bool),
            E("network_translation_index", "networkTranslationIndex", str),
        )


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): userId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
        search_criteria_receptionist_note (List[OCI.searchCriteriaReceptionistNote]):
            searchCriteriaReceptionistNote *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_imp_id",
        "search_criteria_receptionist_note",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_receptionist_note",
                "searchCriteriaReceptionistNote",
                OCI.SearchCriteriaReceptionistNote,
                is_complex=True,
                is_array=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): receptionistUserId
        receptionist_user_and_note (List[OCI.receptionistUserAndNote]):
            receptionistUserAndNote
    """

    __slots__: List[str] = [
        "receptionist_user_id",
        "receptionist_user_and_note",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("receptionist_user_id", "receptionistUserId", str, is_required=True),
            E(
                "receptionist_user_and_note",
                "receptionistUserAndNote",
                OCI.ReceptionistContactUserAndNote,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class UserBroadWorksReceptionistOfficeGetAvailableUserListRequest(OCIRequest):
    """
    Get the Receptionist Office available user list.

    The response is either
    `UserBroadWorksReceptionistOfficeGetAvailableUserListResponse()` or `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=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): userId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=True,
            ),
        )


class UserBroadworksMobilityAddMobileIdentityUsingSharedCallAppearanceRequest(
    OCIRequest,
):
    """
    Adding a new mobile identity using the Share Call Appearance.

    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): userId
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint
        mobile_number (str): mobileNumber
        description (str): description *Optional*
        is_primary (bool): isPrimary
        enable_alerting (bool): enableAlerting
        alert_agent_calls (bool): alertAgentCalls
        alert_click_to_dial_calls (bool): alertClickToDialCalls
        alert_group_paging_calls (bool): alertGroupPagingCalls
        use_mobility_calling_line_id (bool): useMobilityCallingLineID
        enable_diversion_inhibitor (bool): enableDiversionInhibitor
        require_answer_confirmation (bool): requireAnswerConfirmation
        broadworks_call_control (bool): broadworksCallControl
        use_setting_level (str): useSettingLevel
        deny_call_originations (bool): denyCallOriginations
        deny_call_terminations (bool): denyCallTerminations
        devices_to_ring (str): devicesToRing
        include_shared_call_appearance (bool): includeSharedCallAppearance
        include_broadworks_anywhere (bool): includeBroadworksAnywhere
        include_executive_assistant (bool): includeExecutiveAssistant
        mobile_number_alerted (List[str]): mobileNumberAlerted *Optional*
        enable_call_anchoring (bool): enableCallAnchoring
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        enable_direct_routing (bool): enableDirectRouting
        mark_cdr_as_enterprise_group_calls (bool): markCDRAsEnterpriseGroupCalls
    """

    __slots__: List[str] = [
        "user_id",
        "access_device_endpoint",
        "mobile_number",
        "description",
        "is_primary",
        "enable_alerting",
        "alert_agent_calls",
        "alert_click_to_dial_calls",
        "alert_group_paging_calls",
        "use_mobility_calling_line_id",
        "enable_diversion_inhibitor",
        "require_answer_confirmation",
        "broadworks_call_control",
        "use_setting_level",
        "deny_call_originations",
        "deny_call_terminations",
        "devices_to_ring",
        "include_shared_call_appearance",
        "include_broadworks_anywhere",
        "include_executive_assistant",
        "mobile_number_alerted",
        "enable_call_anchoring",
        "time_schedule",
        "holiday_schedule",
        "enable_direct_routing",
        "mark_cdr_as_enterprise_group_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointKey,
                is_complex=True,
                is_required=True,
            ),
            E("mobile_number", "mobileNumber", str, is_required=True),
            E("description", "description", str),
            E("is_primary", "isPrimary", bool, is_required=True),
            E("enable_alerting", "enableAlerting", bool, is_required=True),
            E("alert_agent_calls", "alertAgentCalls", bool, is_required=True),
            E(
                "alert_click_to_dial_calls",
                "alertClickToDialCalls",
                bool,
                is_required=True,
            ),
            E(
                "alert_group_paging_calls",
                "alertGroupPagingCalls",
                bool,
                is_required=True,
            ),
            E(
                "use_mobility_calling_line_id",
                "useMobilityCallingLineID",
                bool,
                is_required=True,
            ),
            E(
                "enable_diversion_inhibitor",
                "enableDiversionInhibitor",
                bool,
                is_required=True,
            ),
            E(
                "require_answer_confirmation",
                "requireAnswerConfirmation",
                bool,
                is_required=True,
            ),
            E(
                "broadworks_call_control",
                "broadworksCallControl",
                bool,
                is_required=True,
            ),
            E("use_setting_level", "useSettingLevel", str, is_required=True),
            E("deny_call_originations", "denyCallOriginations", bool, is_required=True),
            E("deny_call_terminations", "denyCallTerminations", bool, is_required=True),
            E("devices_to_ring", "devicesToRing", str, is_required=True),
            E(
                "include_shared_call_appearance",
                "includeSharedCallAppearance",
                bool,
                is_required=True,
            ),
            E(
                "include_broadworks_anywhere",
                "includeBroadworksAnywhere",
                bool,
                is_required=True,
            ),
            E(
                "include_executive_assistant",
                "includeExecutiveAssistant",
                bool,
                is_required=True,
            ),
            E("mobile_number_alerted", "mobileNumberAlerted", str, is_array=True),
            E("enable_call_anchoring", "enableCallAnchoring", bool, is_required=True),
            E("time_schedule", "timeSchedule", OCI.ScheduleGlobalKey, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.ScheduleGlobalKey,
                is_complex=True,
            ),
            E("enable_direct_routing", "enableDirectRouting", bool, is_required=True),
            E(
                "mark_cdr_as_enterprise_group_calls",
                "markCDRAsEnterpriseGroupCalls",
                bool,
                is_required=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): userId
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint
        mobile_number (str): mobileNumber
        description (str): description *Optional*
        is_primary (bool): isPrimary
        enable_alerting (bool): enableAlerting
        alert_agent_calls (bool): alertAgentCalls
        alert_click_to_dial_calls (bool): alertClickToDialCalls
        alert_group_paging_calls (bool): alertGroupPagingCalls
        use_mobility_calling_line_id (bool): useMobilityCallingLineID
        enable_diversion_inhibitor (bool): enableDiversionInhibitor
        require_answer_confirmation (bool): requireAnswerConfirmation
        broadworks_call_control (bool): broadworksCallControl
        use_setting_level (str): useSettingLevel
        deny_call_originations (bool): denyCallOriginations
        deny_call_terminations (bool): denyCallTerminations
        devices_to_ring (str): devicesToRing
        include_shared_call_appearance (bool): includeSharedCallAppearance
        include_broadworks_anywhere (bool): includeBroadworksAnywhere
        include_executive_assistant (bool): includeExecutiveAssistant
        mobile_number_alerted (List[str]): mobileNumberAlerted *Optional*
        enable_call_anchoring (bool): enableCallAnchoring
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        enable_direct_routing (bool): enableDirectRouting
        mark_cdr_as_enterprise_group_calls (bool): markCDRAsEnterpriseGroupCalls
        use_hotline (bool): useHotline
        hotline_contact (str): hotlineContact *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "access_device_endpoint",
        "mobile_number",
        "description",
        "is_primary",
        "enable_alerting",
        "alert_agent_calls",
        "alert_click_to_dial_calls",
        "alert_group_paging_calls",
        "use_mobility_calling_line_id",
        "enable_diversion_inhibitor",
        "require_answer_confirmation",
        "broadworks_call_control",
        "use_setting_level",
        "deny_call_originations",
        "deny_call_terminations",
        "devices_to_ring",
        "include_shared_call_appearance",
        "include_broadworks_anywhere",
        "include_executive_assistant",
        "mobile_number_alerted",
        "enable_call_anchoring",
        "time_schedule",
        "holiday_schedule",
        "enable_direct_routing",
        "mark_cdr_as_enterprise_group_calls",
        "use_hotline",
        "hotline_contact",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointKey,
                is_complex=True,
                is_required=True,
            ),
            E("mobile_number", "mobileNumber", str, is_required=True),
            E("description", "description", str),
            E("is_primary", "isPrimary", bool, is_required=True),
            E("enable_alerting", "enableAlerting", bool, is_required=True),
            E("alert_agent_calls", "alertAgentCalls", bool, is_required=True),
            E(
                "alert_click_to_dial_calls",
                "alertClickToDialCalls",
                bool,
                is_required=True,
            ),
            E(
                "alert_group_paging_calls",
                "alertGroupPagingCalls",
                bool,
                is_required=True,
            ),
            E(
                "use_mobility_calling_line_id",
                "useMobilityCallingLineID",
                bool,
                is_required=True,
            ),
            E(
                "enable_diversion_inhibitor",
                "enableDiversionInhibitor",
                bool,
                is_required=True,
            ),
            E(
                "require_answer_confirmation",
                "requireAnswerConfirmation",
                bool,
                is_required=True,
            ),
            E(
                "broadworks_call_control",
                "broadworksCallControl",
                bool,
                is_required=True,
            ),
            E("use_setting_level", "useSettingLevel", str, is_required=True),
            E("deny_call_originations", "denyCallOriginations", bool, is_required=True),
            E("deny_call_terminations", "denyCallTerminations", bool, is_required=True),
            E("devices_to_ring", "devicesToRing", str, is_required=True),
            E(
                "include_shared_call_appearance",
                "includeSharedCallAppearance",
                bool,
                is_required=True,
            ),
            E(
                "include_broadworks_anywhere",
                "includeBroadworksAnywhere",
                bool,
                is_required=True,
            ),
            E(
                "include_executive_assistant",
                "includeExecutiveAssistant",
                bool,
                is_required=True,
            ),
            E("mobile_number_alerted", "mobileNumberAlerted", str, is_array=True),
            E("enable_call_anchoring", "enableCallAnchoring", bool, is_required=True),
            E("time_schedule", "timeSchedule", OCI.ScheduleGlobalKey, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.ScheduleGlobalKey,
                is_complex=True,
            ),
            E("enable_direct_routing", "enableDirectRouting", bool, is_required=True),
            E(
                "mark_cdr_as_enterprise_group_calls",
                "markCDRAsEnterpriseGroupCalls",
                bool,
                is_required=True,
            ),
            E("use_hotline", "useHotline", bool, is_required=True),
            E("hotline_contact", "hotlineContact", str),
        )


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): userId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=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): supervisorUserId
        service_user_id (str): serviceUserId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "supervisor_user_id",
        "service_user_id",
        "response_size_limit",
        "search_criteria_mode_or",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_user_id",
        "search_criteria_exact_user_department",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("supervisor_user_id", "supervisorUserId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=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): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        forward_to_number_selection (str): forwardToNumberSelection *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        call_to_number_list (OCI.callToNumberList): callToNumberList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "holiday_schedule",
        "forward_to_number_selection",
        "forward_to_phone_number",
        "from_dn_criteria",
        "call_to_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("forward_to_number_selection", "forwardToNumberSelection", str),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=True,
            ),
            E(
                "call_to_number_list",
                "callToNumberList",
                OCI.ReplacementCallToNumberList,
                is_complex=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): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        reject_call (bool): rejectCall *Optional*
        to_dn_criteria (OCI.toDnCriteria): toDnCriteria *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "holiday_schedule",
        "reject_call",
        "to_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("reject_call", "rejectCall", bool),
            E(
                "to_dn_criteria",
                "toDnCriteria",
                OCI.CallMeNowToDnCriteriaModify,
                is_complex=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): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
        call_to_number_list (OCI.callToNumberList): callToNumberList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "from_dn_criteria",
        "holiday_schedule",
        "blacklisted",
        "call_to_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=True,
            ),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
            E(
                "call_to_number_list",
                "callToNumberList",
                OCI.ReplacementCallToNumberList,
                is_complex=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): userId
        profile (str): profile *Optional*
        available_in_office (OCI.availableInOffice): availableInOffice *Optional*
        available_out_of_office (OCI.availableOutOfOffice): availableOutOfOffice
            *Optional*
        busy (OCI.busy): busy *Optional*
        unavailable (OCI.unavailable): unavailable *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "profile",
        "available_in_office",
        "available_out_of_office",
        "busy",
        "unavailable",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("profile", "profile", str),
            E(
                "available_in_office",
                "availableInOffice",
                OCI.CommPilotExpressAvailableInOfficeModify,
                is_complex=True,
            ),
            E(
                "available_out_of_office",
                "availableOutOfOffice",
                OCI.CommPilotExpressAvailableOutOfOfficeModify,
                is_complex=True,
            ),
            E("busy", "busy", OCI.CommPilotExpressBusyModify, is_complex=True),
            E(
                "unavailable",
                "unavailable",
                OCI.CommPilotExpressUnavailableModify,
                is_complex=True,
            ),
        )


class UserCustomRingbackUserAddCriteriaRequest(OCIRequest):
    """
    Add a criteria to the user's custom ringback service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
        audio_selection (str): audioSelection
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection
        video_file (OCI.videoFile): videoFile *Optional*
        call_waiting_audio_selection (str): callWaitingAudioSelection *Optional*
        call_waiting_audio_file (OCI.callWaitingAudioFile): callWaitingAudioFile
            *Optional*
        call_waiting_video_selection (str): callWaitingVideoSelection *Optional*
        call_waiting_video_file (OCI.callWaitingVideoFile): callWaitingVideoFile
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "from_dn_criteria",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
        "call_waiting_audio_selection",
        "call_waiting_audio_file",
        "call_waiting_video_selection",
        "call_waiting_video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
            E("audio_selection", "audioSelection", str, is_required=True),
            E("audio_file", "audioFile", OCI.ExtendedFileResource, is_complex=True),
            E("video_selection", "videoSelection", str, is_required=True),
            E("video_file", "videoFile", OCI.ExtendedFileResource, is_complex=True),
            E("call_waiting_audio_selection", "callWaitingAudioSelection", str),
            E(
                "call_waiting_audio_file",
                "callWaitingAudioFile",
                OCI.ExtendedFileResource,
                is_complex=True,
            ),
            E("call_waiting_video_selection", "callWaitingVideoSelection", str),
            E(
                "call_waiting_video_file",
                "callWaitingVideoFile",
                OCI.ExtendedFileResource,
                is_complex=True,
            ),
        )


class UserCustomRingbackUserAddCriteriaRequest16(OCIRequest):
    """
    Add a criteria to the user's custom ringback service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
        audio_selection (str): audioSelection
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection
        video_file (OCI.videoFile): videoFile *Optional*
        call_waiting_audio_selection (str): callWaitingAudioSelection *Optional*
        call_waiting_audio_file (OCI.callWaitingAudioFile): callWaitingAudioFile
            *Optional*
        call_waiting_video_selection (str): callWaitingVideoSelection *Optional*
        call_waiting_video_file (OCI.callWaitingVideoFile): callWaitingVideoFile
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
        "call_waiting_audio_selection",
        "call_waiting_audio_file",
        "call_waiting_video_selection",
        "call_waiting_video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool, is_required=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
            E("audio_selection", "audioSelection", str, is_required=True),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("video_selection", "videoSelection", str, is_required=True),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("call_waiting_audio_selection", "callWaitingAudioSelection", str),
            E(
                "call_waiting_audio_file",
                "callWaitingAudioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("call_waiting_video_selection", "callWaitingVideoSelection", str),
            E(
                "call_waiting_video_file",
                "callWaitingVideoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=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): userId
        criteria_name (str): criteriaName
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria
        call_to_number (List[OCI.callToNumber]): callToNumber *Optional*
        audio_selection (str): audioSelection
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection
        video_file (OCI.videoFile): videoFile *Optional*
        call_waiting_audio_selection (str): callWaitingAudioSelection *Optional*
        call_waiting_audio_file (OCI.callWaitingAudioFile): callWaitingAudioFile
            *Optional*
        call_waiting_video_selection (str): callWaitingVideoSelection *Optional*
        call_waiting_video_file (OCI.callWaitingVideoFile): callWaitingVideoFile
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
        "call_to_number",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
        "call_waiting_audio_selection",
        "call_waiting_audio_file",
        "call_waiting_video_selection",
        "call_waiting_video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool, is_required=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDn,
                is_complex=True,
                is_required=True,
            ),
            E(
                "call_to_number",
                "callToNumber",
                OCI.CallToNumber,
                is_complex=True,
                is_array=True,
            ),
            E("audio_selection", "audioSelection", str, is_required=True),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileLevelResource20,
                is_complex=True,
            ),
            E("video_selection", "videoSelection", str, is_required=True),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileLevelResource20,
                is_complex=True,
            ),
            E("call_waiting_audio_selection", "callWaitingAudioSelection", str),
            E(
                "call_waiting_audio_file",
                "callWaitingAudioFile",
                OCI.ExtendedMediaFileLevelResource20,
                is_complex=True,
            ),
            E("call_waiting_video_selection", "callWaitingVideoSelection", str),
            E(
                "call_waiting_video_file",
                "callWaitingVideoFile",
                OCI.ExtendedMediaFileLevelResource20,
                is_complex=True,
            ),
        )


class UserCustomRingbackUserModifyCriteriaRequest(OCIRequest):
    """
    Modify a criteria for the user's custom ringback service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Replaced By: `UserCustomRingbackUserModifyCriteriaRequest16()`

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        audio_selection (str): audioSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        call_waiting_audio_selection (str): callWaitingAudioSelection *Optional*
        call_waiting_audio_file (OCI.callWaitingAudioFile): callWaitingAudioFile
            *Optional*
        call_waiting_video_selection (str): callWaitingVideoSelection *Optional*
        call_waiting_video_file (OCI.callWaitingVideoFile): callWaitingVideoFile
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "from_dn_criteria",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
        "call_waiting_audio_selection",
        "call_waiting_audio_file",
        "call_waiting_video_selection",
        "call_waiting_video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=True,
            ),
            E("audio_selection", "audioSelection", str),
            E("audio_file", "audioFile", OCI.ExtendedFileResource, is_complex=True),
            E("video_selection", "videoSelection", str),
            E("video_file", "videoFile", OCI.ExtendedFileResource, is_complex=True),
            E("call_waiting_audio_selection", "callWaitingAudioSelection", str),
            E(
                "call_waiting_audio_file",
                "callWaitingAudioFile",
                OCI.ExtendedFileResource,
                is_complex=True,
            ),
            E("call_waiting_video_selection", "callWaitingVideoSelection", str),
            E(
                "call_waiting_video_file",
                "callWaitingVideoFile",
                OCI.ExtendedFileResource,
                is_complex=True,
            ),
        )


class UserCustomRingbackUserModifyCriteriaRequest16(OCIRequest):
    """
    Modify a criteria for the user's custom ringback service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        audio_selection (str): audioSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        call_waiting_audio_selection (str): callWaitingAudioSelection *Optional*
        call_waiting_audio_file (OCI.callWaitingAudioFile): callWaitingAudioFile
            *Optional*
        call_waiting_video_selection (str): callWaitingVideoSelection *Optional*
        call_waiting_video_file (OCI.callWaitingVideoFile): callWaitingVideoFile
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
        "call_waiting_audio_selection",
        "call_waiting_audio_file",
        "call_waiting_video_selection",
        "call_waiting_video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=True,
            ),
            E("audio_selection", "audioSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("video_selection", "videoSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("call_waiting_audio_selection", "callWaitingAudioSelection", str),
            E(
                "call_waiting_audio_file",
                "callWaitingAudioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("call_waiting_video_selection", "callWaitingVideoSelection", str),
            E(
                "call_waiting_video_file",
                "callWaitingVideoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=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): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        call_to_number_list (OCI.callToNumberList): callToNumberList *Optional*
        audio_selection (str): audioSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        call_waiting_audio_selection (str): callWaitingAudioSelection *Optional*
        call_waiting_audio_file (OCI.callWaitingAudioFile): callWaitingAudioFile
            *Optional*
        call_waiting_video_selection (str): callWaitingVideoSelection *Optional*
        call_waiting_video_file (OCI.callWaitingVideoFile): callWaitingVideoFile
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
        "call_to_number_list",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
        "call_waiting_audio_selection",
        "call_waiting_audio_file",
        "call_waiting_video_selection",
        "call_waiting_video_file",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=True,
            ),
            E(
                "call_to_number_list",
                "callToNumberList",
                OCI.ReplacementCallToNumberList,
                is_complex=True,
            ),
            E("audio_selection", "audioSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileLevelResource20,
                is_complex=True,
            ),
            E("video_selection", "videoSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileLevelResource20,
                is_complex=True,
            ),
            E("call_waiting_audio_selection", "callWaitingAudioSelection", str),
            E(
                "call_waiting_audio_file",
                "callWaitingAudioFile",
                OCI.ExtendedMediaFileLevelResource20,
                is_complex=True,
            ),
            E("call_waiting_video_selection", "callWaitingVideoSelection", str),
            E(
                "call_waiting_video_file",
                "callWaitingVideoFile",
                OCI.ExtendedMediaFileLevelResource20,
                is_complex=True,
            ),
        )


class UserEnhancedCallLogsGetListRequest17sp4(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" 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 `UserEnhancedCallLogsGetListResponse17sp4()` or an
    `ErrorResponse()`. Replaced by UserEnhancedCallLogsGetListRequest17sp4V2. Originally
    deprecated in release 20.

    Attributes:
        user_id (str): userId
        call_log_type (str): callLogType *Optional*
        date_time_range (OCI.dateTimeRange): dateTimeRange
        number_filter (OCI.numberFilter): numberFilter *Optional*
        redirected_number_filter (OCI.redirectedNumberFilter): redirectedNumberFilter
            *Optional*
        account_authorization_code_filter (OCI.accountAuthorizationCodeFilter):
            accountAuthorizationCodeFilter *Optional*
        subscriber_type (str): subscriberType *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_log_type",
        "date_time_range",
        "number_filter",
        "redirected_number_filter",
        "account_authorization_code_filter",
        "subscriber_type",
        "response_paging_control",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_log_type", "callLogType", str),
            E(
                "date_time_range",
                "dateTimeRange",
                OCI.EnhancedCallLogsTimeRange,
                is_complex=True,
                is_required=True,
            ),
            E(
                "number_filter",
                "numberFilter",
                OCI.EnhancedCallLogsNumberFilter,
                is_complex=True,
            ),
            E(
                "redirected_number_filter",
                "redirectedNumberFilter",
                OCI.EnhancedCallLogsRedirectedNumberFilter,
                is_complex=True,
            ),
            E(
                "account_authorization_code_filter",
                "accountAuthorizationCodeFilter",
                OCI.EnhancedCallLogsAccountAuthorizationCodeFilter,
                is_complex=True,
            ),
            E("subscriber_type", "subscriberType", str),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
        )


class UserEnhancedCallLogsGetListRequest20(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 `UserEnhancedCallLogsGetListResponse20()` or an
    `ErrorResponse()`. The following elements are only used in AS data mode and not
    returned in XS data mode: callAuthorizationCodeFilter

    Attributes:
        user_id (str): userId
        call_log_type (str): callLogType *Optional*
        date_time_range (OCI.dateTimeRange): dateTimeRange
        number_filter (OCI.numberFilter): numberFilter *Optional*
        redirected_number_filter (OCI.redirectedNumberFilter): redirectedNumberFilter
            *Optional*
        account_authorization_code_filter (OCI.accountAuthorizationCodeFilter):
            accountAuthorizationCodeFilter *Optional*
        call_authorization_code_filter (OCI.callAuthorizationCodeFilter):
            callAuthorizationCodeFilter *Optional*
        subscriber_type (str): subscriberType *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_log_type",
        "date_time_range",
        "number_filter",
        "redirected_number_filter",
        "account_authorization_code_filter",
        "call_authorization_code_filter",
        "subscriber_type",
        "response_paging_control",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_log_type", "callLogType", str),
            E(
                "date_time_range",
                "dateTimeRange",
                OCI.EnhancedCallLogsTimeRange,
                is_complex=True,
                is_required=True,
            ),
            E(
                "number_filter",
                "numberFilter",
                OCI.EnhancedCallLogsNumberFilter,
                is_complex=True,
            ),
            E(
                "redirected_number_filter",
                "redirectedNumberFilter",
                OCI.EnhancedCallLogsRedirectedNumberFilter,
                is_complex=True,
            ),
            E(
                "account_authorization_code_filter",
                "accountAuthorizationCodeFilter",
                OCI.EnhancedCallLogsAccountAuthorizationCodeFilter,
                is_complex=True,
            ),
            E(
                "call_authorization_code_filter",
                "callAuthorizationCodeFilter",
                OCI.EnhancedCallLogsCallAuthorizationCodeFilter,
                is_complex=True,
            ),
            E("subscriber_type", "subscriberType", str),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
        )


class UserEnhancedCallLogsGetListRequest20sp1(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 `UserEnhancedCallLogsGetListResponse20sp1()` or an
    `ErrorResponse()`. The following elements are only used in AS data mode:
    callAuthorizationCodeFilter callSecurityClassification

    Attributes:
        user_id (str): userId
        call_log_type (str): callLogType *Optional*
        date_time_range (OCI.dateTimeRange): dateTimeRange
        number_filter (OCI.numberFilter): numberFilter *Optional*
        redirected_number_filter (OCI.redirectedNumberFilter): redirectedNumberFilter
            *Optional*
        account_authorization_code_filter (OCI.accountAuthorizationCodeFilter):
            accountAuthorizationCodeFilter *Optional*
        call_authorization_code_filter (OCI.callAuthorizationCodeFilter):
            callAuthorizationCodeFilter *Optional*
        subscriber_type (str): subscriberType *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_log_type",
        "date_time_range",
        "number_filter",
        "redirected_number_filter",
        "account_authorization_code_filter",
        "call_authorization_code_filter",
        "subscriber_type",
        "response_paging_control",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_log_type", "callLogType", str),
            E(
                "date_time_range",
                "dateTimeRange",
                OCI.EnhancedCallLogsTimeRange,
                is_complex=True,
                is_required=True,
            ),
            E(
                "number_filter",
                "numberFilter",
                OCI.EnhancedCallLogsNumberFilter,
                is_complex=True,
            ),
            E(
                "redirected_number_filter",
                "redirectedNumberFilter",
                OCI.EnhancedCallLogsRedirectedNumberFilter20sp1,
                is_complex=True,
            ),
            E(
                "account_authorization_code_filter",
                "accountAuthorizationCodeFilter",
                OCI.EnhancedCallLogsAccountAuthorizationCodeFilter,
                is_complex=True,
            ),
            E(
                "call_authorization_code_filter",
                "callAuthorizationCodeFilter",
                OCI.EnhancedCallLogsCallAuthorizationCodeFilter,
                is_complex=True,
            ),
            E("subscriber_type", "subscriberType", str),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
        )


class UserEnhancedCallLogsGetListRequest21(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 `UserEnhancedCallLogsGetListResponse21()` or an
    `ErrorResponse()`. The following elements are only used in AS data mode and not
    returned in XS data mode: callAuthorizationCodeFilter Replaced by:
    UserEnhancedCallLogsGetListRequest21Sp1 in AS data mode

    Attributes:
        user_id (str): userId
        call_log_type (str): callLogType *Optional*
        date_time_range (OCI.dateTimeRange): dateTimeRange
        number_filter (OCI.numberFilter): numberFilter *Optional*
        redirected_number_filter (OCI.redirectedNumberFilter): redirectedNumberFilter
            *Optional*
        account_authorization_code_filter (OCI.accountAuthorizationCodeFilter):
            accountAuthorizationCodeFilter *Optional*
        call_authorization_code_filter (OCI.callAuthorizationCodeFilter):
            callAuthorizationCodeFilter *Optional*
        subscriber_type (str): subscriberType *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_log_type",
        "date_time_range",
        "number_filter",
        "redirected_number_filter",
        "account_authorization_code_filter",
        "call_authorization_code_filter",
        "subscriber_type",
        "response_paging_control",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_log_type", "callLogType", str),
            E(
                "date_time_range",
                "dateTimeRange",
                OCI.EnhancedCallLogsTimeRange,
                is_complex=True,
                is_required=True,
            ),
            E(
                "number_filter",
                "numberFilter",
                OCI.EnhancedCallLogsNumberFilter,
                is_complex=True,
            ),
            E(
                "redirected_number_filter",
                "redirectedNumberFilter",
                OCI.EnhancedCallLogsRedirectedNumberFilter21,
                is_complex=True,
            ),
            E(
                "account_authorization_code_filter",
                "accountAuthorizationCodeFilter",
                OCI.EnhancedCallLogsAccountAuthorizationCodeFilter,
                is_complex=True,
            ),
            E(
                "call_authorization_code_filter",
                "callAuthorizationCodeFilter",
                OCI.EnhancedCallLogsCallAuthorizationCodeFilter,
                is_complex=True,
            ),
            E("subscriber_type", "subscriberType", str),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
        )


class UserEnhancedCallLogsGetListRequest21sp1(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 `UserEnhancedCallLogsGetListResponse21sp1()` or an
    `ErrorResponse()`. The following elements are only used in AS data mode and ignored in
    XS data mode: callAuthorizationCodeFilter Replaced by:
    UserEnhancedCallLogsGetListRequest21Sp1V2 in AS data mode

    Attributes:
        user_id (str): userId
        call_log_type (str): callLogType *Optional*
        date_time_range (OCI.dateTimeRange): dateTimeRange
        number_filter (OCI.numberFilter): numberFilter *Optional*
        redirected_number_filter (OCI.redirectedNumberFilter): redirectedNumberFilter
            *Optional*
        account_authorization_code_filter (OCI.accountAuthorizationCodeFilter):
            accountAuthorizationCodeFilter *Optional*
        call_authorization_code_filter (OCI.callAuthorizationCodeFilter):
            callAuthorizationCodeFilter *Optional*
        subscriber_type (str): subscriberType *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_log_type",
        "date_time_range",
        "number_filter",
        "redirected_number_filter",
        "account_authorization_code_filter",
        "call_authorization_code_filter",
        "subscriber_type",
        "response_paging_control",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_log_type", "callLogType", str),
            E(
                "date_time_range",
                "dateTimeRange",
                OCI.EnhancedCallLogsTimeRange,
                is_complex=True,
                is_required=True,
            ),
            E(
                "number_filter",
                "numberFilter",
                OCI.EnhancedCallLogsNumberFilter,
                is_complex=True,
            ),
            E(
                "redirected_number_filter",
                "redirectedNumberFilter",
                OCI.EnhancedCallLogsRedirectedNumberFilter21sp1,
                is_complex=True,
            ),
            E(
                "account_authorization_code_filter",
                "accountAuthorizationCodeFilter",
                OCI.EnhancedCallLogsAccountAuthorizationCodeFilter,
                is_complex=True,
            ),
            E(
                "call_authorization_code_filter",
                "callAuthorizationCodeFilter",
                OCI.EnhancedCallLogsCallAuthorizationCodeFilter,
                is_complex=True,
            ),
            E("subscriber_type", "subscriberType", str),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
        )


class UserEnhancedCallLogsGetListRequest22(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 `UserEnhancedCallLogsGetListResponse22()` or an
    `ErrorResponse()`. The following elements are only used in AS data mode and ignored in
    XS data mode: callAuthorizationCodeFilter

    Attributes:
        user_id (str): userId
        call_log_type (str): callLogType *Optional*
        date_time_range (OCI.dateTimeRange): dateTimeRange
        number_filter (OCI.numberFilter): numberFilter *Optional*
        redirected_number_filter (OCI.redirectedNumberFilter): redirectedNumberFilter
            *Optional*
        account_authorization_code_filter (OCI.accountAuthorizationCodeFilter):
            accountAuthorizationCodeFilter *Optional*
        call_authorization_code_filter (OCI.callAuthorizationCodeFilter):
            callAuthorizationCodeFilter *Optional*
        subscriber_type (str): subscriberType *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_log_type",
        "date_time_range",
        "number_filter",
        "redirected_number_filter",
        "account_authorization_code_filter",
        "call_authorization_code_filter",
        "subscriber_type",
        "response_paging_control",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_log_type", "callLogType", str),
            E(
                "date_time_range",
                "dateTimeRange",
                OCI.EnhancedCallLogsTimeRange,
                is_complex=True,
                is_required=True,
            ),
            E(
                "number_filter",
                "numberFilter",
                OCI.EnhancedCallLogsNumberFilter,
                is_complex=True,
            ),
            E(
                "redirected_number_filter",
                "redirectedNumberFilter",
                OCI.EnhancedCallLogsRedirectedNumberFilter21sp1,
                is_complex=True,
            ),
            E(
                "account_authorization_code_filter",
                "accountAuthorizationCodeFilter",
                OCI.EnhancedCallLogsAccountAuthorizationCodeFilter,
                is_complex=True,
            ),
            E(
                "call_authorization_code_filter",
                "callAuthorizationCodeFilter",
                OCI.EnhancedCallLogsCallAuthorizationCodeFilter,
                is_complex=True,
            ),
            E("subscriber_type", "subscriberType", str),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=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): userId
        call_log_type (str): callLogType *Optional*
        date_time_range (OCI.dateTimeRange): dateTimeRange
        number_filter (OCI.numberFilter): numberFilter *Optional*
        redirected_number_filter (OCI.redirectedNumberFilter): redirectedNumberFilter
            *Optional*
        account_authorization_code_filter (OCI.accountAuthorizationCodeFilter):
            accountAuthorizationCodeFilter *Optional*
        call_authorization_code_filter (OCI.callAuthorizationCodeFilter):
            callAuthorizationCodeFilter *Optional*
        subscriber_type (str): subscriberType *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_log_type",
        "date_time_range",
        "number_filter",
        "redirected_number_filter",
        "account_authorization_code_filter",
        "call_authorization_code_filter",
        "subscriber_type",
        "response_paging_control",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("call_log_type", "callLogType", str),
            E(
                "date_time_range",
                "dateTimeRange",
                OCI.EnhancedCallLogsTimeRange,
                is_complex=True,
                is_required=True,
            ),
            E(
                "number_filter",
                "numberFilter",
                OCI.EnhancedCallLogsNumberFilter,
                is_complex=True,
            ),
            E(
                "redirected_number_filter",
                "redirectedNumberFilter",
                OCI.EnhancedCallLogsRedirectedNumberFilter23,
                is_complex=True,
            ),
            E(
                "account_authorization_code_filter",
                "accountAuthorizationCodeFilter",
                OCI.EnhancedCallLogsAccountAuthorizationCodeFilter,
                is_complex=True,
            ),
            E(
                "call_authorization_code_filter",
                "callAuthorizationCodeFilter",
                OCI.EnhancedCallLogsCallAuthorizationCodeFilter,
                is_complex=True,
            ),
            E("subscriber_type", "subscriberType", str),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=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): userId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        filter (bool): filter *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        call_to_number_list (OCI.callToNumberList): callToNumberList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "holiday_schedule",
        "filter",
        "from_dn_criteria",
        "call_to_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("filter", "filter", bool),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.ExecutiveCallFilteringCriteriaFromDnModify,
                is_complex=True,
            ),
            E(
                "call_to_number_list",
                "callToNumberList",
                OCI.ReplacementCallToNumberList,
                is_complex=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): userId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
        )


class UserFlexibleSeatingGuestModifyRequest(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()`. Replaced by:
    `UserFlexibleSeatingGuestModifyRequest22()`.

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        enable_association_limit (bool): enableAssociationLimit *Optional*
        association_limit_hours (int): associationLimitHours *Optional*
        unlock_phone_pin_code (str): unlockPhonePINCode *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        host_user_id (str): hostUserId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "enable_association_limit",
        "association_limit_hours",
        "unlock_phone_pin_code",
        "access_device_endpoint",
        "host_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("enable_association_limit", "enableAssociationLimit", bool),
            E("association_limit_hours", "associationLimitHours", int),
            E("unlock_phone_pin_code", "unlockPhonePINCode", str),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceMultipleContactEndpointModify,
                is_complex=True,
            ),
            E("host_user_id", "hostUserId", str),
        )


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 (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        group_external_id (str): groupExternalId *Optional*
        response_paging_control (OCI.responsePagingControl): responsePagingControl
            *Optional*
        sort_order (List[OCI.sortOrder]): sortOrder *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_department_name (List[OCI.searchCriteriaDepartmentName]):
            searchCriteriaDepartmentName *Optional*
        search_criteria_exact_user_in_trunk_group
            (OCI.searchCriteriaExactUserInTrunkGroup): searchCriteriaExactUserInTrunkGroup
            *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_dn_activation (OCI.searchCriteriaExactDnActivation):
            searchCriteriaExactDnActivation *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_external_id",
        "response_paging_control",
        "sort_order",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_email_address",
        "search_criteria_department_name",
        "search_criteria_exact_user_in_trunk_group",
        "search_criteria_user_id",
        "search_criteria_extension",
        "search_criteria_exact_dn_activation",
        "search_criteria_mode_or",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("group_external_id", "groupExternalId", str),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
            ),
            E(
                "sort_order",
                "sortOrder",
                OCI.SortOrderUserGetListInGroupPagedSortedList,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_department_name",
                "searchCriteriaDepartmentName",
                OCI.SearchCriteriaDepartmentName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_in_trunk_group",
                "searchCriteriaExactUserInTrunkGroup",
                OCI.SearchCriteriaExactUserInTrunkGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_dn_activation",
                "searchCriteriaExactDnActivation",
                OCI.SearchCriteriaExactDnActivation,
                is_complex=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
        )


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): serviceProviderId
        group_id (str): GroupId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_in_trunk_group
            (OCI.searchCriteriaExactUserInTrunkGroup): searchCriteriaExactUserInTrunkGroup
            *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_in_trunk_group",
        "search_criteria_user_id",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "GroupId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_in_trunk_group",
                "searchCriteriaExactUserInTrunkGroup",
                OCI.SearchCriteriaExactUserInTrunkGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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 (str): serviceProviderId *Optional*
        service_provider_external_id (str): serviceProviderExternalId *Optional*
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_in_trunk_group
            (OCI.searchCriteriaExactUserInTrunkGroup): searchCriteriaExactUserInTrunkGroup
            *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "service_provider_external_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_email_address",
        "search_criteria_exact_user_in_trunk_group",
        "search_criteria_user_id",
        "search_criteria_extension",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("service_provider_external_id", "serviceProviderExternalId", str),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_in_trunk_group",
                "searchCriteriaExactUserInTrunkGroup",
                OCI.SearchCriteriaExactUserInTrunkGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=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): serviceProviderId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_group_id (List[OCI.SearchCriteriaGroupId]): SearchCriteriaGroupId
            *Optional*
        search_criteria_exact_service_type (OCI.SearchCriteriaExactServiceType):
            SearchCriteriaExactServiceType *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "response_size_limit",
        "search_criteria_group_id",
        "search_criteria_exact_service_type",
        "search_criteria_user_id",
        "search_criteria_user_last_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_group_id",
                "SearchCriteriaGroupId",
                OCI.SearchCriteriaGroupId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_service_type",
                "SearchCriteriaExactServiceType",
                OCI.SearchCriteriaExactServiceType,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=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): userId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=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): userId
        use_custom_settings (bool): useCustomSettings *Optional*
        user_permissions (OCI.userPermissions): userPermissions *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
        "user_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
            E(
                "user_permissions",
                "userPermissions",
                OCI.IncomingCallingPlanPermissionsModify,
                is_complex=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): userId
        conference_key (OCI.conferenceKey): conferenceKey
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "conference_key",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_exact_user_department",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "conference_key",
                "conferenceKey",
                OCI.MeetMeConferencingConferenceKey,
                is_complex=True,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
        )


class UserModifyRequest17sp4(OCIRequest):
    """
    Request to modify a user.

    When oldPassword is specified, all password rule applies.  If oldPassword in not
    specified, any password rule related to old password does not apply.  The request will
    fail if officeZoneName or primaryZoneName is present but the Location-Based Calling
    Restrictions service is not assigned to the user.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are only used in AS data mode and ignored in XS data mode:
    contact[2]-contact[5] nameDialingName alternateUserIdList 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.  Replaced by:
    `UserModifyRequest21()`

    Attributes:
        user_id (str): userId
        last_name (str): lastName *Optional*
        first_name (str): firstName *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        name_dialing_name (OCI.nameDialingName): nameDialingName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        old_password (str): oldPassword *Optional*
        new_password (str): newPassword *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        sip_alias_list (OCI.sipAliasList): sipAliasList *Optional*
        endpoint (OCI.endpoint): endpoint *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        office_zone_name (str): officeZoneName *Optional*
        primary_zone_name (str): primaryZoneName *Optional*
        imp_id (str): impId *Optional*
        imp_password (str): impPassword *Optional*
        alternate_user_id_list (OCI.alternateUserIdList): alternateUserIdList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "name_dialing_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "extension",
        "calling_line_id_phone_number",
        "old_password",
        "new_password",
        "department",
        "language",
        "time_zone",
        "sip_alias_list",
        "endpoint",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "office_zone_name",
        "primary_zone_name",
        "imp_id",
        "imp_password",
        "alternate_user_id_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("last_name", "lastName", str),
            E("first_name", "firstName", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E(
                "name_dialing_name",
                "nameDialingName",
                OCI.NameDialingName,
                is_complex=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("old_password", "oldPassword", str),
            E("new_password", "newPassword", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E(
                "sip_alias_list",
                "sipAliasList",
                OCI.ReplacementSIPAliasList,
                is_complex=True,
            ),
            E("endpoint", "endpoint", str, is_complex=True),  # unknown
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E("office_zone_name", "officeZoneName", str),
            E("primary_zone_name", "primaryZoneName", str),
            E("imp_id", "impId", str),
            E("imp_password", "impPassword", str),
            E(
                "alternate_user_id_list",
                "alternateUserIdList",
                OCI.ReplacementAlternateUserIdEntryList,
                is_complex=True,
            ),
        )


class UserModifyRequest21(OCIRequest):
    """
    Request to modify a user.

    When oldPassword is specified, all password rule applies.  If oldPassword in not
    specified, any password rule related to old password does not apply.  The request will
    fail if officeZoneName or primaryZoneName is present but the Location-Based Calling
    Restrictions service is not assigned to the user.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following data
    elements are only used in AS data mode: contact[2]-contact[5] nameDialingName
    alternateUserIdList 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 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.  Replaced by : `UserAddRequest22()` in AS mode

    Attributes:
        user_id (str): userId
        last_name (str): lastName *Optional*
        first_name (str): firstName *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        name_dialing_name (OCI.nameDialingName): nameDialingName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        old_password (str): oldPassword *Optional*
        new_password (str): newPassword *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        sip_alias_list (OCI.sipAliasList): sipAliasList *Optional*
        endpoint (OCI.endpoint): endpoint *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        office_zone_name (str): officeZoneName *Optional*
        primary_zone_name (str): primaryZoneName *Optional*
        imp_id (str): impId *Optional*
        imp_password (str): impPassword *Optional*
        alternate_user_id_list (OCI.alternateUserIdList): alternateUserIdList *Optional*
        allow_video (bool): allowVideo *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "name_dialing_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "extension",
        "calling_line_id_phone_number",
        "old_password",
        "new_password",
        "department",
        "language",
        "time_zone",
        "sip_alias_list",
        "endpoint",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "office_zone_name",
        "primary_zone_name",
        "imp_id",
        "imp_password",
        "alternate_user_id_list",
        "allow_video",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("last_name", "lastName", str),
            E("first_name", "firstName", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E(
                "name_dialing_name",
                "nameDialingName",
                OCI.NameDialingName,
                is_complex=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("old_password", "oldPassword", str),
            E("new_password", "newPassword", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E(
                "sip_alias_list",
                "sipAliasList",
                OCI.ReplacementSIPAliasList,
                is_complex=True,
            ),
            E("endpoint", "endpoint", str, is_complex=True),  # unknown
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E("office_zone_name", "officeZoneName", str),
            E("primary_zone_name", "primaryZoneName", str),
            E("imp_id", "impId", str),
            E("imp_password", "impPassword", str),
            E(
                "alternate_user_id_list",
                "alternateUserIdList",
                OCI.ReplacementAlternateUserIdEntryList,
                is_complex=True,
            ),
            E("allow_video", "allowVideo", bool),
        )


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): userId
        last_name (str): lastName *Optional*
        first_name (str): firstName *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        name_dialing_name (OCI.nameDialingName): nameDialingName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        old_password (str): oldPassword *Optional*
        new_password (str): newPassword *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        sip_alias_list (OCI.sipAliasList): sipAliasList *Optional*
        endpoint (OCI.endpoint): endpoint *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        office_zone_name (str): officeZoneName *Optional*
        primary_zone_name (str): primaryZoneName *Optional*
        imp_id (str): impId *Optional*
        imp_password (str): impPassword *Optional*
        alternate_user_id_list (OCI.alternateUserIdList): alternateUserIdList *Optional*
        allow_video (bool): allowVideo *Optional*
        new_user_external_id (str): newUserExternalId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "name_dialing_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "extension",
        "calling_line_id_phone_number",
        "old_password",
        "new_password",
        "department",
        "language",
        "time_zone",
        "sip_alias_list",
        "endpoint",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "office_zone_name",
        "primary_zone_name",
        "imp_id",
        "imp_password",
        "alternate_user_id_list",
        "allow_video",
        "new_user_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("last_name", "lastName", str),
            E("first_name", "firstName", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E(
                "name_dialing_name",
                "nameDialingName",
                OCI.NameDialingName,
                is_complex=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("old_password", "oldPassword", str),
            E("new_password", "newPassword", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E(
                "sip_alias_list",
                "sipAliasList",
                OCI.ReplacementSIPAliasList,
                is_complex=True,
            ),
            E("endpoint", "endpoint", str, is_complex=True),  # unknown
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E("office_zone_name", "officeZoneName", str),
            E("primary_zone_name", "primaryZoneName", str),
            E("imp_id", "impId", str),
            E("imp_password", "impPassword", str),
            E(
                "alternate_user_id_list",
                "alternateUserIdList",
                OCI.ReplacementAlternateUserIdEntryList,
                is_complex=True,
            ),
            E("allow_video", "allowVideo", bool),
            E("new_user_external_id", "newUserExternalId", str),
        )


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): userId
        use_custom_settings (bool): useCustomSettings *Optional*
        user_permissions (OCI.userPermissions): userPermissions *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
        "user_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
            E(
                "user_permissions",
                "userPermissions",
                OCI.OutgoingCallingPlanDigitPatternCallMeNowPermissions,
                is_complex=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): userId
        use_custom_settings (bool): useCustomSettings *Optional*
        user_permissions (OCI.userPermissions): userPermissions *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
        "user_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
            E(
                "user_permissions",
                "userPermissions",
                OCI.OutgoingCallingPlanDigitPatternOriginatingPermissions,
                is_complex=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): userId
        use_custom_settings (bool): useCustomSettings *Optional*
        user_permissions (OCI.userPermissions): userPermissions *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
        "user_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
            E(
                "user_permissions",
                "userPermissions",
                OCI.OutgoingCallingPlanDigitPatternRedirectingPermissions,
                is_complex=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): userId
        use_custom_settings (bool): useCustomSettings *Optional*
        user_permissions (OCI.userPermissions): userPermissions *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
        "user_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
            E(
                "user_permissions",
                "userPermissions",
                OCI.OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions,
                is_complex=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): userId
        use_custom_settings (bool): useCustomSettings *Optional*
        user_permissions (OCI.userPermissions): userPermissions *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
        "user_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
            E(
                "user_permissions",
                "userPermissions",
                OCI.OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions,
                is_complex=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): userId
        use_custom_settings (bool): useCustomSettings *Optional*
        user_permissions (OCI.userPermissions): userPermissions *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "use_custom_settings",
        "user_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("use_custom_settings", "useCustomSettings", bool),
            E(
                "user_permissions",
                "userPermissions",
                OCI.OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions,
                is_complex=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): userId
        call_to_number_list (OCI.callToNumberList): callToNumberList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "call_to_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "call_to_number_list",
                "callToNumberList",
                OCI.ReplacementCallToNumberList,
                is_complex=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): userId
        include_common_phone_list (bool): includeCommonPhoneList
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_exact_custom_contact_directory
            (OCI.searchCriteriaExactCustomContactDirectory):
            searchCriteriaExactCustomContactDirectory *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "include_common_phone_list",
        "response_size_limit",
        "search_criteria_mode_or",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_exact_custom_contact_directory",
        "search_criteria_user_id",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "include_common_phone_list",
                "includeCommonPhoneList",
                bool,
                is_required=True,
            ),
            E("response_size_limit", "responseSizeLimit", int),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_custom_contact_directory",
                "searchCriteriaExactCustomContactDirectory",
                OCI.SearchCriteriaExactCustomContactDirectory,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=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): userId
        is_enterprise_info_requested (bool): isEnterpriseInfoRequested
        response_paging_control (OCI.responsePagingControl): responsePagingControl
        search_criteria_mode_or (bool): searchCriteriaModeOr *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_group_location_code (List[OCI.searchCriteriaGroupLocationCode]):
            searchCriteriaGroupLocationCode *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_mobile_phone_number (List[OCI.searchCriteriaMobilePhoneNumber]):
            searchCriteriaMobilePhoneNumber *Optional*
        search_criteria_email_address (List[OCI.searchCriteriaEmailAddress]):
            searchCriteriaEmailAddress *Optional*
        search_criteria_yahoo_id (List[OCI.searchCriteriaYahooId]): searchCriteriaYahooId
            *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
        sort_by_first_name (bool): sortByFirstName *Optional*
        search_criteria_title (List[OCI.searchCriteriaTitle]): searchCriteriaTitle
            *Optional*
        search_criteria_receptionist_note (List[OCI.searchCriteriaReceptionistNote]):
            searchCriteriaReceptionistNote *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_enterprise_info_requested",
        "response_paging_control",
        "search_criteria_mode_or",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_dn",
        "search_criteria_group_location_code",
        "search_criteria_extension",
        "search_criteria_mobile_phone_number",
        "search_criteria_email_address",
        "search_criteria_yahoo_id",
        "search_criteria_exact_user_group",
        "search_criteria_exact_user_department",
        "search_criteria_user_id",
        "search_criteria_imp_id",
        "sort_by_first_name",
        "search_criteria_title",
        "search_criteria_receptionist_note",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "is_enterprise_info_requested",
                "isEnterpriseInfoRequested",
                bool,
                is_required=True,
            ),
            E(
                "response_paging_control",
                "responsePagingControl",
                OCI.ResponsePagingControl,
                is_complex=True,
                is_required=True,
            ),
            E("search_criteria_mode_or", "searchCriteriaModeOr", bool),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_group_location_code",
                "searchCriteriaGroupLocationCode",
                OCI.SearchCriteriaGroupLocationCode,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_mobile_phone_number",
                "searchCriteriaMobilePhoneNumber",
                OCI.SearchCriteriaMobilePhoneNumber,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_email_address",
                "searchCriteriaEmailAddress",
                OCI.SearchCriteriaEmailAddress,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_yahoo_id",
                "searchCriteriaYahooId",
                OCI.SearchCriteriaYahooId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=True,
            ),
            E("sort_by_first_name", "sortByFirstName", bool),
            E(
                "search_criteria_title",
                "searchCriteriaTitle",
                OCI.SearchCriteriaTitle,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_receptionist_note",
                "searchCriteriaReceptionistNote",
                OCI.SearchCriteriaReceptionistNote,
                is_complex=True,
                is_array=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): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        call_to_number_list (OCI.callToNumberList): callToNumberList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
        "call_to_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=True,
            ),
            E(
                "call_to_number_list",
                "callToNumberList",
                OCI.ReplacementCallToNumberList,
                is_complex=True,
            ),
        )


class UserPreAlertingAnnouncementModifyRequest(OCIRequest):
    """
    Modify the user's pre-alerting service setting.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `UserPreAlertingAnnouncementModifyRequest20()` in AS data mode

    Attributes:
        user_id (str): userId
        is_active (bool): isActive *Optional*
        audio_selection (str): audioSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("audio_selection", "audioSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("video_selection", "videoSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=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): userId
        is_active (bool): isActive *Optional*
        audio_selection (str): audioSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_selection (str): videoSelection *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "audio_selection",
        "audio_file",
        "video_selection",
        "video_file",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("audio_selection", "audioSelection", str),
            E(
                "audio_file",
                "audioFile",
                OCI.ExtendedMediaFileLevelResource20,
                is_complex=True,
            ),
            E("video_selection", "videoSelection", str),
            E(
                "video_file",
                "videoFile",
                OCI.ExtendedMediaFileLevelResource20,
                is_complex=True,
            ),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=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): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
        call_to_number_list (OCI.callToNumberList): callToNumberList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "from_dn_criteria",
        "holiday_schedule",
        "blacklisted",
        "call_to_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.PriorityAlertCriteriaFromDnModify,
                is_complex=True,
            ),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
            E(
                "call_to_number_list",
                "callToNumberList",
                OCI.ReplacementCallToNumberList,
                is_complex=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): userId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=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): userId
        response_size_limit (int): responseSizeLimit *Optional*
        search_criteria_user_last_name (List[OCI.searchCriteriaUserLastName]):
            searchCriteriaUserLastName *Optional*
        search_criteria_user_first_name (List[OCI.searchCriteriaUserFirstName]):
            searchCriteriaUserFirstName *Optional*
        search_criteria_exact_user_department (OCI.searchCriteriaExactUserDepartment):
            searchCriteriaExactUserDepartment *Optional*
        search_criteria_exact_user_group (OCI.searchCriteriaExactUserGroup):
            searchCriteriaExactUserGroup *Optional*
        search_criteria_user_id (List[OCI.searchCriteriaUserId]): searchCriteriaUserId
            *Optional*
        search_criteria_dn (List[OCI.searchCriteriaDn]): searchCriteriaDn *Optional*
        search_criteria_extension (List[OCI.searchCriteriaExtension]):
            searchCriteriaExtension *Optional*
        search_criteria_imp_id (List[OCI.searchCriteriaImpId]): searchCriteriaImpId
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "response_size_limit",
        "search_criteria_user_last_name",
        "search_criteria_user_first_name",
        "search_criteria_exact_user_department",
        "search_criteria_exact_user_group",
        "search_criteria_user_id",
        "search_criteria_dn",
        "search_criteria_extension",
        "search_criteria_imp_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("response_size_limit", "responseSizeLimit", int),
            E(
                "search_criteria_user_last_name",
                "searchCriteriaUserLastName",
                OCI.SearchCriteriaUserLastName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_user_first_name",
                "searchCriteriaUserFirstName",
                OCI.SearchCriteriaUserFirstName,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_exact_user_department",
                "searchCriteriaExactUserDepartment",
                OCI.SearchCriteriaExactUserDepartment,
                is_complex=True,
            ),
            E(
                "search_criteria_exact_user_group",
                "searchCriteriaExactUserGroup",
                OCI.SearchCriteriaExactUserGroup,
                is_complex=True,
            ),
            E(
                "search_criteria_user_id",
                "searchCriteriaUserId",
                OCI.SearchCriteriaUserId,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_dn",
                "searchCriteriaDn",
                OCI.SearchCriteriaDn,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_extension",
                "searchCriteriaExtension",
                OCI.SearchCriteriaExtension,
                is_complex=True,
                is_array=True,
            ),
            E(
                "search_criteria_imp_id",
                "searchCriteriaImpId",
                OCI.SearchCriteriaImpId,
                is_complex=True,
                is_array=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): userId
        schedule_global_key (OCI.scheduleGlobalKey): scheduleGlobalKey
    """

    __slots__: List[str] = [
        "user_id",
        "schedule_global_key",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "schedule_global_key",
                "scheduleGlobalKey",
                OCI.ScheduleGlobalKey,
                is_complex=True,
                is_required=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): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
        call_to_number_list (OCI.callToNumberList): callToNumberList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "from_dn_criteria",
        "holiday_schedule",
        "blacklisted",
        "call_to_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=True,
            ),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
            E(
                "call_to_number_list",
                "callToNumberList",
                OCI.ReplacementCallToNumberList,
                is_complex=True,
            ),
        )


class UserSelectiveCallRejectionModifyCriteriaRequest(OCIRequest):
    """
    Modify a criteria for the user's selective call rejection service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "from_dn_criteria",
        "holiday_schedule",
        "blacklisted",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=True,
            ),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
        )


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): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
        call_to_number_list (OCI.callToNumberList): callToNumberList *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "from_dn_criteria",
        "holiday_schedule",
        "blacklisted",
        "call_to_number_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.SelectiveCallRejectionCriteriaCallTypeModify,
                is_complex=True,
            ),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
            E(
                "call_to_number_list",
                "callToNumberList",
                OCI.ReplacementCallToNumberList,
                is_complex=True,
            ),
        )


class UserSequentialRingModifyCriteriaRequest(OCIRequest):
    """
    Modify a criteria for the user's sequential ring service.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "from_dn_criteria",
        "holiday_schedule",
        "blacklisted",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=True,
            ),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
        )


class UserSharedCallAppearanceAddEndpointRequest14(OCIRequest):
    """
    Associate an access device instance to the user's Shared Call Appearance.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        user_id (str): userId
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint
    """

    __slots__: List[str] = [
        "user_id",
        "access_device_endpoint",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAdd,
                is_complex=True,
                is_required=True,
            ),
        )


class UserSharedCallAppearanceAddEndpointRequest14sp2(OCIRequest):
    """
    Associate an access device instance to the user's Shared Call Appearance.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `UserSharedCallAppearanceAddEndpointRequest21()` in XS data mode Replaced by:
    `UserSharedCallAppearanceAddEndpointRequest22()` in AS data mode

    Attributes:
        user_id (str): userId
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint
        is_active (bool): isActive
        allow_origination (bool): allowOrigination
        allow_termination (bool): allowTermination
    """

    __slots__: List[str] = [
        "user_id",
        "access_device_endpoint",
        "is_active",
        "allow_origination",
        "allow_termination",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAdd,
                is_complex=True,
                is_required=True,
            ),
            E("is_active", "isActive", bool, is_required=True),
            E("allow_origination", "allowOrigination", bool, is_required=True),
            E("allow_termination", "allowTermination", bool, is_required=True),
        )


class UserSharedCallAppearanceAddEndpointRequest21sp2(OCIRequest):
    """
    Associate an access device instance to the user's Shared Call Appearance.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`. Replaced by:
    `UserSharedCallAppearanceAddEndpointRequest21sp2()`.

    Attributes:
        user_id (str): userId
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint
        is_active (bool): isActive
        allow_origination (bool): allowOrigination
        allow_termination (bool): allowTermination
        allow_video (bool): allowVideo
    """

    __slots__: List[str] = [
        "user_id",
        "access_device_endpoint",
        "is_active",
        "allow_origination",
        "allow_termination",
        "allow_video",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceMultipleIdentityEndpointAdd,
                is_complex=True,
                is_required=True,
            ),
            E("is_active", "isActive", bool, is_required=True),
            E("allow_origination", "allowOrigination", bool, is_required=True),
            E("allow_termination", "allowTermination", bool, is_required=True),
            E("allow_video", "allowVideo", bool, is_required=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): userId
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint
        is_active (bool): isActive
        allow_origination (bool): allowOrigination
        allow_termination (bool): allowTermination
        allow_video (bool): allowVideo
    """

    __slots__: List[str] = [
        "user_id",
        "access_device_endpoint",
        "is_active",
        "allow_origination",
        "allow_termination",
        "allow_video",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointAndHotlineAdd,
                is_complex=True,
                is_required=True,
            ),
            E("is_active", "isActive", bool, is_required=True),
            E("allow_origination", "allowOrigination", bool, is_required=True),
            E("allow_termination", "allowTermination", bool, is_required=True),
            E("allow_video", "allowVideo", bool, is_required=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): userId
        access_device_endpoint (List[OCI.accessDeviceEndpoint]): accessDeviceEndpoint
    """

    __slots__: List[str] = [
        "user_id",
        "access_device_endpoint",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointKey,
                is_complex=True,
                is_required=True,
                is_array=True,
            ),
        )


class UserSharedCallAppearanceGetEndpointRequest(OCIRequest):
    """
    Get the user's Shared Call Appearance endpoint setting.

    The response is either a `UserSharedCallAppearanceGetEndpointResponse()` or an
    `ErrorResponse()`. Replaced by: `UserSharedCallAppearanceGetEndpointRequest21()` in XS
    data mode

    Attributes:
        user_id (str): userId
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint
    """

    __slots__: List[str] = [
        "user_id",
        "access_device_endpoint",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointKey,
                is_complex=True,
                is_required=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): userId
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint
    """

    __slots__: List[str] = [
        "user_id",
        "access_device_endpoint",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointKey,
                is_complex=True,
                is_required=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): userId
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint
        is_active (bool): isActive *Optional*
        allow_origination (bool): allowOrigination *Optional*
        allow_termination (bool): allowTermination *Optional*
        use_hotline (bool): useHotline *Optional*
        hotline_contact (str): hotlineContact *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "access_device_endpoint",
        "is_active",
        "allow_origination",
        "allow_termination",
        "use_hotline",
        "hotline_contact",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointKey,
                is_complex=True,
                is_required=True,
            ),
            E("is_active", "isActive", bool),
            E("allow_origination", "allowOrigination", bool),
            E("allow_termination", "allowTermination", bool),
            E("use_hotline", "useHotline", bool),
            E("hotline_contact", "hotlineContact", str),
        )


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): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=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): userId
        is_active (bool): isActive *Optional*
        do_not_ring_if_on_call (bool): doNotRingIfOnCall *Optional*
        simultaneous_ring_number_list (OCI.simultaneousRingNumberList):
            simultaneousRingNumberList *Optional*
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "do_not_ring_if_on_call",
        "simultaneous_ring_number_list",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("do_not_ring_if_on_call", "doNotRingIfOnCall", bool),
            E(
                "simultaneous_ring_number_list",
                "simultaneousRingNumberList",
                OCI.SimultaneousRingReplacementNumberList,
                is_complex=True,
            ),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=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): userId
        criteria_name (str): criteriaName
        new_criteria_name (str): newCriteriaName *Optional*
        time_schedule (OCI.timeSchedule): timeSchedule *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        blacklisted (bool): blacklisted *Optional*
        from_dn_criteria (OCI.fromDnCriteria): fromDnCriteria *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "criteria_name",
        "new_criteria_name",
        "time_schedule",
        "holiday_schedule",
        "blacklisted",
        "from_dn_criteria",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("criteria_name", "criteriaName", str, is_required=True),
            E("new_criteria_name", "newCriteriaName", str),
            E("time_schedule", "timeSchedule", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("blacklisted", "blacklisted", bool),
            E(
                "from_dn_criteria",
                "fromDnCriteria",
                OCI.CriteriaFromDnModify,
                is_complex=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): userId
        is_active (bool): isActive *Optional*
        do_not_ring_if_on_call (bool): doNotRingIfOnCall *Optional*
        simultaneous_ring_number_list (OCI.simultaneousRingNumberList):
            simultaneousRingNumberList *Optional*
        criteria_activation (List[OCI.criteriaActivation]): criteriaActivation *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "do_not_ring_if_on_call",
        "simultaneous_ring_number_list",
        "criteria_activation",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("do_not_ring_if_on_call", "doNotRingIfOnCall", bool),
            E(
                "simultaneous_ring_number_list",
                "simultaneousRingNumberList",
                OCI.SimultaneousRingReplacementNumberList,
                is_complex=True,
            ),
            E(
                "criteria_activation",
                "criteriaActivation",
                OCI.CriteriaActivation,
                is_complex=True,
                is_array=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): userId
        is_active (bool): isActive *Optional*
        max_originating_call_delay_seconds (int): maxOriginatingCallDelaySeconds
            *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "max_originating_call_delay_seconds",
        "access_device_endpoint",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E(
                "max_originating_call_delay_seconds",
                "maxOriginatingCallDelaySeconds",
                int,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceEndpointModify,
                is_complex=True,
            ),
        )


class UserVoiceMessagingUserModifyGreetingRequest(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.

    Replaced By: `UserVoiceMessagingUserModifyGreetingRequest16()`

    Attributes:
        user_id (str): userId
        busy_announcement_selection (str): busyAnnouncementSelection *Optional*
        busy_personal_audio_file (OCI.busyPersonalAudioFile): busyPersonalAudioFile
            *Optional*
        busy_personal_video_file (OCI.busyPersonalVideoFile): busyPersonalVideoFile
            *Optional*
        no_answer_announcement_selection (str): noAnswerAnnouncementSelection *Optional*
        no_answer_personal_audio_file (OCI.noAnswerPersonalAudioFile):
            noAnswerPersonalAudioFile *Optional*
        no_answer_personal_video_file (OCI.noAnswerPersonalVideoFile):
            noAnswerPersonalVideoFile *Optional*
        no_answer_alternate_greeting01 (OCI.noAnswerAlternateGreeting01):
            noAnswerAlternateGreeting01 *Optional*
        no_answer_alternate_greeting02 (OCI.noAnswerAlternateGreeting02):
            noAnswerAlternateGreeting02 *Optional*
        no_answer_alternate_greeting03 (OCI.noAnswerAlternateGreeting03):
            noAnswerAlternateGreeting03 *Optional*
        no_answer_number_of_rings (int): noAnswerNumberOfRings *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "busy_announcement_selection",
        "busy_personal_audio_file",
        "busy_personal_video_file",
        "no_answer_announcement_selection",
        "no_answer_personal_audio_file",
        "no_answer_personal_video_file",
        "no_answer_alternate_greeting01",
        "no_answer_alternate_greeting02",
        "no_answer_alternate_greeting03",
        "no_answer_number_of_rings",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("busy_announcement_selection", "busyAnnouncementSelection", str),
            E(
                "busy_personal_audio_file",
                "busyPersonalAudioFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "busy_personal_video_file",
                "busyPersonalVideoFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E("no_answer_announcement_selection", "noAnswerAnnouncementSelection", str),
            E(
                "no_answer_personal_audio_file",
                "noAnswerPersonalAudioFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "no_answer_personal_video_file",
                "noAnswerPersonalVideoFile",
                OCI.LabeledFileResource,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting01",
                "noAnswerAlternateGreeting01",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting02",
                "noAnswerAlternateGreeting02",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting03",
                "noAnswerAlternateGreeting03",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify,
                is_complex=True,
            ),
            E("no_answer_number_of_rings", "noAnswerNumberOfRings", int),
        )


class UserVoiceMessagingUserModifyGreetingRequest16(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 and ignored in XS data mode: disableMessageDeposit
    disableMessageDepositAction greetingOnlyForwardDestination Replaced by
    `UserVoiceMessagingUserModifyGreetingRequest20()` in AS data mode

    Attributes:
        user_id (str): userId
        busy_announcement_selection (str): busyAnnouncementSelection *Optional*
        busy_personal_audio_file (OCI.busyPersonalAudioFile): busyPersonalAudioFile
            *Optional*
        busy_personal_video_file (OCI.busyPersonalVideoFile): busyPersonalVideoFile
            *Optional*
        no_answer_announcement_selection (str): noAnswerAnnouncementSelection *Optional*
        no_answer_personal_audio_file (OCI.noAnswerPersonalAudioFile):
            noAnswerPersonalAudioFile *Optional*
        no_answer_personal_video_file (OCI.noAnswerPersonalVideoFile):
            noAnswerPersonalVideoFile *Optional*
        extended_away_enabled (bool): extendedAwayEnabled *Optional*
        extended_away_disable_message_deposit (bool): extendedAwayDisableMessageDeposit
            *Optional*
        extended_away_audio_file (OCI.extendedAwayAudioFile): extendedAwayAudioFile
            *Optional*
        extended_away_video_file (OCI.extendedAwayVideoFile): extendedAwayVideoFile
            *Optional*
        no_answer_alternate_greeting01 (OCI.noAnswerAlternateGreeting01):
            noAnswerAlternateGreeting01 *Optional*
        no_answer_alternate_greeting02 (OCI.noAnswerAlternateGreeting02):
            noAnswerAlternateGreeting02 *Optional*
        no_answer_alternate_greeting03 (OCI.noAnswerAlternateGreeting03):
            noAnswerAlternateGreeting03 *Optional*
        no_answer_number_of_rings (int): noAnswerNumberOfRings *Optional*
        disable_message_deposit (bool): disableMessageDeposit *Optional*
        disable_message_deposit_action (str): disableMessageDepositAction *Optional*
        greeting_only_forward_destination (str): greetingOnlyForwardDestination *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "busy_announcement_selection",
        "busy_personal_audio_file",
        "busy_personal_video_file",
        "no_answer_announcement_selection",
        "no_answer_personal_audio_file",
        "no_answer_personal_video_file",
        "extended_away_enabled",
        "extended_away_disable_message_deposit",
        "extended_away_audio_file",
        "extended_away_video_file",
        "no_answer_alternate_greeting01",
        "no_answer_alternate_greeting02",
        "no_answer_alternate_greeting03",
        "no_answer_number_of_rings",
        "disable_message_deposit",
        "disable_message_deposit_action",
        "greeting_only_forward_destination",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("busy_announcement_selection", "busyAnnouncementSelection", str),
            E(
                "busy_personal_audio_file",
                "busyPersonalAudioFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E(
                "busy_personal_video_file",
                "busyPersonalVideoFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E("no_answer_announcement_selection", "noAnswerAnnouncementSelection", str),
            E(
                "no_answer_personal_audio_file",
                "noAnswerPersonalAudioFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E(
                "no_answer_personal_video_file",
                "noAnswerPersonalVideoFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E("extended_away_enabled", "extendedAwayEnabled", bool),
            E(
                "extended_away_disable_message_deposit",
                "extendedAwayDisableMessageDeposit",
                bool,
            ),
            E(
                "extended_away_audio_file",
                "extendedAwayAudioFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E(
                "extended_away_video_file",
                "extendedAwayVideoFile",
                OCI.LabeledMediaFileResource,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting01",
                "noAnswerAlternateGreeting01",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify16,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting02",
                "noAnswerAlternateGreeting02",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify16,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting03",
                "noAnswerAlternateGreeting03",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify16,
                is_complex=True,
            ),
            E("no_answer_number_of_rings", "noAnswerNumberOfRings", int),
            E("disable_message_deposit", "disableMessageDeposit", bool),
            E("disable_message_deposit_action", "disableMessageDepositAction", str),
            E(
                "greeting_only_forward_destination",
                "greetingOnlyForwardDestination",
                str,
            ),
        )


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): userId
        busy_announcement_selection (str): busyAnnouncementSelection *Optional*
        busy_personal_audio_file (OCI.busyPersonalAudioFile): busyPersonalAudioFile
            *Optional*
        busy_personal_video_file (OCI.busyPersonalVideoFile): busyPersonalVideoFile
            *Optional*
        no_answer_announcement_selection (str): noAnswerAnnouncementSelection *Optional*
        no_answer_personal_audio_file (OCI.noAnswerPersonalAudioFile):
            noAnswerPersonalAudioFile *Optional*
        no_answer_personal_video_file (OCI.noAnswerPersonalVideoFile):
            noAnswerPersonalVideoFile *Optional*
        no_answer_alternate_greeting01 (OCI.noAnswerAlternateGreeting01):
            noAnswerAlternateGreeting01 *Optional*
        no_answer_alternate_greeting02 (OCI.noAnswerAlternateGreeting02):
            noAnswerAlternateGreeting02 *Optional*
        no_answer_alternate_greeting03 (OCI.noAnswerAlternateGreeting03):
            noAnswerAlternateGreeting03 *Optional*
        extended_away_enabled (bool): extendedAwayEnabled *Optional*
        extended_away_disable_message_deposit (bool): extendedAwayDisableMessageDeposit
            *Optional*
        extended_away_audio_file (OCI.extendedAwayAudioFile): extendedAwayAudioFile
            *Optional*
        extended_away_video_file (OCI.extendedAwayVideoFile): extendedAwayVideoFile
            *Optional*
        no_answer_number_of_rings (int): noAnswerNumberOfRings *Optional*
        disable_message_deposit (bool): disableMessageDeposit *Optional*
        disable_message_deposit_action (str): disableMessageDepositAction *Optional*
        greeting_only_forward_destination (str): greetingOnlyForwardDestination *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "busy_announcement_selection",
        "busy_personal_audio_file",
        "busy_personal_video_file",
        "no_answer_announcement_selection",
        "no_answer_personal_audio_file",
        "no_answer_personal_video_file",
        "no_answer_alternate_greeting01",
        "no_answer_alternate_greeting02",
        "no_answer_alternate_greeting03",
        "extended_away_enabled",
        "extended_away_disable_message_deposit",
        "extended_away_audio_file",
        "extended_away_video_file",
        "no_answer_number_of_rings",
        "disable_message_deposit",
        "disable_message_deposit_action",
        "greeting_only_forward_destination",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("busy_announcement_selection", "busyAnnouncementSelection", str),
            E(
                "busy_personal_audio_file",
                "busyPersonalAudioFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "busy_personal_video_file",
                "busyPersonalVideoFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E("no_answer_announcement_selection", "noAnswerAnnouncementSelection", str),
            E(
                "no_answer_personal_audio_file",
                "noAnswerPersonalAudioFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "no_answer_personal_video_file",
                "noAnswerPersonalVideoFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting01",
                "noAnswerAlternateGreeting01",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify20,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting02",
                "noAnswerAlternateGreeting02",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify20,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting03",
                "noAnswerAlternateGreeting03",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify20,
                is_complex=True,
            ),
            E("extended_away_enabled", "extendedAwayEnabled", bool),
            E(
                "extended_away_disable_message_deposit",
                "extendedAwayDisableMessageDeposit",
                bool,
            ),
            E(
                "extended_away_audio_file",
                "extendedAwayAudioFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "extended_away_video_file",
                "extendedAwayVideoFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E("no_answer_number_of_rings", "noAnswerNumberOfRings", int),
            E("disable_message_deposit", "disableMessageDeposit", bool),
            E("disable_message_deposit_action", "disableMessageDepositAction", str),
            E(
                "greeting_only_forward_destination",
                "greetingOnlyForwardDestination",
                str,
            ),
        )


class UserVoiceMessagingUserModifyRequest(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): userId
        mail_server_selection (str): mailServerSelection *Optional*
        group_mail_server_email_address (str): groupMailServerEmailAddress *Optional*
        group_mail_server_user_id (str): groupMailServerUserId *Optional*
        group_mail_server_password (str): groupMailServerPassword *Optional*
        use_group_default_mail_server_full_mailbox_limit (bool):
            useGroupDefaultMailServerFullMailboxLimit *Optional*
        group_mail_server_full_mailbox_limit (int): groupMailServerFullMailboxLimit
            *Optional*
        personal_mail_server_net_address (str): personalMailServerNetAddress *Optional*
        personal_mail_server_protocol (str): personalMailServerProtocol *Optional*
        personal_mail_server_real_delete_for_imap (bool):
            personalMailServerRealDeleteForImap *Optional*
        personal_mail_server_email_address (str): personalMailServerEmailAddress
            *Optional*
        personal_mail_server_user_id (str): personalMailServerUserId *Optional*
        personal_mail_server_password (str): personalMailServerPassword *Optional*
        voice_messaging_distribution_list (List[OCI.voiceMessagingDistributionList]):
            voiceMessagingDistributionList *Optional*
        busy_announcement_selection (str): busyAnnouncementSelection *Optional*
        busy_personal_audio_file (OCI.busyPersonalAudioFile): busyPersonalAudioFile
            *Optional*
        busy_personal_video_file (OCI.busyPersonalVideoFile): busyPersonalVideoFile
            *Optional*
        no_answer_announcement_selection (str): noAnswerAnnouncementSelection *Optional*
        no_answer_personal_audio_file (OCI.noAnswerPersonalAudioFile):
            noAnswerPersonalAudioFile *Optional*
        no_answer_personal_video_file (OCI.noAnswerPersonalVideoFile):
            noAnswerPersonalVideoFile *Optional*
        no_answer_alternate_greeting01 (OCI.noAnswerAlternateGreeting01):
            noAnswerAlternateGreeting01 *Optional*
        no_answer_alternate_greeting02 (OCI.noAnswerAlternateGreeting02):
            noAnswerAlternateGreeting02 *Optional*
        no_answer_alternate_greeting03 (OCI.noAnswerAlternateGreeting03):
            noAnswerAlternateGreeting03 *Optional*
        extended_away_enabled (bool): extendedAwayEnabled *Optional*
        extended_away_disable_message_deposit (bool): extendedAwayDisableMessageDeposit
            *Optional*
        extended_away_audio_file (OCI.extendedAwayAudioFile): extendedAwayAudioFile
            *Optional*
        extended_away_video_file (OCI.extendedAwayVideoFile): extendedAwayVideoFile
            *Optional*
        no_answer_number_of_rings (int): noAnswerNumberOfRings *Optional*
        disable_message_deposit (bool): disableMessageDeposit *Optional*
        disable_message_deposit_action (str): disableMessageDepositAction *Optional*
        greeting_only_forward_destination (str): greetingOnlyForwardDestination *Optional*
        outgoing_smdimw_iis_active (bool): outgoingSMDIMWIisActive *Optional*
        outgoing_smdimwi_phone_number_list (OCI.outgoingSMDIMWIPhoneNumberList):
            outgoingSMDIMWIPhoneNumberList *Optional*
        voice_managementis_active (bool): voiceManagementisActive *Optional*
        processing (str): processing *Optional*
        voice_message_delivery_email_address (str): voiceMessageDeliveryEmailAddress
            *Optional*
        use_phone_message_waiting_indicator (bool): usePhoneMessageWaitingIndicator
            *Optional*
        send_voice_message_notify_email (bool): sendVoiceMessageNotifyEmail *Optional*
        voice_message_notify_email_address (str): voiceMessageNotifyEmailAddress
            *Optional*
        send_carbon_copy_voice_message (bool): sendCarbonCopyVoiceMessage *Optional*
        voice_message_carbon_copy_email_address (str): voiceMessageCarbonCopyEmailAddress
            *Optional*
        transfer_on_zero_to_phone_number (bool): transferOnZeroToPhoneNumber *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        always_redirect_to_voice_mail (bool): alwaysRedirectToVoiceMail *Optional*
        busy_redirect_to_voice_mail (bool): busyRedirectToVoiceMail *Optional*
        no_answer_redirect_to_voice_mail (bool): noAnswerRedirectToVoiceMail *Optional*
        out_of_primary_zone_redirect_to_voice_mail (bool):
            outOfPrimaryZoneRedirectToVoiceMail *Optional*
        use_personalized_name (bool): usePersonalizedName *Optional*
        voice_portal_auto_login (bool): voicePortalAutoLogin *Optional*
        personalized_name_audio_file (OCI.personalizedNameAudioFile):
            personalizedNameAudioFile *Optional*
        user_messaging_alias_list (OCI.userMessagingAliasList): userMessagingAliasList
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "mail_server_selection",
        "group_mail_server_email_address",
        "group_mail_server_user_id",
        "group_mail_server_password",
        "use_group_default_mail_server_full_mailbox_limit",
        "group_mail_server_full_mailbox_limit",
        "personal_mail_server_net_address",
        "personal_mail_server_protocol",
        "personal_mail_server_real_delete_for_imap",
        "personal_mail_server_email_address",
        "personal_mail_server_user_id",
        "personal_mail_server_password",
        "voice_messaging_distribution_list",
        "busy_announcement_selection",
        "busy_personal_audio_file",
        "busy_personal_video_file",
        "no_answer_announcement_selection",
        "no_answer_personal_audio_file",
        "no_answer_personal_video_file",
        "no_answer_alternate_greeting01",
        "no_answer_alternate_greeting02",
        "no_answer_alternate_greeting03",
        "extended_away_enabled",
        "extended_away_disable_message_deposit",
        "extended_away_audio_file",
        "extended_away_video_file",
        "no_answer_number_of_rings",
        "disable_message_deposit",
        "disable_message_deposit_action",
        "greeting_only_forward_destination",
        "outgoing_smdimw_iis_active",
        "outgoing_smdimwi_phone_number_list",
        "voice_managementis_active",
        "processing",
        "voice_message_delivery_email_address",
        "use_phone_message_waiting_indicator",
        "send_voice_message_notify_email",
        "voice_message_notify_email_address",
        "send_carbon_copy_voice_message",
        "voice_message_carbon_copy_email_address",
        "transfer_on_zero_to_phone_number",
        "transfer_phone_number",
        "always_redirect_to_voice_mail",
        "busy_redirect_to_voice_mail",
        "no_answer_redirect_to_voice_mail",
        "out_of_primary_zone_redirect_to_voice_mail",
        "use_personalized_name",
        "voice_portal_auto_login",
        "personalized_name_audio_file",
        "user_messaging_alias_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mail_server_selection", "mailServerSelection", str),
            E("group_mail_server_email_address", "groupMailServerEmailAddress", str),
            E("group_mail_server_user_id", "groupMailServerUserId", str),
            E("group_mail_server_password", "groupMailServerPassword", str),
            E(
                "use_group_default_mail_server_full_mailbox_limit",
                "useGroupDefaultMailServerFullMailboxLimit",
                bool,
            ),
            E(
                "group_mail_server_full_mailbox_limit",
                "groupMailServerFullMailboxLimit",
                int,
            ),
            E("personal_mail_server_net_address", "personalMailServerNetAddress", str),
            E("personal_mail_server_protocol", "personalMailServerProtocol", str),
            E(
                "personal_mail_server_real_delete_for_imap",
                "personalMailServerRealDeleteForImap",
                bool,
            ),
            E(
                "personal_mail_server_email_address",
                "personalMailServerEmailAddress",
                str,
            ),
            E("personal_mail_server_user_id", "personalMailServerUserId", str),
            E("personal_mail_server_password", "personalMailServerPassword", str),
            E(
                "voice_messaging_distribution_list",
                "voiceMessagingDistributionList",
                OCI.VoiceMessagingDistributionListModify,
                is_complex=True,
                is_array=True,
            ),
            E("busy_announcement_selection", "busyAnnouncementSelection", str),
            E(
                "busy_personal_audio_file",
                "busyPersonalAudioFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "busy_personal_video_file",
                "busyPersonalVideoFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E("no_answer_announcement_selection", "noAnswerAnnouncementSelection", str),
            E(
                "no_answer_personal_audio_file",
                "noAnswerPersonalAudioFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "no_answer_personal_video_file",
                "noAnswerPersonalVideoFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting01",
                "noAnswerAlternateGreeting01",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify20,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting02",
                "noAnswerAlternateGreeting02",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify20,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting03",
                "noAnswerAlternateGreeting03",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify20,
                is_complex=True,
            ),
            E("extended_away_enabled", "extendedAwayEnabled", bool),
            E(
                "extended_away_disable_message_deposit",
                "extendedAwayDisableMessageDeposit",
                bool,
            ),
            E(
                "extended_away_audio_file",
                "extendedAwayAudioFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "extended_away_video_file",
                "extendedAwayVideoFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E("no_answer_number_of_rings", "noAnswerNumberOfRings", int),
            E("disable_message_deposit", "disableMessageDeposit", bool),
            E("disable_message_deposit_action", "disableMessageDepositAction", str),
            E(
                "greeting_only_forward_destination",
                "greetingOnlyForwardDestination",
                str,
            ),
            E("outgoing_smdimw_iis_active", "outgoingSMDIMWIisActive", bool),
            E(
                "outgoing_smdimwi_phone_number_list",
                "outgoingSMDIMWIPhoneNumberList",
                OCI.ReplacementOutgoingDNList,
                is_complex=True,
            ),
            E("voice_managementis_active", "voiceManagementisActive", bool),
            E("processing", "processing", str),
            E(
                "voice_message_delivery_email_address",
                "voiceMessageDeliveryEmailAddress",
                str,
            ),
            E(
                "use_phone_message_waiting_indicator",
                "usePhoneMessageWaitingIndicator",
                bool,
            ),
            E("send_voice_message_notify_email", "sendVoiceMessageNotifyEmail", bool),
            E(
                "voice_message_notify_email_address",
                "voiceMessageNotifyEmailAddress",
                str,
            ),
            E("send_carbon_copy_voice_message", "sendCarbonCopyVoiceMessage", bool),
            E(
                "voice_message_carbon_copy_email_address",
                "voiceMessageCarbonCopyEmailAddress",
                str,
            ),
            E("transfer_on_zero_to_phone_number", "transferOnZeroToPhoneNumber", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("always_redirect_to_voice_mail", "alwaysRedirectToVoiceMail", bool),
            E("busy_redirect_to_voice_mail", "busyRedirectToVoiceMail", bool),
            E("no_answer_redirect_to_voice_mail", "noAnswerRedirectToVoiceMail", bool),
            E(
                "out_of_primary_zone_redirect_to_voice_mail",
                "outOfPrimaryZoneRedirectToVoiceMail",
                bool,
            ),
            E("use_personalized_name", "usePersonalizedName", bool),
            E("voice_portal_auto_login", "voicePortalAutoLogin", bool),
            E(
                "personalized_name_audio_file",
                "personalizedNameAudioFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "user_messaging_alias_list",
                "userMessagingAliasList",
                OCI.VoiceMessagingAliasListModify,
                is_complex=True,
            ),
        )


class UserVoiceMessagingUserModifyRequest23(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): userId
        mail_server_selection (str): mailServerSelection *Optional*
        group_mail_server_email_address (str): groupMailServerEmailAddress *Optional*
        group_mail_server_user_id (str): groupMailServerUserId *Optional*
        group_mail_server_password (str): groupMailServerPassword *Optional*
        use_group_default_mail_server_full_mailbox_limit (bool):
            useGroupDefaultMailServerFullMailboxLimit *Optional*
        group_mail_server_full_mailbox_limit (int): groupMailServerFullMailboxLimit
            *Optional*
        personal_mail_server_net_address (str): personalMailServerNetAddress *Optional*
        personal_mail_server_protocol (str): personalMailServerProtocol *Optional*
        personal_mail_server_real_delete_for_imap (bool):
            personalMailServerRealDeleteForImap *Optional*
        personal_mail_server_email_address (str): personalMailServerEmailAddress
            *Optional*
        personal_mail_server_user_id (str): personalMailServerUserId *Optional*
        personal_mail_server_password (str): personalMailServerPassword *Optional*
        voice_messaging_distribution_list (List[OCI.voiceMessagingDistributionList]):
            voiceMessagingDistributionList *Optional*
        busy_announcement_selection (str): busyAnnouncementSelection *Optional*
        busy_personal_audio_file (OCI.busyPersonalAudioFile): busyPersonalAudioFile
            *Optional*
        busy_personal_video_file (OCI.busyPersonalVideoFile): busyPersonalVideoFile
            *Optional*
        no_answer_announcement_selection (str): noAnswerAnnouncementSelection *Optional*
        no_answer_personal_audio_file (OCI.noAnswerPersonalAudioFile):
            noAnswerPersonalAudioFile *Optional*
        no_answer_personal_video_file (OCI.noAnswerPersonalVideoFile):
            noAnswerPersonalVideoFile *Optional*
        no_answer_alternate_greeting01 (OCI.noAnswerAlternateGreeting01):
            noAnswerAlternateGreeting01 *Optional*
        no_answer_alternate_greeting02 (OCI.noAnswerAlternateGreeting02):
            noAnswerAlternateGreeting02 *Optional*
        no_answer_alternate_greeting03 (OCI.noAnswerAlternateGreeting03):
            noAnswerAlternateGreeting03 *Optional*
        extended_away_enabled (bool): extendedAwayEnabled *Optional*
        extended_away_disable_message_deposit (bool): extendedAwayDisableMessageDeposit
            *Optional*
        extended_away_audio_file (OCI.extendedAwayAudioFile): extendedAwayAudioFile
            *Optional*
        extended_away_video_file (OCI.extendedAwayVideoFile): extendedAwayVideoFile
            *Optional*
        no_answer_number_of_rings (int): noAnswerNumberOfRings *Optional*
        disable_message_deposit (bool): disableMessageDeposit *Optional*
        disable_message_deposit_action (str): disableMessageDepositAction *Optional*
        greeting_only_forward_destination (str): greetingOnlyForwardDestination *Optional*
        outgoing_smdimw_iis_active (bool): outgoingSMDIMWIisActive *Optional*
        outgoing_smdimwi_phone_number_list (OCI.outgoingSMDIMWIPhoneNumberList):
            outgoingSMDIMWIPhoneNumberList *Optional*
        voice_managementis_active (bool): voiceManagementisActive *Optional*
        processing (str): processing *Optional*
        voice_message_delivery_email_address (str): voiceMessageDeliveryEmailAddress
            *Optional*
        use_phone_message_waiting_indicator (bool): usePhoneMessageWaitingIndicator
            *Optional*
        send_voice_message_notify_email (bool): sendVoiceMessageNotifyEmail *Optional*
        voice_message_notify_email_address (str): voiceMessageNotifyEmailAddress
            *Optional*
        send_carbon_copy_voice_message (bool): sendCarbonCopyVoiceMessage *Optional*
        voice_message_carbon_copy_email_address (str): voiceMessageCarbonCopyEmailAddress
            *Optional*
        transfer_on_zero_to_phone_number (bool): transferOnZeroToPhoneNumber *Optional*
        transfer_phone_number (str): transferPhoneNumber *Optional*
        always_redirect_to_voice_mail (bool): alwaysRedirectToVoiceMail *Optional*
        busy_redirect_to_voice_mail (bool): busyRedirectToVoiceMail *Optional*
        no_answer_redirect_to_voice_mail (bool): noAnswerRedirectToVoiceMail *Optional*
        out_of_primary_zone_redirect_to_voice_mail (bool):
            outOfPrimaryZoneRedirectToVoiceMail *Optional*
        use_personalized_name (bool): usePersonalizedName *Optional*
        voice_portal_auto_login (bool): voicePortalAutoLogin *Optional*
        personalized_name_audio_file (OCI.personalizedNameAudioFile):
            personalizedNameAudioFile *Optional*
        user_messaging_alias_list (OCI.userMessagingAliasList): userMessagingAliasList
            *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "mail_server_selection",
        "group_mail_server_email_address",
        "group_mail_server_user_id",
        "group_mail_server_password",
        "use_group_default_mail_server_full_mailbox_limit",
        "group_mail_server_full_mailbox_limit",
        "personal_mail_server_net_address",
        "personal_mail_server_protocol",
        "personal_mail_server_real_delete_for_imap",
        "personal_mail_server_email_address",
        "personal_mail_server_user_id",
        "personal_mail_server_password",
        "voice_messaging_distribution_list",
        "busy_announcement_selection",
        "busy_personal_audio_file",
        "busy_personal_video_file",
        "no_answer_announcement_selection",
        "no_answer_personal_audio_file",
        "no_answer_personal_video_file",
        "no_answer_alternate_greeting01",
        "no_answer_alternate_greeting02",
        "no_answer_alternate_greeting03",
        "extended_away_enabled",
        "extended_away_disable_message_deposit",
        "extended_away_audio_file",
        "extended_away_video_file",
        "no_answer_number_of_rings",
        "disable_message_deposit",
        "disable_message_deposit_action",
        "greeting_only_forward_destination",
        "outgoing_smdimw_iis_active",
        "outgoing_smdimwi_phone_number_list",
        "voice_managementis_active",
        "processing",
        "voice_message_delivery_email_address",
        "use_phone_message_waiting_indicator",
        "send_voice_message_notify_email",
        "voice_message_notify_email_address",
        "send_carbon_copy_voice_message",
        "voice_message_carbon_copy_email_address",
        "transfer_on_zero_to_phone_number",
        "transfer_phone_number",
        "always_redirect_to_voice_mail",
        "busy_redirect_to_voice_mail",
        "no_answer_redirect_to_voice_mail",
        "out_of_primary_zone_redirect_to_voice_mail",
        "use_personalized_name",
        "voice_portal_auto_login",
        "personalized_name_audio_file",
        "user_messaging_alias_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("mail_server_selection", "mailServerSelection", str),
            E("group_mail_server_email_address", "groupMailServerEmailAddress", str),
            E("group_mail_server_user_id", "groupMailServerUserId", str),
            E("group_mail_server_password", "groupMailServerPassword", str),
            E(
                "use_group_default_mail_server_full_mailbox_limit",
                "useGroupDefaultMailServerFullMailboxLimit",
                bool,
            ),
            E(
                "group_mail_server_full_mailbox_limit",
                "groupMailServerFullMailboxLimit",
                int,
            ),
            E("personal_mail_server_net_address", "personalMailServerNetAddress", str),
            E("personal_mail_server_protocol", "personalMailServerProtocol", str),
            E(
                "personal_mail_server_real_delete_for_imap",
                "personalMailServerRealDeleteForImap",
                bool,
            ),
            E(
                "personal_mail_server_email_address",
                "personalMailServerEmailAddress",
                str,
            ),
            E("personal_mail_server_user_id", "personalMailServerUserId", str),
            E("personal_mail_server_password", "personalMailServerPassword", str),
            E(
                "voice_messaging_distribution_list",
                "voiceMessagingDistributionList",
                OCI.VoiceMessagingDistributionListModify,
                is_complex=True,
                is_array=True,
            ),
            E("busy_announcement_selection", "busyAnnouncementSelection", str),
            E(
                "busy_personal_audio_file",
                "busyPersonalAudioFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "busy_personal_video_file",
                "busyPersonalVideoFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E("no_answer_announcement_selection", "noAnswerAnnouncementSelection", str),
            E(
                "no_answer_personal_audio_file",
                "noAnswerPersonalAudioFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "no_answer_personal_video_file",
                "noAnswerPersonalVideoFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting01",
                "noAnswerAlternateGreeting01",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify20,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting02",
                "noAnswerAlternateGreeting02",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify20,
                is_complex=True,
            ),
            E(
                "no_answer_alternate_greeting03",
                "noAnswerAlternateGreeting03",
                OCI.VoiceMessagingAlternateNoAnswerGreetingModify20,
                is_complex=True,
            ),
            E("extended_away_enabled", "extendedAwayEnabled", bool),
            E(
                "extended_away_disable_message_deposit",
                "extendedAwayDisableMessageDeposit",
                bool,
            ),
            E(
                "extended_away_audio_file",
                "extendedAwayAudioFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "extended_away_video_file",
                "extendedAwayVideoFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E("no_answer_number_of_rings", "noAnswerNumberOfRings", int),
            E("disable_message_deposit", "disableMessageDeposit", bool),
            E("disable_message_deposit_action", "disableMessageDepositAction", str),
            E(
                "greeting_only_forward_destination",
                "greetingOnlyForwardDestination",
                str,
            ),
            E("outgoing_smdimw_iis_active", "outgoingSMDIMWIisActive", bool),
            E(
                "outgoing_smdimwi_phone_number_list",
                "outgoingSMDIMWIPhoneNumberList",
                OCI.ReplacementOutgoingDNList,
                is_complex=True,
            ),
            E("voice_managementis_active", "voiceManagementisActive", bool),
            E("processing", "processing", str),
            E(
                "voice_message_delivery_email_address",
                "voiceMessageDeliveryEmailAddress",
                str,
            ),
            E(
                "use_phone_message_waiting_indicator",
                "usePhoneMessageWaitingIndicator",
                bool,
            ),
            E("send_voice_message_notify_email", "sendVoiceMessageNotifyEmail", bool),
            E(
                "voice_message_notify_email_address",
                "voiceMessageNotifyEmailAddress",
                str,
            ),
            E("send_carbon_copy_voice_message", "sendCarbonCopyVoiceMessage", bool),
            E(
                "voice_message_carbon_copy_email_address",
                "voiceMessageCarbonCopyEmailAddress",
                str,
            ),
            E("transfer_on_zero_to_phone_number", "transferOnZeroToPhoneNumber", bool),
            E("transfer_phone_number", "transferPhoneNumber", str),
            E("always_redirect_to_voice_mail", "alwaysRedirectToVoiceMail", bool),
            E("busy_redirect_to_voice_mail", "busyRedirectToVoiceMail", bool),
            E("no_answer_redirect_to_voice_mail", "noAnswerRedirectToVoiceMail", bool),
            E(
                "out_of_primary_zone_redirect_to_voice_mail",
                "outOfPrimaryZoneRedirectToVoiceMail",
                bool,
            ),
            E("use_personalized_name", "usePersonalizedName", bool),
            E("voice_portal_auto_login", "voicePortalAutoLogin", bool),
            E(
                "personalized_name_audio_file",
                "personalizedNameAudioFile",
                OCI.AnnouncementFileLevelKey,
                is_complex=True,
            ),
            E(
                "user_messaging_alias_list",
                "userMessagingAliasList",
                OCI.VoiceMessagingAliasReplacementList,
                is_complex=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): serviceProviderId
        name (str): name
        description (str): description *Optional*
        report_template (OCI.reportTemplate): reportTemplate
        schedule (OCI.schedule): schedule
        sampling_period (str): samplingPeriod *Optional*
        start_day_of_week (str): startDayOfWeek *Optional*
        report_time_zone (str): reportTimeZone
        report_date_format (str): reportDateFormat
        report_time_format (str): reportTimeFormat
        report_interval (OCI.reportInterval): reportInterval
        report_format (str): reportFormat
        agent (OCI.agent): agent *Optional*
        call_center (OCI.callCenter): callCenter *Optional*
        dnis (OCI.dnis): dnis *Optional*
        call_completion_threshold_seconds (int): callCompletionThresholdSeconds *Optional*
        short_duration_threshold_seconds (int): shortDurationThresholdSeconds *Optional*
        service_level_threshold_seconds (List[int]): serviceLevelThresholdSeconds
            *Optional*
        service_level_inclusions (OCI.serviceLevelInclusions): serviceLevelInclusions
            *Optional*
        service_level_objective_percentage (int): serviceLevelObjectivePercentage
            *Optional*
        abandoned_call_threshold_seconds (List[int]): abandonedCallThresholdSeconds
            *Optional*
        email_address (List[str]): emailAddress
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "description",
        "report_template",
        "schedule",
        "sampling_period",
        "start_day_of_week",
        "report_time_zone",
        "report_date_format",
        "report_time_format",
        "report_interval",
        "report_format",
        "agent",
        "call_center",
        "dnis",
        "call_completion_threshold_seconds",
        "short_duration_threshold_seconds",
        "service_level_threshold_seconds",
        "service_level_inclusions",
        "service_level_objective_percentage",
        "abandoned_call_threshold_seconds",
        "email_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E(
                "report_template",
                "reportTemplate",
                OCI.CallCenterReportTemplateKey,
                is_complex=True,
                is_required=True,
            ),
            E(
                "schedule",
                "schedule",
                OCI.CallCenterReportSchedule,
                is_complex=True,
                is_required=True,
            ),
            E("sampling_period", "samplingPeriod", str),
            E("start_day_of_week", "startDayOfWeek", str),
            E("report_time_zone", "reportTimeZone", str, is_required=True),
            E("report_date_format", "reportDateFormat", str, is_required=True),
            E("report_time_format", "reportTimeFormat", str, is_required=True),
            E(
                "report_interval",
                "reportInterval",
                OCI.CallCenterReportInterval,
                is_complex=True,
                is_required=True,
            ),
            E("report_format", "reportFormat", str, is_required=True),
            E(
                "agent",
                "agent",
                OCI.CallCenterScheduledReportAgentSelection,
                is_complex=True,
            ),
            E(
                "call_center",
                "callCenter",
                OCI.CallCenterScheduledReportCallCenterSelection,
                is_complex=True,
            ),
            E(
                "dnis",
                "dnis",
                OCI.CallCenterScheduledReportDNISSelection,
                is_complex=True,
            ),
            E(
                "call_completion_threshold_seconds",
                "callCompletionThresholdSeconds",
                int,
            ),
            E("short_duration_threshold_seconds", "shortDurationThresholdSeconds", int),
            E(
                "service_level_threshold_seconds",
                "serviceLevelThresholdSeconds",
                int,
                is_array=True,
            ),
            E(
                "service_level_inclusions",
                "serviceLevelInclusions",
                OCI.CallCenterScheduledReportServiceLevelInclusions,
                is_complex=True,
            ),
            E(
                "service_level_objective_percentage",
                "serviceLevelObjectivePercentage",
                int,
            ),
            E(
                "abandoned_call_threshold_seconds",
                "abandonedCallThresholdSeconds",
                int,
                is_array=True,
            ),
            E("email_address", "emailAddress", str, is_required=True, is_array=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): serviceProviderId
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        schedule (OCI.schedule): schedule *Optional*
        sampling_period (str): samplingPeriod *Optional*
        start_day_of_week (str): startDayOfWeek *Optional*
        report_time_zone (str): reportTimeZone *Optional*
        report_date_format (str): reportDateFormat *Optional*
        report_time_format (str): reportTimeFormat *Optional*
        report_interval (OCI.reportInterval): reportInterval *Optional*
        report_format (str): reportFormat *Optional*
        agent (OCI.agent): agent *Optional*
        call_center (OCI.callCenter): callCenter *Optional*
        dnis (OCI.dnis): dnis *Optional*
        call_completion_threshold_seconds (int): callCompletionThresholdSeconds *Optional*
        short_duration_threshold_seconds (int): shortDurationThresholdSeconds *Optional*
        service_level_threshold_seconds (OCI.serviceLevelThresholdSeconds):
            serviceLevelThresholdSeconds *Optional*
        service_level_inclusions (OCI.serviceLevelInclusions): serviceLevelInclusions
            *Optional*
        service_level_objective_percentage (int): serviceLevelObjectivePercentage
            *Optional*
        abandoned_call_threshold_seconds (OCI.abandonedCallThresholdSeconds):
            abandonedCallThresholdSeconds *Optional*
        email_address (OCI.emailAddress): emailAddress *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "new_name",
        "description",
        "schedule",
        "sampling_period",
        "start_day_of_week",
        "report_time_zone",
        "report_date_format",
        "report_time_format",
        "report_interval",
        "report_format",
        "agent",
        "call_center",
        "dnis",
        "call_completion_threshold_seconds",
        "short_duration_threshold_seconds",
        "service_level_threshold_seconds",
        "service_level_inclusions",
        "service_level_objective_percentage",
        "abandoned_call_threshold_seconds",
        "email_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E("schedule", "schedule", OCI.CallCenterReportSchedule, is_complex=True),
            E("sampling_period", "samplingPeriod", str),
            E("start_day_of_week", "startDayOfWeek", str),
            E("report_time_zone", "reportTimeZone", str),
            E("report_date_format", "reportDateFormat", str),
            E("report_time_format", "reportTimeFormat", str),
            E(
                "report_interval",
                "reportInterval",
                OCI.CallCenterReportInterval,
                is_complex=True,
            ),
            E("report_format", "reportFormat", str),
            E(
                "agent",
                "agent",
                OCI.CallCenterScheduledReportAgentSelection,
                is_complex=True,
            ),
            E(
                "call_center",
                "callCenter",
                OCI.CallCenterScheduledReportCallCenterSelection,
                is_complex=True,
            ),
            E(
                "dnis",
                "dnis",
                OCI.CallCenterScheduledReportDNISSelection,
                is_complex=True,
            ),
            E(
                "call_completion_threshold_seconds",
                "callCompletionThresholdSeconds",
                int,
            ),
            E("short_duration_threshold_seconds", "shortDurationThresholdSeconds", int),
            E(
                "service_level_threshold_seconds",
                "serviceLevelThresholdSeconds",
                OCI.CallCenterReportServiceLevelThresholdReplacementList,
                is_complex=True,
            ),
            E(
                "service_level_inclusions",
                "serviceLevelInclusions",
                OCI.CallCenterScheduledReportServiceLevelInclusionsModify,
                is_complex=True,
            ),
            E(
                "service_level_objective_percentage",
                "serviceLevelObjectivePercentage",
                int,
            ),
            E(
                "abandoned_call_threshold_seconds",
                "abandonedCallThresholdSeconds",
                OCI.CallCenterReportAbandonedCallThresholdReplacementList,
                is_complex=True,
            ),
            E(
                "email_address",
                "emailAddress",
                OCI.CallCenterReportReplacementEmailList,
                is_complex=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): serviceProviderId
        name (str): name
        new_name (str): newName *Optional*
        max_session (int): maxSession *Optional*
        max_user_originating_sessions (int): maxUserOriginatingSessions *Optional*
        max_user_terminating_sessions (int): maxUserTerminatingSessions *Optional*
        reserved_session (int): reservedSession *Optional*
        reserved_user_originating_sessions (int): reservedUserOriginatingSessions
            *Optional*
        reserved_user_terminating_sessions (int): reservedUserTerminatingSessions
            *Optional*
        become_default_group (bool): becomeDefaultGroup *Optional*
        count_intra_sac_group_sessions (bool): countIntraSACGroupSessions *Optional*
        device_list (OCI.deviceList): deviceList *Optional*
        block_emergency_and_repair_calls_due_to_sac_limits (bool):
            blockEmergencyAndRepairCallsDueToSACLimits *Optional*
        media_group_name (str): mediaGroupName *Optional*
        access_info_pattern (str): accessInfoPattern *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "name",
        "new_name",
        "max_session",
        "max_user_originating_sessions",
        "max_user_terminating_sessions",
        "reserved_session",
        "reserved_user_originating_sessions",
        "reserved_user_terminating_sessions",
        "become_default_group",
        "count_intra_sac_group_sessions",
        "device_list",
        "block_emergency_and_repair_calls_due_to_sac_limits",
        "media_group_name",
        "access_info_pattern",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("max_session", "maxSession", int),
            E("max_user_originating_sessions", "maxUserOriginatingSessions", int),
            E("max_user_terminating_sessions", "maxUserTerminatingSessions", int),
            E("reserved_session", "reservedSession", int),
            E(
                "reserved_user_originating_sessions",
                "reservedUserOriginatingSessions",
                int,
            ),
            E(
                "reserved_user_terminating_sessions",
                "reservedUserTerminatingSessions",
                int,
            ),
            E("become_default_group", "becomeDefaultGroup", bool),
            E("count_intra_sac_group_sessions", "countIntraSACGroupSessions", bool),
            E(
                "device_list",
                "deviceList",
                OCI.ReplacementEnterpriseDeviceList,
                is_complex=True,
            ),
            E(
                "block_emergency_and_repair_calls_due_to_sac_limits",
                "blockEmergencyAndRepairCallsDueToSACLimits",
                bool,
            ),
            E("media_group_name", "mediaGroupName", str),
            E("access_info_pattern", "accessInfoPattern", str),
        )


class GroupAutoAttendantSubmenuAddRequest(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.  Replaced by:
    `GroupAutoAttendantSubmenuAddRequest20()` in AS data mode

    Attributes:
        service_user_id (str): serviceUserId
        submenu_id (str): submenuId
        announcement_selection (str): announcementSelection
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        enable_level_extension_dialing (bool): enableLevelExtensionDialing
        key_configuration (List[OCI.keyConfiguration]): keyConfiguration *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "submenu_id",
        "announcement_selection",
        "audio_file",
        "video_file",
        "enable_level_extension_dialing",
        "key_configuration",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("submenu_id", "submenuId", str, is_required=True),
            E("announcement_selection", "announcementSelection", str, is_required=True),
            E("audio_file", "audioFile", OCI.LabeledMediaFileResource, is_complex=True),
            E("video_file", "videoFile", OCI.LabeledMediaFileResource, is_complex=True),
            E(
                "enable_level_extension_dialing",
                "enableLevelExtensionDialing",
                bool,
                is_required=True,
            ),
            E(
                "key_configuration",
                "keyConfiguration",
                OCI.AutoAttendantKeyConfiguration19,
                is_complex=True,
                is_array=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): serviceUserId
        submenu_id (str): submenuId
        announcement_selection (str): announcementSelection
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        enable_level_extension_dialing (bool): enableLevelExtensionDialing
        key_configuration (List[OCI.keyConfiguration]): keyConfiguration *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "submenu_id",
        "announcement_selection",
        "audio_file",
        "video_file",
        "enable_level_extension_dialing",
        "key_configuration",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("submenu_id", "submenuId", str, is_required=True),
            E("announcement_selection", "announcementSelection", str, is_required=True),
            E("audio_file", "audioFile", OCI.AnnouncementFileLevelKey, is_complex=True),
            E("video_file", "videoFile", OCI.AnnouncementFileLevelKey, is_complex=True),
            E(
                "enable_level_extension_dialing",
                "enableLevelExtensionDialing",
                bool,
                is_required=True,
            ),
            E(
                "key_configuration",
                "keyConfiguration",
                OCI.AutoAttendantKeyConfiguration20,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupAutoAttendantSubmenuModifyRequest(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.  Replaced by:
    `GroupAutoAttendantSubmenuModifyRequest20()` in AS data mode

    Attributes:
        service_user_id (str): serviceUserId
        submenu_id (str): submenuId
        new_submenu_id (str): newSubmenuId *Optional*
        announcement_selection (str): announcementSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        enable_level_extension_dialing (bool): enableLevelExtensionDialing *Optional*
        key_configuration (List[OCI.keyConfiguration]): keyConfiguration *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "submenu_id",
        "new_submenu_id",
        "announcement_selection",
        "audio_file",
        "video_file",
        "enable_level_extension_dialing",
        "key_configuration",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("submenu_id", "submenuId", str, is_required=True),
            E("new_submenu_id", "newSubmenuId", str),
            E("announcement_selection", "announcementSelection", str),
            E("audio_file", "audioFile", OCI.LabeledMediaFileResource, is_complex=True),
            E("video_file", "videoFile", OCI.LabeledMediaFileResource, is_complex=True),
            E("enable_level_extension_dialing", "enableLevelExtensionDialing", bool),
            E(
                "key_configuration",
                "keyConfiguration",
                OCI.AutoAttendantKeyModifyConfiguration,
                is_complex=True,
                is_array=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): serviceUserId
        submenu_id (str): submenuId
        new_submenu_id (str): newSubmenuId *Optional*
        announcement_selection (str): announcementSelection *Optional*
        audio_file (OCI.audioFile): audioFile *Optional*
        video_file (OCI.videoFile): videoFile *Optional*
        enable_level_extension_dialing (bool): enableLevelExtensionDialing *Optional*
        key_configuration (List[OCI.keyConfiguration]): keyConfiguration *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "submenu_id",
        "new_submenu_id",
        "announcement_selection",
        "audio_file",
        "video_file",
        "enable_level_extension_dialing",
        "key_configuration",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("submenu_id", "submenuId", str, is_required=True),
            E("new_submenu_id", "newSubmenuId", str),
            E("announcement_selection", "announcementSelection", str),
            E("audio_file", "audioFile", OCI.AnnouncementFileLevelKey, is_complex=True),
            E("video_file", "videoFile", OCI.AnnouncementFileLevelKey, is_complex=True),
            E("enable_level_extension_dialing", "enableLevelExtensionDialing", bool),
            E(
                "key_configuration",
                "keyConfiguration",
                OCI.AutoAttendantKeyModifyConfiguration20,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        description (str): description *Optional*
        report_template (OCI.reportTemplate): reportTemplate
        schedule (OCI.schedule): schedule
        sampling_period (str): samplingPeriod *Optional*
        start_day_of_week (str): startDayOfWeek *Optional*
        report_time_zone (str): reportTimeZone
        report_date_format (str): reportDateFormat
        report_time_format (str): reportTimeFormat
        report_interval (OCI.reportInterval): reportInterval
        report_format (str): reportFormat
        agent (OCI.agent): agent *Optional*
        call_center (OCI.callCenter): callCenter *Optional*
        dnis (OCI.dnis): dnis *Optional*
        call_completion_threshold_seconds (int): callCompletionThresholdSeconds *Optional*
        short_duration_threshold_seconds (int): shortDurationThresholdSeconds *Optional*
        service_level_threshold_seconds (List[int]): serviceLevelThresholdSeconds
            *Optional*
        service_level_inclusions (OCI.serviceLevelInclusions): serviceLevelInclusions
            *Optional*
        service_level_objective_percentage (int): serviceLevelObjectivePercentage
            *Optional*
        abandoned_call_threshold_seconds (List[int]): abandonedCallThresholdSeconds
            *Optional*
        email_address (List[str]): emailAddress
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "description",
        "report_template",
        "schedule",
        "sampling_period",
        "start_day_of_week",
        "report_time_zone",
        "report_date_format",
        "report_time_format",
        "report_interval",
        "report_format",
        "agent",
        "call_center",
        "dnis",
        "call_completion_threshold_seconds",
        "short_duration_threshold_seconds",
        "service_level_threshold_seconds",
        "service_level_inclusions",
        "service_level_objective_percentage",
        "abandoned_call_threshold_seconds",
        "email_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("description", "description", str),
            E(
                "report_template",
                "reportTemplate",
                OCI.CallCenterReportTemplateKey,
                is_complex=True,
                is_required=True,
            ),
            E(
                "schedule",
                "schedule",
                OCI.CallCenterReportSchedule,
                is_complex=True,
                is_required=True,
            ),
            E("sampling_period", "samplingPeriod", str),
            E("start_day_of_week", "startDayOfWeek", str),
            E("report_time_zone", "reportTimeZone", str, is_required=True),
            E("report_date_format", "reportDateFormat", str, is_required=True),
            E("report_time_format", "reportTimeFormat", str, is_required=True),
            E(
                "report_interval",
                "reportInterval",
                OCI.CallCenterReportInterval,
                is_complex=True,
                is_required=True,
            ),
            E("report_format", "reportFormat", str, is_required=True),
            E(
                "agent",
                "agent",
                OCI.CallCenterScheduledReportAgentSelection,
                is_complex=True,
            ),
            E(
                "call_center",
                "callCenter",
                OCI.CallCenterScheduledReportCallCenterSelection,
                is_complex=True,
            ),
            E(
                "dnis",
                "dnis",
                OCI.CallCenterScheduledReportDNISSelection,
                is_complex=True,
            ),
            E(
                "call_completion_threshold_seconds",
                "callCompletionThresholdSeconds",
                int,
            ),
            E("short_duration_threshold_seconds", "shortDurationThresholdSeconds", int),
            E(
                "service_level_threshold_seconds",
                "serviceLevelThresholdSeconds",
                int,
                is_array=True,
            ),
            E(
                "service_level_inclusions",
                "serviceLevelInclusions",
                OCI.CallCenterScheduledReportServiceLevelInclusions,
                is_complex=True,
            ),
            E(
                "service_level_objective_percentage",
                "serviceLevelObjectivePercentage",
                int,
            ),
            E(
                "abandoned_call_threshold_seconds",
                "abandonedCallThresholdSeconds",
                int,
                is_array=True,
            ),
            E("email_address", "emailAddress", str, is_required=True, is_array=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): serviceProviderId
        group_id (str): groupId
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        schedule (OCI.schedule): schedule *Optional*
        sampling_period (str): samplingPeriod *Optional*
        start_day_of_week (str): startDayOfWeek *Optional*
        report_time_zone (str): reportTimeZone *Optional*
        report_date_format (str): reportDateFormat *Optional*
        report_time_format (str): reportTimeFormat *Optional*
        report_interval (OCI.reportInterval): reportInterval *Optional*
        report_format (str): reportFormat *Optional*
        agent (OCI.agent): agent *Optional*
        call_center (OCI.callCenter): callCenter *Optional*
        dnis (OCI.dnis): dnis *Optional*
        call_completion_threshold_seconds (int): callCompletionThresholdSeconds *Optional*
        short_duration_threshold_seconds (int): shortDurationThresholdSeconds *Optional*
        service_level_threshold_seconds (OCI.serviceLevelThresholdSeconds):
            serviceLevelThresholdSeconds *Optional*
        service_level_inclusions (OCI.serviceLevelInclusions): serviceLevelInclusions
            *Optional*
        service_level_objective_percentage (int): serviceLevelObjectivePercentage
            *Optional*
        abandoned_call_threshold_seconds (OCI.abandonedCallThresholdSeconds):
            abandonedCallThresholdSeconds *Optional*
        email_address (OCI.emailAddress): emailAddress *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "name",
        "new_name",
        "description",
        "schedule",
        "sampling_period",
        "start_day_of_week",
        "report_time_zone",
        "report_date_format",
        "report_time_format",
        "report_interval",
        "report_format",
        "agent",
        "call_center",
        "dnis",
        "call_completion_threshold_seconds",
        "short_duration_threshold_seconds",
        "service_level_threshold_seconds",
        "service_level_inclusions",
        "service_level_objective_percentage",
        "abandoned_call_threshold_seconds",
        "email_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E("schedule", "schedule", OCI.CallCenterReportSchedule, is_complex=True),
            E("sampling_period", "samplingPeriod", str),
            E("start_day_of_week", "startDayOfWeek", str),
            E("report_time_zone", "reportTimeZone", str),
            E("report_date_format", "reportDateFormat", str),
            E("report_time_format", "reportTimeFormat", str),
            E(
                "report_interval",
                "reportInterval",
                OCI.CallCenterReportInterval,
                is_complex=True,
            ),
            E("report_format", "reportFormat", str),
            E(
                "agent",
                "agent",
                OCI.CallCenterScheduledReportAgentSelection,
                is_complex=True,
            ),
            E(
                "call_center",
                "callCenter",
                OCI.CallCenterScheduledReportCallCenterSelection,
                is_complex=True,
            ),
            E(
                "dnis",
                "dnis",
                OCI.CallCenterScheduledReportDNISSelection,
                is_complex=True,
            ),
            E(
                "call_completion_threshold_seconds",
                "callCompletionThresholdSeconds",
                int,
            ),
            E("short_duration_threshold_seconds", "shortDurationThresholdSeconds", int),
            E(
                "service_level_threshold_seconds",
                "serviceLevelThresholdSeconds",
                OCI.CallCenterReportServiceLevelThresholdReplacementList,
                is_complex=True,
            ),
            E(
                "service_level_inclusions",
                "serviceLevelInclusions",
                OCI.CallCenterScheduledReportServiceLevelInclusionsModify,
                is_complex=True,
            ),
            E(
                "service_level_objective_percentage",
                "serviceLevelObjectivePercentage",
                int,
            ),
            E(
                "abandoned_call_threshold_seconds",
                "abandonedCallThresholdSeconds",
                OCI.CallCenterReportAbandonedCallThresholdReplacementList,
                is_complex=True,
            ),
            E(
                "email_address",
                "emailAddress",
                OCI.CallCenterReportReplacementEmailList,
                is_complex=True,
            ),
        )


class GroupCallCenterModifyAnnouncementRequest16(OCIRequest):
    """
    Modify a call center's announcement settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        play_entrance_message (bool): playEntranceMessage *Optional*
        mandatory_entrance_message (bool): mandatoryEntranceMessage *Optional*
        entrance_audio_message_selection (str): entranceAudioMessageSelection *Optional*
        entrance_message_audio_file (OCI.entranceMessageAudioFile):
            entranceMessageAudioFile *Optional*
        entrance_video_message_selection (str): entranceVideoMessageSelection *Optional*
        entrance_message_video_file (OCI.entranceMessageVideoFile):
            entranceMessageVideoFile *Optional*
        play_periodic_comfort_message (bool): playPeriodicComfortMessage *Optional*
        time_between_comfort_messages_seconds (int): timeBetweenComfortMessagesSeconds
            *Optional*
        periodic_comfort_audio_message_selection (str):
            periodicComfortAudioMessageSelection *Optional*
        periodic_comfort_message_audio_file (OCI.periodicComfortMessageAudioFile):
            periodicComfortMessageAudioFile *Optional*
        periodic_comfort_video_message_selection (str):
            periodicComfortVideoMessageSelection *Optional*
        periodic_comfort_message_video_file (OCI.periodicComfortMessageVideoFile):
            periodicComfortMessageVideoFile *Optional*
        enable_media_on_hold_for_queued_calls (bool): enableMediaOnHoldForQueuedCalls
            *Optional*
        media_on_hold_source (OCI.mediaOnHoldSource): mediaOnHoldSource *Optional*
        media_on_hold_use_alternate_source_for_internal_calls (bool):
            mediaOnHoldUseAlternateSourceForInternalCalls *Optional*
        media_on_hold_internal_source (OCI.mediaOnHoldInternalSource):
            mediaOnHoldInternalSource *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "play_entrance_message",
        "mandatory_entrance_message",
        "entrance_audio_message_selection",
        "entrance_message_audio_file",
        "entrance_video_message_selection",
        "entrance_message_video_file",
        "play_periodic_comfort_message",
        "time_between_comfort_messages_seconds",
        "periodic_comfort_audio_message_selection",
        "periodic_comfort_message_audio_file",
        "periodic_comfort_video_message_selection",
        "periodic_comfort_message_video_file",
        "enable_media_on_hold_for_queued_calls",
        "media_on_hold_source",
        "media_on_hold_use_alternate_source_for_internal_calls",
        "media_on_hold_internal_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("play_entrance_message", "playEntranceMessage", bool),
            E("mandatory_entrance_message", "mandatoryEntranceMessage", bool),
            E("entrance_audio_message_selection", "entranceAudioMessageSelection", str),
            E(
                "entrance_message_audio_file",
                "entranceMessageAudioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("entrance_video_message_selection", "entranceVideoMessageSelection", str),
            E(
                "entrance_message_video_file",
                "entranceMessageVideoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E("play_periodic_comfort_message", "playPeriodicComfortMessage", bool),
            E(
                "time_between_comfort_messages_seconds",
                "timeBetweenComfortMessagesSeconds",
                int,
            ),
            E(
                "periodic_comfort_audio_message_selection",
                "periodicComfortAudioMessageSelection",
                str,
            ),
            E(
                "periodic_comfort_message_audio_file",
                "periodicComfortMessageAudioFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E(
                "periodic_comfort_video_message_selection",
                "periodicComfortVideoMessageSelection",
                str,
            ),
            E(
                "periodic_comfort_message_video_file",
                "periodicComfortMessageVideoFile",
                OCI.ExtendedMediaFileResource,
                is_complex=True,
            ),
            E(
                "enable_media_on_hold_for_queued_calls",
                "enableMediaOnHoldForQueuedCalls",
                bool,
            ),
            E(
                "media_on_hold_source",
                "mediaOnHoldSource",
                OCI.CallCenterMediaOnHoldSourceModify16,
                is_complex=True,
            ),
            E(
                "media_on_hold_use_alternate_source_for_internal_calls",
                "mediaOnHoldUseAlternateSourceForInternalCalls",
                bool,
            ),
            E(
                "media_on_hold_internal_source",
                "mediaOnHoldInternalSource",
                OCI.CallCenterMediaOnHoldSourceModify16,
                is_complex=True,
            ),
        )


class GroupCallCenterModifyAnnouncementRequest17(OCIRequest):
    """
    Modify a call center's announcement settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        play_entrance_message (bool): playEntranceMessage *Optional*
        mandatory_entrance_message (bool): mandatoryEntranceMessage *Optional*
        entrance_audio_message_selection (str): entranceAudioMessageSelection *Optional*
        entrance_message_audio_url_list (OCI.entranceMessageAudioUrlList):
            entranceMessageAudioUrlList *Optional*
        entrance_message_audio_file_list (OCI.entranceMessageAudioFileList):
            entranceMessageAudioFileList *Optional*
        entrance_video_message_selection (str): entranceVideoMessageSelection *Optional*
        entrance_message_video_url_list (OCI.entranceMessageVideoUrlList):
            entranceMessageVideoUrlList *Optional*
        entrance_message_video_file_list (OCI.entranceMessageVideoFileList):
            entranceMessageVideoFileList *Optional*
        play_periodic_comfort_message (bool): playPeriodicComfortMessage *Optional*
        time_between_comfort_messages_seconds (int): timeBetweenComfortMessagesSeconds
            *Optional*
        periodic_comfort_audio_message_selection (str):
            periodicComfortAudioMessageSelection *Optional*
        periodic_comfort_message_audio_url_list (OCI.periodicComfortMessageAudioUrlList):
            periodicComfortMessageAudioUrlList *Optional*
        periodic_comfort_message_audio_file_list
            (OCI.periodicComfortMessageAudioFileList): periodicComfortMessageAudioFileList
            *Optional*
        periodic_comfort_video_message_selection (str):
            periodicComfortVideoMessageSelection *Optional*
        periodic_comfort_message_video_url_list (OCI.periodicComfortMessageVideoUrlList):
            periodicComfortMessageVideoUrlList *Optional*
        periodic_comfort_message_video_file_list
            (OCI.periodicComfortMessageVideoFileList): periodicComfortMessageVideoFileList
            *Optional*
        enable_media_on_hold_for_queued_calls (bool): enableMediaOnHoldForQueuedCalls
            *Optional*
        media_on_hold_source (OCI.mediaOnHoldSource): mediaOnHoldSource *Optional*
        media_on_hold_use_alternate_source_for_internal_calls (bool):
            mediaOnHoldUseAlternateSourceForInternalCalls *Optional*
        media_on_hold_internal_source (OCI.mediaOnHoldInternalSource):
            mediaOnHoldInternalSource *Optional*
        play_whisper_message (bool): playWhisperMessage *Optional*
        whisper_audio_message_selection (str): whisperAudioMessageSelection *Optional*
        whisper_message_audio_url_list (OCI.whisperMessageAudioUrlList):
            whisperMessageAudioUrlList *Optional*
        whisper_message_audio_file_list (OCI.whisperMessageAudioFileList):
            whisperMessageAudioFileList *Optional*
        whisper_video_message_selection (str): whisperVideoMessageSelection *Optional*
        whisper_message_video_url_list (OCI.whisperMessageVideoUrlList):
            whisperMessageVideoUrlList *Optional*
        whisper_message_video_file_list (OCI.whisperMessageVideoFileList):
            whisperMessageVideoFileList *Optional*
        estimated_wait_message_options_modify (OCI.estimatedWaitMessageOptionsModify):
            estimatedWaitMessageOptionsModify *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "play_entrance_message",
        "mandatory_entrance_message",
        "entrance_audio_message_selection",
        "entrance_message_audio_url_list",
        "entrance_message_audio_file_list",
        "entrance_video_message_selection",
        "entrance_message_video_url_list",
        "entrance_message_video_file_list",
        "play_periodic_comfort_message",
        "time_between_comfort_messages_seconds",
        "periodic_comfort_audio_message_selection",
        "periodic_comfort_message_audio_url_list",
        "periodic_comfort_message_audio_file_list",
        "periodic_comfort_video_message_selection",
        "periodic_comfort_message_video_url_list",
        "periodic_comfort_message_video_file_list",
        "enable_media_on_hold_for_queued_calls",
        "media_on_hold_source",
        "media_on_hold_use_alternate_source_for_internal_calls",
        "media_on_hold_internal_source",
        "play_whisper_message",
        "whisper_audio_message_selection",
        "whisper_message_audio_url_list",
        "whisper_message_audio_file_list",
        "whisper_video_message_selection",
        "whisper_message_video_url_list",
        "whisper_message_video_file_list",
        "estimated_wait_message_options_modify",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("play_entrance_message", "playEntranceMessage", bool),
            E("mandatory_entrance_message", "mandatoryEntranceMessage", bool),
            E("entrance_audio_message_selection", "entranceAudioMessageSelection", str),
            E(
                "entrance_message_audio_url_list",
                "entranceMessageAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "entrance_message_audio_file_list",
                "entranceMessageAudioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("entrance_video_message_selection", "entranceVideoMessageSelection", str),
            E(
                "entrance_message_video_url_list",
                "entranceMessageVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "entrance_message_video_file_list",
                "entranceMessageVideoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("play_periodic_comfort_message", "playPeriodicComfortMessage", bool),
            E(
                "time_between_comfort_messages_seconds",
                "timeBetweenComfortMessagesSeconds",
                int,
            ),
            E(
                "periodic_comfort_audio_message_selection",
                "periodicComfortAudioMessageSelection",
                str,
            ),
            E(
                "periodic_comfort_message_audio_url_list",
                "periodicComfortMessageAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "periodic_comfort_message_audio_file_list",
                "periodicComfortMessageAudioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E(
                "periodic_comfort_video_message_selection",
                "periodicComfortVideoMessageSelection",
                str,
            ),
            E(
                "periodic_comfort_message_video_url_list",
                "periodicComfortMessageVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "periodic_comfort_message_video_file_list",
                "periodicComfortMessageVideoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E(
                "enable_media_on_hold_for_queued_calls",
                "enableMediaOnHoldForQueuedCalls",
                bool,
            ),
            E(
                "media_on_hold_source",
                "mediaOnHoldSource",
                OCI.CallCenterMediaOnHoldSourceModify17,
                is_complex=True,
            ),
            E(
                "media_on_hold_use_alternate_source_for_internal_calls",
                "mediaOnHoldUseAlternateSourceForInternalCalls",
                bool,
            ),
            E(
                "media_on_hold_internal_source",
                "mediaOnHoldInternalSource",
                OCI.CallCenterMediaOnHoldSourceModify17,
                is_complex=True,
            ),
            E("play_whisper_message", "playWhisperMessage", bool),
            E("whisper_audio_message_selection", "whisperAudioMessageSelection", str),
            E(
                "whisper_message_audio_url_list",
                "whisperMessageAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "whisper_message_audio_file_list",
                "whisperMessageAudioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("whisper_video_message_selection", "whisperVideoMessageSelection", str),
            E(
                "whisper_message_video_url_list",
                "whisperMessageVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "whisper_message_video_file_list",
                "whisperMessageVideoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E(
                "estimated_wait_message_options_modify",
                "estimatedWaitMessageOptionsModify",
                OCI.EstimatedWaitMessageOptionsModify,
                is_complex=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): serviceUserId
        play_entrance_message (bool): playEntranceMessage *Optional*
        mandatory_entrance_message (bool): mandatoryEntranceMessage *Optional*
        entrance_audio_message_selection (str): entranceAudioMessageSelection *Optional*
        entrance_message_audio_url_list (OCI.entranceMessageAudioUrlList):
            entranceMessageAudioUrlList *Optional*
        entrance_message_audio_file_list (OCI.entranceMessageAudioFileList):
            entranceMessageAudioFileList *Optional*
        entrance_video_message_selection (str): entranceVideoMessageSelection *Optional*
        entrance_message_video_url_list (OCI.entranceMessageVideoUrlList):
            entranceMessageVideoUrlList *Optional*
        entrance_message_video_file_list (OCI.entranceMessageVideoFileList):
            entranceMessageVideoFileList *Optional*
        play_periodic_comfort_message (bool): playPeriodicComfortMessage *Optional*
        time_between_comfort_messages_seconds (int): timeBetweenComfortMessagesSeconds
            *Optional*
        periodic_comfort_audio_message_selection (str):
            periodicComfortAudioMessageSelection *Optional*
        periodic_comfort_message_audio_url_list (OCI.periodicComfortMessageAudioUrlList):
            periodicComfortMessageAudioUrlList *Optional*
        periodic_comfort_message_audio_file_list
            (OCI.periodicComfortMessageAudioFileList): periodicComfortMessageAudioFileList
            *Optional*
        periodic_comfort_video_message_selection (str):
            periodicComfortVideoMessageSelection *Optional*
        periodic_comfort_message_video_url_list (OCI.periodicComfortMessageVideoUrlList):
            periodicComfortMessageVideoUrlList *Optional*
        periodic_comfort_message_video_file_list
            (OCI.periodicComfortMessageVideoFileList): periodicComfortMessageVideoFileList
            *Optional*
        enable_media_on_hold_for_queued_calls (bool): enableMediaOnHoldForQueuedCalls
            *Optional*
        media_on_hold_source (OCI.mediaOnHoldSource): mediaOnHoldSource *Optional*
        media_on_hold_use_alternate_source_for_internal_calls (bool):
            mediaOnHoldUseAlternateSourceForInternalCalls *Optional*
        media_on_hold_internal_source (OCI.mediaOnHoldInternalSource):
            mediaOnHoldInternalSource *Optional*
        play_whisper_message (bool): playWhisperMessage *Optional*
        whisper_audio_message_selection (str): whisperAudioMessageSelection *Optional*
        whisper_message_audio_url_list (OCI.whisperMessageAudioUrlList):
            whisperMessageAudioUrlList *Optional*
        whisper_message_audio_file_list (OCI.whisperMessageAudioFileList):
            whisperMessageAudioFileList *Optional*
        whisper_video_message_selection (str): whisperVideoMessageSelection *Optional*
        whisper_message_video_url_list (OCI.whisperMessageVideoUrlList):
            whisperMessageVideoUrlList *Optional*
        whisper_message_video_file_list (OCI.whisperMessageVideoFileList):
            whisperMessageVideoFileList *Optional*
        estimated_wait_message_options_modify (OCI.estimatedWaitMessageOptionsModify):
            estimatedWaitMessageOptionsModify *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "play_entrance_message",
        "mandatory_entrance_message",
        "entrance_audio_message_selection",
        "entrance_message_audio_url_list",
        "entrance_message_audio_file_list",
        "entrance_video_message_selection",
        "entrance_message_video_url_list",
        "entrance_message_video_file_list",
        "play_periodic_comfort_message",
        "time_between_comfort_messages_seconds",
        "periodic_comfort_audio_message_selection",
        "periodic_comfort_message_audio_url_list",
        "periodic_comfort_message_audio_file_list",
        "periodic_comfort_video_message_selection",
        "periodic_comfort_message_video_url_list",
        "periodic_comfort_message_video_file_list",
        "enable_media_on_hold_for_queued_calls",
        "media_on_hold_source",
        "media_on_hold_use_alternate_source_for_internal_calls",
        "media_on_hold_internal_source",
        "play_whisper_message",
        "whisper_audio_message_selection",
        "whisper_message_audio_url_list",
        "whisper_message_audio_file_list",
        "whisper_video_message_selection",
        "whisper_message_video_url_list",
        "whisper_message_video_file_list",
        "estimated_wait_message_options_modify",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("play_entrance_message", "playEntranceMessage", bool),
            E("mandatory_entrance_message", "mandatoryEntranceMessage", bool),
            E("entrance_audio_message_selection", "entranceAudioMessageSelection", str),
            E(
                "entrance_message_audio_url_list",
                "entranceMessageAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "entrance_message_audio_file_list",
                "entranceMessageAudioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("entrance_video_message_selection", "entranceVideoMessageSelection", str),
            E(
                "entrance_message_video_url_list",
                "entranceMessageVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "entrance_message_video_file_list",
                "entranceMessageVideoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("play_periodic_comfort_message", "playPeriodicComfortMessage", bool),
            E(
                "time_between_comfort_messages_seconds",
                "timeBetweenComfortMessagesSeconds",
                int,
            ),
            E(
                "periodic_comfort_audio_message_selection",
                "periodicComfortAudioMessageSelection",
                str,
            ),
            E(
                "periodic_comfort_message_audio_url_list",
                "periodicComfortMessageAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "periodic_comfort_message_audio_file_list",
                "periodicComfortMessageAudioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E(
                "periodic_comfort_video_message_selection",
                "periodicComfortVideoMessageSelection",
                str,
            ),
            E(
                "periodic_comfort_message_video_url_list",
                "periodicComfortMessageVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "periodic_comfort_message_video_file_list",
                "periodicComfortMessageVideoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E(
                "enable_media_on_hold_for_queued_calls",
                "enableMediaOnHoldForQueuedCalls",
                bool,
            ),
            E(
                "media_on_hold_source",
                "mediaOnHoldSource",
                OCI.CallCenterMediaOnHoldSourceModify20,
                is_complex=True,
            ),
            E(
                "media_on_hold_use_alternate_source_for_internal_calls",
                "mediaOnHoldUseAlternateSourceForInternalCalls",
                bool,
            ),
            E(
                "media_on_hold_internal_source",
                "mediaOnHoldInternalSource",
                OCI.CallCenterMediaOnHoldSourceModify20,
                is_complex=True,
            ),
            E("play_whisper_message", "playWhisperMessage", bool),
            E("whisper_audio_message_selection", "whisperAudioMessageSelection", str),
            E(
                "whisper_message_audio_url_list",
                "whisperMessageAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "whisper_message_audio_file_list",
                "whisperMessageAudioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("whisper_video_message_selection", "whisperVideoMessageSelection", str),
            E(
                "whisper_message_video_url_list",
                "whisperMessageVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "whisper_message_video_file_list",
                "whisperMessageVideoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E(
                "estimated_wait_message_options_modify",
                "estimatedWaitMessageOptionsModify",
                OCI.EstimatedWaitMessageOptionsModify,
                is_complex=True,
            ),
        )


class GroupCallCenterModifyDNISAnnouncementRequest(OCIRequest):
    """
    Modify a call center DNIS announcement settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
        play_entrance_message (bool): playEntranceMessage *Optional*
        mandatory_entrance_message (bool): mandatoryEntranceMessage *Optional*
        entrance_audio_message_selection (str): entranceAudioMessageSelection *Optional*
        entrance_message_audio_url_list (OCI.entranceMessageAudioUrlList):
            entranceMessageAudioUrlList *Optional*
        entrance_message_audio_file_list (OCI.entranceMessageAudioFileList):
            entranceMessageAudioFileList *Optional*
        entrance_video_message_selection (str): entranceVideoMessageSelection *Optional*
        entrance_message_video_url_list (OCI.entranceMessageVideoUrlList):
            entranceMessageVideoUrlList *Optional*
        entrance_message_video_file_list (OCI.entranceMessageVideoFileList):
            entranceMessageVideoFileList *Optional*
        play_periodic_comfort_message (bool): playPeriodicComfortMessage *Optional*
        time_between_comfort_messages_seconds (int): timeBetweenComfortMessagesSeconds
            *Optional*
        periodic_comfort_audio_message_selection (str):
            periodicComfortAudioMessageSelection *Optional*
        periodic_comfort_message_audio_url_list (OCI.periodicComfortMessageAudioUrlList):
            periodicComfortMessageAudioUrlList *Optional*
        periodic_comfort_message_audio_file_list
            (OCI.periodicComfortMessageAudioFileList): periodicComfortMessageAudioFileList
            *Optional*
        periodic_comfort_video_message_selection (str):
            periodicComfortVideoMessageSelection *Optional*
        periodic_comfort_message_video_url_list (OCI.periodicComfortMessageVideoUrlList):
            periodicComfortMessageVideoUrlList *Optional*
        periodic_comfort_message_video_file_list
            (OCI.periodicComfortMessageVideoFileList): periodicComfortMessageVideoFileList
            *Optional*
        enable_media_on_hold_for_queued_calls (bool): enableMediaOnHoldForQueuedCalls
            *Optional*
        media_on_hold_source (OCI.mediaOnHoldSource): mediaOnHoldSource *Optional*
        play_whisper_message (bool): playWhisperMessage *Optional*
        whisper_audio_message_selection (str): whisperAudioMessageSelection *Optional*
        whisper_message_audio_url_list (OCI.whisperMessageAudioUrlList):
            whisperMessageAudioUrlList *Optional*
        whisper_message_audio_file_list (OCI.whisperMessageAudioFileList):
            whisperMessageAudioFileList *Optional*
        whisper_video_message_selection (str): whisperVideoMessageSelection *Optional*
        whisper_message_video_url_list (OCI.whisperMessageVideoUrlList):
            whisperMessageVideoUrlList *Optional*
        whisper_message_video_file_list (OCI.whisperMessageVideoFileList):
            whisperMessageVideoFileList *Optional*
        estimated_wait_message_options_modify (OCI.estimatedWaitMessageOptionsModify):
            estimatedWaitMessageOptionsModify *Optional*
    """

    __slots__: List[str] = [
        "dnis_key",
        "play_entrance_message",
        "mandatory_entrance_message",
        "entrance_audio_message_selection",
        "entrance_message_audio_url_list",
        "entrance_message_audio_file_list",
        "entrance_video_message_selection",
        "entrance_message_video_url_list",
        "entrance_message_video_file_list",
        "play_periodic_comfort_message",
        "time_between_comfort_messages_seconds",
        "periodic_comfort_audio_message_selection",
        "periodic_comfort_message_audio_url_list",
        "periodic_comfort_message_audio_file_list",
        "periodic_comfort_video_message_selection",
        "periodic_comfort_message_video_url_list",
        "periodic_comfort_message_video_file_list",
        "enable_media_on_hold_for_queued_calls",
        "media_on_hold_source",
        "play_whisper_message",
        "whisper_audio_message_selection",
        "whisper_message_audio_url_list",
        "whisper_message_audio_file_list",
        "whisper_video_message_selection",
        "whisper_message_video_url_list",
        "whisper_message_video_file_list",
        "estimated_wait_message_options_modify",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
            E("play_entrance_message", "playEntranceMessage", bool),
            E("mandatory_entrance_message", "mandatoryEntranceMessage", bool),
            E("entrance_audio_message_selection", "entranceAudioMessageSelection", str),
            E(
                "entrance_message_audio_url_list",
                "entranceMessageAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "entrance_message_audio_file_list",
                "entranceMessageAudioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("entrance_video_message_selection", "entranceVideoMessageSelection", str),
            E(
                "entrance_message_video_url_list",
                "entranceMessageVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "entrance_message_video_file_list",
                "entranceMessageVideoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("play_periodic_comfort_message", "playPeriodicComfortMessage", bool),
            E(
                "time_between_comfort_messages_seconds",
                "timeBetweenComfortMessagesSeconds",
                int,
            ),
            E(
                "periodic_comfort_audio_message_selection",
                "periodicComfortAudioMessageSelection",
                str,
            ),
            E(
                "periodic_comfort_message_audio_url_list",
                "periodicComfortMessageAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "periodic_comfort_message_audio_file_list",
                "periodicComfortMessageAudioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E(
                "periodic_comfort_video_message_selection",
                "periodicComfortVideoMessageSelection",
                str,
            ),
            E(
                "periodic_comfort_message_video_url_list",
                "periodicComfortMessageVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "periodic_comfort_message_video_file_list",
                "periodicComfortMessageVideoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E(
                "enable_media_on_hold_for_queued_calls",
                "enableMediaOnHoldForQueuedCalls",
                bool,
            ),
            E(
                "media_on_hold_source",
                "mediaOnHoldSource",
                OCI.CallCenterMediaOnHoldSourceModify17,
                is_complex=True,
            ),
            E("play_whisper_message", "playWhisperMessage", bool),
            E("whisper_audio_message_selection", "whisperAudioMessageSelection", str),
            E(
                "whisper_message_audio_url_list",
                "whisperMessageAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "whisper_message_audio_file_list",
                "whisperMessageAudioFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E("whisper_video_message_selection", "whisperVideoMessageSelection", str),
            E(
                "whisper_message_video_url_list",
                "whisperMessageVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "whisper_message_video_file_list",
                "whisperMessageVideoFileList",
                OCI.CallCenterAnnouncementFileListModify,
                is_complex=True,
            ),
            E(
                "estimated_wait_message_options_modify",
                "estimatedWaitMessageOptionsModify",
                OCI.EstimatedWaitMessageOptionsModify,
                is_complex=True,
            ),
        )


class GroupCallCenterModifyDNISAnnouncementRequest20(OCIRequest):
    """
    Modify a call center DNIS announcement settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
        play_entrance_message (bool): playEntranceMessage *Optional*
        mandatory_entrance_message (bool): mandatoryEntranceMessage *Optional*
        entrance_audio_message_selection (str): entranceAudioMessageSelection *Optional*
        entrance_message_audio_url_list (OCI.entranceMessageAudioUrlList):
            entranceMessageAudioUrlList *Optional*
        entrance_message_audio_file_list (OCI.entranceMessageAudioFileList):
            entranceMessageAudioFileList *Optional*
        entrance_video_message_selection (str): entranceVideoMessageSelection *Optional*
        entrance_message_video_url_list (OCI.entranceMessageVideoUrlList):
            entranceMessageVideoUrlList *Optional*
        entrance_message_video_file_list (OCI.entranceMessageVideoFileList):
            entranceMessageVideoFileList *Optional*
        play_periodic_comfort_message (bool): playPeriodicComfortMessage *Optional*
        time_between_comfort_messages_seconds (int): timeBetweenComfortMessagesSeconds
            *Optional*
        periodic_comfort_audio_message_selection (str):
            periodicComfortAudioMessageSelection *Optional*
        periodic_comfort_message_audio_url_list (OCI.periodicComfortMessageAudioUrlList):
            periodicComfortMessageAudioUrlList *Optional*
        periodic_comfort_message_audio_file_list
            (OCI.periodicComfortMessageAudioFileList): periodicComfortMessageAudioFileList
            *Optional*
        periodic_comfort_video_message_selection (str):
            periodicComfortVideoMessageSelection *Optional*
        periodic_comfort_message_video_url_list (OCI.periodicComfortMessageVideoUrlList):
            periodicComfortMessageVideoUrlList *Optional*
        periodic_comfort_message_video_file_list
            (OCI.periodicComfortMessageVideoFileList): periodicComfortMessageVideoFileList
            *Optional*
        enable_media_on_hold_for_queued_calls (bool): enableMediaOnHoldForQueuedCalls
            *Optional*
        media_on_hold_source (OCI.mediaOnHoldSource): mediaOnHoldSource *Optional*
        play_whisper_message (bool): playWhisperMessage *Optional*
        whisper_audio_message_selection (str): whisperAudioMessageSelection *Optional*
        whisper_message_audio_url_list (OCI.whisperMessageAudioUrlList):
            whisperMessageAudioUrlList *Optional*
        whisper_message_audio_file_list (OCI.whisperMessageAudioFileList):
            whisperMessageAudioFileList *Optional*
        whisper_video_message_selection (str): whisperVideoMessageSelection *Optional*
        whisper_message_video_url_list (OCI.whisperMessageVideoUrlList):
            whisperMessageVideoUrlList *Optional*
        whisper_message_video_file_list (OCI.whisperMessageVideoFileList):
            whisperMessageVideoFileList *Optional*
        estimated_wait_message_options_modify (OCI.estimatedWaitMessageOptionsModify):
            estimatedWaitMessageOptionsModify *Optional*
    """

    __slots__: List[str] = [
        "dnis_key",
        "play_entrance_message",
        "mandatory_entrance_message",
        "entrance_audio_message_selection",
        "entrance_message_audio_url_list",
        "entrance_message_audio_file_list",
        "entrance_video_message_selection",
        "entrance_message_video_url_list",
        "entrance_message_video_file_list",
        "play_periodic_comfort_message",
        "time_between_comfort_messages_seconds",
        "periodic_comfort_audio_message_selection",
        "periodic_comfort_message_audio_url_list",
        "periodic_comfort_message_audio_file_list",
        "periodic_comfort_video_message_selection",
        "periodic_comfort_message_video_url_list",
        "periodic_comfort_message_video_file_list",
        "enable_media_on_hold_for_queued_calls",
        "media_on_hold_source",
        "play_whisper_message",
        "whisper_audio_message_selection",
        "whisper_message_audio_url_list",
        "whisper_message_audio_file_list",
        "whisper_video_message_selection",
        "whisper_message_video_url_list",
        "whisper_message_video_file_list",
        "estimated_wait_message_options_modify",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
            E("play_entrance_message", "playEntranceMessage", bool),
            E("mandatory_entrance_message", "mandatoryEntranceMessage", bool),
            E("entrance_audio_message_selection", "entranceAudioMessageSelection", str),
            E(
                "entrance_message_audio_url_list",
                "entranceMessageAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "entrance_message_audio_file_list",
                "entranceMessageAudioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("entrance_video_message_selection", "entranceVideoMessageSelection", str),
            E(
                "entrance_message_video_url_list",
                "entranceMessageVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "entrance_message_video_file_list",
                "entranceMessageVideoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("play_periodic_comfort_message", "playPeriodicComfortMessage", bool),
            E(
                "time_between_comfort_messages_seconds",
                "timeBetweenComfortMessagesSeconds",
                int,
            ),
            E(
                "periodic_comfort_audio_message_selection",
                "periodicComfortAudioMessageSelection",
                str,
            ),
            E(
                "periodic_comfort_message_audio_url_list",
                "periodicComfortMessageAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "periodic_comfort_message_audio_file_list",
                "periodicComfortMessageAudioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E(
                "periodic_comfort_video_message_selection",
                "periodicComfortVideoMessageSelection",
                str,
            ),
            E(
                "periodic_comfort_message_video_url_list",
                "periodicComfortMessageVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "periodic_comfort_message_video_file_list",
                "periodicComfortMessageVideoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E(
                "enable_media_on_hold_for_queued_calls",
                "enableMediaOnHoldForQueuedCalls",
                bool,
            ),
            E(
                "media_on_hold_source",
                "mediaOnHoldSource",
                OCI.CallCenterMediaOnHoldSourceModify20,
                is_complex=True,
            ),
            E("play_whisper_message", "playWhisperMessage", bool),
            E("whisper_audio_message_selection", "whisperAudioMessageSelection", str),
            E(
                "whisper_message_audio_url_list",
                "whisperMessageAudioUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "whisper_message_audio_file_list",
                "whisperMessageAudioFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E("whisper_video_message_selection", "whisperVideoMessageSelection", str),
            E(
                "whisper_message_video_url_list",
                "whisperMessageVideoUrlList",
                OCI.CallCenterAnnouncementURLListModify,
                is_complex=True,
            ),
            E(
                "whisper_message_video_file_list",
                "whisperMessageVideoFileList",
                OCI.CallCenterAnnouncementFileListModify20,
                is_complex=True,
            ),
            E(
                "estimated_wait_message_options_modify",
                "estimatedWaitMessageOptionsModify",
                OCI.EstimatedWaitMessageOptionsModify,
                is_complex=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): serviceUserId
        unassign_phone_numbers (str): unassignPhoneNumbers *Optional*
        add_phone_number_to_group (bool): addPhoneNumberToGroup *Optional*
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        maximum_bridge_participants (OCI.maximumBridgeParticipants):
            maximumBridgeParticipants *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        max_collaborate_room_participants (int): maxCollaborateRoomParticipants *Optional*
        support_outdial (bool): supportOutdial *Optional*
        collaborate_owner_user_id_list (OCI.collaborateOwnerUserIdList):
            collaborateOwnerUserIdList *Optional*
        service_list (OCI.serviceList): serviceList *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "unassign_phone_numbers",
        "add_phone_number_to_group",
        "service_instance_profile",
        "maximum_bridge_participants",
        "network_class_of_service",
        "max_collaborate_room_participants",
        "support_outdial",
        "collaborate_owner_user_id_list",
        "service_list",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("unassign_phone_numbers", "unassignPhoneNumbers", str),
            E("add_phone_number_to_group", "addPhoneNumberToGroup", bool),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E(
                "maximum_bridge_participants",
                "maximumBridgeParticipants",
                OCI.CollaborateBridgeMaximumParticipants,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "max_collaborate_room_participants",
                "maxCollaborateRoomParticipants",
                int,
            ),
            E("support_outdial", "supportOutdial", bool),
            E(
                "collaborate_owner_user_id_list",
                "collaborateOwnerUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E(
                "service_list",
                "serviceList",
                OCI.ReplacementConsolidatedUserServiceAssignmentList,
                is_complex=True,
            ),
        )


class GroupFlexibleSeatingHostModifyInstanceRequest22(OCIRequest):
    """
    Request to modify a flexible seating host instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "access_device_endpoint",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfileFlexibleSeatingHost,
                is_complex=True,
            ),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceMultipleContactEndpointModify22,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceUserId
        unassign_phone_numbers (str): unassignPhoneNumbers *Optional*
        add_phone_number_to_group (bool): addPhoneNumberToGroup *Optional*
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        policy (str): policy *Optional*
        hunt_after_no_answer (bool): huntAfterNoAnswer *Optional*
        no_answer_number_of_rings (int): noAnswerNumberOfRings *Optional*
        forward_after_timeout (bool): forwardAfterTimeout *Optional*
        forward_timeout_seconds (int): forwardTimeoutSeconds *Optional*
        forward_to_phone_number (str): forwardToPhoneNumber *Optional*
        agent_user_id_list (OCI.agentUserIdList): agentUserIdList *Optional*
        agent_weight_list (OCI.agentWeightList): agentWeightList *Optional*
        allow_call_waiting_for_agents (bool): allowCallWaitingForAgents *Optional*
        use_system_hunt_group_clid_setting (bool): useSystemHuntGroupCLIDSetting
            *Optional*
        include_hunt_group_name_in_clid (bool): includeHuntGroupNameInCLID *Optional*
        enable_not_reachable_forwarding (bool): enableNotReachableForwarding *Optional*
        not_reachable_forward_to_phone_number (str): notReachableForwardToPhoneNumber
            *Optional*
        make_busy_when_not_reachable (bool): makeBusyWhenNotReachable *Optional*
        allow_members_to_control_group_busy (bool): allowMembersToControlGroupBusy
            *Optional*
        enable_group_busy (bool): enableGroupBusy *Optional*
        apply_group_busy_when_terminating_to_agent (bool):
            applyGroupBusyWhenTerminatingToAgent *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        service_list (OCI.serviceList): serviceList *Optional*
        is_active (bool): isActive *Optional*
        directory_number_hunting_agent_user_id_list
            (OCI.directoryNumberHuntingAgentUserIdList):
            directoryNumberHuntingAgentUserIdList *Optional*
        directory_number_hunting_use_terminate_call_to_agent_first (bool):
            directoryNumberHuntingUseTerminateCallToAgentFirst *Optional*
        directory_number_hunting_use_original_agent_services_for_busy_and_no_answer_calls
            (bool): directoryNumberHuntingUseOriginalAgentServicesForBusyAndNoAnswerCalls
            *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "unassign_phone_numbers",
        "add_phone_number_to_group",
        "service_instance_profile",
        "policy",
        "hunt_after_no_answer",
        "no_answer_number_of_rings",
        "forward_after_timeout",
        "forward_timeout_seconds",
        "forward_to_phone_number",
        "agent_user_id_list",
        "agent_weight_list",
        "allow_call_waiting_for_agents",
        "use_system_hunt_group_clid_setting",
        "include_hunt_group_name_in_clid",
        "enable_not_reachable_forwarding",
        "not_reachable_forward_to_phone_number",
        "make_busy_when_not_reachable",
        "allow_members_to_control_group_busy",
        "enable_group_busy",
        "apply_group_busy_when_terminating_to_agent",
        "network_class_of_service",
        "service_list",
        "is_active",
        "directory_number_hunting_agent_user_id_list",
        "directory_number_hunting_use_terminate_call_to_agent_first",
        "directory_number_hunting_use_original_agent_services_for_busy_and_no_answer_calls",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("unassign_phone_numbers", "unassignPhoneNumbers", str),
            E("add_phone_number_to_group", "addPhoneNumberToGroup", bool),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("policy", "policy", str),
            E("hunt_after_no_answer", "huntAfterNoAnswer", bool),
            E("no_answer_number_of_rings", "noAnswerNumberOfRings", int),
            E("forward_after_timeout", "forwardAfterTimeout", bool),
            E("forward_timeout_seconds", "forwardTimeoutSeconds", int),
            E("forward_to_phone_number", "forwardToPhoneNumber", str),
            E(
                "agent_user_id_list",
                "agentUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E(
                "agent_weight_list",
                "agentWeightList",
                OCI.ReplacementAgentWeightList,
                is_complex=True,
            ),
            E("allow_call_waiting_for_agents", "allowCallWaitingForAgents", bool),
            E(
                "use_system_hunt_group_clid_setting",
                "useSystemHuntGroupCLIDSetting",
                bool,
            ),
            E("include_hunt_group_name_in_clid", "includeHuntGroupNameInCLID", bool),
            E("enable_not_reachable_forwarding", "enableNotReachableForwarding", bool),
            E(
                "not_reachable_forward_to_phone_number",
                "notReachableForwardToPhoneNumber",
                str,
            ),
            E("make_busy_when_not_reachable", "makeBusyWhenNotReachable", bool),
            E(
                "allow_members_to_control_group_busy",
                "allowMembersToControlGroupBusy",
                bool,
            ),
            E("enable_group_busy", "enableGroupBusy", bool),
            E(
                "apply_group_busy_when_terminating_to_agent",
                "applyGroupBusyWhenTerminatingToAgent",
                bool,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "service_list",
                "serviceList",
                OCI.ReplacementConsolidatedUserServiceAssignmentList,
                is_complex=True,
            ),
            E("is_active", "isActive", bool),
            E(
                "directory_number_hunting_agent_user_id_list",
                "directoryNumberHuntingAgentUserIdList",
                OCI.ReplacementUserIdList,
                is_complex=True,
            ),
            E(
                "directory_number_hunting_use_terminate_call_to_agent_first",
                "directoryNumberHuntingUseTerminateCallToAgentFirst",
                bool,
            ),
            E(
                "directory_number_hunting_use_original_agent_services_for_busy_and_no_answer_calls",
                "directoryNumberHuntingUseOriginalAgentServicesForBusyAndNoAnswerCalls",
                bool,
            ),
        )


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): serviceProviderId
        group_id (str): groupId
        group_permissions (OCI.groupPermissions): groupPermissions *Optional*
        department_permissions (List[OCI.departmentPermissions]): departmentPermissions
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_permissions",
        "department_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "group_permissions",
                "groupPermissions",
                OCI.OutgoingCallingPlanDigitPatternCallMeNowPermissions,
                is_complex=True,
            ),
            E(
                "department_permissions",
                "departmentPermissions",
                OCI.OutgoingCallingPlanDigitPatternCallMeNowDepartmentPermissionsModify,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        group_permissions (OCI.groupPermissions): groupPermissions *Optional*
        department_permissions (List[OCI.departmentPermissions]): departmentPermissions
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_permissions",
        "department_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "group_permissions",
                "groupPermissions",
                OCI.OutgoingCallingPlanDigitPatternOriginatingPermissions,
                is_complex=True,
            ),
            E(
                "department_permissions",
                "departmentPermissions",
                OCI.OutgoingCallingPlanDigitPatternOriginatingDepartmentPermissionsModify,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        group_permissions (OCI.groupPermissions): groupPermissions *Optional*
        department_permissions (List[OCI.departmentPermissions]): departmentPermissions
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_permissions",
        "department_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "group_permissions",
                "groupPermissions",
                OCI.OutgoingCallingPlanDigitPatternRedirectingPermissions,
                is_complex=True,
            ),
            E(
                "department_permissions",
                "departmentPermissions",
                OCI.OutgoingCallingPlanDigitPatternRedirectingDepartmentPermissionsModify,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        group_permissions (OCI.groupPermissions): groupPermissions *Optional*
        department_permissions (List[OCI.departmentPermissions]): departmentPermissions
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_permissions",
        "department_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "group_permissions",
                "groupPermissions",
                OCI.OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions,
                is_complex=True,
            ),
            E(
                "department_permissions",
                "departmentPermissions",
                OCI.OutgoingPinholeDigitPlanDigitPatternCallMeNowDepartmentPermissionsModify,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        group_permissions (OCI.groupPermissions): groupPermissions *Optional*
        department_permissions (List[OCI.departmentPermissions]): departmentPermissions
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_permissions",
        "department_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "group_permissions",
                "groupPermissions",
                OCI.OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions,
                is_complex=True,
            ),
            E(
                "department_permissions",
                "departmentPermissions",
                OCI.OutgoingPinholeDigitPlanDigitPatternOriginatingDepartmentPermissionsModify,
                is_complex=True,
                is_array=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): serviceProviderId
        group_id (str): groupId
        group_permissions (OCI.groupPermissions): groupPermissions *Optional*
        department_permissions (List[OCI.departmentPermissions]): departmentPermissions
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_permissions",
        "department_permissions",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E(
                "group_permissions",
                "groupPermissions",
                OCI.OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions,
                is_complex=True,
            ),
            E(
                "department_permissions",
                "departmentPermissions",
                OCI.OutgoingPinholeDigitPlanDigitPatternRedirectingDepartmentPermissionsModify,
                is_complex=True,
                is_array=True,
            ),
        )


class GroupRoutePointModifyAnnouncementRequest(OCIRequest):
    """
    Modify a route point's announcement settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        media_on_hold_source (OCI.mediaOnHoldSource): mediaOnHoldSource *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "media_on_hold_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "media_on_hold_source",
                "mediaOnHoldSource",
                OCI.CallCenterMediaOnHoldSourceModify17,
                is_complex=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): serviceUserId
        media_on_hold_source (OCI.mediaOnHoldSource): mediaOnHoldSource *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "media_on_hold_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "media_on_hold_source",
                "mediaOnHoldSource",
                OCI.CallCenterMediaOnHoldSourceModify20,
                is_complex=True,
            ),
        )


class GroupRoutePointModifyDNISAnnouncementRequest(OCIRequest):
    """
    Modify a route point DNIS announcement settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
        media_on_hold_source (OCI.mediaOnHoldSource): mediaOnHoldSource *Optional*
    """

    __slots__: List[str] = [
        "dnis_key",
        "media_on_hold_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
            E(
                "media_on_hold_source",
                "mediaOnHoldSource",
                OCI.CallCenterMediaOnHoldSourceModify17,
                is_complex=True,
            ),
        )


class GroupRoutePointModifyDNISAnnouncementRequest20(OCIRequest):
    """
    Modify a route point DNIS announcement settings.

    The response is either a `SuccessResponse()` or an `ErrorResponse()`.

    Attributes:
        dnis_key (OCI.dnisKey): dnisKey
        media_on_hold_source (OCI.mediaOnHoldSource): mediaOnHoldSource *Optional*
    """

    __slots__: List[str] = [
        "dnis_key",
        "media_on_hold_source",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("dnis_key", "dnisKey", OCI.DNISKey, is_complex=True, is_required=True),
            E(
                "media_on_hold_source",
                "mediaOnHoldSource",
                OCI.CallCenterMediaOnHoldSourceModify20,
                is_complex=True,
            ),
        )


class SystemSIPDeviceTypeAddRequest14sp6(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By : `SystemSIPDeviceTypeAddRequest15()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        rfc3264_hold (bool): RFC3264Hold
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        use_business_trunking_contact (bool): useBusinessTrunkingContact
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        tdm_overlay (bool): tdmOverlay
        supports_broad_works_info_for_call_waiting (bool):
            supportsBroadWorksINFOForCallWaiting
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "tdm_overlay",
        "supports_broad_works_info_for_call_waiting",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("rfc3264_hold", "RFC3264Hold", bool, is_required=True),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "use_business_trunking_contact",
                "useBusinessTrunkingContact",
                bool,
                is_required=True,
            ),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions14sp6,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E("tdm_overlay", "tdmOverlay", bool, is_required=True),
            E(
                "supports_broad_works_info_for_call_waiting",
                "supportsBroadWorksINFOForCallWaiting",
                bool,
                is_required=True,
            ),
        )


class SystemSIPDeviceTypeAddRequest15(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By : `SystemSIPDeviceTypeAddRequest16()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        rfc3264_hold (bool): RFC3264Hold
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        use_business_trunking_contact (bool): useBusinessTrunkingContact
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        tdm_overlay (bool): tdmOverlay
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "tdm_overlay",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("rfc3264_hold", "RFC3264Hold", bool, is_required=True),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "use_business_trunking_contact",
                "useBusinessTrunkingContact",
                bool,
                is_required=True,
            ),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions14sp6,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E("tdm_overlay", "tdmOverlay", bool, is_required=True),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
        )


class SystemSIPDeviceTypeAddRequest16(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemSIPDeviceTypeAddRequest16sp1()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        rfc3264_hold (bool): RFC3264Hold
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        use_business_trunking_contact (bool): useBusinessTrunkingContact
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("rfc3264_hold", "RFC3264Hold", bool, is_required=True),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "use_business_trunking_contact",
                "useBusinessTrunkingContact",
                bool,
                is_required=True,
            ),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions16,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
        )


class SystemSIPDeviceTypeAddRequest16sp1(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemSIPDeviceTypeAddRequest17()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        rfc3264_hold (bool): RFC3264Hold
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        use_business_trunking_contact (bool): useBusinessTrunkingContact
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("rfc3264_hold", "RFC3264Hold", bool, is_required=True),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "use_business_trunking_contact",
                "useBusinessTrunkingContact",
                bool,
                is_required=True,
            ),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
        )


class SystemSIPDeviceTypeAddRequest17(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        rfc3264_hold (bool): RFC3264Hold
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("rfc3264_hold", "RFC3264Hold", bool, is_required=True),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
        )


class SystemSIPDeviceTypeAddRequest17sp4(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemSIPDeviceTypeAddRequest18()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        rfc3264_hold (bool): RFC3264Hold
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("rfc3264_hold", "RFC3264Hold", bool, is_required=True),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
        )


class SystemSIPDeviceTypeAddRequest18(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are only used in XS data mode: enable3G4GContinuity Replaced by:
    `SystemSIPDeviceTypeAddRequest19()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        rfc3264_hold (bool): RFC3264Hold
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enable3_g4_g_continuity (bool): enable3G4GContinuity
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enable3_g4_g_continuity",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("rfc3264_hold", "RFC3264Hold", bool, is_required=True),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "enable3_g4_g_continuity",
                "enable3G4GContinuity",
                bool,
                is_required=True,
            ),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
        )


class SystemSIPDeviceTypeAddRequest18sp1(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are only used in XS data mode: enable3G4GContinuity, use value "false" in AS
    data mode The following elements are only used in AS data mode:
    holdAnnouncementMethod, use value "useInactive" in XS data mode The following element
    values are only applicable in AS data mode: holdNormalization=useRfc3264Hold will
    raise an error in XS data mode

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enable3_g4_g_continuity (bool): enable3G4GContinuity
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enable3_g4_g_continuity",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "enable3_g4_g_continuity",
                "enable3G4GContinuity",
                bool,
                is_required=True,
            ),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
        )


class SystemSIPDeviceTypeAddRequest19(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are only used in XS data mode: enable3G4GContinuity, use value "false" in AS
    data mode The following elements are only used in AS data mode:
    holdAnnouncementMethod, use value "useInactive" in XS data mode supportRFC3398, use
    value "false" in XS data mode The following element values are only applicable in AS
    data mode: holdNormalization=useRfc3264Hold will raise an error in XS data mode
    Replaced by: `SystemSIPDeviceTypeAddRequest19sp1()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enable3_g4_g_continuity (bool): enable3G4GContinuity
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enable3_g4_g_continuity",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "enable3_g4_g_continuity",
                "enable3G4GContinuity",
                bool,
                is_required=True,
            ),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
        )


class SystemSIPDeviceTypeAddRequest19sp1(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are only used in XS data mode: enable3G4GContinuity, use value "false" in AS
    data mode The following elements are only used in AS data mode:
    holdAnnouncementMethod, use value "useInactive" in XS data mode supportRFC3398, use
    value "false" in XS data mode bypassMediaTreatment, use value "false" in XS data mode
    The following element values are only applicable in AS data mode:
    holdNormalization=useRfc3264Hold will raise an error in XS data mode Replaced by:
    `SystemSIPDeviceTypeAddRequest20()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enable3_g4_g_continuity (bool): enable3G4GContinuity
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        bypass_media_treatment (bool): bypassMediaTreatment
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enable3_g4_g_continuity",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "bypass_media_treatment",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "enable3_g4_g_continuity",
                "enable3G4GContinuity",
                bool,
                is_required=True,
            ),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
        )


class SystemSIPDeviceTypeAddRequest20(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are only used in XS data mode: enable3G4GContinuity, use value "false" in AS
    data mode The following elements are only used in AS data mode:
    holdAnnouncementMethod, use value "useInactive" in XS data mode supportRFC3398, use
    value "false" in 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 The following element values
    are only applicable in AS data mode: holdNormalization=useRfc3264Hold will raise an
    error in XS data mode

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enable3_g4_g_continuity (bool): enable3G4GContinuity
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management (bool): supportVisualDeviceManagement
        bypass_media_treatment (bool): bypassMediaTreatment
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enable3_g4_g_continuity",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "enable3_g4_g_continuity",
                "enable3G4GContinuity",
                bool,
                is_required=True,
            ),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
        )


class SystemSIPDeviceTypeAddRequest20sp1(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are only used in HSS data mode: enable3G4GContinuity, use value "false" in AS
    data mode The following logic applies to these elements: macInCert macInNonRequestURI
    The two elements are mutually exclusive.  When both are set to true, the command
    fails.  The following elements are only used in AS data mode: holdAnnouncementMethod,
    use value "useInactive" in HSS data mode supportRFC3398, use value "false" in HSS data
    mode supportClientSessionInfo, use value "false" in HSS data mode
    supportCallInfoConferenceSubscriptionURI, use value "false" in HSS data mode
    supportRemotePartyInfo, use value "false" in HSS data mode The following element
    values are only applicable in AS data mode: holdNormalization=useRfc3264Hold will
    raise an error in HSS data mode Replaced by: SystemSIPDeviceTypeAddRequest21sp1V2.

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enable3_g4_g_continuity (bool): enable3G4GContinuity
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management (bool): supportVisualDeviceManagement
        bypass_media_treatment (bool): bypassMediaTreatment
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enable3_g4_g_continuity",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions21sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E(
                "enable3_g4_g_continuity",
                "enable3G4GContinuity",
                bool,
                is_required=True,
            ),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
        )


class SystemSIPDeviceTypeAddRequest21(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are only used in XS 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 The following elements are only used in AS data
    mode: holdAnnouncementMethod, use value "useInactive" in XS data mode supportRFC3398,
    use value "false" in 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 bypassMediaTreatment, use
    value "false" in XS data mode supportCauseParameter, use value "false" in XS data mode
    The following element values are only applicable in AS data mode:
    holdNormalization=useRfc3264Hold will raise an error in XS data mode The following
    elements are only used in AS data mode and ignored in XS data mode:
    supportCauseParameter Replaced by: `SystemSIPDeviceTypeAddRequest21sp1()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management (bool): supportVisualDeviceManagement
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
        )


class SystemSIPDeviceTypeAddRequest21sp1(OCIRequest):
    """
    Request to add a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are only used in XS 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
    The following elements are only used in AS data mode: holdAnnouncementMethod, use
    value "useInactive" in XS data mode supportRFC3398, use value "false" in 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 bypassMediaTreatment, use
    value "false" in XS data mode supportCauseParameter, use value "false" in XS data mode
    The following element values are only applicable in AS data mode:
    holdNormalization=useRfc3264Hold will raise an error in XS data mode The following
    elements are only used in AS data mode and ignored in XS data mode:
    supportCauseParameter Replaced by: SystemSIPDeviceTypeAddRequest21Sp1V2

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management (bool): supportVisualDeviceManagement
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
        )


class SystemSIPDeviceTypeAddRequest22(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 through out 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 supports3G4GContinuity publishesOwnPresence, use
    value "false" in AS data mode locationNetwork, use value "Fixed" in AS data mode The
    following elements are only used in AS data mode and ignored in the XS data mode:
    supportRFC3398, use value "false" in 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
    bypassMediaTreatment, use value "false" in XS data mode supportCauseParameter, use
    value "false" in XS data mode resellerId The following values for element profile are
    only used in AS data mode and an error is returned in the XS data mode: Non-
    intelligent Device Addressing 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.  Deprecated by:
    `SystemSIPDeviceTypeAddRequest22V2()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management (bool): supportVisualDeviceManagement
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions21sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
        )


class SystemSIPDeviceTypeAddRequest22V10(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 through out 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 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.  Replaced by:
    `SystemSIPDeviceTypeAddRequest23V7()`.

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        reset_string (str): resetString *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
        verstat_in_pai_header (bool): verstatInPAIHeader *Optional*
        verstat_in_from_header (bool): verstatInFromHeader *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "reset_string",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_visual_device_management_api",
        "device_category",
        "verstat_in_pai_header",
        "verstat_in_from_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V4,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E("reset_string", "resetString", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
            E("verstat_in_pai_header", "verstatInPAIHeader", bool),
            E("verstat_in_from_header", "verstatInFromHeader", bool),
        )


class SystemSIPDeviceTypeAddRequest22V2(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 through out 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 supports3G4GContinuity 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: supportRFC3398, use value "false" in 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 bypassMediaTreatment, use
    value "false" in XS data mode supportCauseParameter, use value "false" in XS data mode
    resellerId The following values for element profile are only used in AS data mode and
    an error is returned in the XS data mode: Non-intelligent Device Addressing
    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.  Deprecated by `SystemSIPDeviceTypeAddRequest22V3()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management (bool): supportVisualDeviceManagement
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        reseller_id (str): resellerId *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "reseller_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions21sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E("reseller_id", "resellerId", str),
        )


class SystemSIPDeviceTypeAddRequest22V3(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 through out 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
    supportVisualDeviceManagement, use value "false" in XS data mode bypassMediaTreatment,
    use value "false" in XS data mode supportCauseParameter, use value "false" in XS data
    mode resellerId 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): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management (bool): supportVisualDeviceManagement
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
        )


class SystemSIPDeviceTypeAddRequest22V4(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 through out 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
    supportVisualDeviceManagement, use value "false" in XS data mode bypassMediaTreatment,
    use value "false" in XS data mode supportCauseParameter, use value "false" in XS data
    mode resellerId 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.

    Replaced By: `SystemSIPDeviceTypeAddRequest23()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management (bool): supportVisualDeviceManagement
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V2,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
        )


class SystemSIPDeviceTypeAddRequest22V5(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 through out 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
    supportVisualDeviceManagement, use value "false" in XS data mode bypassMediaTreatment,
    use value "false" in XS data mode supportCauseParameter, use value "false" in XS data
    mode resellerId 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.  Deprecated by:
    `SystemSIPDeviceTypeAddRequest23V2()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management (bool): supportVisualDeviceManagement
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V3,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
        )


class SystemSIPDeviceTypeAddRequest22V6(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 through out 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 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.  Deprecated by:
    `SystemSIPDeviceTypeAddRequest23V3()` in AS data mode

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_visual_device_management_api",
        "device_category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V3,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
        )


class SystemSIPDeviceTypeAddRequest22V7(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 through out 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 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.

    Replaced By: `SystemSIPDeviceTypeAddRequest23V4()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_visual_device_management_api",
        "device_category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V3,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
        )


class SystemSIPDeviceTypeAddRequest22V8(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 through out 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 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.  Replaced by
    `SystemSIPDeviceTypeAddRequest23V5()`.

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
        verstat_in_pai_header (bool): verstatInPAIHeader *Optional*
        verstat_in_from_header (bool): verstatInFromHeader *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_visual_device_management_api",
        "device_category",
        "verstat_in_pai_header",
        "verstat_in_from_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V3,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
            E("verstat_in_pai_header", "verstatInPAIHeader", bool),
            E("verstat_in_from_header", "verstatInFromHeader", bool),
        )


class SystemSIPDeviceTypeAddRequest22V9(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 through out 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 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.  Replaced by
    `SystemSIPDeviceTypeAddRequest23V6()`.

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
        verstat_in_pai_header (bool): verstatInPAIHeader *Optional*
        verstat_in_from_header (bool): verstatInFromHeader *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_visual_device_management_api",
        "device_category",
        "verstat_in_pai_header",
        "verstat_in_from_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V4,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
            E("verstat_in_pai_header", "verstatInPAIHeader", bool),
            E("verstat_in_from_header", "verstatInFromHeader", bool),
        )


class SystemSIPDeviceTypeAddRequest23(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 through out 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
    supportVisualDeviceManagement, use value "false" in XS data mode bypassMediaTreatment,
    use value "false" in XS data mode supportCauseParameter, use value "false" in XS data
    mode supportCallingPartyCategoryInOutboundFromHeader, use value "true" in XS data mode
    resellerId 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.  Deprecated by:
    `SystemSIPDeviceTypeAddRequest23V2()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management (bool): supportVisualDeviceManagement
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        support_calling_party_category_in_outbound_from_header (bool):
            supportCallingPartyCategoryInOutboundFromHeader
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_calling_party_category_in_outbound_from_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V2,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E(
                "support_calling_party_category_in_outbound_from_header",
                "supportCallingPartyCategoryInOutboundFromHeader",
                bool,
                is_required=True,
            ),
        )


class SystemSIPDeviceTypeAddRequest23V2(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 through out 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
    supportVisualDeviceManagement, use value "false" in XS data mode bypassMediaTreatment,
    use value "false" in XS data mode supportCauseParameter, use value "false" in XS data
    mode supportCallingPartyCategoryInOutboundFromHeader, use value "true" in XS data mode
    resellerId 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): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management (bool): supportVisualDeviceManagement
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        support_calling_party_category_in_outbound_from_header (bool):
            supportCallingPartyCategoryInOutboundFromHeader
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_calling_party_category_in_outbound_from_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V3,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E(
                "support_calling_party_category_in_outbound_from_header",
                "supportCallingPartyCategoryInOutboundFromHeader",
                bool,
                is_required=True,
            ),
        )


class SystemSIPDeviceTypeAddRequest23V3(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 through out 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 supportCallingPartyCategoryInOutboundFromHeader, use
    value "true" in XS data mode resellerId supportVisualDeviceManagementAPI, use value
    "false" in XS data mode deviceCategory 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.

    Replaced By: `SystemSIPDeviceTypeAddRequest23V4()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        support_calling_party_category_in_outbound_from_header (bool):
            supportCallingPartyCategoryInOutboundFromHeader
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_calling_party_category_in_outbound_from_header",
        "support_visual_device_management_api",
        "device_category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V3,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E(
                "support_calling_party_category_in_outbound_from_header",
                "supportCallingPartyCategoryInOutboundFromHeader",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
        )


class SystemSIPDeviceTypeAddRequest23V4(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 through out 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 supportCallingPartyCategoryInOutboundFromHeader, use
    value "true" in XS data mode resellerId supportVisualDeviceManagementAPI, use value
    "false" in XS data mode deviceCategory 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.  Replaced by
    `SystemSIPDeviceTypeAddRequest23V5()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        support_calling_party_category_in_outbound_from_header (bool):
            supportCallingPartyCategoryInOutboundFromHeader
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
        add_to_file_server (bool): addToFileServer *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_calling_party_category_in_outbound_from_header",
        "support_visual_device_management_api",
        "device_category",
        "add_to_file_server",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V3,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E(
                "support_calling_party_category_in_outbound_from_header",
                "supportCallingPartyCategoryInOutboundFromHeader",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
            E("add_to_file_server", "addToFileServer", bool),
        )


class SystemSIPDeviceTypeAddRequest23V5(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 through out 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 supportCallingPartyCategoryInOutboundFromHeader, use
    value "true" in XS data mode resellerId supportVisualDeviceManagementAPI, use value
    "false" in XS data mode deviceCategory verstatInPAIHeader verstatInFromHeader 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.  Replaced by
    `SystemSIPDeviceTypeAddRequest23V6()`

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        support_calling_party_category_in_outbound_from_header (bool):
            supportCallingPartyCategoryInOutboundFromHeader
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
        add_to_file_server (bool): addToFileServer *Optional*
        verstat_in_pai_header (bool): verstatInPAIHeader *Optional*
        verstat_in_from_header (bool): verstatInFromHeader *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_calling_party_category_in_outbound_from_header",
        "support_visual_device_management_api",
        "device_category",
        "add_to_file_server",
        "verstat_in_pai_header",
        "verstat_in_from_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V3,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E(
                "support_calling_party_category_in_outbound_from_header",
                "supportCallingPartyCategoryInOutboundFromHeader",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
            E("add_to_file_server", "addToFileServer", bool),
            E("verstat_in_pai_header", "verstatInPAIHeader", bool),
            E("verstat_in_from_header", "verstatInFromHeader", bool),
        )


class SystemSIPDeviceTypeAddRequest23V6(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 through out 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 supportCallingPartyCategoryInOutboundFromHeader, use
    value "true" in XS data mode resellerId supportVisualDeviceManagementAPI, use value
    "false" in XS data mode deviceCategory verstatInPAIHeader verstatInFromHeader 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.  Replaced by:
    `SystemSIPDeviceTypeAddRequest23V7()` in AS mode.

    Attributes:
        device_type (str): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        support_calling_party_category_in_outbound_from_header (bool):
            supportCallingPartyCategoryInOutboundFromHeader
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
        verstat_in_pai_header (bool): verstatInPAIHeader *Optional*
        verstat_in_from_header (bool): verstatInFromHeader *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_calling_party_category_in_outbound_from_header",
        "support_visual_device_management_api",
        "device_category",
        "verstat_in_pai_header",
        "verstat_in_from_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V4,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E(
                "support_calling_party_category_in_outbound_from_header",
                "supportCallingPartyCategoryInOutboundFromHeader",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
            E("verstat_in_pai_header", "verstatInPAIHeader", bool),
            E("verstat_in_from_header", "verstatInFromHeader", bool),
        )


class SystemSIPDeviceTypeAddRequest23V7(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 through out 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 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): deviceType
        number_of_ports (OCI.numberOfPorts): numberOfPorts
        profile (str): profile
        registration_capable (bool): registrationCapable
        is_conference_device (bool): isConferenceDevice
        is_mobility_manager_device (bool): isMobilityManagerDevice
        is_music_on_hold_device (bool): isMusicOnHoldDevice
        hold_normalization (str): holdNormalization
        hold_announcement_method (str): holdAnnouncementMethod
        is_trusted (bool): isTrusted
        e164_capable (bool): E164Capable
        route_advance (bool): routeAdvance
        forwarding_override (bool): forwardingOverride
        wireless_integration (bool): wirelessIntegration
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable
        pbx_integration (bool): PBXIntegration
        static_registration_capable (bool): staticRegistrationCapable
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport
        authenticate_refer (bool): authenticateRefer
        auto_config_soft_client (bool): autoConfigSoftClient
        authentication_mode (str): authenticationMode
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
        requires_mwi_subscription (bool): requiresMWISubscription
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
        advice_of_charge_capable (bool): adviceOfChargeCapable
        reset_event (str): resetEvent *Optional*
        reset_string (str): resetString *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType
        trunk_mode (str): trunkMode
        add_p_called_party_id (bool): addPCalledPartyId
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy
        enhanced_for_ics (bool): enhancedForICS
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
        device_type_configuration_option (str): deviceTypeConfigurationOption
        support_rfc3398 (bool): supportRFC3398
        static_line_ordering (bool): staticLineOrdering
        support_client_session_info (bool): supportClientSessionInfo
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI
        support_remote_party_info (bool): supportRemotePartyInfo
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink
        bypass_media_treatment (bool): bypassMediaTreatment
        supports3_g4_g_continuity (bool): supports3G4GContinuity
        publishes_own_presence (bool): publishesOwnPresence
        support_cause_parameter (bool): supportCauseParameter
        location_network (str): locationNetwork
        reseller_id (str): resellerId *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI
        roaming_mode (str): roamingMode
        support_calling_party_category_in_outbound_from_header (bool):
            supportCallingPartyCategoryInOutboundFromHeader
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
        add_to_file_server (bool): addToFileServer *Optional*
        verstat_in_pai_header (bool): verstatInPAIHeader *Optional*
        verstat_in_from_header (bool): verstatInFromHeader *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "number_of_ports",
        "profile",
        "registration_capable",
        "is_conference_device",
        "is_mobility_manager_device",
        "is_music_on_hold_device",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "reset_string",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "device_type_configuration_option",
        "support_rfc3398",
        "static_line_ordering",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "reseller_id",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_calling_party_category_in_outbound_from_header",
        "support_visual_device_management_api",
        "device_category",
        "add_to_file_server",
        "verstat_in_pai_header",
        "verstat_in_from_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E(
                "number_of_ports",
                "numberOfPorts",
                OCI.UnboundedPositiveInt,
                is_complex=True,
                is_required=True,
            ),
            E("profile", "profile", str, is_required=True),
            E("registration_capable", "registrationCapable", bool, is_required=True),
            E("is_conference_device", "isConferenceDevice", bool, is_required=True),
            E(
                "is_mobility_manager_device",
                "isMobilityManagerDevice",
                bool,
                is_required=True,
            ),
            E("is_music_on_hold_device", "isMusicOnHoldDevice", bool, is_required=True),
            E("hold_normalization", "holdNormalization", str, is_required=True),
            E(
                "hold_announcement_method",
                "holdAnnouncementMethod",
                str,
                is_required=True,
            ),
            E("is_trusted", "isTrusted", bool, is_required=True),
            E("e164_capable", "E164Capable", bool, is_required=True),
            E("route_advance", "routeAdvance", bool, is_required=True),
            E("forwarding_override", "forwardingOverride", bool, is_required=True),
            E("wireless_integration", "wirelessIntegration", bool, is_required=True),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool, is_required=True),
            E("pbx_integration", "PBXIntegration", bool, is_required=True),
            E(
                "static_registration_capable",
                "staticRegistrationCapable",
                bool,
                is_required=True,
            ),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceOptions22V4,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str, is_required=True),
            E("authenticate_refer", "authenticateRefer", bool, is_required=True),
            E(
                "auto_config_soft_client",
                "autoConfigSoftClient",
                bool,
                is_required=True,
            ),
            E("authentication_mode", "authenticationMode", str, is_required=True),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
                is_required=True,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
                is_required=True,
            ),
            E(
                "requires_mwi_subscription",
                "requiresMWISubscription",
                bool,
                is_required=True,
            ),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
                is_required=True,
            ),
            E(
                "advice_of_charge_capable",
                "adviceOfChargeCapable",
                bool,
                is_required=True,
            ),
            E("reset_event", "resetEvent", str),
            E("reset_string", "resetString", str),
            E(
                "support_call_center_mime_type",
                "supportCallCenterMIMEType",
                bool,
                is_required=True,
            ),
            E("trunk_mode", "trunkMode", str, is_required=True),
            E("add_p_called_party_id", "addPCalledPartyId", bool, is_required=True),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
                is_required=True,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
                is_required=True,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool, is_required=True),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
                is_required=True,
            ),
            E(
                "device_type_configuration_option",
                "deviceTypeConfigurationOption",
                str,
                is_required=True,
            ),
            E("support_rfc3398", "supportRFC3398", bool, is_required=True),
            E("static_line_ordering", "staticLineOrdering", bool, is_required=True),
            E(
                "support_client_session_info",
                "supportClientSessionInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
                is_required=True,
            ),
            E(
                "support_remote_party_info",
                "supportRemotePartyInfo",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
                is_required=True,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool, is_required=True),
            E(
                "supports3_g4_g_continuity",
                "supports3G4GContinuity",
                bool,
                is_required=True,
            ),
            E("publishes_own_presence", "publishesOwnPresence", bool, is_required=True),
            E(
                "support_cause_parameter",
                "supportCauseParameter",
                bool,
                is_required=True,
            ),
            E("location_network", "locationNetwork", str, is_required=True),
            E("reseller_id", "resellerId", str),
            E(
                "allow_termination_based_on_icsi",
                "allowTerminationBasedOnICSI",
                bool,
                is_required=True,
            ),
            E("roaming_mode", "roamingMode", str, is_required=True),
            E(
                "support_calling_party_category_in_outbound_from_header",
                "supportCallingPartyCategoryInOutboundFromHeader",
                bool,
                is_required=True,
            ),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
            E("add_to_file_server", "addToFileServer", bool),
            E("verstat_in_pai_header", "verstatInPAIHeader", bool),
            E("verstat_in_from_header", "verstatInFromHeader", bool),
        )


class SystemSIPDeviceTypeModifyRequest(OCIRequest):
    """
    Request to modify a sip device type.

    The following elements are not changeable: numberOfPorts SignalingAddressType
    isConferenceDevice isMusicOnHoldDevice

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        authentication_override (bool): authenticationOverride *Optional*
        rfc3264_hold (bool): RFC3264Hold *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        use_business_trunking_contact (bool): useBusinessTrunkingContact *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "authentication_override",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("authentication_override", "authenticationOverride", bool),
            E("rfc3264_hold", "RFC3264Hold", bool),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("use_business_trunking_contact", "useBusinessTrunkingContact", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
        )


class SystemSIPDeviceTypeModifyRequest14sp2(OCIRequest):
    """
    Request to modify a sip device type.

    The following elements are not changeable: numberOfPorts SignalingAddressType
    isConferenceDevice isMusicOnHoldDevice isMobilityManagerDevice

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By : `SystemSIPDeviceTypeModifyRequest15()`

    Attributes:
        device_type (str): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        rfc3264_hold (bool): RFC3264Hold *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        use_business_trunking_contact (bool): useBusinessTrunkingContact *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
        authenticate_refer (bool): authenticateRefer *Optional*
        auto_config_soft_client (bool): autoConfigSoftClient *Optional*
        authentication_mode (str): authenticationMode *Optional*
        tdm_overlay (bool): tdmOverlay *Optional*
        supports_broad_works_info_for_call_waiting (bool):
            supportsBroadWorksINFOForCallWaiting *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "tdm_overlay",
        "supports_broad_works_info_for_call_waiting",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("rfc3264_hold", "RFC3264Hold", bool),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("use_business_trunking_contact", "useBusinessTrunkingContact", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
            E("authenticate_refer", "authenticateRefer", bool),
            E("auto_config_soft_client", "autoConfigSoftClient", bool),
            E("authentication_mode", "authenticationMode", str),
            E("tdm_overlay", "tdmOverlay", bool),
            E(
                "supports_broad_works_info_for_call_waiting",
                "supportsBroadWorksINFOForCallWaiting",
                bool,
            ),
        )


class SystemSIPDeviceTypeModifyRequest15(OCIRequest):
    """
    Request to modify a sip device type.

    The following elements are not changeable: numberOfPorts SignalingAddressType
    isConferenceDevice isMusicOnHoldDevice isMobilityManagerDevice

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By : `SystemSIPDeviceTypeModifyRequest16()`

    Attributes:
        device_type (str): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        rfc3264_hold (bool): RFC3264Hold *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        use_business_trunking_contact (bool): useBusinessTrunkingContact *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
        authenticate_refer (bool): authenticateRefer *Optional*
        auto_config_soft_client (bool): autoConfigSoftClient *Optional*
        authentication_mode (str): authenticationMode *Optional*
        tdm_overlay (bool): tdmOverlay *Optional*
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
            *Optional*
        requires_mwi_subscription (bool): requiresMWISubscription *Optional*
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
            *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "tdm_overlay",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("rfc3264_hold", "RFC3264Hold", bool),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("use_business_trunking_contact", "useBusinessTrunkingContact", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
            E("authenticate_refer", "authenticateRefer", bool),
            E("auto_config_soft_client", "autoConfigSoftClient", bool),
            E("authentication_mode", "authenticationMode", str),
            E("tdm_overlay", "tdmOverlay", bool),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
            ),
            E("requires_mwi_subscription", "requiresMWISubscription", bool),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
            ),
        )


class SystemSIPDeviceTypeModifyRequest16(OCIRequest):
    """
    Request to modify a sip device type.

    The following elements are not changeable: numberOfPorts SignalingAddressType
    isConferenceDevice isMusicOnHoldDevice isMobilityManagerDevice

    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `SystemSIPDeviceTypeModifyRequest16sp1()`

    Attributes:
        device_type (str): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        rfc3264_hold (bool): RFC3264Hold *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        use_business_trunking_contact (bool): useBusinessTrunkingContact *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
        authenticate_refer (bool): authenticateRefer *Optional*
        auto_config_soft_client (bool): autoConfigSoftClient *Optional*
        authentication_mode (str): authenticationMode *Optional*
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
            *Optional*
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
            *Optional*
        requires_mwi_subscription (bool): requiresMWISubscription *Optional*
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
            *Optional*
        advice_of_charge_capable (bool): adviceOfChargeCapable *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("rfc3264_hold", "RFC3264Hold", bool),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("use_business_trunking_contact", "useBusinessTrunkingContact", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions16,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
            E("authenticate_refer", "authenticateRefer", bool),
            E("auto_config_soft_client", "autoConfigSoftClient", bool),
            E("authentication_mode", "authenticationMode", str),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
            ),
            E("requires_mwi_subscription", "requiresMWISubscription", bool),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
            ),
            E("advice_of_charge_capable", "adviceOfChargeCapable", bool),
        )


class SystemSIPDeviceTypeModifyRequest16sp1(OCIRequest):
    """
    Request to modify a sip device type.

    The following elements are not changeable: numberOfPorts SignalingAddressType
    isConferenceDevice isMusicOnHoldDevice isMobilityManagerDevice

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        device_type (str): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        rfc3264_hold (bool): RFC3264Hold *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        use_business_trunking_contact (bool): useBusinessTrunkingContact *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
        authenticate_refer (bool): authenticateRefer *Optional*
        auto_config_soft_client (bool): autoConfigSoftClient *Optional*
        authentication_mode (str): authenticationMode *Optional*
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
            *Optional*
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
            *Optional*
        requires_mwi_subscription (bool): requiresMWISubscription *Optional*
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
            *Optional*
        advice_of_charge_capable (bool): adviceOfChargeCapable *Optional*
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "use_business_trunking_contact",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("rfc3264_hold", "RFC3264Hold", bool),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("use_business_trunking_contact", "useBusinessTrunkingContact", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
            E("authenticate_refer", "authenticateRefer", bool),
            E("auto_config_soft_client", "autoConfigSoftClient", bool),
            E("authentication_mode", "authenticationMode", str),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
            ),
            E("requires_mwi_subscription", "requiresMWISubscription", bool),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
            ),
            E("advice_of_charge_capable", "adviceOfChargeCapable", bool),
            E("reset_event", "resetEvent", str),
            E("support_call_center_mime_type", "supportCallCenterMIMEType", bool),
        )


class SystemSIPDeviceTypeModifyRequest17(OCIRequest):
    """
    Request to modify a sip device type.

    The following elements are not changeable: numberOfPorts SignalingAddressType
    isConferenceDevice isMusicOnHoldDevice isMobilityManagerDevice

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are only used in XS data mode: enable3G4GContinuity Replaced by:
    `SystemSIPDeviceTypeModifyRequest19()`

    Attributes:
        device_type (str): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        rfc3264_hold (bool): RFC3264Hold *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
        authenticate_refer (bool): authenticateRefer *Optional*
        auto_config_soft_client (bool): autoConfigSoftClient *Optional*
        authentication_mode (str): authenticationMode *Optional*
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
            *Optional*
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
            *Optional*
        requires_mwi_subscription (bool): requiresMWISubscription *Optional*
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
            *Optional*
        advice_of_charge_capable (bool): adviceOfChargeCapable *Optional*
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType *Optional*
        trunk_mode (str): trunkMode *Optional*
        add_p_called_party_id (bool): addPCalledPartyId *Optional*
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite *Optional*
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy *Optional*
        enable3_g4_g_continuity (bool): enable3G4GContinuity *Optional*
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
            *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "rfc3264_hold",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enable3_g4_g_continuity",
        "support_emergency_disconnect_control",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("rfc3264_hold", "RFC3264Hold", bool),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
            E("authenticate_refer", "authenticateRefer", bool),
            E("auto_config_soft_client", "autoConfigSoftClient", bool),
            E("authentication_mode", "authenticationMode", str),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
            ),
            E("requires_mwi_subscription", "requiresMWISubscription", bool),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
            ),
            E("advice_of_charge_capable", "adviceOfChargeCapable", bool),
            E("reset_event", "resetEvent", str),
            E("support_call_center_mime_type", "supportCallCenterMIMEType", bool),
            E("trunk_mode", "trunkMode", str),
            E("add_p_called_party_id", "addPCalledPartyId", bool),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
            ),
            E("enable3_g4_g_continuity", "enable3G4GContinuity", bool),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
            ),
        )


class SystemSIPDeviceTypeModifyRequest18sp1(OCIRequest):
    """
    Request to modify a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are not changeable: numberOfPorts SignalingAddressType isConferenceDevice
    isMusicOnHoldDevice isMobilityManagerDevice deviceTypeConfigurationOption
    staticLineOrdering The following elements are only used in XS data mode:
    enable3G4GContinuity allowTerminationBasedOnICSI The following elements are only used
    in AS data mode: holdAnnouncementMethod supportRFC3398 supportClientSessionInfo
    supportCallInfoConferenceSubscriptionURI supportRemotePartyInfo The following element
    values are only applicable in AS data mode: holdNormalization=useRfc3264Hold will
    raise an error in XS data mode

    Attributes:
        device_type (str): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        hold_normalization (str): holdNormalization *Optional*
        hold_announcement_method (str): holdAnnouncementMethod *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
        authenticate_refer (bool): authenticateRefer *Optional*
        auto_config_soft_client (bool): autoConfigSoftClient *Optional*
        authentication_mode (str): authenticationMode *Optional*
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
            *Optional*
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
            *Optional*
        requires_mwi_subscription (bool): requiresMWISubscription *Optional*
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
            *Optional*
        advice_of_charge_capable (bool): adviceOfChargeCapable *Optional*
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType *Optional*
        trunk_mode (str): trunkMode *Optional*
        add_p_called_party_id (bool): addPCalledPartyId *Optional*
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite *Optional*
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy *Optional*
        enable3_g4_g_continuity (bool): enable3G4GContinuity *Optional*
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
            *Optional*
        support_rfc3398 (bool): supportRFC3398 *Optional*
        support_client_session_info (bool): supportClientSessionInfo *Optional*
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI *Optional*
        support_remote_party_info (bool): supportRemotePartyInfo *Optional*
        support_visual_device_management (bool): supportVisualDeviceManagement *Optional*
        bypass_media_treatment (bool): bypassMediaTreatment *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enable3_g4_g_continuity",
        "support_emergency_disconnect_control",
        "support_rfc3398",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "allow_termination_based_on_icsi",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("hold_normalization", "holdNormalization", str),
            E("hold_announcement_method", "holdAnnouncementMethod", str),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
            E("authenticate_refer", "authenticateRefer", bool),
            E("auto_config_soft_client", "autoConfigSoftClient", bool),
            E("authentication_mode", "authenticationMode", str),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
            ),
            E("requires_mwi_subscription", "requiresMWISubscription", bool),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
            ),
            E("advice_of_charge_capable", "adviceOfChargeCapable", bool),
            E("reset_event", "resetEvent", str),
            E("support_call_center_mime_type", "supportCallCenterMIMEType", bool),
            E("trunk_mode", "trunkMode", str),
            E("add_p_called_party_id", "addPCalledPartyId", bool),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
            ),
            E("enable3_g4_g_continuity", "enable3G4GContinuity", bool),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
            ),
            E("support_rfc3398", "supportRFC3398", bool),
            E("support_client_session_info", "supportClientSessionInfo", bool),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
            ),
            E("support_remote_party_info", "supportRemotePartyInfo", bool),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool),
            E("allow_termination_based_on_icsi", "allowTerminationBasedOnICSI", bool),
        )


class SystemSIPDeviceTypeModifyRequest21(OCIRequest):
    """
    Request to modify a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are not changeable: numberOfPorts SignalingAddressType isConferenceDevice
    isMusicOnHoldDevice isMobilityManagerDevice deviceTypeConfigurationOption
    staticLineOrdering The following elements are only used in AS data mode and ignored in
    XS data mode: holdAnnouncementMethod supportRFC3398 supportClientSessionInfo
    supportCallInfoConferenceSubscriptionURI supportRemotePartyInfo
    supportVisualDeviceManagement bypassMediaTreatment supportCauseParameter The following
    elements are only used in XS data mode and ignored in AS mode: enhancedForICS
    supports3G4GContinuity publishesOwnPresence locationNetwork 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.  Replaced by:
    `SystemSIPDeviceTypeModifyRequest22()`

    Attributes:
        device_type (str): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        hold_normalization (str): holdNormalization *Optional*
        hold_announcement_method (str): holdAnnouncementMethod *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
        authenticate_refer (bool): authenticateRefer *Optional*
        auto_config_soft_client (bool): autoConfigSoftClient *Optional*
        authentication_mode (str): authenticationMode *Optional*
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
            *Optional*
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
            *Optional*
        requires_mwi_subscription (bool): requiresMWISubscription *Optional*
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
            *Optional*
        advice_of_charge_capable (bool): adviceOfChargeCapable *Optional*
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType *Optional*
        trunk_mode (str): trunkMode *Optional*
        add_p_called_party_id (bool): addPCalledPartyId *Optional*
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite *Optional*
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy *Optional*
        enhanced_for_ics (bool): enhancedForICS *Optional*
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
            *Optional*
        support_rfc3398 (bool): supportRFC3398 *Optional*
        support_client_session_info (bool): supportClientSessionInfo *Optional*
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI *Optional*
        support_remote_party_info (bool): supportRemotePartyInfo *Optional*
        support_visual_device_management (bool): supportVisualDeviceManagement *Optional*
        bypass_media_treatment (bool): bypassMediaTreatment *Optional*
        supports3_g4_g_continuity (bool): supports3G4GContinuity *Optional*
        publishes_own_presence (bool): publishesOwnPresence *Optional*
        support_cause_parameter (bool): supportCauseParameter *Optional*
        location_network (str): locationNetwork *Optional*
        roaming_mode (str): roamingMode *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "support_rfc3398",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "roaming_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("hold_normalization", "holdNormalization", str),
            E("hold_announcement_method", "holdAnnouncementMethod", str),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
            E("authenticate_refer", "authenticateRefer", bool),
            E("auto_config_soft_client", "autoConfigSoftClient", bool),
            E("authentication_mode", "authenticationMode", str),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
            ),
            E("requires_mwi_subscription", "requiresMWISubscription", bool),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
            ),
            E("advice_of_charge_capable", "adviceOfChargeCapable", bool),
            E("reset_event", "resetEvent", str),
            E("support_call_center_mime_type", "supportCallCenterMIMEType", bool),
            E("trunk_mode", "trunkMode", str),
            E("add_p_called_party_id", "addPCalledPartyId", bool),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
            ),
            E("support_rfc3398", "supportRFC3398", bool),
            E("support_client_session_info", "supportClientSessionInfo", bool),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
            ),
            E("support_remote_party_info", "supportRemotePartyInfo", bool),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool),
            E("supports3_g4_g_continuity", "supports3G4GContinuity", bool),
            E("publishes_own_presence", "publishesOwnPresence", bool),
            E("support_cause_parameter", "supportCauseParameter", bool),
            E("location_network", "locationNetwork", str),
            E("roaming_mode", "roamingMode", str),
        )


class SystemSIPDeviceTypeModifyRequest22(OCIRequest):
    """
    Request to modify a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are not changeable: numberOfPorts 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 supportVisualDeviceManagement bypassMediaTreatment
    supportCauseParameter 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): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        hold_normalization (str): holdNormalization *Optional*
        hold_announcement_method (str): holdAnnouncementMethod *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
        authenticate_refer (bool): authenticateRefer *Optional*
        auto_config_soft_client (bool): autoConfigSoftClient *Optional*
        authentication_mode (str): authenticationMode *Optional*
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
            *Optional*
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
            *Optional*
        requires_mwi_subscription (bool): requiresMWISubscription *Optional*
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
            *Optional*
        advice_of_charge_capable (bool): adviceOfChargeCapable *Optional*
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType *Optional*
        trunk_mode (str): trunkMode *Optional*
        add_p_called_party_id (bool): addPCalledPartyId *Optional*
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite *Optional*
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy *Optional*
        enhanced_for_ics (bool): enhancedForICS *Optional*
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
            *Optional*
        support_rfc3398 (bool): supportRFC3398 *Optional*
        support_client_session_info (bool): supportClientSessionInfo *Optional*
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI *Optional*
        support_remote_party_info (bool): supportRemotePartyInfo *Optional*
        support_visual_device_management (bool): supportVisualDeviceManagement *Optional*
        bypass_media_treatment (bool): bypassMediaTreatment *Optional*
        supports3_g4_g_continuity (bool): supports3G4GContinuity *Optional*
        publishes_own_presence (bool): publishesOwnPresence *Optional*
        support_cause_parameter (bool): supportCauseParameter *Optional*
        location_network (str): locationNetwork *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI *Optional*
        roaming_mode (str): roamingMode *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "support_rfc3398",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "allow_termination_based_on_icsi",
        "roaming_mode",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("hold_normalization", "holdNormalization", str),
            E("hold_announcement_method", "holdAnnouncementMethod", str),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions16sp1,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
            E("authenticate_refer", "authenticateRefer", bool),
            E("auto_config_soft_client", "autoConfigSoftClient", bool),
            E("authentication_mode", "authenticationMode", str),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
            ),
            E("requires_mwi_subscription", "requiresMWISubscription", bool),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
            ),
            E("advice_of_charge_capable", "adviceOfChargeCapable", bool),
            E("reset_event", "resetEvent", str),
            E("support_call_center_mime_type", "supportCallCenterMIMEType", bool),
            E("trunk_mode", "trunkMode", str),
            E("add_p_called_party_id", "addPCalledPartyId", bool),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
            ),
            E("support_rfc3398", "supportRFC3398", bool),
            E("support_client_session_info", "supportClientSessionInfo", bool),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
            ),
            E("support_remote_party_info", "supportRemotePartyInfo", bool),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool),
            E("supports3_g4_g_continuity", "supports3G4GContinuity", bool),
            E("publishes_own_presence", "publishesOwnPresence", bool),
            E("support_cause_parameter", "supportCauseParameter", bool),
            E("location_network", "locationNetwork", str),
            E("allow_termination_based_on_icsi", "allowTerminationBasedOnICSI", bool),
            E("roaming_mode", "roamingMode", str),
        )


class SystemSIPDeviceTypeModifyRequest22V2(OCIRequest):
    """
    Request to modify a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are not changeable: numberOfPorts 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 supportVisualDeviceManagement bypassMediaTreatment
    supportCauseParameter supportCallingPartyCategoryInOutboundFromHeader 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.  Replaced by: `SystemSIPDeviceTypeModifyRequest22V3()` in AS data
    mode.

    Attributes:
        device_type (str): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        hold_normalization (str): holdNormalization *Optional*
        hold_announcement_method (str): holdAnnouncementMethod *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
        authenticate_refer (bool): authenticateRefer *Optional*
        auto_config_soft_client (bool): autoConfigSoftClient *Optional*
        authentication_mode (str): authenticationMode *Optional*
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
            *Optional*
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
            *Optional*
        requires_mwi_subscription (bool): requiresMWISubscription *Optional*
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
            *Optional*
        advice_of_charge_capable (bool): adviceOfChargeCapable *Optional*
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType *Optional*
        trunk_mode (str): trunkMode *Optional*
        add_p_called_party_id (bool): addPCalledPartyId *Optional*
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite *Optional*
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy *Optional*
        enhanced_for_ics (bool): enhancedForICS *Optional*
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
            *Optional*
        support_rfc3398 (bool): supportRFC3398 *Optional*
        support_client_session_info (bool): supportClientSessionInfo *Optional*
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI *Optional*
        support_remote_party_info (bool): supportRemotePartyInfo *Optional*
        support_visual_device_management (bool): supportVisualDeviceManagement *Optional*
        bypass_media_treatment (bool): bypassMediaTreatment *Optional*
        supports3_g4_g_continuity (bool): supports3G4GContinuity *Optional*
        publishes_own_presence (bool): publishesOwnPresence *Optional*
        support_cause_parameter (bool): supportCauseParameter *Optional*
        location_network (str): locationNetwork *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI *Optional*
        roaming_mode (str): roamingMode *Optional*
        support_calling_party_category_in_outbound_from_header (bool):
            supportCallingPartyCategoryInOutboundFromHeader *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "support_rfc3398",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_calling_party_category_in_outbound_from_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("hold_normalization", "holdNormalization", str),
            E("hold_announcement_method", "holdAnnouncementMethod", str),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions22,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
            E("authenticate_refer", "authenticateRefer", bool),
            E("auto_config_soft_client", "autoConfigSoftClient", bool),
            E("authentication_mode", "authenticationMode", str),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
            ),
            E("requires_mwi_subscription", "requiresMWISubscription", bool),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
            ),
            E("advice_of_charge_capable", "adviceOfChargeCapable", bool),
            E("reset_event", "resetEvent", str),
            E("support_call_center_mime_type", "supportCallCenterMIMEType", bool),
            E("trunk_mode", "trunkMode", str),
            E("add_p_called_party_id", "addPCalledPartyId", bool),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
            ),
            E("support_rfc3398", "supportRFC3398", bool),
            E("support_client_session_info", "supportClientSessionInfo", bool),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
            ),
            E("support_remote_party_info", "supportRemotePartyInfo", bool),
            E(
                "support_visual_device_management",
                "supportVisualDeviceManagement",
                bool,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool),
            E("supports3_g4_g_continuity", "supports3G4GContinuity", bool),
            E("publishes_own_presence", "publishesOwnPresence", bool),
            E("support_cause_parameter", "supportCauseParameter", bool),
            E("location_network", "locationNetwork", str),
            E("allow_termination_based_on_icsi", "allowTerminationBasedOnICSI", bool),
            E("roaming_mode", "roamingMode", str),
            E(
                "support_calling_party_category_in_outbound_from_header",
                "supportCallingPartyCategoryInOutboundFromHeader",
                bool,
            ),
        )


class SystemSIPDeviceTypeModifyRequest22V3(OCIRequest):
    """
    Request to modify a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are not changeable: numberOfPorts 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 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.

    Replaced By: `SystemSIPDeviceTypeModifyRequest22V4()`

    Attributes:
        device_type (str): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        hold_normalization (str): holdNormalization *Optional*
        hold_announcement_method (str): holdAnnouncementMethod *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
        authenticate_refer (bool): authenticateRefer *Optional*
        auto_config_soft_client (bool): autoConfigSoftClient *Optional*
        authentication_mode (str): authenticationMode *Optional*
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
            *Optional*
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
            *Optional*
        requires_mwi_subscription (bool): requiresMWISubscription *Optional*
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
            *Optional*
        advice_of_charge_capable (bool): adviceOfChargeCapable *Optional*
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType *Optional*
        trunk_mode (str): trunkMode *Optional*
        add_p_called_party_id (bool): addPCalledPartyId *Optional*
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite *Optional*
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy *Optional*
        enhanced_for_ics (bool): enhancedForICS *Optional*
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
            *Optional*
        support_rfc3398 (bool): supportRFC3398 *Optional*
        support_client_session_info (bool): supportClientSessionInfo *Optional*
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI *Optional*
        support_remote_party_info (bool): supportRemotePartyInfo *Optional*
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink *Optional*
        bypass_media_treatment (bool): bypassMediaTreatment *Optional*
        supports3_g4_g_continuity (bool): supports3G4GContinuity *Optional*
        publishes_own_presence (bool): publishesOwnPresence *Optional*
        support_cause_parameter (bool): supportCauseParameter *Optional*
        location_network (str): locationNetwork *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI *Optional*
        roaming_mode (str): roamingMode *Optional*
        support_calling_party_category_in_outbound_from_header (bool):
            supportCallingPartyCategoryInOutboundFromHeader *Optional*
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "support_rfc3398",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_calling_party_category_in_outbound_from_header",
        "support_visual_device_management_api",
        "device_category",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("hold_normalization", "holdNormalization", str),
            E("hold_announcement_method", "holdAnnouncementMethod", str),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions22,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
            E("authenticate_refer", "authenticateRefer", bool),
            E("auto_config_soft_client", "autoConfigSoftClient", bool),
            E("authentication_mode", "authenticationMode", str),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
            ),
            E("requires_mwi_subscription", "requiresMWISubscription", bool),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
            ),
            E("advice_of_charge_capable", "adviceOfChargeCapable", bool),
            E("reset_event", "resetEvent", str),
            E("support_call_center_mime_type", "supportCallCenterMIMEType", bool),
            E("trunk_mode", "trunkMode", str),
            E("add_p_called_party_id", "addPCalledPartyId", bool),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
            ),
            E("support_rfc3398", "supportRFC3398", bool),
            E("support_client_session_info", "supportClientSessionInfo", bool),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
            ),
            E("support_remote_party_info", "supportRemotePartyInfo", bool),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool),
            E("supports3_g4_g_continuity", "supports3G4GContinuity", bool),
            E("publishes_own_presence", "publishesOwnPresence", bool),
            E("support_cause_parameter", "supportCauseParameter", bool),
            E("location_network", "locationNetwork", str),
            E("allow_termination_based_on_icsi", "allowTerminationBasedOnICSI", bool),
            E("roaming_mode", "roamingMode", str),
            E(
                "support_calling_party_category_in_outbound_from_header",
                "supportCallingPartyCategoryInOutboundFromHeader",
                bool,
            ),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
        )


class SystemSIPDeviceTypeModifyRequest22V4(OCIRequest):
    """
    Request to modify a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are not changeable: numberOfPorts 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
    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.  Replaced by: `SystemSIPDeviceTypeModifyRequest22V5()`

    Attributes:
        device_type (str): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        hold_normalization (str): holdNormalization *Optional*
        hold_announcement_method (str): holdAnnouncementMethod *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
        authenticate_refer (bool): authenticateRefer *Optional*
        auto_config_soft_client (bool): autoConfigSoftClient *Optional*
        authentication_mode (str): authenticationMode *Optional*
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
            *Optional*
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
            *Optional*
        requires_mwi_subscription (bool): requiresMWISubscription *Optional*
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
            *Optional*
        advice_of_charge_capable (bool): adviceOfChargeCapable *Optional*
        reset_event (str): resetEvent *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType *Optional*
        trunk_mode (str): trunkMode *Optional*
        add_p_called_party_id (bool): addPCalledPartyId *Optional*
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite *Optional*
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy *Optional*
        enhanced_for_ics (bool): enhancedForICS *Optional*
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
            *Optional*
        support_rfc3398 (bool): supportRFC3398 *Optional*
        support_client_session_info (bool): supportClientSessionInfo *Optional*
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI *Optional*
        support_remote_party_info (bool): supportRemotePartyInfo *Optional*
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink *Optional*
        bypass_media_treatment (bool): bypassMediaTreatment *Optional*
        supports3_g4_g_continuity (bool): supports3G4GContinuity *Optional*
        publishes_own_presence (bool): publishesOwnPresence *Optional*
        support_cause_parameter (bool): supportCauseParameter *Optional*
        location_network (str): locationNetwork *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI *Optional*
        roaming_mode (str): roamingMode *Optional*
        support_calling_party_category_in_outbound_from_header (bool):
            supportCallingPartyCategoryInOutboundFromHeader *Optional*
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
        verstat_in_pai_header (bool): verstatInPAIHeader *Optional*
        verstat_in_from_header (bool): verstatInFromHeader *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "support_rfc3398",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_calling_party_category_in_outbound_from_header",
        "support_visual_device_management_api",
        "device_category",
        "verstat_in_pai_header",
        "verstat_in_from_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("hold_normalization", "holdNormalization", str),
            E("hold_announcement_method", "holdAnnouncementMethod", str),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions22,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
            E("authenticate_refer", "authenticateRefer", bool),
            E("auto_config_soft_client", "autoConfigSoftClient", bool),
            E("authentication_mode", "authenticationMode", str),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
            ),
            E("requires_mwi_subscription", "requiresMWISubscription", bool),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
            ),
            E("advice_of_charge_capable", "adviceOfChargeCapable", bool),
            E("reset_event", "resetEvent", str),
            E("support_call_center_mime_type", "supportCallCenterMIMEType", bool),
            E("trunk_mode", "trunkMode", str),
            E("add_p_called_party_id", "addPCalledPartyId", bool),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
            ),
            E("support_rfc3398", "supportRFC3398", bool),
            E("support_client_session_info", "supportClientSessionInfo", bool),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
            ),
            E("support_remote_party_info", "supportRemotePartyInfo", bool),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool),
            E("supports3_g4_g_continuity", "supports3G4GContinuity", bool),
            E("publishes_own_presence", "publishesOwnPresence", bool),
            E("support_cause_parameter", "supportCauseParameter", bool),
            E("location_network", "locationNetwork", str),
            E("allow_termination_based_on_icsi", "allowTerminationBasedOnICSI", bool),
            E("roaming_mode", "roamingMode", str),
            E(
                "support_calling_party_category_in_outbound_from_header",
                "supportCallingPartyCategoryInOutboundFromHeader",
                bool,
            ),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
            E("verstat_in_pai_header", "verstatInPAIHeader", bool),
            E("verstat_in_from_header", "verstatInFromHeader", bool),
        )


class SystemSIPDeviceTypeModifyRequest22V5(OCIRequest):
    """
    Request to modify a sip device type.

    The response is either `SuccessResponse()` or `ErrorResponse()`. The following
    elements are not changeable: numberOfPorts 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
    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): deviceType
        is_obsolete (bool): isObsolete *Optional*
        registration_capable (bool): registrationCapable *Optional*
        hold_normalization (str): holdNormalization *Optional*
        hold_announcement_method (str): holdAnnouncementMethod *Optional*
        is_trusted (bool): isTrusted *Optional*
        e164_capable (bool): E164Capable *Optional*
        route_advance (bool): routeAdvance *Optional*
        forwarding_override (bool): forwardingOverride *Optional*
        wireless_integration (bool): wirelessIntegration *Optional*
        web_based_config_url (str): webBasedConfigURL *Optional*
        is_video_capable (bool): isVideoCapable *Optional*
        pbx_integration (bool): PBXIntegration *Optional*
        static_registration_capable (bool): staticRegistrationCapable *Optional*
        cpe_device_options (OCI.cpeDeviceOptions): cpeDeviceOptions *Optional*
        early_media_support (str): earlyMediaSupport *Optional*
        authenticate_refer (bool): authenticateRefer *Optional*
        auto_config_soft_client (bool): autoConfigSoftClient *Optional*
        authentication_mode (str): authenticationMode *Optional*
        requires_broad_works_digit_collection (bool): requiresBroadWorksDigitCollection
            *Optional*
        requires_broad_works_call_waiting_tone (bool): requiresBroadWorksCallWaitingTone
            *Optional*
        requires_mwi_subscription (bool): requiresMWISubscription *Optional*
        use_history_info_header_on_access_side (bool): useHistoryInfoHeaderOnAccessSide
            *Optional*
        advice_of_charge_capable (bool): adviceOfChargeCapable *Optional*
        reset_event (str): resetEvent *Optional*
        reset_string (str): resetString *Optional*
        support_call_center_mime_type (bool): supportCallCenterMIMEType *Optional*
        trunk_mode (str): trunkMode *Optional*
        add_p_called_party_id (bool): addPCalledPartyId *Optional*
        support_identity_in_update_and_re_invite (bool):
            supportIdentityInUpdateAndReInvite *Optional*
        unscreened_presentation_identity_policy (str):
            unscreenedPresentationIdentityPolicy *Optional*
        enhanced_for_ics (bool): enhancedForICS *Optional*
        support_emergency_disconnect_control (bool): supportEmergencyDisconnectControl
            *Optional*
        support_rfc3398 (bool): supportRFC3398 *Optional*
        support_client_session_info (bool): supportClientSessionInfo *Optional*
        support_call_info_conference_subscription_uri (bool):
            supportCallInfoConferenceSubscriptionURI *Optional*
        support_remote_party_info (bool): supportRemotePartyInfo *Optional*
        support_visual_device_management_redirect_link (bool):
            supportVisualDeviceManagementRedirectLink *Optional*
        bypass_media_treatment (bool): bypassMediaTreatment *Optional*
        supports3_g4_g_continuity (bool): supports3G4GContinuity *Optional*
        publishes_own_presence (bool): publishesOwnPresence *Optional*
        support_cause_parameter (bool): supportCauseParameter *Optional*
        location_network (str): locationNetwork *Optional*
        allow_termination_based_on_icsi (bool): allowTerminationBasedOnICSI *Optional*
        roaming_mode (str): roamingMode *Optional*
        support_calling_party_category_in_outbound_from_header (bool):
            supportCallingPartyCategoryInOutboundFromHeader *Optional*
        support_visual_device_management_api (bool): supportVisualDeviceManagementAPI
            *Optional*
        device_category (str): deviceCategory *Optional*
        verstat_in_pai_header (bool): verstatInPAIHeader *Optional*
        verstat_in_from_header (bool): verstatInFromHeader *Optional*
    """

    __slots__: List[str] = [
        "device_type",
        "is_obsolete",
        "registration_capable",
        "hold_normalization",
        "hold_announcement_method",
        "is_trusted",
        "e164_capable",
        "route_advance",
        "forwarding_override",
        "wireless_integration",
        "web_based_config_url",
        "is_video_capable",
        "pbx_integration",
        "static_registration_capable",
        "cpe_device_options",
        "early_media_support",
        "authenticate_refer",
        "auto_config_soft_client",
        "authentication_mode",
        "requires_broad_works_digit_collection",
        "requires_broad_works_call_waiting_tone",
        "requires_mwi_subscription",
        "use_history_info_header_on_access_side",
        "advice_of_charge_capable",
        "reset_event",
        "reset_string",
        "support_call_center_mime_type",
        "trunk_mode",
        "add_p_called_party_id",
        "support_identity_in_update_and_re_invite",
        "unscreened_presentation_identity_policy",
        "enhanced_for_ics",
        "support_emergency_disconnect_control",
        "support_rfc3398",
        "support_client_session_info",
        "support_call_info_conference_subscription_uri",
        "support_remote_party_info",
        "support_visual_device_management_redirect_link",
        "bypass_media_treatment",
        "supports3_g4_g_continuity",
        "publishes_own_presence",
        "support_cause_parameter",
        "location_network",
        "allow_termination_based_on_icsi",
        "roaming_mode",
        "support_calling_party_category_in_outbound_from_header",
        "support_visual_device_management_api",
        "device_category",
        "verstat_in_pai_header",
        "verstat_in_from_header",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("device_type", "deviceType", str, is_required=True),
            E("is_obsolete", "isObsolete", bool),
            E("registration_capable", "registrationCapable", bool),
            E("hold_normalization", "holdNormalization", str),
            E("hold_announcement_method", "holdAnnouncementMethod", str),
            E("is_trusted", "isTrusted", bool),
            E("e164_capable", "E164Capable", bool),
            E("route_advance", "routeAdvance", bool),
            E("forwarding_override", "forwardingOverride", bool),
            E("wireless_integration", "wirelessIntegration", bool),
            E("web_based_config_url", "webBasedConfigURL", str),
            E("is_video_capable", "isVideoCapable", bool),
            E("pbx_integration", "PBXIntegration", bool),
            E("static_registration_capable", "staticRegistrationCapable", bool),
            E(
                "cpe_device_options",
                "cpeDeviceOptions",
                OCI.CPEDeviceModifyOptions22,
                is_complex=True,
            ),
            E("early_media_support", "earlyMediaSupport", str),
            E("authenticate_refer", "authenticateRefer", bool),
            E("auto_config_soft_client", "autoConfigSoftClient", bool),
            E("authentication_mode", "authenticationMode", str),
            E(
                "requires_broad_works_digit_collection",
                "requiresBroadWorksDigitCollection",
                bool,
            ),
            E(
                "requires_broad_works_call_waiting_tone",
                "requiresBroadWorksCallWaitingTone",
                bool,
            ),
            E("requires_mwi_subscription", "requiresMWISubscription", bool),
            E(
                "use_history_info_header_on_access_side",
                "useHistoryInfoHeaderOnAccessSide",
                bool,
            ),
            E("advice_of_charge_capable", "adviceOfChargeCapable", bool),
            E("reset_event", "resetEvent", str),
            E("reset_string", "resetString", str),
            E("support_call_center_mime_type", "supportCallCenterMIMEType", bool),
            E("trunk_mode", "trunkMode", str),
            E("add_p_called_party_id", "addPCalledPartyId", bool),
            E(
                "support_identity_in_update_and_re_invite",
                "supportIdentityInUpdateAndReInvite",
                bool,
            ),
            E(
                "unscreened_presentation_identity_policy",
                "unscreenedPresentationIdentityPolicy",
                str,
            ),
            E("enhanced_for_ics", "enhancedForICS", bool),
            E(
                "support_emergency_disconnect_control",
                "supportEmergencyDisconnectControl",
                bool,
            ),
            E("support_rfc3398", "supportRFC3398", bool),
            E("support_client_session_info", "supportClientSessionInfo", bool),
            E(
                "support_call_info_conference_subscription_uri",
                "supportCallInfoConferenceSubscriptionURI",
                bool,
            ),
            E("support_remote_party_info", "supportRemotePartyInfo", bool),
            E(
                "support_visual_device_management_redirect_link",
                "supportVisualDeviceManagementRedirectLink",
                bool,
            ),
            E("bypass_media_treatment", "bypassMediaTreatment", bool),
            E("supports3_g4_g_continuity", "supports3G4GContinuity", bool),
            E("publishes_own_presence", "publishesOwnPresence", bool),
            E("support_cause_parameter", "supportCauseParameter", bool),
            E("location_network", "locationNetwork", str),
            E("allow_termination_based_on_icsi", "allowTerminationBasedOnICSI", bool),
            E("roaming_mode", "roamingMode", str),
            E(
                "support_calling_party_category_in_outbound_from_header",
                "supportCallingPartyCategoryInOutboundFromHeader",
                bool,
            ),
            E(
                "support_visual_device_management_api",
                "supportVisualDeviceManagementAPI",
                bool,
            ),
            E("device_category", "deviceCategory", str),
            E("verstat_in_pai_header", "verstatInPAIHeader", bool),
            E("verstat_in_from_header", "verstatInFromHeader", bool),
        )


class UserAddRequest22(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 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 alternateUserId The
    following elements can only be used by a provisioning administrator:. alternateUserId
    The response is either `SuccessResponse()` or `ErrorResponse()`. Replaced by:
    `UserAddRequest22V2()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        user_id (str): userId
        last_name (str): lastName
        first_name (str): firstName
        calling_line_id_last_name (str): callingLineIdLastName
        calling_line_id_first_name (str): callingLineIdFirstName
        name_dialing_name (OCI.nameDialingName): nameDialingName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        password (str): password *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        alias (List[str]): alias *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        trunk_addressing (OCI.trunkAddressing): trunkAddressing *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        alternate_user_id (List[OCI.alternateUserId]): alternateUserId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "name_dialing_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "extension",
        "calling_line_id_phone_number",
        "password",
        "department",
        "language",
        "time_zone",
        "alias",
        "access_device_endpoint",
        "trunk_addressing",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "alternate_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("user_id", "userId", str, is_required=True),
            E("last_name", "lastName", str, is_required=True),
            E("first_name", "firstName", str, is_required=True),
            E(
                "calling_line_id_last_name",
                "callingLineIdLastName",
                str,
                is_required=True,
            ),
            E(
                "calling_line_id_first_name",
                "callingLineIdFirstName",
                str,
                is_required=True,
            ),
            E(
                "name_dialing_name",
                "nameDialingName",
                OCI.NameDialingName,
                is_complex=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("password", "password", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E("alias", "alias", str, is_array=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceMultipleIdentityAndContactEndpointAdd22,
                is_complex=True,
            ),
            E(
                "trunk_addressing",
                "trunkAddressing",
                OCI.TrunkAddressingMultipleContactAdd22,
                is_complex=True,
            ),
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "alternate_user_id",
                "alternateUserId",
                OCI.AlternateUserIdEntry,
                is_complex=True,
                is_array=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 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 alternateUserId The
    following elements can only be used by a provisioning administrator:. alternateUserId
    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        user_id (str): userId
        last_name (str): lastName
        first_name (str): firstName
        calling_line_id_last_name (str): callingLineIdLastName
        calling_line_id_first_name (str): callingLineIdFirstName
        name_dialing_name (OCI.nameDialingName): nameDialingName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        password (str): password *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        alias (List[str]): alias *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        trunk_addressing (OCI.trunkAddressing): trunkAddressing *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        alternate_user_id (List[OCI.alternateUserId]): alternateUserId *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "name_dialing_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "extension",
        "calling_line_id_phone_number",
        "password",
        "department",
        "language",
        "time_zone",
        "alias",
        "access_device_endpoint",
        "trunk_addressing",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "alternate_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("user_id", "userId", str, is_required=True),
            E("last_name", "lastName", str, is_required=True),
            E("first_name", "firstName", str, is_required=True),
            E(
                "calling_line_id_last_name",
                "callingLineIdLastName",
                str,
                is_required=True,
            ),
            E(
                "calling_line_id_first_name",
                "callingLineIdFirstName",
                str,
                is_required=True,
            ),
            E(
                "name_dialing_name",
                "nameDialingName",
                OCI.NameDialingName,
                is_complex=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("password", "password", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E("alias", "alias", str, is_array=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceMultipleIdentityAndContactEndpointAdd22V2,
                is_complex=True,
            ),
            E(
                "trunk_addressing",
                "trunkAddressing",
                OCI.TrunkAddressingMultipleContactAdd22,
                is_complex=True,
            ),
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "alternate_user_id",
                "alternateUserId",
                OCI.AlternateUserIdEntry,
                is_complex=True,
                is_array=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): supervisorUserId
        name (str): name
        new_name (str): newName *Optional*
        description (str): description *Optional*
        schedule (OCI.schedule): schedule *Optional*
        sampling_period (str): samplingPeriod *Optional*
        start_day_of_week (str): startDayOfWeek *Optional*
        report_time_zone (str): reportTimeZone *Optional*
        report_date_format (str): reportDateFormat *Optional*
        report_time_format (str): reportTimeFormat *Optional*
        report_interval (OCI.reportInterval): reportInterval *Optional*
        report_format (str): reportFormat *Optional*
        agent (OCI.agent): agent *Optional*
        call_center (OCI.callCenter): callCenter *Optional*
        dnis (OCI.dnis): dnis *Optional*
        call_completion_threshold_seconds (int): callCompletionThresholdSeconds *Optional*
        short_duration_threshold_seconds (int): shortDurationThresholdSeconds *Optional*
        service_level_threshold_seconds (OCI.serviceLevelThresholdSeconds):
            serviceLevelThresholdSeconds *Optional*
        service_level_inclusions (OCI.serviceLevelInclusions): serviceLevelInclusions
            *Optional*
        service_level_objective_percentage (int): serviceLevelObjectivePercentage
            *Optional*
        abandoned_call_threshold_seconds (OCI.abandonedCallThresholdSeconds):
            abandonedCallThresholdSeconds *Optional*
        email_address (OCI.emailAddress): emailAddress *Optional*
    """

    __slots__: List[str] = [
        "supervisor_user_id",
        "name",
        "new_name",
        "description",
        "schedule",
        "sampling_period",
        "start_day_of_week",
        "report_time_zone",
        "report_date_format",
        "report_time_format",
        "report_interval",
        "report_format",
        "agent",
        "call_center",
        "dnis",
        "call_completion_threshold_seconds",
        "short_duration_threshold_seconds",
        "service_level_threshold_seconds",
        "service_level_inclusions",
        "service_level_objective_percentage",
        "abandoned_call_threshold_seconds",
        "email_address",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("supervisor_user_id", "supervisorUserId", str, is_required=True),
            E("name", "name", str, is_required=True),
            E("new_name", "newName", str),
            E("description", "description", str),
            E("schedule", "schedule", OCI.CallCenterReportSchedule, is_complex=True),
            E("sampling_period", "samplingPeriod", str),
            E("start_day_of_week", "startDayOfWeek", str),
            E("report_time_zone", "reportTimeZone", str),
            E("report_date_format", "reportDateFormat", str),
            E("report_time_format", "reportTimeFormat", str),
            E(
                "report_interval",
                "reportInterval",
                OCI.CallCenterReportInterval,
                is_complex=True,
            ),
            E("report_format", "reportFormat", str),
            E(
                "agent",
                "agent",
                OCI.CallCenterScheduledReportAgentSelection,
                is_complex=True,
            ),
            E(
                "call_center",
                "callCenter",
                OCI.CallCenterScheduledReportCallCenterSelection,
                is_complex=True,
            ),
            E(
                "dnis",
                "dnis",
                OCI.CallCenterScheduledReportDNISSelection,
                is_complex=True,
            ),
            E(
                "call_completion_threshold_seconds",
                "callCompletionThresholdSeconds",
                int,
            ),
            E("short_duration_threshold_seconds", "shortDurationThresholdSeconds", int),
            E(
                "service_level_threshold_seconds",
                "serviceLevelThresholdSeconds",
                OCI.CallCenterReportServiceLevelThresholdReplacementList,
                is_complex=True,
            ),
            E(
                "service_level_inclusions",
                "serviceLevelInclusions",
                OCI.CallCenterScheduledReportServiceLevelInclusionsModify,
                is_complex=True,
            ),
            E(
                "service_level_objective_percentage",
                "serviceLevelObjectivePercentage",
                int,
            ),
            E(
                "abandoned_call_threshold_seconds",
                "abandonedCallThresholdSeconds",
                OCI.CallCenterReportAbandonedCallThresholdReplacementList,
                is_complex=True,
            ),
            E(
                "email_address",
                "emailAddress",
                OCI.CallCenterReportReplacementEmailList,
                is_complex=True,
            ),
        )


class UserConsolidatedAddRequest(OCIRequest):
    """
    The response is either `SuccessResponse()` or `ErrorResponse()`.

    In AS and Amplify 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 Replaced by: `UserConsolidatedAddRequest22()` in AS data mode.

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        group_external_id (str): groupExternalId *Optional*
        group_properties (OCI.groupProperties): groupProperties *Optional*
        user_id (str): userId
        user_external_id (str): userExternalId *Optional*
        add_phone_number_to_group (bool): addPhoneNumberToGroup *Optional*
        last_name (str): lastName
        first_name (str): firstName
        calling_line_id_last_name (str): callingLineIdLastName
        calling_line_id_first_name (str): callingLineIdFirstName
        name_dialing_name (OCI.nameDialingName): nameDialingName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        alternate_user_id (List[OCI.alternateUserId]): alternateUserId *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        password (str): password *Optional*
        passcode (str): passcode *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        alias (List[str]): alias *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        trunk_addressing (OCI.trunkAddressing): trunkAddressing *Optional*
        shared_call_appearance_access_device_endpoint
            (List[OCI.sharedCallAppearanceAccessDeviceEndpoint]):
            sharedCallAppearanceAccessDeviceEndpoint *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        user_service (List[OCI.userService]): userService *Optional*
        service_pack (List[OCI.servicePack]): servicePack *Optional*
        third_party_voice_mail_server_selection (str): thirdPartyVoiceMailServerSelection
            *Optional*
        third_party_voice_mail_server_user_server (str):
            thirdPartyVoiceMailServerUserServer *Optional*
        third_party_voice_mail_server_mailbox_id_type (str):
            thirdPartyVoiceMailServerMailboxIdType *Optional*
        third_party_voice_mail_mailbox_url (str): thirdPartyVoiceMailMailboxURL *Optional*
        sip_authentication_data (OCI.sipAuthenticationData): sipAuthenticationData
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_external_id",
        "group_properties",
        "user_id",
        "user_external_id",
        "add_phone_number_to_group",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "name_dialing_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "alternate_user_id",
        "extension",
        "calling_line_id_phone_number",
        "password",
        "passcode",
        "department",
        "language",
        "time_zone",
        "alias",
        "access_device_endpoint",
        "trunk_addressing",
        "shared_call_appearance_access_device_endpoint",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "user_service",
        "service_pack",
        "third_party_voice_mail_server_selection",
        "third_party_voice_mail_server_user_server",
        "third_party_voice_mail_server_mailbox_id_type",
        "third_party_voice_mail_mailbox_url",
        "sip_authentication_data",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("group_external_id", "groupExternalId", str),
            E(
                "group_properties",
                "groupProperties",
                OCI.ConsolidatedGroupProperties,
                is_complex=True,
            ),
            E("user_id", "userId", str, is_required=True),
            E("user_external_id", "userExternalId", str),
            E("add_phone_number_to_group", "addPhoneNumberToGroup", bool),
            E("last_name", "lastName", str, is_required=True),
            E("first_name", "firstName", str, is_required=True),
            E(
                "calling_line_id_last_name",
                "callingLineIdLastName",
                str,
                is_required=True,
            ),
            E(
                "calling_line_id_first_name",
                "callingLineIdFirstName",
                str,
                is_required=True,
            ),
            E(
                "name_dialing_name",
                "nameDialingName",
                OCI.NameDialingName,
                is_complex=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E(
                "alternate_user_id",
                "alternateUserId",
                OCI.AlternateUserIdEntry,
                is_complex=True,
                is_array=True,
            ),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("password", "password", str),
            E("passcode", "passcode", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E("alias", "alias", str, is_array=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.ConsolidatedAccessDeviceMultipleIdentityEndpointAndContactAdd,
                is_complex=True,
            ),
            E(
                "trunk_addressing",
                "trunkAddressing",
                OCI.TrunkAddressingMultipleContactAdd,
                is_complex=True,
            ),
            E(
                "shared_call_appearance_access_device_endpoint",
                "sharedCallAppearanceAccessDeviceEndpoint",
                OCI.ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpoint,
                is_complex=True,
                is_array=True,
            ),
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "user_service",
                "userService",
                OCI.ConsolidatedUserServiceAssignment,
                is_complex=True,
                is_array=True,
            ),
            E(
                "service_pack",
                "servicePack",
                OCI.ConsolidatedServicePackAssignment,
                is_complex=True,
                is_array=True,
            ),
            E(
                "third_party_voice_mail_server_selection",
                "thirdPartyVoiceMailServerSelection",
                str,
            ),
            E(
                "third_party_voice_mail_server_user_server",
                "thirdPartyVoiceMailServerUserServer",
                str,
            ),
            E(
                "third_party_voice_mail_server_mailbox_id_type",
                "thirdPartyVoiceMailServerMailboxIdType",
                str,
            ),
            E(
                "third_party_voice_mail_mailbox_url",
                "thirdPartyVoiceMailMailboxURL",
                str,
            ),
            E(
                "sip_authentication_data",
                "sipAuthenticationData",
                OCI.SIPAuthenticationUserNamePassword,
                is_complex=True,
            ),
        )


class UserConsolidatedAddRequest22(OCIRequest):
    """
    The response is either `SuccessResponse()` or `ErrorResponse()`.

    In AS and Amplify 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

    Attributes:
        service_provider_id (str): serviceProviderId *Optional*
        group_id (str): groupId *Optional*
        group_external_id (str): groupExternalId *Optional*
        group_properties (OCI.groupProperties): groupProperties *Optional*
        user_id (str): userId
        user_external_id (str): userExternalId *Optional*
        add_phone_number_to_group (bool): addPhoneNumberToGroup *Optional*
        last_name (str): lastName
        first_name (str): firstName
        calling_line_id_last_name (str): callingLineIdLastName
        calling_line_id_first_name (str): callingLineIdFirstName
        name_dialing_name (OCI.nameDialingName): nameDialingName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        alternate_user_id (List[OCI.alternateUserId]): alternateUserId *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        password (str): password *Optional*
        passcode (str): passcode *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        alias (List[str]): alias *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        trunk_addressing (OCI.trunkAddressing): trunkAddressing *Optional*
        shared_call_appearance_access_device_endpoint
            (List[OCI.sharedCallAppearanceAccessDeviceEndpoint]):
            sharedCallAppearanceAccessDeviceEndpoint *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        user_service (List[OCI.userService]): userService *Optional*
        service_pack (List[OCI.servicePack]): servicePack *Optional*
        third_party_voice_mail_server_selection (str): thirdPartyVoiceMailServerSelection
            *Optional*
        third_party_voice_mail_server_user_server (str):
            thirdPartyVoiceMailServerUserServer *Optional*
        third_party_voice_mail_server_mailbox_id_type (str):
            thirdPartyVoiceMailServerMailboxIdType *Optional*
        third_party_voice_mail_mailbox_url (str): thirdPartyVoiceMailMailboxURL *Optional*
        sip_authentication_data (OCI.sipAuthenticationData): sipAuthenticationData
            *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "group_external_id",
        "group_properties",
        "user_id",
        "user_external_id",
        "add_phone_number_to_group",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "name_dialing_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "alternate_user_id",
        "extension",
        "calling_line_id_phone_number",
        "password",
        "passcode",
        "department",
        "language",
        "time_zone",
        "alias",
        "access_device_endpoint",
        "trunk_addressing",
        "shared_call_appearance_access_device_endpoint",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "user_service",
        "service_pack",
        "third_party_voice_mail_server_selection",
        "third_party_voice_mail_server_user_server",
        "third_party_voice_mail_server_mailbox_id_type",
        "third_party_voice_mail_mailbox_url",
        "sip_authentication_data",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str),
            E("group_id", "groupId", str),
            E("group_external_id", "groupExternalId", str),
            E(
                "group_properties",
                "groupProperties",
                OCI.ConsolidatedGroupProperties,
                is_complex=True,
            ),
            E("user_id", "userId", str, is_required=True),
            E("user_external_id", "userExternalId", str),
            E("add_phone_number_to_group", "addPhoneNumberToGroup", bool),
            E("last_name", "lastName", str, is_required=True),
            E("first_name", "firstName", str, is_required=True),
            E(
                "calling_line_id_last_name",
                "callingLineIdLastName",
                str,
                is_required=True,
            ),
            E(
                "calling_line_id_first_name",
                "callingLineIdFirstName",
                str,
                is_required=True,
            ),
            E(
                "name_dialing_name",
                "nameDialingName",
                OCI.NameDialingName,
                is_complex=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E(
                "alternate_user_id",
                "alternateUserId",
                OCI.AlternateUserIdEntry,
                is_complex=True,
                is_array=True,
            ),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("password", "password", str),
            E("passcode", "passcode", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E("alias", "alias", str, is_array=True),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.ConsolidatedAccessDeviceMultipleIdentityEndpointAndContactAdd22,
                is_complex=True,
            ),
            E(
                "trunk_addressing",
                "trunkAddressing",
                OCI.TrunkAddressingMultipleContactAdd,
                is_complex=True,
            ),
            E(
                "shared_call_appearance_access_device_endpoint",
                "sharedCallAppearanceAccessDeviceEndpoint",
                OCI.ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointAdd22,
                is_complex=True,
                is_array=True,
            ),
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "user_service",
                "userService",
                OCI.ConsolidatedUserServiceAssignment,
                is_complex=True,
                is_array=True,
            ),
            E(
                "service_pack",
                "servicePack",
                OCI.ConsolidatedServicePackAssignment,
                is_complex=True,
                is_array=True,
            ),
            E(
                "third_party_voice_mail_server_selection",
                "thirdPartyVoiceMailServerSelection",
                str,
            ),
            E(
                "third_party_voice_mail_server_user_server",
                "thirdPartyVoiceMailServerUserServer",
                str,
            ),
            E(
                "third_party_voice_mail_server_mailbox_id_type",
                "thirdPartyVoiceMailServerMailboxIdType",
                str,
            ),
            E(
                "third_party_voice_mail_mailbox_url",
                "thirdPartyVoiceMailMailboxURL",
                str,
            ),
            E(
                "sip_authentication_data",
                "sipAuthenticationData",
                OCI.SIPAuthenticationUserNamePassword,
                is_complex=True,
            ),
        )


class UserConsolidatedModifyRequest(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 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.  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 `SuccxessResponse()` or `ErrorResponse()`. Replaced by:
    `UserConsolidatedModifyRequest22()`

    Attributes:
        user_id (str): userId
        delete_existing_devices (bool): deleteExistingDevices *Optional*
        unassign_phone_numbers (str): unassignPhoneNumbers *Optional*
        add_phone_number_to_group (bool): addPhoneNumberToGroup *Optional*
        new_user_id (str): newUserId *Optional*
        last_name (str): lastName *Optional*
        first_name (str): firstName *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        name_dialing_name (OCI.nameDialingName): nameDialingName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        alternate_user_id_list (OCI.alternateUserIdList): alternateUserIdList *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        old_password (str): oldPassword *Optional*
        new_password (str): newPassword *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        sip_alias_list (OCI.sipAliasList): sipAliasList *Optional*
        endpoint (OCI.endpoint): endpoint *Optional*
        shared_call_appearance_access_device_endpoint_list
            (OCI.sharedCallAppearanceAccessDeviceEndpointList):
            sharedCallAppearanceAccessDeviceEndpointList *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        user_service_list (OCI.userServiceList): userServiceList *Optional*
        service_pack_list (OCI.servicePackList): servicePackList *Optional*
        third_party_voice_mail_server_selection (str): thirdPartyVoiceMailServerSelection
            *Optional*
        third_party_voice_mail_server_user_server (str):
            thirdPartyVoiceMailServerUserServer *Optional*
        third_party_voice_mail_server_mailbox_id_type (str):
            thirdPartyVoiceMailServerMailboxIdType *Optional*
        third_party_voice_mail_mailbox_url (str): thirdPartyVoiceMailMailboxURL *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        new_sip_authentication_password (str): newSipAuthenticationPassword *Optional*
        old_sip_authentication_password (str): OldSipAuthenticationPassword *Optional*
        new_passcode (str): newPasscode *Optional*
        old_passcode (str): oldPasscode *Optional*
        imp_password (str): impPassword *Optional*
        new_user_external_id (str): newUserExternalId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "delete_existing_devices",
        "unassign_phone_numbers",
        "add_phone_number_to_group",
        "new_user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "name_dialing_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "alternate_user_id_list",
        "extension",
        "calling_line_id_phone_number",
        "old_password",
        "new_password",
        "department",
        "language",
        "time_zone",
        "sip_alias_list",
        "endpoint",
        "shared_call_appearance_access_device_endpoint_list",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "user_service_list",
        "service_pack_list",
        "third_party_voice_mail_server_selection",
        "third_party_voice_mail_server_user_server",
        "third_party_voice_mail_server_mailbox_id_type",
        "third_party_voice_mail_mailbox_url",
        "sip_authentication_user_name",
        "new_sip_authentication_password",
        "old_sip_authentication_password",
        "new_passcode",
        "old_passcode",
        "imp_password",
        "new_user_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("delete_existing_devices", "deleteExistingDevices", bool),
            E("unassign_phone_numbers", "unassignPhoneNumbers", str),
            E("add_phone_number_to_group", "addPhoneNumberToGroup", bool),
            E("new_user_id", "newUserId", str),
            E("last_name", "lastName", str),
            E("first_name", "firstName", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E(
                "name_dialing_name",
                "nameDialingName",
                OCI.NameDialingName,
                is_complex=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E(
                "alternate_user_id_list",
                "alternateUserIdList",
                OCI.ReplacementAlternateUserIdEntryList,
                is_complex=True,
            ),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("old_password", "oldPassword", str),
            E("new_password", "newPassword", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E(
                "sip_alias_list",
                "sipAliasList",
                OCI.ReplacementSIPAliasList,
                is_complex=True,
            ),
            E("endpoint", "endpoint", str, is_complex=True),  # unknown
            E(
                "shared_call_appearance_access_device_endpoint_list",
                "sharedCallAppearanceAccessDeviceEndpointList",
                OCI.ReplacementConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointList,
                is_complex=True,
            ),
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "user_service_list",
                "userServiceList",
                OCI.ReplacementConsolidatedUserServiceAssignmentList,
                is_complex=True,
            ),
            E(
                "service_pack_list",
                "servicePackList",
                OCI.ReplacementConsolidatedServicePackAssignmentList,
                is_complex=True,
            ),
            E(
                "third_party_voice_mail_server_selection",
                "thirdPartyVoiceMailServerSelection",
                str,
            ),
            E(
                "third_party_voice_mail_server_user_server",
                "thirdPartyVoiceMailServerUserServer",
                str,
            ),
            E(
                "third_party_voice_mail_server_mailbox_id_type",
                "thirdPartyVoiceMailServerMailboxIdType",
                str,
            ),
            E(
                "third_party_voice_mail_mailbox_url",
                "thirdPartyVoiceMailMailboxURL",
                str,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("new_sip_authentication_password", "newSipAuthenticationPassword", str),
            E("old_sip_authentication_password", "OldSipAuthenticationPassword", str),
            E("new_passcode", "newPasscode", str),
            E("old_passcode", "oldPasscode", str),
            E("imp_password", "impPassword", str),
            E("new_user_external_id", "newUserExternalId", str),
        )


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): userId
        delete_existing_devices (bool): deleteExistingDevices *Optional*
        unassign_phone_numbers (str): unassignPhoneNumbers *Optional*
        add_phone_number_to_group (bool): addPhoneNumberToGroup *Optional*
        new_user_id (str): newUserId *Optional*
        last_name (str): lastName *Optional*
        first_name (str): firstName *Optional*
        calling_line_id_last_name (str): callingLineIdLastName *Optional*
        calling_line_id_first_name (str): callingLineIdFirstName *Optional*
        name_dialing_name (OCI.nameDialingName): nameDialingName *Optional*
        hiragana_last_name (str): hiraganaLastName *Optional*
        hiragana_first_name (str): hiraganaFirstName *Optional*
        phone_number (str): phoneNumber *Optional*
        alternate_user_id_list (OCI.alternateUserIdList): alternateUserIdList *Optional*
        extension (str): extension *Optional*
        calling_line_id_phone_number (str): callingLineIdPhoneNumber *Optional*
        old_password (str): oldPassword *Optional*
        new_password (str): newPassword *Optional*
        department (OCI.department): department *Optional*
        language (str): language *Optional*
        time_zone (str): timeZone *Optional*
        sip_alias_list (OCI.sipAliasList): sipAliasList *Optional*
        endpoint (OCI.endpoint): endpoint *Optional*
        shared_call_appearance_access_device_endpoint_list
            (OCI.sharedCallAppearanceAccessDeviceEndpointList):
            sharedCallAppearanceAccessDeviceEndpointList *Optional*
        title (str): title *Optional*
        pager_phone_number (str): pagerPhoneNumber *Optional*
        mobile_phone_number (str): mobilePhoneNumber *Optional*
        email_address (str): emailAddress *Optional*
        yahoo_id (str): yahooId *Optional*
        address_location (str): addressLocation *Optional*
        address (OCI.address): address *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        user_service_list (OCI.userServiceList): userServiceList *Optional*
        service_pack_list (OCI.servicePackList): servicePackList *Optional*
        third_party_voice_mail_server_selection (str): thirdPartyVoiceMailServerSelection
            *Optional*
        third_party_voice_mail_server_user_server (str):
            thirdPartyVoiceMailServerUserServer *Optional*
        third_party_voice_mail_server_mailbox_id_type (str):
            thirdPartyVoiceMailServerMailboxIdType *Optional*
        third_party_voice_mail_mailbox_url (str): thirdPartyVoiceMailMailboxURL *Optional*
        sip_authentication_user_name (str): sipAuthenticationUserName *Optional*
        new_sip_authentication_password (str): newSipAuthenticationPassword *Optional*
        old_sip_authentication_password (str): OldSipAuthenticationPassword *Optional*
        new_passcode (str): newPasscode *Optional*
        old_passcode (str): oldPasscode *Optional*
        imp_password (str): impPassword *Optional*
        new_user_external_id (str): newUserExternalId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "delete_existing_devices",
        "unassign_phone_numbers",
        "add_phone_number_to_group",
        "new_user_id",
        "last_name",
        "first_name",
        "calling_line_id_last_name",
        "calling_line_id_first_name",
        "name_dialing_name",
        "hiragana_last_name",
        "hiragana_first_name",
        "phone_number",
        "alternate_user_id_list",
        "extension",
        "calling_line_id_phone_number",
        "old_password",
        "new_password",
        "department",
        "language",
        "time_zone",
        "sip_alias_list",
        "endpoint",
        "shared_call_appearance_access_device_endpoint_list",
        "title",
        "pager_phone_number",
        "mobile_phone_number",
        "email_address",
        "yahoo_id",
        "address_location",
        "address",
        "network_class_of_service",
        "user_service_list",
        "service_pack_list",
        "third_party_voice_mail_server_selection",
        "third_party_voice_mail_server_user_server",
        "third_party_voice_mail_server_mailbox_id_type",
        "third_party_voice_mail_mailbox_url",
        "sip_authentication_user_name",
        "new_sip_authentication_password",
        "old_sip_authentication_password",
        "new_passcode",
        "old_passcode",
        "imp_password",
        "new_user_external_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("delete_existing_devices", "deleteExistingDevices", bool),
            E("unassign_phone_numbers", "unassignPhoneNumbers", str),
            E("add_phone_number_to_group", "addPhoneNumberToGroup", bool),
            E("new_user_id", "newUserId", str),
            E("last_name", "lastName", str),
            E("first_name", "firstName", str),
            E("calling_line_id_last_name", "callingLineIdLastName", str),
            E("calling_line_id_first_name", "callingLineIdFirstName", str),
            E(
                "name_dialing_name",
                "nameDialingName",
                OCI.NameDialingName,
                is_complex=True,
            ),
            E("hiragana_last_name", "hiraganaLastName", str),
            E("hiragana_first_name", "hiraganaFirstName", str),
            E("phone_number", "phoneNumber", str),
            E(
                "alternate_user_id_list",
                "alternateUserIdList",
                OCI.ReplacementAlternateUserIdEntryList,
                is_complex=True,
            ),
            E("extension", "extension", str),
            E("calling_line_id_phone_number", "callingLineIdPhoneNumber", str),
            E("old_password", "oldPassword", str),
            E("new_password", "newPassword", str),
            E("department", "department", OCI.DepartmentKey, is_complex=True),
            E("language", "language", str),
            E("time_zone", "timeZone", str),
            E(
                "sip_alias_list",
                "sipAliasList",
                OCI.ReplacementSIPAliasList,
                is_complex=True,
            ),
            E("endpoint", "endpoint", str, is_complex=True),  # unknown
            E(
                "shared_call_appearance_access_device_endpoint_list",
                "sharedCallAppearanceAccessDeviceEndpointList",
                OCI.ReplacementConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointList22,
                is_complex=True,
            ),
            E("title", "title", str),
            E("pager_phone_number", "pagerPhoneNumber", str),
            E("mobile_phone_number", "mobilePhoneNumber", str),
            E("email_address", "emailAddress", str),
            E("yahoo_id", "yahooId", str),
            E("address_location", "addressLocation", str),
            E("address", "address", OCI.StreetAddress, is_complex=True),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "user_service_list",
                "userServiceList",
                OCI.ReplacementConsolidatedUserServiceAssignmentList,
                is_complex=True,
            ),
            E(
                "service_pack_list",
                "servicePackList",
                OCI.ReplacementConsolidatedServicePackAssignmentList,
                is_complex=True,
            ),
            E(
                "third_party_voice_mail_server_selection",
                "thirdPartyVoiceMailServerSelection",
                str,
            ),
            E(
                "third_party_voice_mail_server_user_server",
                "thirdPartyVoiceMailServerUserServer",
                str,
            ),
            E(
                "third_party_voice_mail_server_mailbox_id_type",
                "thirdPartyVoiceMailServerMailboxIdType",
                str,
            ),
            E(
                "third_party_voice_mail_mailbox_url",
                "thirdPartyVoiceMailMailboxURL",
                str,
            ),
            E("sip_authentication_user_name", "sipAuthenticationUserName", str),
            E("new_sip_authentication_password", "newSipAuthenticationPassword", str),
            E("old_sip_authentication_password", "OldSipAuthenticationPassword", str),
            E("new_passcode", "newPasscode", str),
            E("old_passcode", "oldPasscode", str),
            E("imp_password", "impPassword", str),
            E("new_user_external_id", "newUserExternalId", str),
        )


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): userId
        is_active (bool): isActive *Optional*
        enable_association_limit (bool): enableAssociationLimit *Optional*
        association_limit_hours (int): associationLimitHours *Optional*
        unlock_phone_pin_code (str): unlockPhonePINCode *Optional*
        access_device_endpoint (OCI.accessDeviceEndpoint): accessDeviceEndpoint *Optional*
        host_user_id (str): hostUserId *Optional*
    """

    __slots__: List[str] = [
        "user_id",
        "is_active",
        "enable_association_limit",
        "association_limit_hours",
        "unlock_phone_pin_code",
        "access_device_endpoint",
        "host_user_id",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("user_id", "userId", str, is_required=True),
            E("is_active", "isActive", bool),
            E("enable_association_limit", "enableAssociationLimit", bool),
            E("association_limit_hours", "associationLimitHours", int),
            E("unlock_phone_pin_code", "unlockPhonePINCode", str),
            E(
                "access_device_endpoint",
                "accessDeviceEndpoint",
                OCI.AccessDeviceMultipleContactEndpointModify22,
                is_complex=True,
            ),
            E("host_user_id", "hostUserId", str),
        )


class GroupAutoAttendantAddInstanceRequest14(OCIRequest):
    """
    Add a Auto Attendant instance to a group.

    The domain is required in the serviceUserId.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `GroupAutoAttendantAddInstanceRequest16()`

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        enable_video (bool): enableVideo
        business_hours (str): businessHours *Optional*
        holiday_schedule_name (str): holidayScheduleName *Optional*
        extension_dialing_scope (str): extensionDialingScope
        name_dialing_scope (str): nameDialingScope
        name_dialing_entries (str): nameDialingEntries
        business_hours_menu (OCI.businessHoursMenu): businessHoursMenu *Optional*
        after_hours_menu (OCI.afterHoursMenu): afterHoursMenu *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "enable_video",
        "business_hours",
        "holiday_schedule_name",
        "extension_dialing_scope",
        "name_dialing_scope",
        "name_dialing_entries",
        "business_hours_menu",
        "after_hours_menu",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("business_hours", "businessHours", str),
            E("holiday_schedule_name", "holidayScheduleName", str),
            E(
                "extension_dialing_scope",
                "extensionDialingScope",
                str,
                is_required=True,
            ),
            E("name_dialing_scope", "nameDialingScope", str, is_required=True),
            E("name_dialing_entries", "nameDialingEntries", str, is_required=True),
            E(
                "business_hours_menu",
                "businessHoursMenu",
                OCI.AutoAttendantAddMenu,
                is_complex=True,
            ),
            E(
                "after_hours_menu",
                "afterHoursMenu",
                OCI.AutoAttendantAddMenu,
                is_complex=True,
            ),
        )


class GroupAutoAttendantAddInstanceRequest16(OCIRequest):
    """
    Add a Auto Attendant instance to a group.

    The domain is required in the serviceUserId.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        enable_video (bool): enableVideo
        business_hours (str): businessHours *Optional*
        holiday_schedule_name (str): holidayScheduleName *Optional*
        extension_dialing_scope (str): extensionDialingScope
        name_dialing_scope (str): nameDialingScope
        name_dialing_entries (str): nameDialingEntries
        business_hours_menu (OCI.businessHoursMenu): businessHoursMenu *Optional*
        after_hours_menu (OCI.afterHoursMenu): afterHoursMenu *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "enable_video",
        "business_hours",
        "holiday_schedule_name",
        "extension_dialing_scope",
        "name_dialing_scope",
        "name_dialing_entries",
        "business_hours_menu",
        "after_hours_menu",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("business_hours", "businessHours", str),
            E("holiday_schedule_name", "holidayScheduleName", str),
            E(
                "extension_dialing_scope",
                "extensionDialingScope",
                str,
                is_required=True,
            ),
            E("name_dialing_scope", "nameDialingScope", str, is_required=True),
            E("name_dialing_entries", "nameDialingEntries", str, is_required=True),
            E(
                "business_hours_menu",
                "businessHoursMenu",
                OCI.AutoAttendantAddMenu16,
                is_complex=True,
            ),
            E(
                "after_hours_menu",
                "afterHoursMenu",
                OCI.AutoAttendantAddMenu16,
                is_complex=True,
            ),
        )


class GroupAutoAttendantAddInstanceRequest17sp1(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()`.

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        enable_video (bool): enableVideo
        business_hours (OCI.businessHours): businessHours *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        extension_dialing_scope (str): extensionDialingScope
        name_dialing_scope (str): nameDialingScope
        name_dialing_entries (str): nameDialingEntries
        business_hours_menu (OCI.businessHoursMenu): businessHoursMenu *Optional*
        after_hours_menu (OCI.afterHoursMenu): afterHoursMenu *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "enable_video",
        "business_hours",
        "holiday_schedule",
        "extension_dialing_scope",
        "name_dialing_scope",
        "name_dialing_entries",
        "business_hours_menu",
        "after_hours_menu",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("business_hours", "businessHours", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E(
                "extension_dialing_scope",
                "extensionDialingScope",
                str,
                is_required=True,
            ),
            E("name_dialing_scope", "nameDialingScope", str, is_required=True),
            E("name_dialing_entries", "nameDialingEntries", str, is_required=True),
            E(
                "business_hours_menu",
                "businessHoursMenu",
                OCI.AutoAttendantAddMenu16,
                is_complex=True,
            ),
            E(
                "after_hours_menu",
                "afterHoursMenu",
                OCI.AutoAttendantAddMenu16,
                is_complex=True,
            ),
        )


class GroupAutoAttendantAddInstanceRequest19(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 value "Basic" in XS data mode The
    following elements are only used in AS data mode and ignored in XS data mode:
    holidayMenu The following elements are only valid for Standard Auto Attendants:
    holidayMenu Replaced by: `GroupAutoAttendantAddInstanceRequest20()` in AS data mode

    Attributes:
        service_provider_id (str): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        type (str): type
        enable_video (bool): enableVideo
        business_hours (OCI.businessHours): businessHours *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        extension_dialing_scope (str): extensionDialingScope
        name_dialing_scope (str): nameDialingScope
        name_dialing_entries (str): nameDialingEntries
        business_hours_menu (OCI.businessHoursMenu): businessHoursMenu *Optional*
        after_hours_menu (OCI.afterHoursMenu): afterHoursMenu *Optional*
        holiday_menu (OCI.holidayMenu): holidayMenu *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "type",
        "enable_video",
        "business_hours",
        "holiday_schedule",
        "extension_dialing_scope",
        "name_dialing_scope",
        "name_dialing_entries",
        "business_hours_menu",
        "after_hours_menu",
        "holiday_menu",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("type", "type", str, is_required=True),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("business_hours", "businessHours", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E(
                "extension_dialing_scope",
                "extensionDialingScope",
                str,
                is_required=True,
            ),
            E("name_dialing_scope", "nameDialingScope", str, is_required=True),
            E("name_dialing_entries", "nameDialingEntries", str, is_required=True),
            E(
                "business_hours_menu",
                "businessHoursMenu",
                OCI.AutoAttendantAddMenu19,
                is_complex=True,
            ),
            E(
                "after_hours_menu",
                "afterHoursMenu",
                OCI.AutoAttendantAddMenu19,
                is_complex=True,
            ),
            E(
                "holiday_menu",
                "holidayMenu",
                OCI.AutoAttendantAddMenu19,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        type (str): type
        first_digit_timeout_seconds (int): firstDigitTimeoutSeconds
        enable_video (bool): enableVideo
        business_hours (OCI.businessHours): businessHours *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        extension_dialing_scope (str): extensionDialingScope
        name_dialing_scope (str): nameDialingScope
        name_dialing_entries (str): nameDialingEntries
        business_hours_menu (OCI.businessHoursMenu): businessHoursMenu *Optional*
        after_hours_menu (OCI.afterHoursMenu): afterHoursMenu *Optional*
        holiday_menu (OCI.holidayMenu): holidayMenu *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "service_instance_profile",
        "type",
        "first_digit_timeout_seconds",
        "enable_video",
        "business_hours",
        "holiday_schedule",
        "extension_dialing_scope",
        "name_dialing_scope",
        "name_dialing_entries",
        "business_hours_menu",
        "after_hours_menu",
        "holiday_menu",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("type", "type", str, is_required=True),
            E(
                "first_digit_timeout_seconds",
                "firstDigitTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("business_hours", "businessHours", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E(
                "extension_dialing_scope",
                "extensionDialingScope",
                str,
                is_required=True,
            ),
            E("name_dialing_scope", "nameDialingScope", str, is_required=True),
            E("name_dialing_entries", "nameDialingEntries", str, is_required=True),
            E(
                "business_hours_menu",
                "businessHoursMenu",
                OCI.AutoAttendantAddMenu20,
                is_complex=True,
            ),
            E(
                "after_hours_menu",
                "afterHoursMenu",
                OCI.AutoAttendantAddMenu20,
                is_complex=True,
            ),
            E(
                "holiday_menu",
                "holidayMenu",
                OCI.AutoAttendantAddMenu20,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


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): serviceProviderId
        group_id (str): groupId
        service_user_id (str): serviceUserId
        add_phone_number_to_group (bool): addPhoneNumberToGroup *Optional*
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
        type (str): type
        first_digit_timeout_seconds (int): firstDigitTimeoutSeconds
        enable_video (bool): enableVideo
        business_hours (OCI.businessHours): businessHours *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        extension_dialing_scope (str): extensionDialingScope
        name_dialing_scope (str): nameDialingScope
        name_dialing_entries (str): nameDialingEntries
        business_hours_menu (OCI.businessHoursMenu): businessHoursMenu *Optional*
        after_hours_menu (OCI.afterHoursMenu): afterHoursMenu *Optional*
        holiday_menu (OCI.holidayMenu): holidayMenu *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        service (List[OCI.service]): service *Optional*
        is_active (bool): isActive
    """

    __slots__: List[str] = [
        "service_provider_id",
        "group_id",
        "service_user_id",
        "add_phone_number_to_group",
        "service_instance_profile",
        "type",
        "first_digit_timeout_seconds",
        "enable_video",
        "business_hours",
        "holiday_schedule",
        "extension_dialing_scope",
        "name_dialing_scope",
        "name_dialing_entries",
        "business_hours_menu",
        "after_hours_menu",
        "holiday_menu",
        "network_class_of_service",
        "service",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_provider_id", "serviceProviderId", str, is_required=True),
            E("group_id", "groupId", str, is_required=True),
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("add_phone_number_to_group", "addPhoneNumberToGroup", bool),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceAddProfile,
                is_complex=True,
                is_required=True,
            ),
            E("type", "type", str, is_required=True),
            E(
                "first_digit_timeout_seconds",
                "firstDigitTimeoutSeconds",
                int,
                is_required=True,
            ),
            E("enable_video", "enableVideo", bool, is_required=True),
            E("business_hours", "businessHours", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E(
                "extension_dialing_scope",
                "extensionDialingScope",
                str,
                is_required=True,
            ),
            E("name_dialing_scope", "nameDialingScope", str, is_required=True),
            E("name_dialing_entries", "nameDialingEntries", str, is_required=True),
            E(
                "business_hours_menu",
                "businessHoursMenu",
                OCI.AutoAttendantAddMenu20,
                is_complex=True,
            ),
            E(
                "after_hours_menu",
                "afterHoursMenu",
                OCI.AutoAttendantAddMenu20,
                is_complex=True,
            ),
            E(
                "holiday_menu",
                "holidayMenu",
                OCI.AutoAttendantAddMenu20,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "service",
                "service",
                OCI.ConsolidatedUserServiceAssignment,
                is_complex=True,
                is_array=True,
            ),
            E("is_active", "isActive", bool, is_required=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): serviceUserId
        unassign_phone_numbers (str): unassignPhoneNumbers *Optional*
        add_phone_number_to_group (bool): addPhoneNumberToGroup *Optional*
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        first_digit_timeout_seconds (int): firstDigitTimeoutSeconds *Optional*
        enable_video (bool): enableVideo *Optional*
        business_hours (OCI.businessHours): businessHours *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        extension_dialing_scope (str): extensionDialingScope *Optional*
        name_dialing_scope (str): nameDialingScope *Optional*
        name_dialing_entries (str): nameDialingEntries *Optional*
        business_hours_menu (OCI.businessHoursMenu): businessHoursMenu *Optional*
        after_hours_menu (OCI.afterHoursMenu): afterHoursMenu *Optional*
        holiday_menu (OCI.holidayMenu): holidayMenu *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
        service_list (OCI.serviceList): serviceList *Optional*
        is_active (bool): isActive *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "unassign_phone_numbers",
        "add_phone_number_to_group",
        "service_instance_profile",
        "first_digit_timeout_seconds",
        "enable_video",
        "business_hours",
        "holiday_schedule",
        "extension_dialing_scope",
        "name_dialing_scope",
        "name_dialing_entries",
        "business_hours_menu",
        "after_hours_menu",
        "holiday_menu",
        "network_class_of_service",
        "service_list",
        "is_active",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E("unassign_phone_numbers", "unassignPhoneNumbers", str),
            E("add_phone_number_to_group", "addPhoneNumberToGroup", bool),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("first_digit_timeout_seconds", "firstDigitTimeoutSeconds", int),
            E("enable_video", "enableVideo", bool),
            E("business_hours", "businessHours", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("extension_dialing_scope", "extensionDialingScope", str),
            E("name_dialing_scope", "nameDialingScope", str),
            E("name_dialing_entries", "nameDialingEntries", str),
            E(
                "business_hours_menu",
                "businessHoursMenu",
                OCI.AutoAttendantModifyMenu20,
                is_complex=True,
            ),
            E(
                "after_hours_menu",
                "afterHoursMenu",
                OCI.AutoAttendantModifyMenu20,
                is_complex=True,
            ),
            E(
                "holiday_menu",
                "holidayMenu",
                OCI.AutoAttendantModifyMenu20,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
            E(
                "service_list",
                "serviceList",
                OCI.ReplacementConsolidatedUserServiceAssignmentList,
                is_complex=True,
            ),
            E("is_active", "isActive", bool),
        )


class GroupAutoAttendantModifyInstanceRequest(OCIRequest):
    """
    Request to modify an Auto Attendant instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Replaced By: `GroupAutoAttendantModifyInstanceRequest16()`

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        enable_video (bool): enableVideo *Optional*
        business_hours (str): businessHours *Optional*
        holiday_schedule_name (str): holidayScheduleName *Optional*
        extension_dialing_scope (str): extensionDialingScope *Optional*
        name_dialing_scope (str): nameDialingScope *Optional*
        name_dialing_entries (str): nameDialingEntries *Optional*
        business_hours_menu (OCI.businessHoursMenu): businessHoursMenu *Optional*
        after_hours_menu (OCI.afterHoursMenu): afterHoursMenu *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "enable_video",
        "business_hours",
        "holiday_schedule_name",
        "extension_dialing_scope",
        "name_dialing_scope",
        "name_dialing_entries",
        "business_hours_menu",
        "after_hours_menu",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("enable_video", "enableVideo", bool),
            E("business_hours", "businessHours", str),
            E("holiday_schedule_name", "holidayScheduleName", str),
            E("extension_dialing_scope", "extensionDialingScope", str),
            E("name_dialing_scope", "nameDialingScope", str),
            E("name_dialing_entries", "nameDialingEntries", str),
            E(
                "business_hours_menu",
                "businessHoursMenu",
                OCI.AutoAttendantModifyMenu,
                is_complex=True,
            ),
            E(
                "after_hours_menu",
                "afterHoursMenu",
                OCI.AutoAttendantModifyMenu,
                is_complex=True,
            ),
        )


class GroupAutoAttendantModifyInstanceRequest16(OCIRequest):
    """
    Request to modify an Auto Attendant instance.

    The response is either `SuccessResponse()` or `ErrorResponse()`.

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        enable_video (bool): enableVideo *Optional*
        business_hours (str): businessHours *Optional*
        holiday_schedule_name (str): holidayScheduleName *Optional*
        extension_dialing_scope (str): extensionDialingScope *Optional*
        name_dialing_scope (str): nameDialingScope *Optional*
        name_dialing_entries (str): nameDialingEntries *Optional*
        business_hours_menu (OCI.businessHoursMenu): businessHoursMenu *Optional*
        after_hours_menu (OCI.afterHoursMenu): afterHoursMenu *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "enable_video",
        "business_hours",
        "holiday_schedule_name",
        "extension_dialing_scope",
        "name_dialing_scope",
        "name_dialing_entries",
        "business_hours_menu",
        "after_hours_menu",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("enable_video", "enableVideo", bool),
            E("business_hours", "businessHours", str),
            E("holiday_schedule_name", "holidayScheduleName", str),
            E("extension_dialing_scope", "extensionDialingScope", str),
            E("name_dialing_scope", "nameDialingScope", str),
            E("name_dialing_entries", "nameDialingEntries", str),
            E(
                "business_hours_menu",
                "businessHoursMenu",
                OCI.AutoAttendantModifyMenu16,
                is_complex=True,
            ),
            E(
                "after_hours_menu",
                "afterHoursMenu",
                OCI.AutoAttendantModifyMenu16,
                is_complex=True,
            ),
        )


class GroupAutoAttendantModifyInstanceRequest17sp1(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 data mode: holidayMenu.
    The following elementsare only valid for Standard Auto Attendants: holidayMenu
    Replaced by: `GroupAutoAttendantModifyInstanceRequest20()` in AS data mode

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        first_digit_timeout_seconds (int): firstDigitTimeoutSeconds *Optional*
        enable_video (bool): enableVideo *Optional*
        business_hours (OCI.businessHours): businessHours *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        extension_dialing_scope (str): extensionDialingScope *Optional*
        name_dialing_scope (str): nameDialingScope *Optional*
        name_dialing_entries (str): nameDialingEntries *Optional*
        business_hours_menu (OCI.businessHoursMenu): businessHoursMenu *Optional*
        after_hours_menu (OCI.afterHoursMenu): afterHoursMenu *Optional*
        holiday_menu (OCI.holidayMenu): holidayMenu *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "first_digit_timeout_seconds",
        "enable_video",
        "business_hours",
        "holiday_schedule",
        "extension_dialing_scope",
        "name_dialing_scope",
        "name_dialing_entries",
        "business_hours_menu",
        "after_hours_menu",
        "holiday_menu",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("first_digit_timeout_seconds", "firstDigitTimeoutSeconds", int),
            E("enable_video", "enableVideo", bool),
            E("business_hours", "businessHours", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("extension_dialing_scope", "extensionDialingScope", str),
            E("name_dialing_scope", "nameDialingScope", str),
            E("name_dialing_entries", "nameDialingEntries", str),
            E(
                "business_hours_menu",
                "businessHoursMenu",
                OCI.AutoAttendantModifyMenu16,
                is_complex=True,
            ),
            E(
                "after_hours_menu",
                "afterHoursMenu",
                OCI.AutoAttendantModifyMenu16,
                is_complex=True,
            ),
            E(
                "holiday_menu",
                "holidayMenu",
                OCI.AutoAttendantModifyMenu16,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


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: holidayMenu.  The following elements are only
    valid for Standard Auto Attendants: holidayMenu

    Attributes:
        service_user_id (str): serviceUserId
        service_instance_profile (OCI.serviceInstanceProfile): serviceInstanceProfile
            *Optional*
        first_digit_timeout_seconds (int): firstDigitTimeoutSeconds *Optional*
        enable_video (bool): enableVideo *Optional*
        business_hours (OCI.businessHours): businessHours *Optional*
        holiday_schedule (OCI.holidaySchedule): holidaySchedule *Optional*
        extension_dialing_scope (str): extensionDialingScope *Optional*
        name_dialing_scope (str): nameDialingScope *Optional*
        name_dialing_entries (str): nameDialingEntries *Optional*
        business_hours_menu (OCI.businessHoursMenu): businessHoursMenu *Optional*
        after_hours_menu (OCI.afterHoursMenu): afterHoursMenu *Optional*
        holiday_menu (OCI.holidayMenu): holidayMenu *Optional*
        network_class_of_service (str): networkClassOfService *Optional*
    """

    __slots__: List[str] = [
        "service_user_id",
        "service_instance_profile",
        "first_digit_timeout_seconds",
        "enable_video",
        "business_hours",
        "holiday_schedule",
        "extension_dialing_scope",
        "name_dialing_scope",
        "name_dialing_entries",
        "business_hours_menu",
        "after_hours_menu",
        "holiday_menu",
        "network_class_of_service",
    ]

    @classmethod
    def _elements(cls) -> Tuple[E, ...]:
        return (
            E("service_user_id", "serviceUserId", str, is_required=True),
            E(
                "service_instance_profile",
                "serviceInstanceProfile",
                OCI.ServiceInstanceModifyProfile,
                is_complex=True,
            ),
            E("first_digit_timeout_seconds", "firstDigitTimeoutSeconds", int),
            E("enable_video", "enableVideo", bool),
            E("business_hours", "businessHours", OCI.TimeSchedule, is_complex=True),
            E(
                "holiday_schedule",
                "holidaySchedule",
                OCI.HolidaySchedule,
                is_complex=True,
            ),
            E("extension_dialing_scope", "extensionDialingScope", str),
            E("name_dialing_scope", "nameDialingScope", str),
            E("name_dialing_entries", "nameDialingEntries", str),
            E(
                "business_hours_menu",
                "businessHoursMenu",
                OCI.AutoAttendantModifyMenu20,
                is_complex=True,
            ),
            E(
                "after_hours_menu",
                "afterHoursMenu",
                OCI.AutoAttendantModifyMenu20,
                is_complex=True,
            ),
            E(
                "holiday_menu",
                "holidayMenu",
                OCI.AutoAttendantModifyMenu20,
                is_complex=True,
            ),
            E("network_class_of_service", "networkClassOfService", str),
        )


# end
