# 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 warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from . import _utilities
from . import outputs

__all__ = [
    'ApiKeyManagedResource',
    'ApiKeyManagedResourceEnvironment',
    'ApiKeyOwner',
    'ConnectorEnvironment',
    'ConnectorKafkaCluster',
    'KafkaAclCredentials',
    'KafkaAclKafkaCluster',
    'KafkaClusterBasic',
    'KafkaClusterDedicated',
    'KafkaClusterEnvironment',
    'KafkaClusterNetwork',
    'KafkaClusterStandard',
    'KafkaTopicCredentials',
    'KafkaTopicKafkaCluster',
    'NetworkAw',
    'NetworkAzure',
    'NetworkEnvironment',
    'NetworkGcp',
    'PeeringAws',
    'PeeringAzure',
    'PeeringEnvironment',
    'PeeringGcp',
    'PeeringNetwork',
    'PrivateLinkAccessAws',
    'PrivateLinkAccessAzure',
    'PrivateLinkAccessEnvironment',
    'PrivateLinkAccessNetwork',
    'GetKafkaClusterBasicResult',
    'GetKafkaClusterDedicatedResult',
    'GetKafkaClusterEnvironmentResult',
    'GetKafkaClusterNetworkResult',
    'GetKafkaClusterStandardResult',
    'GetKafkaTopicCredentialsResult',
    'GetKafkaTopicKafkaClusterResult',
    'GetNetworkAwResult',
    'GetNetworkAzureResult',
    'GetNetworkEnvironmentResult',
    'GetNetworkGcpResult',
]

@pulumi.output_type
class ApiKeyManagedResource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "apiVersion":
            suggest = "api_version"

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

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

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

    def __init__(__self__, *,
                 api_version: str,
                 environment: 'outputs.ApiKeyManagedResourceEnvironment',
                 id: str,
                 kind: str):
        """
        :param str api_version: The API group and version of the managed resource that the API Key associated with, for example, `cmk/v2`.
        :param str id: The ID of the Environment that the managed resource belongs to, for example, `env-abc123`.
        :param str kind: The kind of the managed resource that the API Key associated with, for example, `Cluster`.
        """
        pulumi.set(__self__, "api_version", api_version)
        pulumi.set(__self__, "environment", environment)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "kind", kind)

    @property
    @pulumi.getter(name="apiVersion")
    def api_version(self) -> str:
        """
        The API group and version of the managed resource that the API Key associated with, for example, `cmk/v2`.
        """
        return pulumi.get(self, "api_version")

    @property
    @pulumi.getter
    def environment(self) -> 'outputs.ApiKeyManagedResourceEnvironment':
        return pulumi.get(self, "environment")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Environment that the managed resource belongs to, for example, `env-abc123`.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def kind(self) -> str:
        """
        The kind of the managed resource that the API Key associated with, for example, `Cluster`.
        """
        return pulumi.get(self, "kind")


@pulumi.output_type
class ApiKeyManagedResourceEnvironment(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Environment that the managed resource belongs to, for example, `env-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Environment that the managed resource belongs to, for example, `env-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class ApiKeyOwner(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "apiVersion":
            suggest = "api_version"

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

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

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

    def __init__(__self__, *,
                 api_version: str,
                 id: str,
                 kind: str):
        """
        :param str api_version: The API group and version of the managed resource that the API Key associated with, for example, `cmk/v2`.
        :param str id: The ID of the Environment that the managed resource belongs to, for example, `env-abc123`.
        :param str kind: The kind of the managed resource that the API Key associated with, for example, `Cluster`.
        """
        pulumi.set(__self__, "api_version", api_version)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "kind", kind)

    @property
    @pulumi.getter(name="apiVersion")
    def api_version(self) -> str:
        """
        The API group and version of the managed resource that the API Key associated with, for example, `cmk/v2`.
        """
        return pulumi.get(self, "api_version")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Environment that the managed resource belongs to, for example, `env-abc123`.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def kind(self) -> str:
        """
        The kind of the managed resource that the API Key associated with, for example, `Cluster`.
        """
        return pulumi.get(self, "kind")


@pulumi.output_type
class ConnectorEnvironment(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Kafka cluster that the connector belongs to, for example, `lkc-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Kafka cluster that the connector belongs to, for example, `lkc-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class ConnectorKafkaCluster(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Kafka cluster that the connector belongs to, for example, `lkc-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Kafka cluster that the connector belongs to, for example, `lkc-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class KafkaAclCredentials(dict):
    def __init__(__self__, *,
                 key: str,
                 secret: str):
        """
        :param str key: The Kafka API Key.
        :param str secret: The Kafka API Secret.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret", secret)

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        The Kafka API Key.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def secret(self) -> str:
        """
        The Kafka API Secret.
        """
        return pulumi.get(self, "secret")


@pulumi.output_type
class KafkaAclKafkaCluster(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Kafka cluster, for example, `lkc-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Kafka cluster, for example, `lkc-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class KafkaClusterBasic(dict):
    def __init__(__self__):
        pass


@pulumi.output_type
class KafkaClusterDedicated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "encryptionKey":
            suggest = "encryption_key"

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

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

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

    def __init__(__self__, *,
                 cku: int,
                 encryption_key: Optional[str] = None):
        """
        :param int cku: The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. The minimum number of CKUs for `SINGLE_ZONE` dedicated clusters is `1` whereas `MULTI_ZONE` dedicated clusters must have more than `2` CKUs.
        :param str encryption_key: The ID of the encryption key that is used to encrypt the data in the Kafka cluster, for example, `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab` (key Amazon Resource Name) for AWS or `projects/my-test-project/locations/global/keyRings/test-byok/cryptoKeys/test` for GCP. Append required permissions to the key policy before creating a Kafka cluster, see [Encrypt Confluent Cloud Clusters using Self-Managed Keys](https://docs.confluent.io/cloud/current/clusters/byok/index.html) for more details. At the moment, self-managed encryption keys are only available for the Dedicated clusters on AWS or GCP.
        """
        pulumi.set(__self__, "cku", cku)
        if encryption_key is not None:
            pulumi.set(__self__, "encryption_key", encryption_key)

    @property
    @pulumi.getter
    def cku(self) -> int:
        """
        The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. The minimum number of CKUs for `SINGLE_ZONE` dedicated clusters is `1` whereas `MULTI_ZONE` dedicated clusters must have more than `2` CKUs.
        """
        return pulumi.get(self, "cku")

    @property
    @pulumi.getter(name="encryptionKey")
    def encryption_key(self) -> Optional[str]:
        """
        The ID of the encryption key that is used to encrypt the data in the Kafka cluster, for example, `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab` (key Amazon Resource Name) for AWS or `projects/my-test-project/locations/global/keyRings/test-byok/cryptoKeys/test` for GCP. Append required permissions to the key policy before creating a Kafka cluster, see [Encrypt Confluent Cloud Clusters using Self-Managed Keys](https://docs.confluent.io/cloud/current/clusters/byok/index.html) for more details. At the moment, self-managed encryption keys are only available for the Dedicated clusters on AWS or GCP.
        """
        return pulumi.get(self, "encryption_key")


@pulumi.output_type
class KafkaClusterEnvironment(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Network that the Kafka cluster belongs to, for example, `n-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Network that the Kafka cluster belongs to, for example, `n-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class KafkaClusterNetwork(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Network that the Kafka cluster belongs to, for example, `n-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Network that the Kafka cluster belongs to, for example, `n-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class KafkaClusterStandard(dict):
    def __init__(__self__):
        pass


@pulumi.output_type
class KafkaTopicCredentials(dict):
    def __init__(__self__, *,
                 key: str,
                 secret: str):
        """
        :param str key: The Kafka API Key.
        :param str secret: The Kafka API Secret.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret", secret)

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        The Kafka API Key.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def secret(self) -> str:
        """
        The Kafka API Secret.
        """
        return pulumi.get(self, "secret")


@pulumi.output_type
class KafkaTopicKafkaCluster(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Kafka cluster, for example, `lkc-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Kafka cluster, for example, `lkc-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class NetworkAw(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "privateLinkEndpointService":
            suggest = "private_link_endpoint_service"

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

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

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

    def __init__(__self__, *,
                 private_link_endpoint_service: Optional[str] = None,
                 vpc: Optional[str] = None):
        """
        :param str private_link_endpoint_service: (Optional String) The AWS VPC endpoint service for the network (used for Private Link) if available.
        :param str vpc: (Required String) The AWS VPC ID for the network.
        """
        if private_link_endpoint_service is not None:
            pulumi.set(__self__, "private_link_endpoint_service", private_link_endpoint_service)
        if vpc is not None:
            pulumi.set(__self__, "vpc", vpc)

    @property
    @pulumi.getter(name="privateLinkEndpointService")
    def private_link_endpoint_service(self) -> Optional[str]:
        """
        (Optional String) The AWS VPC endpoint service for the network (used for Private Link) if available.
        """
        return pulumi.get(self, "private_link_endpoint_service")

    @property
    @pulumi.getter
    def vpc(self) -> Optional[str]:
        """
        (Required String) The AWS VPC ID for the network.
        """
        return pulumi.get(self, "vpc")


@pulumi.output_type
class NetworkAzure(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "privateLinkServiceAliases":
            suggest = "private_link_service_aliases"

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

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

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

    def __init__(__self__, *,
                 private_link_service_aliases: Optional[Mapping[str, str]] = None):
        """
        :param Mapping[str, str] private_link_service_aliases: (Optional Map) The mapping of zones to Private Link Service Aliases if available. Keys are zone names, for example, `1` and values are [Azure Private Link Service Aliases](https://docs.microsoft.com/en-us/azure/private-link/private-link-service-overview#share-your-service), for example, `s-nk99e-privatelink-1.8c43dcd0-695c-1234-bc35-11fe6abb303a.centralus.azure.privatelinkservice`.
        """
        if private_link_service_aliases is not None:
            pulumi.set(__self__, "private_link_service_aliases", private_link_service_aliases)

    @property
    @pulumi.getter(name="privateLinkServiceAliases")
    def private_link_service_aliases(self) -> Optional[Mapping[str, str]]:
        """
        (Optional Map) The mapping of zones to Private Link Service Aliases if available. Keys are zone names, for example, `1` and values are [Azure Private Link Service Aliases](https://docs.microsoft.com/en-us/azure/private-link/private-link-service-overview#share-your-service), for example, `s-nk99e-privatelink-1.8c43dcd0-695c-1234-bc35-11fe6abb303a.centralus.azure.privatelinkservice`.
        """
        return pulumi.get(self, "private_link_service_aliases")


@pulumi.output_type
class NetworkEnvironment(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Environment that the Network belongs to, for example, `env-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Environment that the Network belongs to, for example, `env-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class NetworkGcp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "vpcNetwork":
            suggest = "vpc_network"

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

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

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

    def __init__(__self__, *,
                 project: Optional[str] = None,
                 vpc_network: Optional[str] = None):
        """
        :param str project: (Required String) The GCP project.
        :param str vpc_network: (Required String) The GCP VPC network name.
        """
        if project is not None:
            pulumi.set(__self__, "project", project)
        if vpc_network is not None:
            pulumi.set(__self__, "vpc_network", vpc_network)

    @property
    @pulumi.getter
    def project(self) -> Optional[str]:
        """
        (Required String) The GCP project.
        """
        return pulumi.get(self, "project")

    @property
    @pulumi.getter(name="vpcNetwork")
    def vpc_network(self) -> Optional[str]:
        """
        (Required String) The GCP VPC network name.
        """
        return pulumi.get(self, "vpc_network")


@pulumi.output_type
class PeeringAws(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "customerRegion":
            suggest = "customer_region"

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

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

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

    def __init__(__self__, *,
                 account: str,
                 customer_region: str,
                 routes: Sequence[str],
                 vpc: str):
        """
        :param str account: The AWS Account ID of the peer VPC owner. You can find your AWS Account ID [here](https://console.aws.amazon.com/billing/home?#/account) under **My Account** section of the AWS Management Console. Must be a **12 character string**.
        :param str customer_region: The region of the Azure peer VNet.
        :param Sequence[str] routes: The AWS VPC CIDR blocks or subsets. This must be from the supported CIDR blocks and must not overlap with your Confluent Cloud CIDR block or any other network peering connection VPC CIDR (learn more about the requirements [here](https://docs.confluent.io/cloud/current/networking/peering/aws-peering.html#vpc-peering-on-aws)). You can find AWS VPC CIDR [here](https://console.aws.amazon.com/vpc/) under **Your VPCs > Target VPC > Details** section of the AWS Management Console.
        :param str vpc: The AWS VPC ID of the peer VPC that you're peering with Confluent Cloud. You can find your AWS VPC ID [here](https://console.aws.amazon.com/vpc/) under **Your VPCs** section of the AWS Management Console. Must start with `vpc-`.
        """
        pulumi.set(__self__, "account", account)
        pulumi.set(__self__, "customer_region", customer_region)
        pulumi.set(__self__, "routes", routes)
        pulumi.set(__self__, "vpc", vpc)

    @property
    @pulumi.getter
    def account(self) -> str:
        """
        The AWS Account ID of the peer VPC owner. You can find your AWS Account ID [here](https://console.aws.amazon.com/billing/home?#/account) under **My Account** section of the AWS Management Console. Must be a **12 character string**.
        """
        return pulumi.get(self, "account")

    @property
    @pulumi.getter(name="customerRegion")
    def customer_region(self) -> str:
        """
        The region of the Azure peer VNet.
        """
        return pulumi.get(self, "customer_region")

    @property
    @pulumi.getter
    def routes(self) -> Sequence[str]:
        """
        The AWS VPC CIDR blocks or subsets. This must be from the supported CIDR blocks and must not overlap with your Confluent Cloud CIDR block or any other network peering connection VPC CIDR (learn more about the requirements [here](https://docs.confluent.io/cloud/current/networking/peering/aws-peering.html#vpc-peering-on-aws)). You can find AWS VPC CIDR [here](https://console.aws.amazon.com/vpc/) under **Your VPCs > Target VPC > Details** section of the AWS Management Console.
        """
        return pulumi.get(self, "routes")

    @property
    @pulumi.getter
    def vpc(self) -> str:
        """
        The AWS VPC ID of the peer VPC that you're peering with Confluent Cloud. You can find your AWS VPC ID [here](https://console.aws.amazon.com/vpc/) under **Your VPCs** section of the AWS Management Console. Must start with `vpc-`.
        """
        return pulumi.get(self, "vpc")


@pulumi.output_type
class PeeringAzure(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "customerRegion":
            suggest = "customer_region"

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

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

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

    def __init__(__self__, *,
                 customer_region: str,
                 tenant: str,
                 vnet: str):
        """
        :param str customer_region: The region of the Azure peer VNet.
        :param str tenant: The Tenant ID that represents an organization in Azure Active Directory. You can find your Azure Tenant ID in the [Azure Portal under Azure Active Directory](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview). Must be a valid **32 character UUID string**.
        :param str vnet: The resource (composite) ID of the peer Virtual Network that you're peering with Confluent Cloud, in the format `/subscriptions/<Subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/virtualNetworks/<VNet name>`. You can find Subscription ID, Resource Group Name and your VNet name under **Virtual Networks > Target VNet > Essentials** section of your [Microsoft Azure Portal](https://portal.azure.com/).
        """
        pulumi.set(__self__, "customer_region", customer_region)
        pulumi.set(__self__, "tenant", tenant)
        pulumi.set(__self__, "vnet", vnet)

    @property
    @pulumi.getter(name="customerRegion")
    def customer_region(self) -> str:
        """
        The region of the Azure peer VNet.
        """
        return pulumi.get(self, "customer_region")

    @property
    @pulumi.getter
    def tenant(self) -> str:
        """
        The Tenant ID that represents an organization in Azure Active Directory. You can find your Azure Tenant ID in the [Azure Portal under Azure Active Directory](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview). Must be a valid **32 character UUID string**.
        """
        return pulumi.get(self, "tenant")

    @property
    @pulumi.getter
    def vnet(self) -> str:
        """
        The resource (composite) ID of the peer Virtual Network that you're peering with Confluent Cloud, in the format `/subscriptions/<Subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/virtualNetworks/<VNet name>`. You can find Subscription ID, Resource Group Name and your VNet name under **Virtual Networks > Target VNet > Essentials** section of your [Microsoft Azure Portal](https://portal.azure.com/).
        """
        return pulumi.get(self, "vnet")


@pulumi.output_type
class PeeringEnvironment(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Network that the Peering belongs to, for example, `n-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Network that the Peering belongs to, for example, `n-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class PeeringGcp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "vpcNetwork":
            suggest = "vpc_network"
        elif key == "importCustomRoutes":
            suggest = "import_custom_routes"

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

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

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

    def __init__(__self__, *,
                 project: str,
                 vpc_network: str,
                 import_custom_routes: Optional[bool] = None):
        """
        :param str project: The GCP Project ID. You can find your Google Cloud Project ID under **Project ID** section of your [Google Cloud Console dashboard](https://console.cloud.google.com/home/dashboard).
        :param str vpc_network: The VPC network name that you're peering to Confluent Cloud. You can find your VPC network name under **VPC Networks** section of your [Google Cloud Console](https://console.cloud.google.com/networking/networks/list).
        :param bool import_custom_routes: The Import Custom Routes option enables connectivity to a Confluent Cloud cluster in Google Cloud from customer premise or other clouds, such as AWS and Azure, through a customer VPC that is peered with Confluent Cloud in the same region. Defaults to `false`. Learn more about considerations / limitations of the Import Custom Routes option [here](https://docs.confluent.io/cloud/current/networking/peering/gcp-peering.html#import-custom-routes).
        """
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "vpc_network", vpc_network)
        if import_custom_routes is not None:
            pulumi.set(__self__, "import_custom_routes", import_custom_routes)

    @property
    @pulumi.getter
    def project(self) -> str:
        """
        The GCP Project ID. You can find your Google Cloud Project ID under **Project ID** section of your [Google Cloud Console dashboard](https://console.cloud.google.com/home/dashboard).
        """
        return pulumi.get(self, "project")

    @property
    @pulumi.getter(name="vpcNetwork")
    def vpc_network(self) -> str:
        """
        The VPC network name that you're peering to Confluent Cloud. You can find your VPC network name under **VPC Networks** section of your [Google Cloud Console](https://console.cloud.google.com/networking/networks/list).
        """
        return pulumi.get(self, "vpc_network")

    @property
    @pulumi.getter(name="importCustomRoutes")
    def import_custom_routes(self) -> Optional[bool]:
        """
        The Import Custom Routes option enables connectivity to a Confluent Cloud cluster in Google Cloud from customer premise or other clouds, such as AWS and Azure, through a customer VPC that is peered with Confluent Cloud in the same region. Defaults to `false`. Learn more about considerations / limitations of the Import Custom Routes option [here](https://docs.confluent.io/cloud/current/networking/peering/gcp-peering.html#import-custom-routes).
        """
        return pulumi.get(self, "import_custom_routes")


@pulumi.output_type
class PeeringNetwork(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Network that the Peering belongs to, for example, `n-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Network that the Peering belongs to, for example, `n-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class PrivateLinkAccessAws(dict):
    def __init__(__self__, *,
                 account: str):
        """
        :param str account: The AWS account ID to enable for the Private Link Access. You can find your AWS account ID [here] (https://console.aws.amazon.com/billing/home?#/account) under **My Account** in your AWS Management Console. Must be a **12 character string**.
        """
        pulumi.set(__self__, "account", account)

    @property
    @pulumi.getter
    def account(self) -> str:
        """
        The AWS account ID to enable for the Private Link Access. You can find your AWS account ID [here] (https://console.aws.amazon.com/billing/home?#/account) under **My Account** in your AWS Management Console. Must be a **12 character string**.
        """
        return pulumi.get(self, "account")


@pulumi.output_type
class PrivateLinkAccessAzure(dict):
    def __init__(__self__, *,
                 subscription: str):
        """
        :param str subscription: The Azure subscription ID to enable for the Private Link Access. You can find your Azure subscription ID in the subscription section of your [Microsoft Azure Portal] (https://portal.azure.com/#blade/Microsoft_Azure_Billing/SubscriptionsBlade). Must be a valid **32 character UUID string**.
        """
        pulumi.set(__self__, "subscription", subscription)

    @property
    @pulumi.getter
    def subscription(self) -> str:
        """
        The Azure subscription ID to enable for the Private Link Access. You can find your Azure subscription ID in the subscription section of your [Microsoft Azure Portal] (https://portal.azure.com/#blade/Microsoft_Azure_Billing/SubscriptionsBlade). Must be a valid **32 character UUID string**.
        """
        return pulumi.get(self, "subscription")


@pulumi.output_type
class PrivateLinkAccessEnvironment(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Network that the Private Link Access belongs to, for example, `n-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Network that the Private Link Access belongs to, for example, `n-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class PrivateLinkAccessNetwork(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Network that the Private Link Access belongs to, for example, `n-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Network that the Private Link Access belongs to, for example, `n-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class GetKafkaClusterBasicResult(dict):
    def __init__(__self__):
        pass


@pulumi.output_type
class GetKafkaClusterDedicatedResult(dict):
    def __init__(__self__, *,
                 cku: int,
                 encryption_key: str):
        """
        :param int cku: (Required Number) The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. The minimum number of CKUs for `SINGLE_ZONE` dedicated clusters is `1` whereas `MULTI_ZONE` dedicated clusters must have more than `2` CKUs.
        :param str encryption_key: (Optional String) The ID of the encryption key that is used to encrypt the data in the Kafka cluster, for example, `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab` (key Amazon Resource Name) for AWS or `projects/my-test-project/locations/global/keyRings/test-byok/cryptoKeys/test` for GCP. Append required permissions to the key policy before creating a Kafka cluster, see [Encrypt Confluent Cloud Clusters using Self-Managed Keys](https://docs.confluent.io/cloud/current/clusters/byok/index.html) for more details. At the moment, self-managed encryption keys are only available for the Dedicated clusters on AWS or GCP.
        """
        pulumi.set(__self__, "cku", cku)
        pulumi.set(__self__, "encryption_key", encryption_key)

    @property
    @pulumi.getter
    def cku(self) -> int:
        """
        (Required Number) The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. The minimum number of CKUs for `SINGLE_ZONE` dedicated clusters is `1` whereas `MULTI_ZONE` dedicated clusters must have more than `2` CKUs.
        """
        return pulumi.get(self, "cku")

    @property
    @pulumi.getter(name="encryptionKey")
    def encryption_key(self) -> str:
        """
        (Optional String) The ID of the encryption key that is used to encrypt the data in the Kafka cluster, for example, `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab` (key Amazon Resource Name) for AWS or `projects/my-test-project/locations/global/keyRings/test-byok/cryptoKeys/test` for GCP. Append required permissions to the key policy before creating a Kafka cluster, see [Encrypt Confluent Cloud Clusters using Self-Managed Keys](https://docs.confluent.io/cloud/current/clusters/byok/index.html) for more details. At the moment, self-managed encryption keys are only available for the Dedicated clusters on AWS or GCP.
        """
        return pulumi.get(self, "encryption_key")


@pulumi.output_type
class GetKafkaClusterEnvironmentResult(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Environment that the Kafka cluster belongs to, for example, `env-xyz456`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Environment that the Kafka cluster belongs to, for example, `env-xyz456`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class GetKafkaClusterNetworkResult(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Environment that the Kafka cluster belongs to, for example, `env-xyz456`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Environment that the Kafka cluster belongs to, for example, `env-xyz456`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class GetKafkaClusterStandardResult(dict):
    def __init__(__self__):
        pass


@pulumi.output_type
class GetKafkaTopicCredentialsResult(dict):
    def __init__(__self__, *,
                 key: str,
                 secret: str):
        """
        :param str key: The Kafka API Key.
        :param str secret: The Kafka API Secret.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret", secret)

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        The Kafka API Key.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def secret(self) -> str:
        """
        The Kafka API Secret.
        """
        return pulumi.get(self, "secret")


@pulumi.output_type
class GetKafkaTopicKafkaClusterResult(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Kafka cluster, for example, `lkc-abc123`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Kafka cluster, for example, `lkc-abc123`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class GetNetworkAwResult(dict):
    def __init__(__self__, *,
                 private_link_endpoint_service: str,
                 vpc: str):
        """
        :param str private_link_endpoint_service: (Optional String) The AWS VPC endpoint service for the network (used for Private Link) if available.
        :param str vpc: (Required String) The AWS VPC ID for the network.
        """
        pulumi.set(__self__, "private_link_endpoint_service", private_link_endpoint_service)
        pulumi.set(__self__, "vpc", vpc)

    @property
    @pulumi.getter(name="privateLinkEndpointService")
    def private_link_endpoint_service(self) -> str:
        """
        (Optional String) The AWS VPC endpoint service for the network (used for Private Link) if available.
        """
        return pulumi.get(self, "private_link_endpoint_service")

    @property
    @pulumi.getter
    def vpc(self) -> str:
        """
        (Required String) The AWS VPC ID for the network.
        """
        return pulumi.get(self, "vpc")


@pulumi.output_type
class GetNetworkAzureResult(dict):
    def __init__(__self__, *,
                 private_link_service_aliases: Mapping[str, str]):
        """
        :param Mapping[str, str] private_link_service_aliases: (Optional Map) The mapping of zones to Private Link Service Aliases if available. Keys are zones and values are [Azure Private Link Service Aliases](https://docs.microsoft.com/en-us/azure/private-link/private-link-service-overview#share-your-service).
        """
        pulumi.set(__self__, "private_link_service_aliases", private_link_service_aliases)

    @property
    @pulumi.getter(name="privateLinkServiceAliases")
    def private_link_service_aliases(self) -> Mapping[str, str]:
        """
        (Optional Map) The mapping of zones to Private Link Service Aliases if available. Keys are zones and values are [Azure Private Link Service Aliases](https://docs.microsoft.com/en-us/azure/private-link/private-link-service-overview#share-your-service).
        """
        return pulumi.get(self, "private_link_service_aliases")


@pulumi.output_type
class GetNetworkEnvironmentResult(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: The ID of the Environment that the Network belongs to, for example, `env-xyz456`.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Environment that the Network belongs to, for example, `env-xyz456`.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class GetNetworkGcpResult(dict):
    def __init__(__self__, *,
                 project: str,
                 vpc_network: str):
        """
        :param str project: (Required String) The GCP project.
        :param str vpc_network: (Required String) The GCP VPC network name.
        """
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "vpc_network", vpc_network)

    @property
    @pulumi.getter
    def project(self) -> str:
        """
        (Required String) The GCP project.
        """
        return pulumi.get(self, "project")

    @property
    @pulumi.getter(name="vpcNetwork")
    def vpc_network(self) -> str:
        """
        (Required String) The GCP VPC network name.
        """
        return pulumi.get(self, "vpc_network")


