# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins
import copy
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__ = [
    'GroupResetInfoArgs',
    'GroupResetInfoArgsDict',
    'GroupTopicInfoArgs',
    'GroupTopicInfoArgsDict',
    'GroupTopicInfoPartitionInfoArgs',
    'GroupTopicInfoPartitionInfoArgsDict',
    'InstanceEndpointsArgs',
    'InstanceEndpointsArgsDict',
    'InstanceEndpointsOverlayArgs',
    'InstanceEndpointsOverlayArgsDict',
    'InstanceEndpointsPublicArgs',
    'InstanceEndpointsPublicArgsDict',
    'InstanceResourceTagArgs',
    'InstanceResourceTagArgsDict',
    'InstanceResourceTagTagKvArgs',
    'InstanceResourceTagTagKvArgsDict',
    'InstanceResourcesArgs',
    'InstanceResourcesArgsDict',
    'InstanceResourcesStorageArgs',
    'InstanceResourcesStorageArgsDict',
    'InstanceTagArgs',
    'InstanceTagArgsDict',
]

MYPY = False

if not MYPY:
    class GroupResetInfoArgsDict(TypedDict):
        offset_type: NotRequired[pulumi.Input[builtins.str]]
        """
        重置方式为 OFFSET 时，该参数必传，指定重新消费的基准消费位置，取值如下：EARLIEST：基准消费位置为最早消费位点。CURRENT：基准消费位置为当前消费位点。LATEST：基准消费位置为最近消费位点。
        """
        partition_id: NotRequired[pulumi.Input[builtins.int]]
        """
        分区序号。
        """
        reset_by: NotRequired[pulumi.Input[builtins.str]]
        """
        重置方式，取值如下：TIMESTAMP：根据时间点重置消费位点，指定过去或将来的时间点，直接跳转到该时间点的位点开始消费。OFFSET：根据指定的 offset 重置消费位点，即从指定的位点开始消费，可以通过 offsetType 参数指定 offset。
        """
        reset_value: NotRequired[pulumi.Input[builtins.int]]
        """
        重置值。选择重置方式为 TIMESTAMP 时，该值为重新消费的时间点。例如 1722224612000。选择重置方式为 OFFSET 时，该值为相对于 OffsetType 中基准位点的 相对偏移量。例如 100。
        """
        topic_id: NotRequired[pulumi.Input[builtins.str]]
        """
        Topic ID。
        """
elif False:
    GroupResetInfoArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class GroupResetInfoArgs:
    def __init__(__self__, *,
                 offset_type: Optional[pulumi.Input[builtins.str]] = None,
                 partition_id: Optional[pulumi.Input[builtins.int]] = None,
                 reset_by: Optional[pulumi.Input[builtins.str]] = None,
                 reset_value: Optional[pulumi.Input[builtins.int]] = None,
                 topic_id: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] offset_type: 重置方式为 OFFSET 时，该参数必传，指定重新消费的基准消费位置，取值如下：EARLIEST：基准消费位置为最早消费位点。CURRENT：基准消费位置为当前消费位点。LATEST：基准消费位置为最近消费位点。
        :param pulumi.Input[builtins.int] partition_id: 分区序号。
        :param pulumi.Input[builtins.str] reset_by: 重置方式，取值如下：TIMESTAMP：根据时间点重置消费位点，指定过去或将来的时间点，直接跳转到该时间点的位点开始消费。OFFSET：根据指定的 offset 重置消费位点，即从指定的位点开始消费，可以通过 offsetType 参数指定 offset。
        :param pulumi.Input[builtins.int] reset_value: 重置值。选择重置方式为 TIMESTAMP 时，该值为重新消费的时间点。例如 1722224612000。选择重置方式为 OFFSET 时，该值为相对于 OffsetType 中基准位点的 相对偏移量。例如 100。
        :param pulumi.Input[builtins.str] topic_id: Topic ID。
        """
        if offset_type is not None:
            pulumi.set(__self__, "offset_type", offset_type)
        if partition_id is not None:
            pulumi.set(__self__, "partition_id", partition_id)
        if reset_by is not None:
            pulumi.set(__self__, "reset_by", reset_by)
        if reset_value is not None:
            pulumi.set(__self__, "reset_value", reset_value)
        if topic_id is not None:
            pulumi.set(__self__, "topic_id", topic_id)

    @property
    @pulumi.getter(name="offsetType")
    def offset_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        重置方式为 OFFSET 时，该参数必传，指定重新消费的基准消费位置，取值如下：EARLIEST：基准消费位置为最早消费位点。CURRENT：基准消费位置为当前消费位点。LATEST：基准消费位置为最近消费位点。
        """
        return pulumi.get(self, "offset_type")

    @offset_type.setter
    def offset_type(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "offset_type", value)

    @property
    @pulumi.getter(name="partitionId")
    def partition_id(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        分区序号。
        """
        return pulumi.get(self, "partition_id")

    @partition_id.setter
    def partition_id(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "partition_id", value)

    @property
    @pulumi.getter(name="resetBy")
    def reset_by(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        重置方式，取值如下：TIMESTAMP：根据时间点重置消费位点，指定过去或将来的时间点，直接跳转到该时间点的位点开始消费。OFFSET：根据指定的 offset 重置消费位点，即从指定的位点开始消费，可以通过 offsetType 参数指定 offset。
        """
        return pulumi.get(self, "reset_by")

    @reset_by.setter
    def reset_by(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "reset_by", value)

    @property
    @pulumi.getter(name="resetValue")
    def reset_value(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        重置值。选择重置方式为 TIMESTAMP 时，该值为重新消费的时间点。例如 1722224612000。选择重置方式为 OFFSET 时，该值为相对于 OffsetType 中基准位点的 相对偏移量。例如 100。
        """
        return pulumi.get(self, "reset_value")

    @reset_value.setter
    def reset_value(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "reset_value", value)

    @property
    @pulumi.getter(name="topicId")
    def topic_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        Topic ID。
        """
        return pulumi.get(self, "topic_id")

    @topic_id.setter
    def topic_id(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "topic_id", value)


if not MYPY:
    class GroupTopicInfoArgsDict(TypedDict):
        create_time: NotRequired[pulumi.Input[builtins.str]]
        """
        Topic 的创建时间。
        """
        description: NotRequired[pulumi.Input[builtins.str]]
        """
        Topic 的描述语句。
        """
        lag: NotRequired[pulumi.Input[builtins.int]]
        """
        Topic 中未被消费的消息条数。
        """
        partition_infos: NotRequired[pulumi.Input[Sequence[pulumi.Input['GroupTopicInfoPartitionInfoArgsDict']]]]
        partitions: NotRequired[pulumi.Input[builtins.int]]
        """
        Topic 分区数。
        """
        retention: NotRequired[pulumi.Input[builtins.int]]
        """
        数据在 Topic 中的保留时长，单位为小时。
        """
        status: NotRequired[pulumi.Input[builtins.str]]
        """
        Topic 的状态。
        """
        topic_id: NotRequired[pulumi.Input[builtins.str]]
        """
        Topic ID。
        """
        topic_name: NotRequired[pulumi.Input[builtins.str]]
        """
        Topic 的名称。
        """
elif False:
    GroupTopicInfoArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class GroupTopicInfoArgs:
    def __init__(__self__, *,
                 create_time: Optional[pulumi.Input[builtins.str]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 lag: Optional[pulumi.Input[builtins.int]] = None,
                 partition_infos: Optional[pulumi.Input[Sequence[pulumi.Input['GroupTopicInfoPartitionInfoArgs']]]] = None,
                 partitions: Optional[pulumi.Input[builtins.int]] = None,
                 retention: Optional[pulumi.Input[builtins.int]] = None,
                 status: Optional[pulumi.Input[builtins.str]] = None,
                 topic_id: Optional[pulumi.Input[builtins.str]] = None,
                 topic_name: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] create_time: Topic 的创建时间。
        :param pulumi.Input[builtins.str] description: Topic 的描述语句。
        :param pulumi.Input[builtins.int] lag: Topic 中未被消费的消息条数。
        :param pulumi.Input[builtins.int] partitions: Topic 分区数。
        :param pulumi.Input[builtins.int] retention: 数据在 Topic 中的保留时长，单位为小时。
        :param pulumi.Input[builtins.str] status: Topic 的状态。
        :param pulumi.Input[builtins.str] topic_id: Topic ID。
        :param pulumi.Input[builtins.str] topic_name: Topic 的名称。
        """
        if create_time is not None:
            pulumi.set(__self__, "create_time", create_time)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if lag is not None:
            pulumi.set(__self__, "lag", lag)
        if partition_infos is not None:
            pulumi.set(__self__, "partition_infos", partition_infos)
        if partitions is not None:
            pulumi.set(__self__, "partitions", partitions)
        if retention is not None:
            pulumi.set(__self__, "retention", retention)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if topic_id is not None:
            pulumi.set(__self__, "topic_id", topic_id)
        if topic_name is not None:
            pulumi.set(__self__, "topic_name", topic_name)

    @property
    @pulumi.getter(name="createTime")
    def create_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        Topic 的创建时间。
        """
        return pulumi.get(self, "create_time")

    @create_time.setter
    def create_time(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "create_time", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        Topic 的描述语句。
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "description", value)

    @property
    @pulumi.getter
    def lag(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        Topic 中未被消费的消息条数。
        """
        return pulumi.get(self, "lag")

    @lag.setter
    def lag(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "lag", value)

    @property
    @pulumi.getter(name="partitionInfos")
    def partition_infos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['GroupTopicInfoPartitionInfoArgs']]]]:
        return pulumi.get(self, "partition_infos")

    @partition_infos.setter
    def partition_infos(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['GroupTopicInfoPartitionInfoArgs']]]]):
        pulumi.set(self, "partition_infos", value)

    @property
    @pulumi.getter
    def partitions(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        Topic 分区数。
        """
        return pulumi.get(self, "partitions")

    @partitions.setter
    def partitions(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "partitions", value)

    @property
    @pulumi.getter
    def retention(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        数据在 Topic 中的保留时长，单位为小时。
        """
        return pulumi.get(self, "retention")

    @retention.setter
    def retention(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "retention", value)

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        Topic 的状态。
        """
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "status", value)

    @property
    @pulumi.getter(name="topicId")
    def topic_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        Topic ID。
        """
        return pulumi.get(self, "topic_id")

    @topic_id.setter
    def topic_id(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "topic_id", value)

    @property
    @pulumi.getter(name="topicName")
    def topic_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        Topic 的名称。
        """
        return pulumi.get(self, "topic_name")

    @topic_name.setter
    def topic_name(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "topic_name", value)


if not MYPY:
    class GroupTopicInfoPartitionInfoArgsDict(TypedDict):
        current_offset: NotRequired[pulumi.Input[builtins.int]]
        """
        当前消费位点。
        """
        group_name: NotRequired[pulumi.Input[builtins.str]]
        """
        Consumer Group 的名称。
        """
        lag: NotRequired[pulumi.Input[builtins.int]]
        """
        分区中未被消费的消息条数。
        """
        latest_offset: NotRequired[pulumi.Input[builtins.int]]
        """
        最新消费位点。
        """
        partition_id: NotRequired[pulumi.Input[builtins.int]]
        """
        分区序号。
        """
        topic_name: NotRequired[pulumi.Input[builtins.str]]
        """
        Consumer Group 订阅的 Topic 名称。
        """
elif False:
    GroupTopicInfoPartitionInfoArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class GroupTopicInfoPartitionInfoArgs:
    def __init__(__self__, *,
                 current_offset: Optional[pulumi.Input[builtins.int]] = None,
                 group_name: Optional[pulumi.Input[builtins.str]] = None,
                 lag: Optional[pulumi.Input[builtins.int]] = None,
                 latest_offset: Optional[pulumi.Input[builtins.int]] = None,
                 partition_id: Optional[pulumi.Input[builtins.int]] = None,
                 topic_name: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.int] current_offset: 当前消费位点。
        :param pulumi.Input[builtins.str] group_name: Consumer Group 的名称。
        :param pulumi.Input[builtins.int] lag: 分区中未被消费的消息条数。
        :param pulumi.Input[builtins.int] latest_offset: 最新消费位点。
        :param pulumi.Input[builtins.int] partition_id: 分区序号。
        :param pulumi.Input[builtins.str] topic_name: Consumer Group 订阅的 Topic 名称。
        """
        if current_offset is not None:
            pulumi.set(__self__, "current_offset", current_offset)
        if group_name is not None:
            pulumi.set(__self__, "group_name", group_name)
        if lag is not None:
            pulumi.set(__self__, "lag", lag)
        if latest_offset is not None:
            pulumi.set(__self__, "latest_offset", latest_offset)
        if partition_id is not None:
            pulumi.set(__self__, "partition_id", partition_id)
        if topic_name is not None:
            pulumi.set(__self__, "topic_name", topic_name)

    @property
    @pulumi.getter(name="currentOffset")
    def current_offset(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        当前消费位点。
        """
        return pulumi.get(self, "current_offset")

    @current_offset.setter
    def current_offset(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "current_offset", value)

    @property
    @pulumi.getter(name="groupName")
    def group_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        Consumer Group 的名称。
        """
        return pulumi.get(self, "group_name")

    @group_name.setter
    def group_name(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "group_name", value)

    @property
    @pulumi.getter
    def lag(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        分区中未被消费的消息条数。
        """
        return pulumi.get(self, "lag")

    @lag.setter
    def lag(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "lag", value)

    @property
    @pulumi.getter(name="latestOffset")
    def latest_offset(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        最新消费位点。
        """
        return pulumi.get(self, "latest_offset")

    @latest_offset.setter
    def latest_offset(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "latest_offset", value)

    @property
    @pulumi.getter(name="partitionId")
    def partition_id(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        分区序号。
        """
        return pulumi.get(self, "partition_id")

    @partition_id.setter
    def partition_id(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "partition_id", value)

    @property
    @pulumi.getter(name="topicName")
    def topic_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        Consumer Group 订阅的 Topic 名称。
        """
        return pulumi.get(self, "topic_name")

    @topic_name.setter
    def topic_name(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "topic_name", value)


if not MYPY:
    class InstanceEndpointsArgsDict(TypedDict):
        overlay: NotRequired[pulumi.Input['InstanceEndpointsOverlayArgsDict']]
        """
        实例私网访问接入点响应数据。
        """
        public: NotRequired[pulumi.Input['InstanceEndpointsPublicArgsDict']]
        """
        实例公网访问接入点响应数据。
        """
elif False:
    InstanceEndpointsArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class InstanceEndpointsArgs:
    def __init__(__self__, *,
                 overlay: Optional[pulumi.Input['InstanceEndpointsOverlayArgs']] = None,
                 public: Optional[pulumi.Input['InstanceEndpointsPublicArgs']] = None):
        """
        :param pulumi.Input['InstanceEndpointsOverlayArgs'] overlay: 实例私网访问接入点响应数据。
        :param pulumi.Input['InstanceEndpointsPublicArgs'] public: 实例公网访问接入点响应数据。
        """
        if overlay is not None:
            pulumi.set(__self__, "overlay", overlay)
        if public is not None:
            pulumi.set(__self__, "public", public)

    @property
    @pulumi.getter
    def overlay(self) -> Optional[pulumi.Input['InstanceEndpointsOverlayArgs']]:
        """
        实例私网访问接入点响应数据。
        """
        return pulumi.get(self, "overlay")

    @overlay.setter
    def overlay(self, value: Optional[pulumi.Input['InstanceEndpointsOverlayArgs']]):
        pulumi.set(self, "overlay", value)

    @property
    @pulumi.getter
    def public(self) -> Optional[pulumi.Input['InstanceEndpointsPublicArgs']]:
        """
        实例公网访问接入点响应数据。
        """
        return pulumi.get(self, "public")

    @public.setter
    def public(self, value: Optional[pulumi.Input['InstanceEndpointsPublicArgs']]):
        pulumi.set(self, "public", value)


if not MYPY:
    class InstanceEndpointsOverlayArgsDict(TypedDict):
        address: NotRequired[pulumi.Input[builtins.str]]
        """
        域名映射地址。
        """
        eip_id: NotRequired[pulumi.Input[builtins.str]]
        """
        实例绑定的EIP的ID。
        """
        plain: NotRequired[pulumi.Input[builtins.str]]
        """
        私网Plain接入点。
        """
        plain_port: NotRequired[pulumi.Input[builtins.int]]
        """
        普通接入点端口。
        """
        sasl: NotRequired[pulumi.Input[builtins.str]]
        """
        私网SASL认证接入点。
        """
        sasl_port: NotRequired[pulumi.Input[builtins.int]]
        """
        认证接入点端口。
        """
        ssl: NotRequired[pulumi.Input[builtins.str]]
        """
        加密接入点。
        """
        ssl_port: NotRequired[pulumi.Input[builtins.int]]
        """
        加密接入点端口。
        """
        status: NotRequired[pulumi.Input[builtins.str]]
        """
        接入点状态。
        """
        vpc_ids: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
        """
        售卖区网络关联的VPC ID列表。
        """
elif False:
    InstanceEndpointsOverlayArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class InstanceEndpointsOverlayArgs:
    def __init__(__self__, *,
                 address: Optional[pulumi.Input[builtins.str]] = None,
                 eip_id: Optional[pulumi.Input[builtins.str]] = None,
                 plain: Optional[pulumi.Input[builtins.str]] = None,
                 plain_port: Optional[pulumi.Input[builtins.int]] = None,
                 sasl: Optional[pulumi.Input[builtins.str]] = None,
                 sasl_port: Optional[pulumi.Input[builtins.int]] = None,
                 ssl: Optional[pulumi.Input[builtins.str]] = None,
                 ssl_port: Optional[pulumi.Input[builtins.int]] = None,
                 status: Optional[pulumi.Input[builtins.str]] = None,
                 vpc_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
        """
        :param pulumi.Input[builtins.str] address: 域名映射地址。
        :param pulumi.Input[builtins.str] eip_id: 实例绑定的EIP的ID。
        :param pulumi.Input[builtins.str] plain: 私网Plain接入点。
        :param pulumi.Input[builtins.int] plain_port: 普通接入点端口。
        :param pulumi.Input[builtins.str] sasl: 私网SASL认证接入点。
        :param pulumi.Input[builtins.int] sasl_port: 认证接入点端口。
        :param pulumi.Input[builtins.str] ssl: 加密接入点。
        :param pulumi.Input[builtins.int] ssl_port: 加密接入点端口。
        :param pulumi.Input[builtins.str] status: 接入点状态。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] vpc_ids: 售卖区网络关联的VPC ID列表。
        """
        if address is not None:
            pulumi.set(__self__, "address", address)
        if eip_id is not None:
            pulumi.set(__self__, "eip_id", eip_id)
        if plain is not None:
            pulumi.set(__self__, "plain", plain)
        if plain_port is not None:
            pulumi.set(__self__, "plain_port", plain_port)
        if sasl is not None:
            pulumi.set(__self__, "sasl", sasl)
        if sasl_port is not None:
            pulumi.set(__self__, "sasl_port", sasl_port)
        if ssl is not None:
            pulumi.set(__self__, "ssl", ssl)
        if ssl_port is not None:
            pulumi.set(__self__, "ssl_port", ssl_port)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if vpc_ids is not None:
            pulumi.set(__self__, "vpc_ids", vpc_ids)

    @property
    @pulumi.getter
    def address(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        域名映射地址。
        """
        return pulumi.get(self, "address")

    @address.setter
    def address(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "address", value)

    @property
    @pulumi.getter(name="eipId")
    def eip_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例绑定的EIP的ID。
        """
        return pulumi.get(self, "eip_id")

    @eip_id.setter
    def eip_id(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "eip_id", value)

    @property
    @pulumi.getter
    def plain(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        私网Plain接入点。
        """
        return pulumi.get(self, "plain")

    @plain.setter
    def plain(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "plain", value)

    @property
    @pulumi.getter(name="plainPort")
    def plain_port(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        普通接入点端口。
        """
        return pulumi.get(self, "plain_port")

    @plain_port.setter
    def plain_port(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "plain_port", value)

    @property
    @pulumi.getter
    def sasl(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        私网SASL认证接入点。
        """
        return pulumi.get(self, "sasl")

    @sasl.setter
    def sasl(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "sasl", value)

    @property
    @pulumi.getter(name="saslPort")
    def sasl_port(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        认证接入点端口。
        """
        return pulumi.get(self, "sasl_port")

    @sasl_port.setter
    def sasl_port(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "sasl_port", value)

    @property
    @pulumi.getter
    def ssl(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        加密接入点。
        """
        return pulumi.get(self, "ssl")

    @ssl.setter
    def ssl(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "ssl", value)

    @property
    @pulumi.getter(name="sslPort")
    def ssl_port(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        加密接入点端口。
        """
        return pulumi.get(self, "ssl_port")

    @ssl_port.setter
    def ssl_port(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "ssl_port", value)

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        接入点状态。
        """
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "status", value)

    @property
    @pulumi.getter(name="vpcIds")
    def vpc_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        售卖区网络关联的VPC ID列表。
        """
        return pulumi.get(self, "vpc_ids")

    @vpc_ids.setter
    def vpc_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
        pulumi.set(self, "vpc_ids", value)


if not MYPY:
    class InstanceEndpointsPublicArgsDict(TypedDict):
        address: NotRequired[pulumi.Input[builtins.str]]
        """
        域名映射地址。
        """
        eip_id: NotRequired[pulumi.Input[builtins.str]]
        """
        实例绑定的EIP的ID。
        """
        plain: NotRequired[pulumi.Input[builtins.str]]
        """
        私网Plain接入点。
        """
        plain_port: NotRequired[pulumi.Input[builtins.int]]
        """
        普通接入点端口。
        """
        sasl: NotRequired[pulumi.Input[builtins.str]]
        """
        私网SASL认证接入点。
        """
        sasl_port: NotRequired[pulumi.Input[builtins.int]]
        """
        认证接入点端口。
        """
        ssl: NotRequired[pulumi.Input[builtins.str]]
        """
        加密接入点。
        """
        ssl_port: NotRequired[pulumi.Input[builtins.int]]
        """
        加密接入点端口。
        """
        status: NotRequired[pulumi.Input[builtins.str]]
        """
        接入点状态。
        """
        vpc_ids: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
        """
        售卖区网络关联的VPC ID列表。
        """
elif False:
    InstanceEndpointsPublicArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class InstanceEndpointsPublicArgs:
    def __init__(__self__, *,
                 address: Optional[pulumi.Input[builtins.str]] = None,
                 eip_id: Optional[pulumi.Input[builtins.str]] = None,
                 plain: Optional[pulumi.Input[builtins.str]] = None,
                 plain_port: Optional[pulumi.Input[builtins.int]] = None,
                 sasl: Optional[pulumi.Input[builtins.str]] = None,
                 sasl_port: Optional[pulumi.Input[builtins.int]] = None,
                 ssl: Optional[pulumi.Input[builtins.str]] = None,
                 ssl_port: Optional[pulumi.Input[builtins.int]] = None,
                 status: Optional[pulumi.Input[builtins.str]] = None,
                 vpc_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
        """
        :param pulumi.Input[builtins.str] address: 域名映射地址。
        :param pulumi.Input[builtins.str] eip_id: 实例绑定的EIP的ID。
        :param pulumi.Input[builtins.str] plain: 私网Plain接入点。
        :param pulumi.Input[builtins.int] plain_port: 普通接入点端口。
        :param pulumi.Input[builtins.str] sasl: 私网SASL认证接入点。
        :param pulumi.Input[builtins.int] sasl_port: 认证接入点端口。
        :param pulumi.Input[builtins.str] ssl: 加密接入点。
        :param pulumi.Input[builtins.int] ssl_port: 加密接入点端口。
        :param pulumi.Input[builtins.str] status: 接入点状态。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] vpc_ids: 售卖区网络关联的VPC ID列表。
        """
        if address is not None:
            pulumi.set(__self__, "address", address)
        if eip_id is not None:
            pulumi.set(__self__, "eip_id", eip_id)
        if plain is not None:
            pulumi.set(__self__, "plain", plain)
        if plain_port is not None:
            pulumi.set(__self__, "plain_port", plain_port)
        if sasl is not None:
            pulumi.set(__self__, "sasl", sasl)
        if sasl_port is not None:
            pulumi.set(__self__, "sasl_port", sasl_port)
        if ssl is not None:
            pulumi.set(__self__, "ssl", ssl)
        if ssl_port is not None:
            pulumi.set(__self__, "ssl_port", ssl_port)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if vpc_ids is not None:
            pulumi.set(__self__, "vpc_ids", vpc_ids)

    @property
    @pulumi.getter
    def address(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        域名映射地址。
        """
        return pulumi.get(self, "address")

    @address.setter
    def address(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "address", value)

    @property
    @pulumi.getter(name="eipId")
    def eip_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例绑定的EIP的ID。
        """
        return pulumi.get(self, "eip_id")

    @eip_id.setter
    def eip_id(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "eip_id", value)

    @property
    @pulumi.getter
    def plain(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        私网Plain接入点。
        """
        return pulumi.get(self, "plain")

    @plain.setter
    def plain(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "plain", value)

    @property
    @pulumi.getter(name="plainPort")
    def plain_port(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        普通接入点端口。
        """
        return pulumi.get(self, "plain_port")

    @plain_port.setter
    def plain_port(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "plain_port", value)

    @property
    @pulumi.getter
    def sasl(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        私网SASL认证接入点。
        """
        return pulumi.get(self, "sasl")

    @sasl.setter
    def sasl(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "sasl", value)

    @property
    @pulumi.getter(name="saslPort")
    def sasl_port(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        认证接入点端口。
        """
        return pulumi.get(self, "sasl_port")

    @sasl_port.setter
    def sasl_port(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "sasl_port", value)

    @property
    @pulumi.getter
    def ssl(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        加密接入点。
        """
        return pulumi.get(self, "ssl")

    @ssl.setter
    def ssl(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "ssl", value)

    @property
    @pulumi.getter(name="sslPort")
    def ssl_port(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        加密接入点端口。
        """
        return pulumi.get(self, "ssl_port")

    @ssl_port.setter
    def ssl_port(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "ssl_port", value)

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        接入点状态。
        """
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "status", value)

    @property
    @pulumi.getter(name="vpcIds")
    def vpc_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        售卖区网络关联的VPC ID列表。
        """
        return pulumi.get(self, "vpc_ids")

    @vpc_ids.setter
    def vpc_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
        pulumi.set(self, "vpc_ids", value)


if not MYPY:
    class InstanceResourceTagArgsDict(TypedDict):
        tag_kvs: NotRequired[pulumi.Input[Sequence[pulumi.Input['InstanceResourceTagTagKvArgsDict']]]]
        type: NotRequired[pulumi.Input[builtins.str]]
        """
        标签类型，取值如下：CUSTOM：自定义设置标签。SYSTEM：系统标签。
        """
elif False:
    InstanceResourceTagArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class InstanceResourceTagArgs:
    def __init__(__self__, *,
                 tag_kvs: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceResourceTagTagKvArgs']]]] = None,
                 type: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] type: 标签类型，取值如下：CUSTOM：自定义设置标签。SYSTEM：系统标签。
        """
        if tag_kvs is not None:
            pulumi.set(__self__, "tag_kvs", tag_kvs)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="tagKvs")
    def tag_kvs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InstanceResourceTagTagKvArgs']]]]:
        return pulumi.get(self, "tag_kvs")

    @tag_kvs.setter
    def tag_kvs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceResourceTagTagKvArgs']]]]):
        pulumi.set(self, "tag_kvs", value)

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签类型，取值如下：CUSTOM：自定义设置标签。SYSTEM：系统标签。
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "type", value)


if not MYPY:
    class InstanceResourceTagTagKvArgsDict(TypedDict):
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        标签键。
        """
        type: NotRequired[pulumi.Input[builtins.str]]
        """
        实例标签的类型，取值如下：CUSTOM：自定义设置标签。SYSTEM：系统标签。
        """
        value: NotRequired[pulumi.Input[builtins.str]]
        """
        标签值。
        """
elif False:
    InstanceResourceTagTagKvArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class InstanceResourceTagTagKvArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 type: Optional[pulumi.Input[builtins.str]] = None,
                 value: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] key: 标签键。
        :param pulumi.Input[builtins.str] type: 实例标签的类型，取值如下：CUSTOM：自定义设置标签。SYSTEM：系统标签。
        :param pulumi.Input[builtins.str] value: 标签值。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

    @key.setter
    def key(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "key", value)

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例标签的类型，取值如下：CUSTOM：自定义设置标签。SYSTEM：系统标签。
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签值。
        """
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "value", value)


if not MYPY:
    class InstanceResourcesArgsDict(TypedDict):
        storage: NotRequired[pulumi.Input['InstanceResourcesStorageArgsDict']]
        """
        资源统计响应数据。
        """
elif False:
    InstanceResourcesArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class InstanceResourcesArgs:
    def __init__(__self__, *,
                 storage: Optional[pulumi.Input['InstanceResourcesStorageArgs']] = None):
        """
        :param pulumi.Input['InstanceResourcesStorageArgs'] storage: 资源统计响应数据。
        """
        if storage is not None:
            pulumi.set(__self__, "storage", storage)

    @property
    @pulumi.getter
    def storage(self) -> Optional[pulumi.Input['InstanceResourcesStorageArgs']]:
        """
        资源统计响应数据。
        """
        return pulumi.get(self, "storage")

    @storage.setter
    def storage(self, value: Optional[pulumi.Input['InstanceResourcesStorageArgs']]):
        pulumi.set(self, "storage", value)


if not MYPY:
    class InstanceResourcesStorageArgsDict(TypedDict):
        size: NotRequired[pulumi.Input[builtins.int]]
        """
        资源大小。
        """
        unit: NotRequired[pulumi.Input[builtins.str]]
        """
        资源单位。
        """
elif False:
    InstanceResourcesStorageArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class InstanceResourcesStorageArgs:
    def __init__(__self__, *,
                 size: Optional[pulumi.Input[builtins.int]] = None,
                 unit: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.int] size: 资源大小。
        :param pulumi.Input[builtins.str] unit: 资源单位。
        """
        if size is not None:
            pulumi.set(__self__, "size", size)
        if unit is not None:
            pulumi.set(__self__, "unit", unit)

    @property
    @pulumi.getter
    def size(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        资源大小。
        """
        return pulumi.get(self, "size")

    @size.setter
    def size(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "size", value)

    @property
    @pulumi.getter
    def unit(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        资源单位。
        """
        return pulumi.get(self, "unit")

    @unit.setter
    def unit(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "unit", value)


if not MYPY:
    class InstanceTagArgsDict(TypedDict):
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        标签键。
        """
        type: NotRequired[pulumi.Input[builtins.str]]
        """
        实例标签的类型，取值如下：CUSTOM：自定义设置标签。SYSTEM：系统标签。
        """
        value: NotRequired[pulumi.Input[builtins.str]]
        """
        标签值。
        """
elif False:
    InstanceTagArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class InstanceTagArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 type: Optional[pulumi.Input[builtins.str]] = None,
                 value: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] key: 标签键。
        :param pulumi.Input[builtins.str] type: 实例标签的类型，取值如下：CUSTOM：自定义设置标签。SYSTEM：系统标签。
        :param pulumi.Input[builtins.str] value: 标签值。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

    @key.setter
    def key(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "key", value)

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例标签的类型，取值如下：CUSTOM：自定义设置标签。SYSTEM：系统标签。
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签值。
        """
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "value", value)


