# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from . import _utilities

__all__ = [
    'StarRocksInstanceBackendNodeGroup',
    'StarRocksInstanceFrontendNodeGroup',
    'StarRocksInstanceObserverNodeGroup',
    'StarRocksInstanceVswitch',
    'GetMscSubContactsContactResult',
    'GetMscSubSubscriptionsSubscriptionResult',
    'GetMscSubWebhooksWebhookResult',
    'GetRegionsRegionResult',
    'GetZonesZoneResult',
]

@pulumi.output_type
class StarRocksInstanceBackendNodeGroup(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "diskNumber":
            suggest = "disk_number"
        elif key == "localStorageInstanceType":
            suggest = "local_storage_instance_type"
        elif key == "residentNodeNumber":
            suggest = "resident_node_number"
        elif key == "specType":
            suggest = "spec_type"
        elif key == "storagePerformanceLevel":
            suggest = "storage_performance_level"
        elif key == "storageSize":
            suggest = "storage_size"
        elif key == "zoneId":
            suggest = "zone_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in StarRocksInstanceBackendNodeGroup. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        StarRocksInstanceBackendNodeGroup.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        StarRocksInstanceBackendNodeGroup.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cu: Optional[_builtins.int] = None,
                 disk_number: Optional[_builtins.int] = None,
                 local_storage_instance_type: Optional[_builtins.str] = None,
                 resident_node_number: Optional[_builtins.int] = None,
                 spec_type: Optional[_builtins.str] = None,
                 storage_performance_level: Optional[_builtins.str] = None,
                 storage_size: Optional[_builtins.int] = None,
                 zone_id: Optional[_builtins.str] = None):
        """
        :param _builtins.int cu: Number of CUs. CU (Compute Unit) is the basic measurement unit of the service, where 1 CU = 1 CPU core + 4 GiB memory.
        :param _builtins.int disk_number: The number of disks.
        :param _builtins.str local_storage_instance_type: Local SSD instance specifications.
        :param _builtins.int resident_node_number: Resident node number of node group.
        :param _builtins.str spec_type: Compute group specification types include the following:
               - standard
               - localSSD
               - bigData
               - ramEnhanced
               - networkEnhanced
        :param _builtins.str storage_performance_level: Performance levels of cloud disks include the following values:
               - pl0: Maximum random read/write IOPS per disk is 10,000.
               - pl1: Maximum random read/write IOPS per disk is 50,000.
               - pl2: Maximum random read/write IOPS per disk is 100,000.
               - pl3: Maximum random read/write IOPS per disk is 1,000,000.
        :param _builtins.int storage_size: Storage size, measured in GiB.
        :param _builtins.str zone_id: Zone ID.
        """
        if cu is not None:
            pulumi.set(__self__, "cu", cu)
        if disk_number is not None:
            pulumi.set(__self__, "disk_number", disk_number)
        if local_storage_instance_type is not None:
            pulumi.set(__self__, "local_storage_instance_type", local_storage_instance_type)
        if resident_node_number is not None:
            pulumi.set(__self__, "resident_node_number", resident_node_number)
        if spec_type is not None:
            pulumi.set(__self__, "spec_type", spec_type)
        if storage_performance_level is not None:
            pulumi.set(__self__, "storage_performance_level", storage_performance_level)
        if storage_size is not None:
            pulumi.set(__self__, "storage_size", storage_size)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @_builtins.property
    @pulumi.getter
    def cu(self) -> Optional[_builtins.int]:
        """
        Number of CUs. CU (Compute Unit) is the basic measurement unit of the service, where 1 CU = 1 CPU core + 4 GiB memory.
        """
        return pulumi.get(self, "cu")

    @_builtins.property
    @pulumi.getter(name="diskNumber")
    def disk_number(self) -> Optional[_builtins.int]:
        """
        The number of disks.
        """
        return pulumi.get(self, "disk_number")

    @_builtins.property
    @pulumi.getter(name="localStorageInstanceType")
    def local_storage_instance_type(self) -> Optional[_builtins.str]:
        """
        Local SSD instance specifications.
        """
        return pulumi.get(self, "local_storage_instance_type")

    @_builtins.property
    @pulumi.getter(name="residentNodeNumber")
    def resident_node_number(self) -> Optional[_builtins.int]:
        """
        Resident node number of node group.
        """
        return pulumi.get(self, "resident_node_number")

    @_builtins.property
    @pulumi.getter(name="specType")
    def spec_type(self) -> Optional[_builtins.str]:
        """
        Compute group specification types include the following:
        - standard
        - localSSD
        - bigData
        - ramEnhanced
        - networkEnhanced
        """
        return pulumi.get(self, "spec_type")

    @_builtins.property
    @pulumi.getter(name="storagePerformanceLevel")
    def storage_performance_level(self) -> Optional[_builtins.str]:
        """
        Performance levels of cloud disks include the following values:
        - pl0: Maximum random read/write IOPS per disk is 10,000.
        - pl1: Maximum random read/write IOPS per disk is 50,000.
        - pl2: Maximum random read/write IOPS per disk is 100,000.
        - pl3: Maximum random read/write IOPS per disk is 1,000,000.
        """
        return pulumi.get(self, "storage_performance_level")

    @_builtins.property
    @pulumi.getter(name="storageSize")
    def storage_size(self) -> Optional[_builtins.int]:
        """
        Storage size, measured in GiB.
        """
        return pulumi.get(self, "storage_size")

    @_builtins.property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[_builtins.str]:
        """
        Zone ID.
        """
        return pulumi.get(self, "zone_id")


@pulumi.output_type
class StarRocksInstanceFrontendNodeGroup(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "diskNumber":
            suggest = "disk_number"
        elif key == "localStorageInstanceType":
            suggest = "local_storage_instance_type"
        elif key == "residentNodeNumber":
            suggest = "resident_node_number"
        elif key == "specType":
            suggest = "spec_type"
        elif key == "storagePerformanceLevel":
            suggest = "storage_performance_level"
        elif key == "storageSize":
            suggest = "storage_size"
        elif key == "zoneId":
            suggest = "zone_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in StarRocksInstanceFrontendNodeGroup. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        StarRocksInstanceFrontendNodeGroup.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        StarRocksInstanceFrontendNodeGroup.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cu: Optional[_builtins.int] = None,
                 disk_number: Optional[_builtins.int] = None,
                 local_storage_instance_type: Optional[_builtins.str] = None,
                 resident_node_number: Optional[_builtins.int] = None,
                 spec_type: Optional[_builtins.str] = None,
                 storage_performance_level: Optional[_builtins.str] = None,
                 storage_size: Optional[_builtins.int] = None,
                 zone_id: Optional[_builtins.str] = None):
        """
        :param _builtins.int cu: Number of CUs. CU (Compute Unit) is the basic measurement unit of the service, where 1 CU = 1 CPU core + 4 GiB memory.
        :param _builtins.int disk_number: DiskNumber
        :param _builtins.str local_storage_instance_type: Local SSD instance specifications.
        :param _builtins.int resident_node_number: Resident node number of node group.
        :param _builtins.str spec_type: Compute group specification types include the following:
               - standard
               - ramEnhanced
        :param _builtins.str storage_performance_level: Performance levels of cloud disks include the following values:
               - pl0: Maximum random read/write IOPS per disk is 10,000.
               - pl1: Maximum random read/write IOPS per disk is 50,000.
               - pl2: Maximum random read/write IOPS per disk is 100,000.
               - pl3: Maximum random read/write IOPS per disk is 1,000,000.
        :param _builtins.int storage_size: Storage size, measured in GiB.
        :param _builtins.str zone_id: Zone ID.
        """
        if cu is not None:
            pulumi.set(__self__, "cu", cu)
        if disk_number is not None:
            pulumi.set(__self__, "disk_number", disk_number)
        if local_storage_instance_type is not None:
            pulumi.set(__self__, "local_storage_instance_type", local_storage_instance_type)
        if resident_node_number is not None:
            pulumi.set(__self__, "resident_node_number", resident_node_number)
        if spec_type is not None:
            pulumi.set(__self__, "spec_type", spec_type)
        if storage_performance_level is not None:
            pulumi.set(__self__, "storage_performance_level", storage_performance_level)
        if storage_size is not None:
            pulumi.set(__self__, "storage_size", storage_size)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @_builtins.property
    @pulumi.getter
    def cu(self) -> Optional[_builtins.int]:
        """
        Number of CUs. CU (Compute Unit) is the basic measurement unit of the service, where 1 CU = 1 CPU core + 4 GiB memory.
        """
        return pulumi.get(self, "cu")

    @_builtins.property
    @pulumi.getter(name="diskNumber")
    def disk_number(self) -> Optional[_builtins.int]:
        """
        DiskNumber
        """
        return pulumi.get(self, "disk_number")

    @_builtins.property
    @pulumi.getter(name="localStorageInstanceType")
    def local_storage_instance_type(self) -> Optional[_builtins.str]:
        """
        Local SSD instance specifications.
        """
        return pulumi.get(self, "local_storage_instance_type")

    @_builtins.property
    @pulumi.getter(name="residentNodeNumber")
    def resident_node_number(self) -> Optional[_builtins.int]:
        """
        Resident node number of node group.
        """
        return pulumi.get(self, "resident_node_number")

    @_builtins.property
    @pulumi.getter(name="specType")
    def spec_type(self) -> Optional[_builtins.str]:
        """
        Compute group specification types include the following:
        - standard
        - ramEnhanced
        """
        return pulumi.get(self, "spec_type")

    @_builtins.property
    @pulumi.getter(name="storagePerformanceLevel")
    def storage_performance_level(self) -> Optional[_builtins.str]:
        """
        Performance levels of cloud disks include the following values:
        - pl0: Maximum random read/write IOPS per disk is 10,000.
        - pl1: Maximum random read/write IOPS per disk is 50,000.
        - pl2: Maximum random read/write IOPS per disk is 100,000.
        - pl3: Maximum random read/write IOPS per disk is 1,000,000.
        """
        return pulumi.get(self, "storage_performance_level")

    @_builtins.property
    @pulumi.getter(name="storageSize")
    def storage_size(self) -> Optional[_builtins.int]:
        """
        Storage size, measured in GiB.
        """
        return pulumi.get(self, "storage_size")

    @_builtins.property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[_builtins.str]:
        """
        Zone ID.
        """
        return pulumi.get(self, "zone_id")


@pulumi.output_type
class StarRocksInstanceObserverNodeGroup(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "diskNumber":
            suggest = "disk_number"
        elif key == "localStorageInstanceType":
            suggest = "local_storage_instance_type"
        elif key == "residentNodeNumber":
            suggest = "resident_node_number"
        elif key == "specType":
            suggest = "spec_type"
        elif key == "storagePerformanceLevel":
            suggest = "storage_performance_level"
        elif key == "storageSize":
            suggest = "storage_size"
        elif key == "zoneId":
            suggest = "zone_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in StarRocksInstanceObserverNodeGroup. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        StarRocksInstanceObserverNodeGroup.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        StarRocksInstanceObserverNodeGroup.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cu: Optional[_builtins.int] = None,
                 disk_number: Optional[_builtins.int] = None,
                 local_storage_instance_type: Optional[_builtins.str] = None,
                 resident_node_number: Optional[_builtins.int] = None,
                 spec_type: Optional[_builtins.str] = None,
                 storage_performance_level: Optional[_builtins.str] = None,
                 storage_size: Optional[_builtins.int] = None,
                 zone_id: Optional[_builtins.str] = None):
        """
        :param _builtins.int cu: Number of CUs. CU (Compute Unit) is the basic measurement unit of the service, where 1 CU = 1 CPU core + 4 GiB memory.
        :param _builtins.int disk_number: DiskNumber
        :param _builtins.str local_storage_instance_type: Local SSD instance specifications.
        :param _builtins.int resident_node_number: Resident node number of node group.
        :param _builtins.str spec_type: Compute group specification types include the following:
               - standard
        :param _builtins.str storage_performance_level: Performance levels of cloud disks include the following values:
               - pl0: Maximum random read/write IOPS per disk is 10,000.
               - pl1: Maximum random read/write IOPS per disk is 50,000.
               - pl2: Maximum random read/write IOPS per disk is 100,000.
               - pl3: Maximum random read/write IOPS per disk is 1,000,000.
        :param _builtins.int storage_size: Storage size, measured in GiB.
        :param _builtins.str zone_id: Zone ID.
        """
        if cu is not None:
            pulumi.set(__self__, "cu", cu)
        if disk_number is not None:
            pulumi.set(__self__, "disk_number", disk_number)
        if local_storage_instance_type is not None:
            pulumi.set(__self__, "local_storage_instance_type", local_storage_instance_type)
        if resident_node_number is not None:
            pulumi.set(__self__, "resident_node_number", resident_node_number)
        if spec_type is not None:
            pulumi.set(__self__, "spec_type", spec_type)
        if storage_performance_level is not None:
            pulumi.set(__self__, "storage_performance_level", storage_performance_level)
        if storage_size is not None:
            pulumi.set(__self__, "storage_size", storage_size)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @_builtins.property
    @pulumi.getter
    def cu(self) -> Optional[_builtins.int]:
        """
        Number of CUs. CU (Compute Unit) is the basic measurement unit of the service, where 1 CU = 1 CPU core + 4 GiB memory.
        """
        return pulumi.get(self, "cu")

    @_builtins.property
    @pulumi.getter(name="diskNumber")
    def disk_number(self) -> Optional[_builtins.int]:
        """
        DiskNumber
        """
        return pulumi.get(self, "disk_number")

    @_builtins.property
    @pulumi.getter(name="localStorageInstanceType")
    def local_storage_instance_type(self) -> Optional[_builtins.str]:
        """
        Local SSD instance specifications.
        """
        return pulumi.get(self, "local_storage_instance_type")

    @_builtins.property
    @pulumi.getter(name="residentNodeNumber")
    def resident_node_number(self) -> Optional[_builtins.int]:
        """
        Resident node number of node group.
        """
        return pulumi.get(self, "resident_node_number")

    @_builtins.property
    @pulumi.getter(name="specType")
    def spec_type(self) -> Optional[_builtins.str]:
        """
        Compute group specification types include the following:
        - standard
        """
        return pulumi.get(self, "spec_type")

    @_builtins.property
    @pulumi.getter(name="storagePerformanceLevel")
    def storage_performance_level(self) -> Optional[_builtins.str]:
        """
        Performance levels of cloud disks include the following values:
        - pl0: Maximum random read/write IOPS per disk is 10,000.
        - pl1: Maximum random read/write IOPS per disk is 50,000.
        - pl2: Maximum random read/write IOPS per disk is 100,000.
        - pl3: Maximum random read/write IOPS per disk is 1,000,000.
        """
        return pulumi.get(self, "storage_performance_level")

    @_builtins.property
    @pulumi.getter(name="storageSize")
    def storage_size(self) -> Optional[_builtins.int]:
        """
        Storage size, measured in GiB.
        """
        return pulumi.get(self, "storage_size")

    @_builtins.property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[_builtins.str]:
        """
        Zone ID.
        """
        return pulumi.get(self, "zone_id")


@pulumi.output_type
class StarRocksInstanceVswitch(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "vswitchId":
            suggest = "vswitch_id"
        elif key == "zoneId":
            suggest = "zone_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in StarRocksInstanceVswitch. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        StarRocksInstanceVswitch.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        StarRocksInstanceVswitch.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 vswitch_id: _builtins.str,
                 zone_id: Optional[_builtins.str] = None):
        """
        :param _builtins.str vswitch_id: ID of VSwitch.
        :param _builtins.str zone_id: Zone ID of VSwitch.
        """
        pulumi.set(__self__, "vswitch_id", vswitch_id)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)

    @_builtins.property
    @pulumi.getter(name="vswitchId")
    def vswitch_id(self) -> _builtins.str:
        """
        ID of VSwitch.
        """
        return pulumi.get(self, "vswitch_id")

    @_builtins.property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[_builtins.str]:
        """
        Zone ID of VSwitch.
        """
        return pulumi.get(self, "zone_id")


@pulumi.output_type
class GetMscSubContactsContactResult(dict):
    def __init__(__self__, *,
                 account_uid: _builtins.str,
                 contact_id: _builtins.str,
                 contact_name: _builtins.str,
                 email: _builtins.str,
                 id: _builtins.str,
                 is_account: _builtins.bool,
                 is_obsolete: _builtins.bool,
                 is_verified_email: _builtins.bool,
                 is_verified_mobile: _builtins.bool,
                 last_email_verification_time_stamp: _builtins.str,
                 last_mobile_verification_time_stamp: _builtins.str,
                 mobile: _builtins.str,
                 position: _builtins.str):
        """
        :param _builtins.str account_uid: UID.
        :param _builtins.str contact_id: The first ID of the resource.
        :param _builtins.str contact_name: The User's Contact Name. **Note:** The name must be 2 to 12 characters in length, and can contain uppercase and lowercase letters.
        :param _builtins.str email: The User's Contact Email Address.
        :param _builtins.str id: The ID of the Contact.
        :param _builtins.bool is_account: Indicates Whether the BGP Group Is the Account Itself.
        :param _builtins.bool is_obsolete: Whether They Have Expired Or Not.
        :param _builtins.bool is_verified_email: Email Validation for.
        :param _builtins.bool is_verified_mobile: If the Phone Verification.
        :param _builtins.str last_email_verification_time_stamp: Last Verification Email Transmission Time.
        :param _builtins.str last_mobile_verification_time_stamp: The Pieces of Authentication SMS Sending Time.
        :param _builtins.str mobile: The User's Telephone.
        :param _builtins.str position: The User's Position. Valid values: `CEO`, `Technical Director`, `Maintenance Director`, `Project Director`,`Finance Director` and `Other`.
        """
        pulumi.set(__self__, "account_uid", account_uid)
        pulumi.set(__self__, "contact_id", contact_id)
        pulumi.set(__self__, "contact_name", contact_name)
        pulumi.set(__self__, "email", email)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_account", is_account)
        pulumi.set(__self__, "is_obsolete", is_obsolete)
        pulumi.set(__self__, "is_verified_email", is_verified_email)
        pulumi.set(__self__, "is_verified_mobile", is_verified_mobile)
        pulumi.set(__self__, "last_email_verification_time_stamp", last_email_verification_time_stamp)
        pulumi.set(__self__, "last_mobile_verification_time_stamp", last_mobile_verification_time_stamp)
        pulumi.set(__self__, "mobile", mobile)
        pulumi.set(__self__, "position", position)

    @_builtins.property
    @pulumi.getter(name="accountUid")
    def account_uid(self) -> _builtins.str:
        """
        UID.
        """
        return pulumi.get(self, "account_uid")

    @_builtins.property
    @pulumi.getter(name="contactId")
    def contact_id(self) -> _builtins.str:
        """
        The first ID of the resource.
        """
        return pulumi.get(self, "contact_id")

    @_builtins.property
    @pulumi.getter(name="contactName")
    def contact_name(self) -> _builtins.str:
        """
        The User's Contact Name. **Note:** The name must be 2 to 12 characters in length, and can contain uppercase and lowercase letters.
        """
        return pulumi.get(self, "contact_name")

    @_builtins.property
    @pulumi.getter
    def email(self) -> _builtins.str:
        """
        The User's Contact Email Address.
        """
        return pulumi.get(self, "email")

    @_builtins.property
    @pulumi.getter
    def id(self) -> _builtins.str:
        """
        The ID of the Contact.
        """
        return pulumi.get(self, "id")

    @_builtins.property
    @pulumi.getter(name="isAccount")
    def is_account(self) -> _builtins.bool:
        """
        Indicates Whether the BGP Group Is the Account Itself.
        """
        return pulumi.get(self, "is_account")

    @_builtins.property
    @pulumi.getter(name="isObsolete")
    def is_obsolete(self) -> _builtins.bool:
        """
        Whether They Have Expired Or Not.
        """
        return pulumi.get(self, "is_obsolete")

    @_builtins.property
    @pulumi.getter(name="isVerifiedEmail")
    def is_verified_email(self) -> _builtins.bool:
        """
        Email Validation for.
        """
        return pulumi.get(self, "is_verified_email")

    @_builtins.property
    @pulumi.getter(name="isVerifiedMobile")
    def is_verified_mobile(self) -> _builtins.bool:
        """
        If the Phone Verification.
        """
        return pulumi.get(self, "is_verified_mobile")

    @_builtins.property
    @pulumi.getter(name="lastEmailVerificationTimeStamp")
    def last_email_verification_time_stamp(self) -> _builtins.str:
        """
        Last Verification Email Transmission Time.
        """
        return pulumi.get(self, "last_email_verification_time_stamp")

    @_builtins.property
    @pulumi.getter(name="lastMobileVerificationTimeStamp")
    def last_mobile_verification_time_stamp(self) -> _builtins.str:
        """
        The Pieces of Authentication SMS Sending Time.
        """
        return pulumi.get(self, "last_mobile_verification_time_stamp")

    @_builtins.property
    @pulumi.getter
    def mobile(self) -> _builtins.str:
        """
        The User's Telephone.
        """
        return pulumi.get(self, "mobile")

    @_builtins.property
    @pulumi.getter
    def position(self) -> _builtins.str:
        """
        The User's Position. Valid values: `CEO`, `Technical Director`, `Maintenance Director`, `Project Director`,`Finance Director` and `Other`.
        """
        return pulumi.get(self, "position")


@pulumi.output_type
class GetMscSubSubscriptionsSubscriptionResult(dict):
    def __init__(__self__, *,
                 channel: _builtins.str,
                 contact_ids: Sequence[_builtins.int],
                 description: _builtins.str,
                 email_status: _builtins.int,
                 id: _builtins.str,
                 item_id: _builtins.str,
                 item_name: _builtins.str,
                 pmsg_status: _builtins.int,
                 sms_status: _builtins.int,
                 tts_status: _builtins.int,
                 webhook_ids: Sequence[_builtins.int],
                 webhook_status: _builtins.int):
        """
        :param _builtins.str channel: The channel the Subscription.
        :param Sequence[_builtins.int] contact_ids: The ids of subscribed contacts.
        :param _builtins.str description: The description of the Subscription.
        :param _builtins.int email_status: The status of email subscription. Valid values: `-1`, `-2`, `0`, `1`. `-1` means required, `-2` means banned; `1` means subscribed; `0` means not subscribed.
        :param _builtins.str id: The ID of the Subscription.
        :param _builtins.str item_id: The ID of the Subscription.
        :param _builtins.str item_name: The name of the Subscription.
        :param _builtins.int pmsg_status: The status of pmsg subscription. Valid values: `-1`, `-2`, `0`, `1`. `-1` means required, `-2` means banned; `1` means subscribed; `0` means not subscribed.
        :param _builtins.int sms_status: The status of sms subscription. Valid values: `-1`, `-2`, `0`, `1`. `-1` means required, `-2` means banned; `1` means subscribed; `0` means not subscribed.
        :param _builtins.int tts_status: The status of tts subscription. Valid values: `-1`, `-2`, `0`, `1`. `-1` means required, `-2` means banned; `1` means subscribed; `0` means not subscribed.
        :param Sequence[_builtins.int] webhook_ids: The ids of subscribed webhooks.
        :param _builtins.int webhook_status: The status of webhook subscription. Valid values: `-1`, `-2`, `0`, `1`. `-1` means required, `-2` means banned; `1` means subscribed; `0` means not subscribed.
        """
        pulumi.set(__self__, "channel", channel)
        pulumi.set(__self__, "contact_ids", contact_ids)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "email_status", email_status)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "item_id", item_id)
        pulumi.set(__self__, "item_name", item_name)
        pulumi.set(__self__, "pmsg_status", pmsg_status)
        pulumi.set(__self__, "sms_status", sms_status)
        pulumi.set(__self__, "tts_status", tts_status)
        pulumi.set(__self__, "webhook_ids", webhook_ids)
        pulumi.set(__self__, "webhook_status", webhook_status)

    @_builtins.property
    @pulumi.getter
    def channel(self) -> _builtins.str:
        """
        The channel the Subscription.
        """
        return pulumi.get(self, "channel")

    @_builtins.property
    @pulumi.getter(name="contactIds")
    def contact_ids(self) -> Sequence[_builtins.int]:
        """
        The ids of subscribed contacts.
        """
        return pulumi.get(self, "contact_ids")

    @_builtins.property
    @pulumi.getter
    def description(self) -> _builtins.str:
        """
        The description of the Subscription.
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter(name="emailStatus")
    def email_status(self) -> _builtins.int:
        """
        The status of email subscription. Valid values: `-1`, `-2`, `0`, `1`. `-1` means required, `-2` means banned; `1` means subscribed; `0` means not subscribed.
        """
        return pulumi.get(self, "email_status")

    @_builtins.property
    @pulumi.getter
    def id(self) -> _builtins.str:
        """
        The ID of the Subscription.
        """
        return pulumi.get(self, "id")

    @_builtins.property
    @pulumi.getter(name="itemId")
    def item_id(self) -> _builtins.str:
        """
        The ID of the Subscription.
        """
        return pulumi.get(self, "item_id")

    @_builtins.property
    @pulumi.getter(name="itemName")
    def item_name(self) -> _builtins.str:
        """
        The name of the Subscription.
        """
        return pulumi.get(self, "item_name")

    @_builtins.property
    @pulumi.getter(name="pmsgStatus")
    def pmsg_status(self) -> _builtins.int:
        """
        The status of pmsg subscription. Valid values: `-1`, `-2`, `0`, `1`. `-1` means required, `-2` means banned; `1` means subscribed; `0` means not subscribed.
        """
        return pulumi.get(self, "pmsg_status")

    @_builtins.property
    @pulumi.getter(name="smsStatus")
    def sms_status(self) -> _builtins.int:
        """
        The status of sms subscription. Valid values: `-1`, `-2`, `0`, `1`. `-1` means required, `-2` means banned; `1` means subscribed; `0` means not subscribed.
        """
        return pulumi.get(self, "sms_status")

    @_builtins.property
    @pulumi.getter(name="ttsStatus")
    def tts_status(self) -> _builtins.int:
        """
        The status of tts subscription. Valid values: `-1`, `-2`, `0`, `1`. `-1` means required, `-2` means banned; `1` means subscribed; `0` means not subscribed.
        """
        return pulumi.get(self, "tts_status")

    @_builtins.property
    @pulumi.getter(name="webhookIds")
    def webhook_ids(self) -> Sequence[_builtins.int]:
        """
        The ids of subscribed webhooks.
        """
        return pulumi.get(self, "webhook_ids")

    @_builtins.property
    @pulumi.getter(name="webhookStatus")
    def webhook_status(self) -> _builtins.int:
        """
        The status of webhook subscription. Valid values: `-1`, `-2`, `0`, `1`. `-1` means required, `-2` means banned; `1` means subscribed; `0` means not subscribed.
        """
        return pulumi.get(self, "webhook_status")


@pulumi.output_type
class GetMscSubWebhooksWebhookResult(dict):
    def __init__(__self__, *,
                 id: _builtins.str,
                 server_url: _builtins.str,
                 webhook_id: _builtins.str,
                 webhook_name: _builtins.str):
        """
        :param _builtins.str id: The ID of the Webhook.
        :param _builtins.str server_url: The serverUrl of the Subscription.
        :param _builtins.str webhook_id: The first ID of the resource.
        :param _builtins.str webhook_name: The name of the Webhook. **Note:** The name must be `2` to `12` characters in length, and can contain uppercase and lowercase letters.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "server_url", server_url)
        pulumi.set(__self__, "webhook_id", webhook_id)
        pulumi.set(__self__, "webhook_name", webhook_name)

    @_builtins.property
    @pulumi.getter
    def id(self) -> _builtins.str:
        """
        The ID of the Webhook.
        """
        return pulumi.get(self, "id")

    @_builtins.property
    @pulumi.getter(name="serverUrl")
    def server_url(self) -> _builtins.str:
        """
        The serverUrl of the Subscription.
        """
        return pulumi.get(self, "server_url")

    @_builtins.property
    @pulumi.getter(name="webhookId")
    def webhook_id(self) -> _builtins.str:
        """
        The first ID of the resource.
        """
        return pulumi.get(self, "webhook_id")

    @_builtins.property
    @pulumi.getter(name="webhookName")
    def webhook_name(self) -> _builtins.str:
        """
        The name of the Webhook. **Note:** The name must be `2` to `12` characters in length, and can contain uppercase and lowercase letters.
        """
        return pulumi.get(self, "webhook_name")


@pulumi.output_type
class GetRegionsRegionResult(dict):
    def __init__(__self__, *,
                 id: _builtins.str,
                 local_name: _builtins.str,
                 region_id: _builtins.str):
        """
        :param _builtins.str id: ID of the region.
        :param _builtins.str local_name: Name of the region in the local language.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "local_name", local_name)
        pulumi.set(__self__, "region_id", region_id)

    @_builtins.property
    @pulumi.getter
    def id(self) -> _builtins.str:
        """
        ID of the region.
        """
        return pulumi.get(self, "id")

    @_builtins.property
    @pulumi.getter(name="localName")
    def local_name(self) -> _builtins.str:
        """
        Name of the region in the local language.
        """
        return pulumi.get(self, "local_name")

    @_builtins.property
    @pulumi.getter(name="regionId")
    def region_id(self) -> _builtins.str:
        return pulumi.get(self, "region_id")


@pulumi.output_type
class GetZonesZoneResult(dict):
    def __init__(__self__, *,
                 available_disk_categories: Sequence[_builtins.str],
                 available_instance_types: Sequence[_builtins.str],
                 available_resource_creations: Sequence[_builtins.str],
                 id: _builtins.str,
                 local_name: _builtins.str,
                 multi_zone_ids: Sequence[_builtins.str],
                 slb_slave_zone_ids: Sequence[_builtins.str]):
        """
        :param Sequence[_builtins.str] available_disk_categories: Set of supported disk categories.
        :param Sequence[_builtins.str] available_instance_types: Allowed instance types.
        :param Sequence[_builtins.str] available_resource_creations: Filter the results by a specific resource type.
               Valid values: `Instance`, `Disk`, `VSwitch`, `Rds`, `KVStore`, `FunctionCompute`, `Elasticsearch`, `Slb`.
               
               > **NOTE:** From version 1.134.0, the `available_resource_creation` value "Rds" has been deprecated.
               If you want to fetch the available zones for RDS instance, you can use datasource alicloud_db_zones
        :param _builtins.str id: ID of the zone.
        :param _builtins.str local_name: Name of the zone in the local language.
        :param Sequence[_builtins.str] multi_zone_ids: A list of zone ids in which the multi zone.
        :param Sequence[_builtins.str] slb_slave_zone_ids: A list of slb slave zone ids in which the slb master zone.
        """
        pulumi.set(__self__, "available_disk_categories", available_disk_categories)
        pulumi.set(__self__, "available_instance_types", available_instance_types)
        pulumi.set(__self__, "available_resource_creations", available_resource_creations)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "local_name", local_name)
        pulumi.set(__self__, "multi_zone_ids", multi_zone_ids)
        pulumi.set(__self__, "slb_slave_zone_ids", slb_slave_zone_ids)

    @_builtins.property
    @pulumi.getter(name="availableDiskCategories")
    def available_disk_categories(self) -> Sequence[_builtins.str]:
        """
        Set of supported disk categories.
        """
        return pulumi.get(self, "available_disk_categories")

    @_builtins.property
    @pulumi.getter(name="availableInstanceTypes")
    def available_instance_types(self) -> Sequence[_builtins.str]:
        """
        Allowed instance types.
        """
        return pulumi.get(self, "available_instance_types")

    @_builtins.property
    @pulumi.getter(name="availableResourceCreations")
    def available_resource_creations(self) -> Sequence[_builtins.str]:
        """
        Filter the results by a specific resource type.
        Valid values: `Instance`, `Disk`, `VSwitch`, `Rds`, `KVStore`, `FunctionCompute`, `Elasticsearch`, `Slb`.

        > **NOTE:** From version 1.134.0, the `available_resource_creation` value "Rds" has been deprecated.
        If you want to fetch the available zones for RDS instance, you can use datasource alicloud_db_zones
        """
        return pulumi.get(self, "available_resource_creations")

    @_builtins.property
    @pulumi.getter
    def id(self) -> _builtins.str:
        """
        ID of the zone.
        """
        return pulumi.get(self, "id")

    @_builtins.property
    @pulumi.getter(name="localName")
    def local_name(self) -> _builtins.str:
        """
        Name of the zone in the local language.
        """
        return pulumi.get(self, "local_name")

    @_builtins.property
    @pulumi.getter(name="multiZoneIds")
    def multi_zone_ids(self) -> Sequence[_builtins.str]:
        """
        A list of zone ids in which the multi zone.
        """
        return pulumi.get(self, "multi_zone_ids")

    @_builtins.property
    @pulumi.getter(name="slbSlaveZoneIds")
    def slb_slave_zone_ids(self) -> Sequence[_builtins.str]:
        """
        A list of slb slave zone ids in which the slb master zone.
        """
        return pulumi.get(self, "slb_slave_zone_ids")


