{"name":"confluentcloud","displayName":"Confluent","version":"2.61.0","description":"A Pulumi package for creating and managing Confluent cloud resources.","keywords":["pulumi","confluentcloud","category/cloud"],"homepage":"https://www.pulumi.com","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`confluent` Terraform Provider](https://github.com/confluentinc/terraform-provider-confluent).","repository":"https://github.com/pulumi/pulumi-confluentcloud","publisher":"Pulumi","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"namespaces":{"confluentcloud":"ConfluentCloud"},"compatibility":"tfbridge20","respectSchemaVersion":true},"go":{"importBasePath":"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud","generateResourceContainerTypes":true,"generateExtraInputTypes":true,"respectSchemaVersion":true},"nodejs":{"packageDescription":"A Pulumi package for creating and managing Confluent cloud resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/confluentinc/terraform-provider-confluent)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-confluentcloud` repo](https://github.com/pulumi/pulumi-confluentcloud/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-confluent` repo](https://github.com/confluentinc/terraform-provider-confluent/issues).","devDependencies":{"@types/mime":"^2.0.0","@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true,"respectSchemaVersion":true},"python":{"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/confluentinc/terraform-provider-confluent)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-confluentcloud` repo](https://github.com/pulumi/pulumi-confluentcloud/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-confluent` repo](https://github.com/confluentinc/terraform-provider-confluent/issues).","compatibility":"tfbridge20","respectSchemaVersion":true,"pyproject":{"enabled":true}}},"config":{"variables":{"catalogRestEndpoint":{"type":"string","description":"The Stream Catalog REST Endpoint."},"cloudApiKey":{"type":"string","description":"The Confluent Cloud API Key.","secret":true},"cloudApiSecret":{"type":"string","description":"The Confluent Cloud API Secret.","secret":true},"endpoint":{"type":"string","description":"The base endpoint of Confluent Cloud API."},"environmentId":{"type":"string","description":"The Flink Environment ID."},"flinkApiKey":{"type":"string","description":"The Flink API Key.","secret":true},"flinkApiSecret":{"type":"string","description":"The Flink API Secret.","secret":true},"flinkComputePoolId":{"type":"string","description":"The Flink Compute Pool ID."},"flinkPrincipalId":{"type":"string","description":"The Flink Principal ID."},"flinkRestEndpoint":{"type":"string","description":"The Flink REST Endpoint."},"kafkaApiKey":{"type":"string","description":"The Kafka Cluster API Key.","secret":true},"kafkaApiSecret":{"type":"string","description":"The Kafka Cluster API Secret.","secret":true},"kafkaId":{"type":"string","description":"The Kafka Cluster ID."},"kafkaRestEndpoint":{"type":"string","description":"The Kafka Cluster REST Endpoint."},"maxRetries":{"type":"integer","description":"Maximum number of retries of HTTP client. Defaults to 4."},"oauth":{"$ref":"#/types/confluentcloud:config/oauth:oauth","description":"OAuth config settings"},"organizationId":{"type":"string","description":"The Flink Organization ID."},"schemaRegistryApiKey":{"type":"string","description":"The Schema Registry Cluster API Key.","secret":true},"schemaRegistryApiSecret":{"type":"string","description":"The Schema Registry Cluster API Secret.","secret":true},"schemaRegistryId":{"type":"string","description":"The Schema Registry Cluster ID."},"schemaRegistryRestEndpoint":{"type":"string","description":"The Schema Registry Cluster REST Endpoint."},"tableflowApiKey":{"type":"string","description":"The Tableflow API Key.","secret":true},"tableflowApiSecret":{"type":"string","description":"The Tableflow API Secret.","secret":true}}},"types":{"confluentcloud:config/oauth:oauth":{"properties":{"oauthExternalAccessToken":{"type":"string","description":"OAuth existing static access token already fetched from external Identity Provider.\n","secret":true},"oauthExternalClientId":{"type":"string","description":"OAuth token application client id from external Identity Provider.\n"},"oauthExternalClientSecret":{"type":"string","description":"OAuth token application client secret from external Identity Provider.\n","secret":true},"oauthExternalTokenScope":{"type":"string","description":"OAuth client application scope, this is a required field when using Microsoft Azure Entra ID as the identity provider.\n"},"oauthExternalTokenUrl":{"type":"string","description":"OAuth token URL to fetch access token from external Identity Provider.\n"},"oauthIdentityPoolId":{"type":"string","description":"OAuth identity pool id used for processing external token and exchange STS token, registered with Confluent Cloud.\n"},"oauthStsTokenExpiredInSeconds":{"type":"string","description":"OAuth STS access token expired in second from Confluent Cloud\n"}},"type":"object","required":["oauthIdentityPoolId"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/AccessPointAwsEgressPrivateLinkEndpoint:AccessPointAwsEgressPrivateLinkEndpoint":{"properties":{"enableHighAvailability":{"type":"boolean","description":"Whether a resource should be provisioned with high availability. Endpoints deployed with high availability have network interfaces deployed in multiple AZs. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n","willReplaceOnChanges":true},"vpcEndpointDnsName":{"type":"string","description":"(Required String) The DNS name of a VPC Endpoint (if any) that is connected to the VPC Endpoint service, for example, `*.vpce-00000000000000000-abcd1234.s3.us-west-2.vpce.amazonaws.com`.\n"},"vpcEndpointId":{"type":"string","description":"(Required String) The ID of a VPC Endpoint (if any) that is connected to the VPC Endpoint service, for example, `vpce-00000000000000000`.\n"},"vpcEndpointServiceName":{"type":"string","description":"AWS VPC Endpoint Service that can be used to establish connections for all zones, for example `com.amazonaws.vpce.us-west-2.vpce-svc-0d3be37e21708ecd3`.\n","willReplaceOnChanges":true}},"type":"object","required":["vpcEndpointServiceName"],"language":{"nodejs":{"requiredOutputs":["vpcEndpointDnsName","vpcEndpointId","vpcEndpointServiceName"]}}},"confluentcloud:index/AccessPointAwsIngressPrivateLinkEndpoint:AccessPointAwsIngressPrivateLinkEndpoint":{"properties":{"dnsDomain":{"type":"string","description":"(Required String) DNS domain name used to configure the Private Hosted Zone for the Access Point, for example, `ap123abc.us-west-2.aws.accesspoint.confluent.cloud`.\n"},"vpcEndpointId":{"type":"string","description":"ID of a VPC Endpoint that will be connected to the VPC Endpoint service, for example, `vpce-00000000000000000`.\n","willReplaceOnChanges":true},"vpcEndpointServiceName":{"type":"string","description":"(Required String) ID of the Confluent Cloud VPC Endpoint service used for PrivateLink, for example, `com.amazonaws.vpce.us-west-2.vpce-svc-00000000000000000`.\n"}},"type":"object","required":["vpcEndpointId"],"language":{"nodejs":{"requiredOutputs":["dnsDomain","vpcEndpointId","vpcEndpointServiceName"]}}},"confluentcloud:index/AccessPointAwsPrivateNetworkInterface:AccessPointAwsPrivateNetworkInterface":{"properties":{"account":{"type":"string","description":"(Required String) The AWS account ID associated with the ENIs you are using for the Confluent Private Network Interface, for example: \u003cspan pulumi-lang-nodejs=\"`000000000000`\" pulumi-lang-dotnet=\"`000000000000`\" pulumi-lang-go=\"`000000000000`\" pulumi-lang-python=\"`000000000000`\" pulumi-lang-yaml=\"`000000000000`\" pulumi-lang-java=\"`000000000000`\"\u003e`000000000000`\u003c/span\u003e.\n","willReplaceOnChanges":true},"networkInterfaces":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) List of the IDs of the Elastic Network Interfaces, for example: `[\"eni-00000000000000000\", \"eni-00000000000000001\", \"eni-00000000000000002\", \"eni-00000000000000003\", \"eni-00000000000000004\", \"eni-00000000000000005\"]`\n"}},"type":"object","required":["account","networkInterfaces"]},"confluentcloud:index/AccessPointAzureEgressPrivateLinkEndpoint:AccessPointAzureEgressPrivateLinkEndpoint":{"properties":{"privateEndpointCustomDnsConfigDomains":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) Domains of the Private Endpoint (if any) based off FQDNs in Azure custom DNS configs, which are required in your private DNS setup, for example: `[\"dbname.database.windows.net\", \"dbname-region.database.windows.net\"]`.\n"},"privateEndpointDomain":{"type":"string","description":"(Required String) Domain of the Private Endpoint (if any) that is connected to the Private Link service.\n"},"privateEndpointIpAddress":{"type":"string","description":"(Required String) IP address of the Private Endpoint (if any) that is connected to the Private Link service.\n"},"privateEndpointResourceId":{"type":"string","description":"(Required String) Resource ID of the Private Endpoint (if any) that is connected to the Private Link service.\n"},"privateLinkServiceResourceId":{"type":"string","description":"Resource ID of the Azure Private Link service.\n","willReplaceOnChanges":true},"privateLinkSubresourceName":{"type":"string","description":"Name of the subresource for the Private Endpoint to connect to.\n","willReplaceOnChanges":true}},"type":"object","required":["privateLinkServiceResourceId"],"language":{"nodejs":{"requiredOutputs":["privateEndpointCustomDnsConfigDomains","privateEndpointDomain","privateEndpointIpAddress","privateEndpointResourceId","privateLinkServiceResourceId"]}}},"confluentcloud:index/AccessPointEnvironment:AccessPointEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Access Point belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/AccessPointGateway:AccessPointGateway":{"properties":{"id":{"type":"string","description":"The ID of the gateway to which the Access Point belongs, for example, `gw-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/AccessPointGcpEgressPrivateServiceConnectEndpoint:AccessPointGcpEgressPrivateServiceConnectEndpoint":{"properties":{"privateServiceConnectEndpointConnectionId":{"type":"string","description":"(Required String) Connection ID of the Private Service Connect Endpoint that is connected to the endpoint target.\n"},"privateServiceConnectEndpointIpAddress":{"type":"string","description":"(Required String) IP address of the Private Service Connect Endpoint that is connected to the endpoint target.\n"},"privateServiceConnectEndpointName":{"type":"string","description":"(Required String) Name of the Private Service Connect Endpoint that is connected to the endpoint target.\n"},"privateServiceConnectEndpointTarget":{"type":"string","description":"URI of the service attachment for the published service that the Private Service Connect Endpoint connects to, or \"all-google-apis\" for global Google APIs.\n","willReplaceOnChanges":true}},"type":"object","required":["privateServiceConnectEndpointTarget"],"language":{"nodejs":{"requiredOutputs":["privateServiceConnectEndpointConnectionId","privateServiceConnectEndpointIpAddress","privateServiceConnectEndpointName","privateServiceConnectEndpointTarget"]}}},"confluentcloud:index/ApiKeyManagedResource:ApiKeyManagedResource":{"properties":{"apiVersion":{"type":"string","description":"The API group and version of the managed resource that the API Key associated with, for example, `cmk/v2`.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/ApiKeyManagedResourceEnvironment:ApiKeyManagedResourceEnvironment"},"id":{"type":"string","description":"The ID of the managed resource that the API Key associated with, for example, `lkc-abc123`.\n","willReplaceOnChanges":true},"kind":{"type":"string","description":"The kind of the managed resource that the API Key associated with, for example, `Cluster`.\n","willReplaceOnChanges":true}},"type":"object","required":["apiVersion","id","kind"]},"confluentcloud:index/ApiKeyManagedResourceEnvironment:ApiKeyManagedResourceEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the managed resource belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ApiKeyOwner:ApiKeyOwner":{"properties":{"apiVersion":{"type":"string","description":"The API group and version of the owner that the API Key belongs to, for example, `iam/v2`.\n","willReplaceOnChanges":true},"id":{"type":"string","description":"The ID of the owner that the API Key belongs to, for example, `sa-abc123` or `u-abc123`.\n","willReplaceOnChanges":true},"kind":{"type":"string","description":"The kind of the owner that the API Key belongs to, for example, `ServiceAccount` or `User`.\n","willReplaceOnChanges":true}},"type":"object","required":["apiVersion","id","kind"]},"confluentcloud:index/BusinessMetadataAttributeDefinition:BusinessMetadataAttributeDefinition":{"properties":{"defaultValue":{"type":"string","description":"The default value of this attribute.\n"},"description":{"type":"string","description":"The description of this attribute.\n"},"isOptional":{"type":"boolean","description":"An optional flag to control whether the attribute should be optional or required. The default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"name":{"type":"string","description":"The name of the attribute.\n"},"options":{"type":"object","additionalProperties":{"type":"string"},"description":"(Optional Map) Block for the attribute options:\n- `applicableEntityTypes` - (Optional String) The entity types that the attribute is applicable, it always returns `[\\\"cf_entity\\\"]`.\n- `maxStrLength` - (Optional String) The maximum length of the string value, it always returns \u003cspan pulumi-lang-nodejs=\"`5000`\" pulumi-lang-dotnet=\"`5000`\" pulumi-lang-go=\"`5000`\" pulumi-lang-python=\"`5000`\" pulumi-lang-yaml=\"`5000`\" pulumi-lang-java=\"`5000`\"\u003e`5000`\u003c/span\u003e.\n"},"type":{"type":"string","description":"(Required String) The type of the attribute, it always returns \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e.\n"}},"type":"object","required":["name"],"language":{"nodejs":{"requiredOutputs":["defaultValue","description","isOptional","name","options","type"]}}},"confluentcloud:index/BusinessMetadataBindingCredentials:BusinessMetadataBindingCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/BusinessMetadataBindingSchemaRegistryCluster:BusinessMetadataBindingSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/BusinessMetadataCredentials:BusinessMetadataCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_business_metadata.pii\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_business_metadata.pii\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.BusinessMetadata`\" pulumi-lang-dotnet=\"`confluentcloud.BusinessMetadata`\" pulumi-lang-go=\"`BusinessMetadata`\" pulumi-lang-python=\"`BusinessMetadata`\" pulumi-lang-yaml=\"`confluentcloud.BusinessMetadata`\" pulumi-lang-java=\"`confluentcloud.BusinessMetadata`\"\u003e`confluentcloud.BusinessMetadata`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/BusinessMetadataSchemaRegistryCluster:BusinessMetadataSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ByokKeyAws:ByokKeyAws":{"properties":{"keyArn":{"type":"string","description":"The Amazon Resource Name (ARN) of an AWS KMS key.\n","willReplaceOnChanges":true},"roles":{"type":"array","items":{"type":"string"},"description":"(Optional List of Strings) The Amazon Resource Names (ARNs) of IAM Roles created for this key-environment\n"}},"type":"object","required":["keyArn"],"language":{"nodejs":{"requiredOutputs":["keyArn","roles"]}}},"confluentcloud:index/ByokKeyAzure:ByokKeyAzure":{"properties":{"applicationId":{"type":"string","description":"(Optional String) The Application ID created for this key-environment combination.\n"},"keyIdentifier":{"type":"string","description":"The unique Key Object Identifier URL of an Azure Key Vault key.\n","willReplaceOnChanges":true},"keyVaultId":{"type":"string","description":"Key Vault ID containing the key.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"Tenant ID (uuid) hosting the Key Vault containing the key.\n","willReplaceOnChanges":true}},"type":"object","required":["keyIdentifier","keyVaultId","tenantId"],"language":{"nodejs":{"requiredOutputs":["applicationId","keyIdentifier","keyVaultId","tenantId"]}}},"confluentcloud:index/ByokKeyGcp:ByokKeyGcp":{"properties":{"keyId":{"type":"string","description":"The Google Cloud Platform key ID.\n","willReplaceOnChanges":true},"securityGroup":{"type":"string","description":"(Optional String) The Google security group created for this key.\n"}},"type":"object","required":["keyId"],"language":{"nodejs":{"requiredOutputs":["keyId","securityGroup"]}}},"confluentcloud:index/CatalogEntityAttributesCredentials:CatalogEntityAttributesCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/CatalogEntityAttributesSchemaRegistryCluster:CatalogEntityAttributesSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/CatalogIntegrationAwsGlue:CatalogIntegrationAwsGlue":{"properties":{"providerIntegrationId":{"type":"string","description":"The provider integration id.\n","willReplaceOnChanges":true}},"type":"object","required":["providerIntegrationId"]},"confluentcloud:index/CatalogIntegrationCredentials:CatalogIntegrationCredentials":{"properties":{"key":{"type":"string","description":"The Tableflow API Key.\n","secret":true},"secret":{"type":"string","description":"The Tableflow API Secret.\n\n\u003e **Note:** A Tableflow API key consists of a key and a secret. Tableflow API keys are required to interact with Catalog Integrations in Confluent Cloud.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Tableflow API key, create a new Tableflow API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Tableflow API key, run `pulumi up -target=\"confluent_catalog_integration.example\"`, and remove the old Tableflow API key. Alternatively, in case the old Tableflow API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_catalog_integration.example\" -out=rotate-tableflow-api-key` and `pulumi up rotate-tableflow-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.CatalogIntegration`\" pulumi-lang-dotnet=\"`confluentcloud.CatalogIntegration`\" pulumi-lang-go=\"`CatalogIntegration`\" pulumi-lang-python=\"`CatalogIntegration`\" pulumi-lang-yaml=\"`confluentcloud.CatalogIntegration`\" pulumi-lang-java=\"`confluentcloud.CatalogIntegration`\"\u003e`confluentcloud.CatalogIntegration`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/CatalogIntegrationEnvironment:CatalogIntegrationEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/CatalogIntegrationKafkaCluster:CatalogIntegrationKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the Kafka cluster, for example, `lkc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/CatalogIntegrationSnowflake:CatalogIntegrationSnowflake":{"properties":{"allowedScope":{"type":"string","description":"Allowed scope of the Snowflake Open Catalog.\n"},"clientId":{"type":"string","description":"The client ID of the catalog integration.\n","secret":true},"clientSecret":{"type":"string","description":"The client secret of the catalog integration.\n","secret":true},"endpoint":{"type":"string","description":"The catalog integration connection endpoint for Snowflake Open Catalog.\n"},"warehouse":{"type":"string","description":"Warehouse name of the Snowflake Open Catalog, for example, `catalog-name`.\n"}},"type":"object","required":["allowedScope","clientId","clientSecret","endpoint","warehouse"]},"confluentcloud:index/CatalogIntegrationUnity:CatalogIntegrationUnity":{"properties":{"catalogName":{"type":"string","description":"The name of the catalog within Unity Catalog.\n"},"clientId":{"type":"string","description":"The OAuth client ID used to authenticate with the Unity Catalog.\n","secret":true},"clientSecret":{"type":"string","description":"The OAuth client secret used for authentication with the Unity Catalog.\n","secret":true},"workspaceEndpoint":{"type":"string","description":"The Databricks workspace URL associated with the Unity Catalog, for example, `https://user1.cloud.databricks.com`.\n"}},"type":"object","required":["catalogName","clientId","clientSecret","workspaceEndpoint"]},"confluentcloud:index/CertificatePoolCertificateAuthority:CertificatePoolCertificateAuthority":{"properties":{"id":{"type":"string","description":"The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ClusterLinkDestinationKafkaCluster:ClusterLinkDestinationKafkaCluster":{"properties":{"bootstrapEndpoint":{"type":"string","description":"The bootstrap endpoint of the destination Kafka cluster, for example, `SASL_SSL://pkc-00000.us-central1.gcp.confluent.cloud:9092` or `pkc-00000.us-central1.gcp.confluent.cloud:9092`).\n","willReplaceOnChanges":true},"credentials":{"$ref":"#/types/confluentcloud:index/ClusterLinkDestinationKafkaClusterCredentials:ClusterLinkDestinationKafkaClusterCredentials","description":"The Kafka API Credentials.\n","secret":true},"id":{"type":"string","description":"The ID of the destination Kafka cluster, for example, `lkc-abc123`.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the destination Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ClusterLinkDestinationKafkaClusterCredentials:ClusterLinkDestinationKafkaClusterCredentials":{"properties":{"key":{"type":"string","description":"The Kafka API Key.\n","secret":true},"secret":{"type":"string","description":"The Kafka API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/ClusterLinkLocalKafkaCluster:ClusterLinkLocalKafkaCluster":{"properties":{"bootstrapEndpoint":{"type":"string","description":"The bootstrap endpoint of the local Kafka cluster, for example, `SASL_SSL://pkc-00000.us-central1.gcp.confluent.cloud:9092` or `pkc-00000.us-central1.gcp.confluent.cloud:9092`).\n","willReplaceOnChanges":true},"credentials":{"$ref":"#/types/confluentcloud:index/ClusterLinkLocalKafkaClusterCredentials:ClusterLinkLocalKafkaClusterCredentials","description":"The Kafka API Credentials.\n","secret":true},"id":{"type":"string","description":"The ID of the local Kafka cluster, for example, `lkc-abc123`.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the local Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ClusterLinkLocalKafkaClusterCredentials:ClusterLinkLocalKafkaClusterCredentials":{"properties":{"key":{"type":"string","description":"The Kafka API Key.\n","secret":true},"secret":{"type":"string","description":"The Kafka API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/ClusterLinkRemoteKafkaCluster:ClusterLinkRemoteKafkaCluster":{"properties":{"bootstrapEndpoint":{"type":"string","description":"The bootstrap endpoint of the remote Kafka cluster, for example, `SASL_SSL://pkc-00000.us-central1.gcp.confluent.cloud:9092` or `pkc-00000.us-central1.gcp.confluent.cloud:9092`).\n","willReplaceOnChanges":true},"credentials":{"$ref":"#/types/confluentcloud:index/ClusterLinkRemoteKafkaClusterCredentials:ClusterLinkRemoteKafkaClusterCredentials","description":"The Kafka API Credentials.\n","secret":true},"id":{"type":"string","description":"The ID of the remote Kafka cluster, for example, `lkc-abc123`.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the remote Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ClusterLinkRemoteKafkaClusterCredentials:ClusterLinkRemoteKafkaClusterCredentials":{"properties":{"key":{"type":"string","description":"The Kafka API Key.\n","secret":true},"secret":{"type":"string","description":"The Kafka API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/ClusterLinkSourceKafkaCluster:ClusterLinkSourceKafkaCluster":{"properties":{"bootstrapEndpoint":{"type":"string","description":"The bootstrap endpoint of the source Kafka cluster, for example, `SASL_SSL://pkc-00000.us-central1.gcp.confluent.cloud:9092` or `pkc-00000.us-central1.gcp.confluent.cloud:9092`).\n","willReplaceOnChanges":true},"credentials":{"$ref":"#/types/confluentcloud:index/ClusterLinkSourceKafkaClusterCredentials:ClusterLinkSourceKafkaClusterCredentials","description":"The Kafka API Credentials.\n","secret":true},"id":{"type":"string","description":"The ID of the source Kafka cluster, for example, `lkc-abc123`.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the source Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ClusterLinkSourceKafkaClusterCredentials:ClusterLinkSourceKafkaClusterCredentials":{"properties":{"key":{"type":"string","description":"The Kafka API Key.\n","secret":true},"secret":{"type":"string","description":"The Kafka API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/ConnectArtifactEnvironment:ConnectArtifactEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Connect Artifact belongs to.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ConnectorEnvironment:ConnectorEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the connector belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ConnectorKafkaCluster:ConnectorKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the Kafka cluster that the connector belongs to, for example, `lkc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ConnectorOffset:ConnectorOffset":{"properties":{"offset":{"type":"object","additionalProperties":{"type":"string"},"description":"Block with offset information that supports different keys depending on the connector type. For sink connectors, use \u003cspan pulumi-lang-nodejs=\"`kafkaOffset`\" pulumi-lang-dotnet=\"`KafkaOffset`\" pulumi-lang-go=\"`kafkaOffset`\" pulumi-lang-python=\"`kafka_offset`\" pulumi-lang-yaml=\"`kafkaOffset`\" pulumi-lang-java=\"`kafkaOffset`\"\u003e`kafka_offset`\u003c/span\u003e. For source connectors, the applicable keys differ by kind—refer to the [Source connectors page](https://docs.confluent.io/cloud/current/connectors/offsets.html#source-connectors) for the full list of supported keys. Alternatively, use the [Manage custom offsets section](https://docs.confluent.io/cloud/current/connectors/cc-github-source.html#manage-custom-offsets) on the homepage of the target source connector.\n"},"partition":{"type":"object","additionalProperties":{"type":"string"},"description":"Block with partition information that supports different keys depending on the connector type. For sink connectors, use \u003cspan pulumi-lang-nodejs=\"`kafkaPartition`\" pulumi-lang-dotnet=\"`KafkaPartition`\" pulumi-lang-go=\"`kafkaPartition`\" pulumi-lang-python=\"`kafka_partition`\" pulumi-lang-yaml=\"`kafkaPartition`\" pulumi-lang-java=\"`kafkaPartition`\"\u003e`kafka_partition`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`kafkaTopic`\" pulumi-lang-dotnet=\"`KafkaTopic`\" pulumi-lang-go=\"`kafkaTopic`\" pulumi-lang-python=\"`kafka_topic`\" pulumi-lang-yaml=\"`kafkaTopic`\" pulumi-lang-java=\"`kafkaTopic`\"\u003e`kafka_topic`\u003c/span\u003e. For source connectors, the applicable keys differ by kind—refer to the [Source connectors page](https://docs.confluent.io/cloud/current/connectors/offsets.html#source-connectors) for the full list of supported keys.\n"}},"type":"object","required":["offset","partition"]},"confluentcloud:index/CustomConnectorPluginVersionConnectorClass:CustomConnectorPluginVersionConnectorClass":{"properties":{"connectorClassName":{"type":"string","description":"The name of the connector class.\n","willReplaceOnChanges":true},"connectorType":{"type":"string","description":"The type of the Custom Connector Plugin. Accepted values are: `SOURCE`, `SINK`.\n","willReplaceOnChanges":true}},"type":"object","required":["connectorClassName","connectorType"]},"confluentcloud:index/CustomConnectorPluginVersionEnvironment:CustomConnectorPluginVersionEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/DnsForwarderEnvironment:DnsForwarderEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the DNS Forwarder belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/DnsForwarderForwardViaGcpDnsZones:DnsForwarderForwardViaGcpDnsZones":{"properties":{"domainMappings":{"type":"object","additionalProperties":{"type":"string"},"description":"List of Maps which contains the domain to zone and project mapping.\n\n\u003e **Note:** The \u003cspan pulumi-lang-nodejs=\"`forwardViaGcpZones`\" pulumi-lang-dotnet=\"`ForwardViaGcpZones`\" pulumi-lang-go=\"`forwardViaGcpZones`\" pulumi-lang-python=\"`forward_via_gcp_zones`\" pulumi-lang-yaml=\"`forwardViaGcpZones`\" pulumi-lang-java=\"`forwardViaGcpZones`\"\u003e`forward_via_gcp_zones`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`forwardViaIp`\" pulumi-lang-dotnet=\"`ForwardViaIp`\" pulumi-lang-go=\"`forwardViaIp`\" pulumi-lang-python=\"`forward_via_ip`\" pulumi-lang-yaml=\"`forwardViaIp`\" pulumi-lang-java=\"`forwardViaIp`\"\u003e`forward_via_ip`\u003c/span\u003e blocks are mutually exclusive, and one of them must be provided.\n\n\u003e **Note:** The zone and project must be specified in the correct order, separated by a comma, to ensure accurate \u003cspan pulumi-lang-nodejs=\"`domainMappings`\" pulumi-lang-dotnet=\"`DomainMappings`\" pulumi-lang-go=\"`domainMappings`\" pulumi-lang-python=\"`domain_mappings`\" pulumi-lang-yaml=\"`domainMappings`\" pulumi-lang-java=\"`domainMappings`\"\u003e`domain_mappings`\u003c/span\u003e.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["domainMappings"]}}},"confluentcloud:index/DnsForwarderForwardViaIp:DnsForwarderForwardViaIp":{"properties":{"dnsServerIps":{"type":"array","items":{"type":"string"},"description":"List of IP addresses of the DNS server.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["dnsServerIps"]}}},"confluentcloud:index/DnsForwarderGateway:DnsForwarderGateway":{"properties":{"id":{"type":"string","description":"The ID of the gateway to which the DNS Forwarder belongs, for example, `gw-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/DnsRecordEnvironment:DnsRecordEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the DNS Record belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/DnsRecordGateway:DnsRecordGateway":{"properties":{"id":{"type":"string","description":"The ID of the gateway to which the DNS Record belongs, for example, `gw-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/DnsRecordPrivateLinkAccessPoint:DnsRecordPrivateLinkAccessPoint":{"properties":{"id":{"type":"string","description":"The ID of the Private Link access point to which the DNS Record is associated, for example `ap-123abc`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/EnvironmentStreamGovernance:EnvironmentStreamGovernance":{"properties":{"package":{"type":"string","description":"The [stream governance package](https://docs.confluent.io/cloud/current/stream-governance/packages.html#packages) for the Environment. Accepted values are: `ESSENTIALS` and `ADVANCED`.\n"}},"type":"object","required":["package"]},"confluentcloud:index/FlinkArtifactEnvironment:FlinkArtifactEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Flink Artifact Pool belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/FlinkArtifactVersion:FlinkArtifactVersion":{"properties":{"version":{"type":"string","description":"The version of this Flink Artifact.\n"}},"type":"object","required":["version"]},"confluentcloud:index/FlinkComputePoolEnvironment:FlinkComputePoolEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Flink Compute Pool belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/FlinkConnectionComputePool:FlinkConnectionComputePool":{"properties":{"id":{"type":"string"}},"type":"object","required":["id"]},"confluentcloud:index/FlinkConnectionCredentials:FlinkConnectionCredentials":{"properties":{"key":{"type":"string","description":"The Cluster API Key for your Confluent Cloud cluster.\n","secret":true},"secret":{"type":"string","description":"The Cluster API Secret for your Confluent Cloud cluster.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/FlinkConnectionEnvironment:FlinkConnectionEnvironment":{"properties":{"id":{"type":"string","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/FlinkConnectionOrganization:FlinkConnectionOrganization":{"properties":{"id":{"type":"string","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/FlinkConnectionPrincipal:FlinkConnectionPrincipal":{"properties":{"id":{"type":"string"}},"type":"object","required":["id"]},"confluentcloud:index/FlinkStatementComputePool:FlinkStatementComputePool":{"properties":{"id":{"type":"string","description":"The ID of the Flink Compute Pool, for example, `lfcp-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/FlinkStatementCredentials:FlinkStatementCredentials":{"properties":{"key":{"type":"string","description":"The Flink API Key.\n","secret":true},"secret":{"type":"string","description":"The Flink API Secret.\n\n\u003e **Note:** A Flink API key consists of a key and a secret. Flink API keys are required to interact with Flink Statements in Confluent Cloud. Each Flink API key is valid for one specific Flink Region.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Flink API key, create a new Flink API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Flink API key, run `pulumi up -target=\"confluent_flink_statement.example\"`, and remove the old Flink API key. Alternatively, in case the old Flink API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_flink_statement.example\" -out=rotate-flink-api-key` and `pulumi up rotate-flink-api-key` instead.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/FlinkStatementEnvironment:FlinkStatementEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/FlinkStatementOrganization:FlinkStatementOrganization":{"properties":{"id":{"type":"string","description":"The ID of the Organization, for example, `1111aaaa-11aa-11aa-11aa-111111aaaaaa`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/FlinkStatementPrincipal:FlinkStatementPrincipal":{"properties":{"id":{"type":"string","description":"The ID of the Principal the Flink Statement runs as, for example, `sa-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/GatewayAwsEgressPrivateLinkGateway:GatewayAwsEgressPrivateLinkGateway":{"properties":{"principalArn":{"type":"string","description":"(Required String) The principal ARN used by the AWS Egress Private Link Gateway, for example, `arn:aws:iam::123456789012:tenant-1-role`.\n"},"region":{"type":"string","description":"AWS region of the Gateway, for example, `us-east-1`.\n","willReplaceOnChanges":true}},"type":"object","required":["region"],"language":{"nodejs":{"requiredOutputs":["principalArn","region"]}}},"confluentcloud:index/GatewayAwsIngressPrivateLinkGateway:GatewayAwsIngressPrivateLinkGateway":{"properties":{"region":{"type":"string","description":"AWS region of the Ingress Private Link Gateway, for example, `us-east-1`.\n","willReplaceOnChanges":true},"vpcEndpointServiceName":{"type":"string","description":"(Required String) The ID of the AWS VPC Endpoint Service that can be used to establish connections for all zones, for example, `com.amazonaws.vpce.us-west-2.vpce-svc-00000000000000000`.\n"}},"type":"object","required":["region"],"language":{"nodejs":{"requiredOutputs":["region","vpcEndpointServiceName"]}}},"confluentcloud:index/GatewayAwsPrivateNetworkInterfaceGateway:GatewayAwsPrivateNetworkInterfaceGateway":{"properties":{"account":{"type":"string","description":"(Required String) The AWS account ID associated with the Private Network Interface Gateway.\n"},"region":{"type":"string","description":"AWS region of the Private Network Interface Gateway.\n","willReplaceOnChanges":true},"zones":{"type":"array","items":{"type":"string"},"description":"AWS availability zone ids of the Private Network Interface Gateway.\n","willReplaceOnChanges":true}},"type":"object","required":["region","zones"],"language":{"nodejs":{"requiredOutputs":["account","region","zones"]}}},"confluentcloud:index/GatewayAzureEgressPrivateLinkGateway:GatewayAzureEgressPrivateLinkGateway":{"properties":{"region":{"type":"string","description":"Azure region of the Gateway, for example, \u003cspan pulumi-lang-nodejs=\"`eastus`\" pulumi-lang-dotnet=\"`Eastus`\" pulumi-lang-go=\"`eastus`\" pulumi-lang-python=\"`eastus`\" pulumi-lang-yaml=\"`eastus`\" pulumi-lang-java=\"`eastus`\"\u003e`eastus`\u003c/span\u003e.\n","willReplaceOnChanges":true},"subscription":{"type":"string","description":"(Required String) The Azure Subscription ID associated with the Confluent Cloud VPC, for example, `00000000-0000-0000-0000-000000000000`.\n"}},"type":"object","required":["region"],"language":{"nodejs":{"requiredOutputs":["region","subscription"]}}},"confluentcloud:index/GatewayEnvironment:GatewayEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Gateway belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/IdentityPoolIdentityProvider:IdentityPoolIdentityProvider":{"properties":{"id":{"type":"string","description":"The ID of the Identity Provider associated with the Identity Pool, for example, `op-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/InvitationCreator:InvitationCreator":{"properties":{"id":{"type":"string","description":"(Required String) The id of invitation creator.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["id"]}}},"confluentcloud:index/InvitationUser:InvitationUser":{"properties":{"id":{"type":"string","description":"(Required String) The id of invitation creator.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["id"]}}},"confluentcloud:index/KafkaAclCredentials:KafkaAclCredentials":{"properties":{"key":{"type":"string","description":"The Kafka API Key.\n","secret":true},"secret":{"type":"string","description":"The Kafka API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/KafkaAclKafkaCluster:KafkaAclKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the Kafka cluster, for example, `lkc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/KafkaClientQuotaEnvironment:KafkaClientQuotaEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the corresponding Kafka Cluster belongs to, for example, `env-abc123`.\n\n\u003e **Note:** Each principal assigned to a quota receives the full amount of the quota, meaning the quota is not shared by the principals it is assigned. For example, if a 10 MBps ingress quota is applied to Principals 1 and 2, Principal 1 can produce at most 10 MBps, independently of Principal 2.\n\n\u003e **Note:** Define a throughput maximum, but do not guarantee a throughput floor. Applications are rate-limited through the use of the Kafka throttling mechanism. Kafka asks the client to wait before sending more data and mutes the channel, which appears as latency to the client application.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/KafkaClientQuotaKafkaCluster:KafkaClientQuotaKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the Kafka Cluster where the Kafka Client Quota is applied, for example, `lkc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/KafkaClientQuotaThroughput:KafkaClientQuotaThroughput":{"properties":{"egressByteRate":{"type":"string","description":"The egress throughput limit in bytes per second.\n"},"ingressByteRate":{"type":"string","description":"The ingress throughput limit in bytes per second.\n"}},"type":"object","required":["egressByteRate","ingressByteRate"]},"confluentcloud:index/KafkaClusterBasic:KafkaClusterBasic":{"properties":{"maxEcku":{"type":"integer","description":"The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to. Kafka clusters with \"HIGH\" availability must have at least two eCKUs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["maxEcku"]}}},"confluentcloud:index/KafkaClusterByokKey:KafkaClusterByokKey":{"properties":{"id":{"type":"string","description":"The ID of the Confluent key that is used to encrypt the data in the Kafka cluster, for example, `cck-lye5m`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/KafkaClusterConfigCredentials:KafkaClusterConfigCredentials":{"properties":{"key":{"type":"string","description":"The Kafka API Key.\n","secret":true},"secret":{"type":"string","description":"The Kafka API Secret.\n\n\u003e **Note:** A Kafka API key consists of a key and a secret. Kafka API keys are required to interact with Kafka clusters in Confluent Cloud. Each Kafka API key is valid for one specific Kafka cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Kafka API key, create a new Kafka API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Kafka API key, run `pulumi up -target=\"confluent_kafka_cluster_config.orders\"`, and remove the old Kafka API key. Alternatively, in case the old Kafka API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_kafka_cluster_config.orders\" -out=rotate-kafka-api-key` and `pulumi up rotate-kafka-api-key` instead.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/KafkaClusterConfigKafkaCluster:KafkaClusterConfigKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the Dedicated Kafka cluster, for example, `lkc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/KafkaClusterDedicated:KafkaClusterDedicated":{"properties":{"cku":{"type":"integer","description":"The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. The minimum number of CKUs for `SINGLE_ZONE` dedicated clusters is \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e whereas `MULTI_ZONE` dedicated clusters must have \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e CKUs or more.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\"\u003e`basic`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`dedicated`\" pulumi-lang-dotnet=\"`Dedicated`\" pulumi-lang-go=\"`dedicated`\" pulumi-lang-python=\"`dedicated`\" pulumi-lang-yaml=\"`dedicated`\" pulumi-lang-java=\"`dedicated`\"\u003e`dedicated`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`enterprise`\" pulumi-lang-dotnet=\"`Enterprise`\" pulumi-lang-go=\"`enterprise`\" pulumi-lang-python=\"`enterprise`\" pulumi-lang-yaml=\"`enterprise`\" pulumi-lang-java=\"`enterprise`\"\u003e`enterprise`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`freight`\" pulumi-lang-dotnet=\"`Freight`\" pulumi-lang-go=\"`freight`\" pulumi-lang-python=\"`freight`\" pulumi-lang-yaml=\"`freight`\" pulumi-lang-java=\"`freight`\"\u003e`freight`\u003c/span\u003e configuration blocks must be specified.\n\n\u003e **Note:** The \u003cspan pulumi-lang-nodejs=\"`freight`\" pulumi-lang-dotnet=\"`Freight`\" pulumi-lang-go=\"`freight`\" pulumi-lang-python=\"`freight`\" pulumi-lang-yaml=\"`freight`\" pulumi-lang-java=\"`freight`\"\u003e`freight`\u003c/span\u003e Kafka cluster type is currently available only on AWS.\n\n!\u003e **Warning:** You can only upgrade clusters from \u003cspan pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\"\u003e`basic`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e.\n\n\u003e **Note:** Currently, provisioning of a Dedicated Kafka cluster takes around 25 minutes on average but might take up to 24 hours. If you can't wait for the `pulumi up` step to finish, you can exit it and import the cluster by using the `pulumi import` command once it has been provisioned. When the cluster is provisioned, you will receive an email notification, and you can also follow updates on the Target Environment web page of the Confluent Cloud website.\n\n\u003e **Note:** Refer to [eCKU/CKU comparison](https://docs.confluent.io/cloud/current/clusters/cluster-types.html#ecku-cku-comparison) documentation for the minimum/maximum eCKU requirements for each cluster type.\n"},"encryptionKey":{"type":"string","description":"The ID of the encryption key that is used to encrypt the data in the Kafka cluster.\n"},"zones":{"type":"array","items":{"type":"string"},"description":"(Required List of String) The list of zones the cluster is in.\n- On AWS, zones are AWS [AZ IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html), for example, `use1-az3`.\n"}},"type":"object","required":["cku"],"language":{"nodejs":{"requiredOutputs":["cku","encryptionKey","zones"]}}},"confluentcloud:index/KafkaClusterEndpoint:KafkaClusterEndpoint":{"properties":{"accessPointId":{"type":"string","description":"(Required String) The ID of the Access Point that the endpoint corresponds to. Access Point IDs `PUBLIC` and `PRIVATE_LINK` are reserved.\n"},"bootstrapEndpoint":{"type":"string","description":"(Required String) The bootstrap endpoint used by Kafka clients to connect to the cluster (for example, `lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:9092`).\n"},"connectionType":{"type":"string","description":"(Required String) The type of connection used for the endpoint (for example, `PRIVATE_NETWORK_INTERFACE`).\n"},"restEndpoint":{"type":"string","description":"(Required String) The REST endpoint of the Kafka cluster (for example, `https://lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:443`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["accessPointId","bootstrapEndpoint","connectionType","restEndpoint"]}}},"confluentcloud:index/KafkaClusterEnterprise:KafkaClusterEnterprise":{"properties":{"maxEcku":{"type":"integer","description":"The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to. Kafka clusters with \"HIGH\" availability must have at least two eCKUs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["maxEcku"]}}},"confluentcloud:index/KafkaClusterEnvironment:KafkaClusterEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Kafka cluster belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/KafkaClusterFreight:KafkaClusterFreight":{"properties":{"maxEcku":{"type":"integer","description":"The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to. Kafka clusters with \"HIGH\" availability must have at least two eCKUs.\n"},"zones":{"type":"array","items":{"type":"string"},"description":"(Required List of String) The list of zones the cluster is in.\n- On AWS, zones are AWS [AZ IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html), for example, `use1-az3`.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["maxEcku","zones"]}}},"confluentcloud:index/KafkaClusterNetwork:KafkaClusterNetwork":{"properties":{"id":{"type":"string","description":"The ID of the Network that the Kafka cluster belongs to, for example, `n-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/KafkaClusterStandard:KafkaClusterStandard":{"properties":{"maxEcku":{"type":"integer","description":"The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to. Kafka clusters with \"HIGH\" availability must have at least two eCKUs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["maxEcku"]}}},"confluentcloud:index/KafkaMirrorTopicClusterLink:KafkaMirrorTopicClusterLink":{"properties":{"linkName":{"type":"string","description":"The name of the cluster link to attach to the mirror topic, for example, `my-cluster-link`.\n","willReplaceOnChanges":true}},"type":"object","required":["linkName"]},"confluentcloud:index/KafkaMirrorTopicKafkaCluster:KafkaMirrorTopicKafkaCluster":{"properties":{"credentials":{"$ref":"#/types/confluentcloud:index/KafkaMirrorTopicKafkaClusterCredentials:KafkaMirrorTopicKafkaClusterCredentials","description":"The Kafka API Credentials.\n","secret":true},"id":{"type":"string","description":"The ID of the destination Kafka cluster, for example, `lkc-abc123`.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the destination Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/KafkaMirrorTopicKafkaClusterCredentials:KafkaMirrorTopicKafkaClusterCredentials":{"properties":{"key":{"type":"string","description":"The Kafka API Key.\n","secret":true},"secret":{"type":"string","description":"The Kafka API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/KafkaMirrorTopicSourceKafkaTopic:KafkaMirrorTopicSourceKafkaTopic":{"properties":{"topicName":{"type":"string","description":"The name of the topic on the source cluster to be mirrored over the cluster link, for example, \u003cspan pulumi-lang-nodejs=\"`orders`\" pulumi-lang-dotnet=\"`Orders`\" pulumi-lang-go=\"`orders`\" pulumi-lang-python=\"`orders`\" pulumi-lang-yaml=\"`orders`\" pulumi-lang-java=\"`orders`\"\u003e`orders`\u003c/span\u003e. A topic with the exact same name must exist on the source cluster, and no topic with this name should exist on the destination cluster.\n","willReplaceOnChanges":true}},"type":"object","required":["topicName"]},"confluentcloud:index/KafkaTopicCredentials:KafkaTopicCredentials":{"properties":{"key":{"type":"string","description":"The Kafka API Key.\n","secret":true},"secret":{"type":"string","description":"The Kafka API Secret.\n\n\u003e **Note:** A Kafka API key consists of a key and a secret. Kafka API keys are required to interact with Kafka clusters in Confluent Cloud. Each Kafka API key is valid for one specific Kafka cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Kafka API key, create a new Kafka API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Kafka API key, run `pulumi up -target=\"confluent_kafka_topic.orders\"`, and remove the old Kafka API key. Alternatively, in case the old Kafka API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_kafka_topic.orders\" -out=rotate-kafka-api-key` and `pulumi up rotate-kafka-api-key` instead.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/KafkaTopicKafkaCluster:KafkaTopicKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the Kafka cluster, for example, `lkc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/KsqlClusterCredentialIdentity:KsqlClusterCredentialIdentity":{"properties":{"id":{"type":"string","description":"The ID of the associated service or user account, for example, `sa-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/KsqlClusterEnvironment:KsqlClusterEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the associated Environment, for example, `env-xyz456`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/KsqlClusterKafkaCluster:KsqlClusterKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the associated Kafka cluster, for example, `lkc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/NetworkAw:NetworkAw":{"properties":{"account":{"type":"string","description":"(Required String) The AWS account ID associated with the Confluent Cloud VPC.\n"},"privateLinkEndpointService":{"type":"string","description":"(Optional String) The endpoint service of the Confluent Cloud VPC (used for PrivateLink) if available.\n"},"vpc":{"type":"string","description":"(Required String) The Confluent Cloud VPC ID.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["account","privateLinkEndpointService","vpc"]}}},"confluentcloud:index/NetworkAzure:NetworkAzure":{"properties":{"privateLinkServiceAliases":{"type":"object","additionalProperties":{"type":"string"},"description":"(Optional Map) The mapping of zones to Private Link Service Aliases if available. Keys are zone names, for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e 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`.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["privateLinkServiceAliases"]}}},"confluentcloud:index/NetworkDnsConfig:NetworkDnsConfig":{"properties":{"resolution":{"type":"string","description":"Network DNS resolution.\nWhen resolution is `CHASED_PRIVATE`, clusters in this network require both public and private DNS to resolve cluster endpoints.\nWhen resolution is `PRIVATE`, clusters in this network only require private DNS to resolve cluster endpoints.\nThe Confluent Cloud Console uses `resolution = PRIVATE`.\n","willReplaceOnChanges":true}},"type":"object","required":["resolution"]},"confluentcloud:index/NetworkEnvironment:NetworkEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Network belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/NetworkGateway:NetworkGateway":{"properties":{"id":{"type":"string","description":"(Optional String) The ID of the Gateway, for example, `gw-abc123`.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["id"]}}},"confluentcloud:index/NetworkGcp:NetworkGcp":{"properties":{"privateServiceConnectServiceAttachments":{"type":"object","additionalProperties":{"type":"string"},"description":"(Optional Map) The mapping of zones to Private Service Connect Service Attachments if available. Keys are zones and values are [GCP Private Service Connect service attachment](https://cloud.google.com/vpc/docs/configure-private-service-connect-producer#api_7).\n"},"project":{"type":"string","description":"(Required String) The GCP Project ID associated with the Confluent Cloud VPC.\n"},"vpcNetwork":{"type":"string","description":"(Required String) The network name of the Confluent Cloud VPC.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["privateServiceConnectServiceAttachments","project","vpcNetwork"]}}},"confluentcloud:index/NetworkLinkEndpointEnvironment:NetworkLinkEndpointEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Network Link Endpoint belongs to, for example, `env-xyz456`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/NetworkLinkEndpointNetwork:NetworkLinkEndpointNetwork":{"properties":{"id":{"type":"string","description":"The ID of the Network that the Network Link Endpoint belongs to, for example, `n-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/NetworkLinkEndpointNetworkLinkService:NetworkLinkEndpointNetworkLinkService":{"properties":{"id":{"type":"string","description":"The ID of the Network Link Service, for example, `nls-g3e1ox`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/NetworkLinkServiceAccept:NetworkLinkServiceAccept":{"properties":{"environments":{"type":"array","items":{"type":"string"},"description":"List of environments ids from which connections can be accepted. All networks within the list of environment will be allowed.\n"},"networks":{"type":"array","items":{"type":"string"},"description":"List of network ids from which connections can be accepted.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["environments","networks"]}}},"confluentcloud:index/NetworkLinkServiceEnvironment:NetworkLinkServiceEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Network Link Service belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/NetworkLinkServiceNetwork:NetworkLinkServiceNetwork":{"properties":{"id":{"type":"string","description":"The ID of the Network that the Network Link Service belongs to, for example, `n-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/NetworkZoneInfo:NetworkZoneInfo":{"properties":{"cidr":{"type":"string","description":"The IPv4 CIDR block to be used for the network. Must be `/27`. Required for VPC peering and AWS TransitGateway.\n"},"zoneId":{"type":"string","description":"Cloud provider zone ID.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["cidr","zoneId"]}}},"confluentcloud:index/PeeringAws:PeeringAws":{"properties":{"account":{"type":"string","description":"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**.\n","willReplaceOnChanges":true},"customerRegion":{"type":"string","description":"The region of the AWS peer VPC.\n","willReplaceOnChanges":true},"routes":{"type":"array","items":{"type":"string"},"description":"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 \u003e Target VPC \u003e Details** section of the AWS Management Console.\n","willReplaceOnChanges":true},"vpc":{"type":"string","description":"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-`.\n","willReplaceOnChanges":true}},"type":"object","required":["account","customerRegion","routes","vpc"]},"confluentcloud:index/PeeringAzure:PeeringAzure":{"properties":{"customerRegion":{"type":"string","description":"The region of the Azure peer VNet.\n","willReplaceOnChanges":true},"tenant":{"type":"string","description":"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**.\n","willReplaceOnChanges":true},"vnet":{"type":"string","description":"The resource (composite) ID of the peer Virtual Network that you're peering with Confluent Cloud, in the format `/subscriptions/\u003cSubscription ID\u003e/resourceGroups/\u003cResource Group Name\u003e/providers/Microsoft.Network/virtualNetworks/\u003cVNet name\u003e`. You can find Subscription ID, Resource Group Name and your VNet name under **Virtual Networks \u003e Target VNet \u003e Essentials** section of your [Microsoft Azure Portal](https://portal.azure.com/).\n","willReplaceOnChanges":true}},"type":"object","required":["customerRegion","tenant","vnet"]},"confluentcloud:index/PeeringEnvironment:PeeringEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Peering belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/PeeringGcp:PeeringGcp":{"properties":{"importCustomRoutes":{"type":"boolean","description":"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 \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. 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).\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`aws`\" pulumi-lang-dotnet=\"`Aws`\" pulumi-lang-go=\"`aws`\" pulumi-lang-python=\"`aws`\" pulumi-lang-yaml=\"`aws`\" pulumi-lang-java=\"`aws`\"\u003e`aws`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`azure`\" pulumi-lang-dotnet=\"`Azure`\" pulumi-lang-go=\"`azure`\" pulumi-lang-python=\"`azure`\" pulumi-lang-yaml=\"`azure`\" pulumi-lang-java=\"`azure`\"\u003e`azure`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`gcp`\" pulumi-lang-dotnet=\"`Gcp`\" pulumi-lang-go=\"`gcp`\" pulumi-lang-python=\"`gcp`\" pulumi-lang-yaml=\"`gcp`\" pulumi-lang-java=\"`gcp`\"\u003e`gcp`\u003c/span\u003e configuration blocks must be specified.\n\n\u003e **Note:** Learn more about VPC Peering requirements on AWS [here](https://docs.confluent.io/cloud/current/networking/peering/aws-peering.html#vpc-peering-on-aws).\n\n\u003e **Note:** Learn more about VNet Peering requirements on Azure [here](https://docs.confluent.io/cloud/current/networking/peering/azure-peering.html#vnet-peering-on-az).\n\n\u003e **Note:** Learn more about VPC Peering requirements on Google Cloud Platform [here](https://docs.confluent.io/cloud/current/networking/peering/gcp-peering.html#vpc-peering-on-gcp).\n","willReplaceOnChanges":true},"project":{"type":"string","description":"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).\n","willReplaceOnChanges":true},"vpcNetwork":{"type":"string","description":"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).\n","willReplaceOnChanges":true}},"type":"object","required":["project","vpcNetwork"]},"confluentcloud:index/PeeringNetwork:PeeringNetwork":{"properties":{"id":{"type":"string","description":"The ID of the Network that the Peering belongs to, for example, `n-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/PluginEnvironment:PluginEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/PrivateLinkAccessAws:PrivateLinkAccessAws":{"properties":{"account":{"type":"string","description":"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**.\n","willReplaceOnChanges":true}},"type":"object","required":["account"]},"confluentcloud:index/PrivateLinkAccessAzure:PrivateLinkAccessAzure":{"properties":{"subscription":{"type":"string","description":"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**.\n","willReplaceOnChanges":true}},"type":"object","required":["subscription"]},"confluentcloud:index/PrivateLinkAccessEnvironment:PrivateLinkAccessEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Private Link Access belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/PrivateLinkAccessGcp:PrivateLinkAccessGcp":{"properties":{"project":{"type":"string","description":"The GCP project ID to allow for Private Service Connect access. 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).\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`aws`\" pulumi-lang-dotnet=\"`Aws`\" pulumi-lang-go=\"`aws`\" pulumi-lang-python=\"`aws`\" pulumi-lang-yaml=\"`aws`\" pulumi-lang-java=\"`aws`\"\u003e`aws`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`azure`\" pulumi-lang-dotnet=\"`Azure`\" pulumi-lang-go=\"`azure`\" pulumi-lang-python=\"`azure`\" pulumi-lang-yaml=\"`azure`\" pulumi-lang-java=\"`azure`\"\u003e`azure`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gcp`\" pulumi-lang-dotnet=\"`Gcp`\" pulumi-lang-go=\"`gcp`\" pulumi-lang-python=\"`gcp`\" pulumi-lang-yaml=\"`gcp`\" pulumi-lang-java=\"`gcp`\"\u003e`gcp`\u003c/span\u003e configuration blocks must be specified.\n\n\u003e **Note:** Learn more about Private Link Access limitations on AWS [here](https://docs.confluent.io/cloud/current/networking/private-links/aws-privatelink.html#limitations).\n\n\u003e **Note:** Learn more about Private Link Access limitations on Azure [here](https://docs.confluent.io/cloud/current/networking/private-links/azure-privatelink.html#limitations).\n","willReplaceOnChanges":true}},"type":"object","required":["project"]},"confluentcloud:index/PrivateLinkAccessNetwork:PrivateLinkAccessNetwork":{"properties":{"id":{"type":"string","description":"The ID of the Network that the Private Link Access belongs to, for example, `n-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/PrivateLinkAttachmentAw:PrivateLinkAttachmentAw":{"properties":{"vpcEndpointServiceName":{"type":"string","description":"(Required String) AWS VPC Endpoint Service that can be used to establish connections for all zones, for example `com.amazonaws.vpce.us-west-2.vpce-svc-0d3be37e21708ecd3`.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["vpcEndpointServiceName"]}}},"confluentcloud:index/PrivateLinkAttachmentAzure:PrivateLinkAttachmentAzure":{"properties":{"privateLinkServiceAlias":{"type":"string","description":"(Required String) Azure Private Link service alias for the availability zone.\n"},"privateLinkServiceResourceId":{"type":"string","description":"(Required String) Azure Private Link service resource ID for the availability zone.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["privateLinkServiceAlias","privateLinkServiceResourceId"]}}},"confluentcloud:index/PrivateLinkAttachmentConnectionAws:PrivateLinkAttachmentConnectionAws":{"properties":{"vpcEndpointId":{"type":"string","description":"ID of a VPC Endpoint that is connected to the VPC Endpoint service.\n","willReplaceOnChanges":true}},"type":"object","required":["vpcEndpointId"]},"confluentcloud:index/PrivateLinkAttachmentConnectionAzure:PrivateLinkAttachmentConnectionAzure":{"properties":{"privateEndpointResourceId":{"type":"string","description":"Resource ID of the Private Endpoint that is connected to the Private Link service.\n","willReplaceOnChanges":true}},"type":"object","required":["privateEndpointResourceId"]},"confluentcloud:index/PrivateLinkAttachmentConnectionEnvironment:PrivateLinkAttachmentConnectionEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Private Link Attachment Connection belongs to, for example `env-xyz456`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/PrivateLinkAttachmentConnectionGcp:PrivateLinkAttachmentConnectionGcp":{"properties":{"privateServiceConnectConnectionId":{"type":"string","description":"GCP Private Service Connect ID used to establish connections for all zones.\n","willReplaceOnChanges":true}},"type":"object","required":["privateServiceConnectConnectionId"]},"confluentcloud:index/PrivateLinkAttachmentConnectionPrivateLinkAttachment:PrivateLinkAttachmentConnectionPrivateLinkAttachment":{"properties":{"id":{"type":"string","description":"The unique identifier for the private link attachment.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/PrivateLinkAttachmentEnvironment:PrivateLinkAttachmentEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Private Link Attachment belongs to, for example `env-xyz456`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/PrivateLinkAttachmentGcp:PrivateLinkAttachmentGcp":{"properties":{"privateServiceConnectServiceAttachment":{"type":"string","description":"(Required String) The ID of the GCP Private Service Connect Service Attachment on Confluent Cloud.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["privateServiceConnectServiceAttachment"]}}},"confluentcloud:index/ProviderIntegrationAuthorizationAzure:ProviderIntegrationAuthorizationAzure":{"properties":{"confluentMultiTenantAppId":{"type":"string","description":"(Computed String) Confluent Multi-Tenant App ID used to access customer Azure resources.\n"},"customerAzureTenantId":{"type":"string","description":"Customer's Azure Tenant ID.\n"}},"type":"object","required":["customerAzureTenantId"],"language":{"nodejs":{"requiredOutputs":["confluentMultiTenantAppId","customerAzureTenantId"]}}},"confluentcloud:index/ProviderIntegrationAuthorizationEnvironment:ProviderIntegrationAuthorizationEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Provider Integration belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ProviderIntegrationAuthorizationGcp:ProviderIntegrationAuthorizationGcp":{"properties":{"customerGoogleServiceAccount":{"type":"string","description":"Customer's Google Service Account that Confluent Cloud impersonates.\n\n\u003e **Note:** Exactly one of \u003cspan pulumi-lang-nodejs=\"`azure`\" pulumi-lang-dotnet=\"`Azure`\" pulumi-lang-go=\"`azure`\" pulumi-lang-python=\"`azure`\" pulumi-lang-yaml=\"`azure`\" pulumi-lang-java=\"`azure`\"\u003e`azure`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`gcp`\" pulumi-lang-dotnet=\"`Gcp`\" pulumi-lang-go=\"`gcp`\" pulumi-lang-python=\"`gcp`\" pulumi-lang-yaml=\"`gcp`\" pulumi-lang-java=\"`gcp`\"\u003e`gcp`\u003c/span\u003e configuration blocks must be provided, matching the cloud provider of the associated provider integration.\n"},"googleServiceAccount":{"type":"string","description":"(Computed String) Google Service Account that Confluent Cloud uses for impersonation.\n"}},"type":"object","required":["customerGoogleServiceAccount"],"language":{"nodejs":{"requiredOutputs":["customerGoogleServiceAccount","googleServiceAccount"]}}},"confluentcloud:index/ProviderIntegrationAws:ProviderIntegrationAws":{"properties":{"customerRoleArn":{"type":"string","description":"Amazon Resource Name (ARN) that identifies the AWS Identity and Access Management (IAM) role that Confluent Cloud assumes when it accesses resources in your AWS account.\n\n\u003e **Note:** Currently only \u003cspan pulumi-lang-nodejs=\"`aws`\" pulumi-lang-dotnet=\"`Aws`\" pulumi-lang-go=\"`aws`\" pulumi-lang-python=\"`aws`\" pulumi-lang-yaml=\"`aws`\" pulumi-lang-java=\"`aws`\"\u003e`aws`\u003c/span\u003e config is supported, more cloud service provider config will be supported in the short future.\n\n\u003e **Note:** \u003cspan pulumi-lang-nodejs=\"`customerRoleArn`\" pulumi-lang-dotnet=\"`CustomerRoleArn`\" pulumi-lang-go=\"`customerRoleArn`\" pulumi-lang-python=\"`customer_role_arn`\" pulumi-lang-yaml=\"`customerRoleArn`\" pulumi-lang-java=\"`customerRoleArn`\"\u003e`customer_role_arn`\u003c/span\u003e must be unique in a given environment for creating a new Provider Integration.\n","willReplaceOnChanges":true},"externalId":{"type":"string","description":"(Required String) Unique external ID that Confluent Cloud uses when it assumes the IAM role in your Amazon Web Services (AWS) account.\n"},"iamRoleArn":{"type":"string","description":"(Required String) The IAM role ARN used in Confluent Cloud internally, bundled with \u003cspan pulumi-lang-nodejs=\"`customerRoleArn`\" pulumi-lang-dotnet=\"`CustomerRoleArn`\" pulumi-lang-go=\"`customerRoleArn`\" pulumi-lang-python=\"`customer_role_arn`\" pulumi-lang-yaml=\"`customerRoleArn`\" pulumi-lang-java=\"`customerRoleArn`\"\u003e`customer_role_arn`\u003c/span\u003e.\n"}},"type":"object","required":["customerRoleArn"],"language":{"nodejs":{"requiredOutputs":["customerRoleArn","externalId","iamRoleArn"]}}},"confluentcloud:index/ProviderIntegrationEnvironment:ProviderIntegrationEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Provider Integration belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ProviderIntegrationSetupEnvironment:ProviderIntegrationSetupEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Provider Integration belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/ProviderOauth:ProviderOauth":{"properties":{"oauthExternalAccessToken":{"type":"string","description":"OAuth existing static access token already fetched from external Identity Provider.\n","secret":true},"oauthExternalClientId":{"type":"string","description":"OAuth token application client id from external Identity Provider.\n"},"oauthExternalClientSecret":{"type":"string","description":"OAuth token application client secret from external Identity Provider.\n","secret":true},"oauthExternalTokenScope":{"type":"string","description":"OAuth client application scope, this is a required field when using Microsoft Azure Entra ID as the identity provider.\n"},"oauthExternalTokenUrl":{"type":"string","description":"OAuth token URL to fetch access token from external Identity Provider.\n"},"oauthIdentityPoolId":{"type":"string","description":"OAuth identity pool id used for processing external token and exchange STS token, registered with Confluent Cloud.\n"},"oauthStsTokenExpiredInSeconds":{"type":"string","description":"OAuth STS access token expired in second from Confluent Cloud\n"}},"type":"object","required":["oauthIdentityPoolId"],"language":{"nodejs":{"requiredOutputs":[]}}},"confluentcloud:index/SchemaCredentials:SchemaCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Kafka clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Kafka cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Kafka API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Kafka API key, run `pulumi up -target=\"confluent_schema.orders\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_schema.orders\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Schema`\" pulumi-lang-dotnet=\"`confluentcloud.Schema`\" pulumi-lang-go=\"`Schema`\" pulumi-lang-python=\"`Schema`\" pulumi-lang-yaml=\"`confluentcloud.Schema`\" pulumi-lang-java=\"`confluentcloud.Schema`\"\u003e`confluentcloud.Schema`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/SchemaExporterCredentials:SchemaExporterCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/SchemaExporterDestinationSchemaRegistryCluster:SchemaExporterDestinationSchemaRegistryCluster":{"properties":{"credentials":{"$ref":"#/types/confluentcloud:index/SchemaExporterDestinationSchemaRegistryClusterCredentials:SchemaExporterDestinationSchemaRegistryClusterCredentials","secret":true},"id":{"type":"string","description":"The ID of the destination Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the destination Schema Registry cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n"}},"type":"object","required":["restEndpoint"],"language":{"nodejs":{"requiredOutputs":["id","restEndpoint"]}}},"confluentcloud:index/SchemaExporterDestinationSchemaRegistryClusterCredentials:SchemaExporterDestinationSchemaRegistryClusterCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/SchemaExporterSchemaRegistryCluster:SchemaExporterSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/SchemaMetadata:SchemaMetadata":{"properties":{"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom properties to set:\n"},"sensitives":{"type":"array","items":{"type":"string"},"description":"A list of metadata properties to be encrypted.\n"},"tags":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/SchemaMetadataTag:SchemaMetadataTag"}}},"type":"object","language":{"nodejs":{"requiredOutputs":["properties","sensitives","tags"]}}},"confluentcloud:index/SchemaMetadataTag:SchemaMetadataTag":{"properties":{"key":{"type":"string"},"values":{"type":"array","items":{"type":"string"}}},"type":"object","language":{"nodejs":{"requiredOutputs":["key","values"]}}},"confluentcloud:index/SchemaRegistryClusterConfigCredentials:SchemaRegistryClusterConfigCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_schema_registry_cluster_config.orders\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_schema_registry_cluster_config.orders\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryClusterConfig`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryClusterConfig`\" pulumi-lang-go=\"`SchemaRegistryClusterConfig`\" pulumi-lang-python=\"`SchemaRegistryClusterConfig`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryClusterConfig`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryClusterConfig`\"\u003e`confluentcloud.SchemaRegistryClusterConfig`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n\n\u003e **Note:** To configure a config at the context level, affecting all subjects created within that context, use \u003cspan pulumi-lang-nodejs=\"`confluentcloud.SubjectConfig`\" pulumi-lang-dotnet=\"`confluentcloud.SubjectConfig`\" pulumi-lang-go=\"`SubjectConfig`\" pulumi-lang-python=\"`SubjectConfig`\" pulumi-lang-yaml=\"`confluentcloud.SubjectConfig`\" pulumi-lang-java=\"`confluentcloud.SubjectConfig`\"\u003e`confluentcloud.SubjectConfig`\u003c/span\u003e resource and pass in the context name as the \u003cspan pulumi-lang-nodejs=\"`subjectName`\" pulumi-lang-dotnet=\"`SubjectName`\" pulumi-lang-go=\"`subjectName`\" pulumi-lang-python=\"`subject_name`\" pulumi-lang-yaml=\"`subjectName`\" pulumi-lang-java=\"`subjectName`\"\u003e`subject_name`\u003c/span\u003e. See the\u003cspan pulumi-lang-nodejs=\" confluentcloud.SubjectConfig`\" pulumi-lang-dotnet=\" confluentcloud.SubjectConfig`\" pulumi-lang-go=\" SubjectConfig`\" pulumi-lang-python=\" SubjectConfig`\" pulumi-lang-yaml=\" confluentcloud.SubjectConfig`\" pulumi-lang-java=\" confluentcloud.SubjectConfig`\"\u003e confluentcloud.SubjectConfig`\u003c/span\u003e resource documentation for more details.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/SchemaRegistryClusterConfigSchemaRegistryCluster:SchemaRegistryClusterConfigSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/SchemaRegistryClusterModeCredentials:SchemaRegistryClusterModeCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_schema_registry_cluster_mode.orders\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_schema_registry_cluster_mode.orders\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentKafkaClusterMode`\" pulumi-lang-dotnet=\"`ConfluentKafkaClusterMode`\" pulumi-lang-go=\"`confluentKafkaClusterMode`\" pulumi-lang-python=\"`confluent_kafka_cluster_mode`\" pulumi-lang-yaml=\"`confluentKafkaClusterMode`\" pulumi-lang-java=\"`confluentKafkaClusterMode`\"\u003e`confluent_kafka_cluster_mode`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/SchemaRegistryClusterModeSchemaRegistryCluster:SchemaRegistryClusterModeSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/SchemaRegistryDekCredentials:SchemaRegistryDekCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/SchemaRegistryDekSchemaRegistryCluster:SchemaRegistryDekSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/SchemaRegistryKekCredentials:SchemaRegistryKekCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/SchemaRegistryKekSchemaRegistryCluster:SchemaRegistryKekSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/SchemaRuleset:SchemaRuleset":{"properties":{"domainRules":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/SchemaRulesetDomainRule:SchemaRulesetDomainRule"},"description":"supports the following:\n"},"migrationRules":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/SchemaRulesetMigrationRule:SchemaRulesetMigrationRule"},"description":"supports the following:\n"}},"type":"object"},"confluentcloud:index/SchemaRulesetDomainRule:SchemaRulesetDomainRule":{"properties":{"disabled":{"type":"boolean"},"doc":{"type":"string"},"expr":{"type":"string"},"kind":{"type":"string"},"mode":{"type":"string"},"name":{"type":"string"},"onFailure":{"type":"string"},"onSuccess":{"type":"string"},"params":{"type":"object","additionalProperties":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"type":{"type":"string"}},"type":"object","required":["kind","mode","name","type"],"language":{"nodejs":{"requiredOutputs":["kind","mode","name","params","tags","type"]}}},"confluentcloud:index/SchemaRulesetMigrationRule:SchemaRulesetMigrationRule":{"properties":{"disabled":{"type":"boolean"},"doc":{"type":"string"},"expr":{"type":"string"},"kind":{"type":"string"},"mode":{"type":"string"},"name":{"type":"string"},"onFailure":{"type":"string"},"onSuccess":{"type":"string"},"params":{"type":"object","additionalProperties":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"type":{"type":"string"}},"type":"object","required":["kind","mode","name","type"],"language":{"nodejs":{"requiredOutputs":["kind","mode","name","params","tags","type"]}}},"confluentcloud:index/SchemaSchemaReference:SchemaSchemaReference":{"properties":{"name":{"type":"string","description":"The name of the Schema references (for example, \"io.confluent.kafka.example.User\"). For Avro, the reference name is the fully qualified schema name, for JSON Schema it is a URL, and for Protobuf, it is the name of another Protobuf file.\n"},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`. Schemas evolve safely, following a compatibility mode defined, under a subject name.\n"},"version":{"type":"integer","description":"(Required Integer) The version of the Schema, for example, \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e.\n"}},"type":"object","required":["name","subjectName","version"]},"confluentcloud:index/SchemaSchemaRegistryCluster:SchemaSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/SubjectConfigCredentials:SubjectConfigCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_subject_config.orders\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_subject_config.orders\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.SubjectConfig`\" pulumi-lang-dotnet=\"`confluentcloud.SubjectConfig`\" pulumi-lang-go=\"`SubjectConfig`\" pulumi-lang-python=\"`SubjectConfig`\" pulumi-lang-yaml=\"`confluentcloud.SubjectConfig`\" pulumi-lang-java=\"`confluentcloud.SubjectConfig`\"\u003e`confluentcloud.SubjectConfig`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/SubjectConfigSchemaRegistryCluster:SubjectConfigSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/SubjectModeCredentials:SubjectModeCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_subject_mode.orders\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_subject_mode.orders\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.SubjectMode`\" pulumi-lang-dotnet=\"`confluentcloud.SubjectMode`\" pulumi-lang-go=\"`SubjectMode`\" pulumi-lang-python=\"`SubjectMode`\" pulumi-lang-yaml=\"`confluentcloud.SubjectMode`\" pulumi-lang-java=\"`confluentcloud.SubjectMode`\"\u003e`confluentcloud.SubjectMode`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/SubjectModeSchemaRegistryCluster:SubjectModeSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/TableflowTopicAzureDataLakeStorageGen2:TableflowTopicAzureDataLakeStorageGen2":{"properties":{"containerName":{"type":"string","description":"The container name.\n","willReplaceOnChanges":true},"providerIntegrationId":{"type":"string","description":"The provider integration id.\n","willReplaceOnChanges":true},"storageAccountName":{"type":"string","description":"The storage account name.\n","willReplaceOnChanges":true},"storageRegion":{"type":"string","description":"(Required String) The storage region.\n"}},"type":"object","required":["containerName","providerIntegrationId","storageAccountName"],"language":{"nodejs":{"requiredOutputs":["containerName","providerIntegrationId","storageAccountName","storageRegion"]}}},"confluentcloud:index/TableflowTopicByobAws:TableflowTopicByobAws":{"properties":{"bucketName":{"type":"string","description":"The bucket name.\n","willReplaceOnChanges":true},"bucketRegion":{"type":"string","description":"(Required String) The bucket region.\n"},"providerIntegrationId":{"type":"string","description":"The provider integration id.\n","willReplaceOnChanges":true}},"type":"object","required":["bucketName","providerIntegrationId"],"language":{"nodejs":{"requiredOutputs":["bucketName","bucketRegion","providerIntegrationId"]}}},"confluentcloud:index/TableflowTopicCredentials:TableflowTopicCredentials":{"properties":{"key":{"type":"string","description":"The Tableflow API Key.\n","secret":true},"secret":{"type":"string","description":"The Tableflow API Secret.\n\n\u003e **Note:** A Tableflow API key consists of a key and a secret. Tableflow API keys are required to interact with Tableflow Topics in Confluent Cloud.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Tableflow API key, create a new Tableflow API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Tableflow API key, run `pulumi up -target=\"confluent_tableflow_topic.example\"`, and remove the old Tableflow API key. Alternatively, in case the old Tableflow API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_tableflow_topic.example\" -out=rotate-tableflow-api-key` and `pulumi up rotate-tableflow-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.TableflowTopic`\" pulumi-lang-dotnet=\"`confluentcloud.TableflowTopic`\" pulumi-lang-go=\"`TableflowTopic`\" pulumi-lang-python=\"`TableflowTopic`\" pulumi-lang-yaml=\"`confluentcloud.TableflowTopic`\" pulumi-lang-java=\"`confluentcloud.TableflowTopic`\"\u003e`confluentcloud.TableflowTopic`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/TableflowTopicEnvironment:TableflowTopicEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/TableflowTopicErrorHandling:TableflowTopicErrorHandling":{"properties":{"logTarget":{"type":"string","description":"The topic to which the bad records will be logged for error handling mode `LOG`. Creates the topic if it doesn't already exist. The default topic is \u003cspan pulumi-lang-nodejs=\"\"errorLog\"\" pulumi-lang-dotnet=\"\"ErrorLog\"\" pulumi-lang-go=\"\"errorLog\"\" pulumi-lang-python=\"\"error_log\"\" pulumi-lang-yaml=\"\"errorLog\"\" pulumi-lang-java=\"\"errorLog\"\"\u003e\"error_log\"\u003c/span\u003e if error handling mode is `LOG`, and empty otherwise.\n"},"mode":{"type":"string","description":"The error handling mode. For `SUSPEND`, the materialization of the topic is suspended in case of record failures. For `SKIP`, bad records are skipped and the materialization continues with the next record. For `LOG`, bad records are logged to a dead-letter queue (DLQ) topic and the materialization continues with the next record. The default mode is `SUSPEND`.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["logTarget","mode"]}}},"confluentcloud:index/TableflowTopicKafkaCluster:TableflowTopicKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the Kafka cluster, for example, `lkc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/TableflowTopicManagedStorage:TableflowTopicManagedStorage":{"type":"object"},"confluentcloud:index/TagBindingCredentials:TagBindingCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/TagBindingSchemaRegistryCluster:TagBindingSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/TagCredentials:TagCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/TagSchemaRegistryCluster:TagSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/TransitGatewayAttachmentAws:TransitGatewayAttachmentAws":{"properties":{"ramResourceShareArn":{"type":"string","description":"The Amazon Resource Name (ARN) of the Resource Access Manager (RAM) Resource Share of the transit gateway your Confluent Cloud network attaches to.\n","willReplaceOnChanges":true},"routes":{"type":"array","items":{"type":"string"},"description":"List of destination routes for traffic from Confluent VPC to customer VPC via Transit Gateway.\n\n\u003e **Note:** Learn more about Transit Gateway Attachment limitations on AWS [here](https://docs.confluent.io/cloud/current/networking/aws-transit-gateway.html#limitations).\n","willReplaceOnChanges":true},"transitGatewayAttachmentId":{"type":"string","description":"(Required String) The ID of the AWS Transit Gateway VPC Attachment that attaches Confluent VPC to Transit Gateway.\n"},"transitGatewayId":{"type":"string","description":"The ID of the AWS Transit Gateway that you want Confluent CLoud to be attached to. Must start with `tgw-`.\n","willReplaceOnChanges":true}},"type":"object","required":["ramResourceShareArn","routes","transitGatewayId"],"language":{"nodejs":{"requiredOutputs":["ramResourceShareArn","routes","transitGatewayAttachmentId","transitGatewayId"]}}},"confluentcloud:index/TransitGatewayAttachmentEnvironment:TransitGatewayAttachmentEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Transit Gateway Attachment belongs to, for example, `env-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/TransitGatewayAttachmentNetwork:TransitGatewayAttachmentNetwork":{"properties":{"id":{"type":"string","description":"The ID of the Network that the Transit Gateway Attachment belongs to, for example, `n-abc123`.\n","willReplaceOnChanges":true}},"type":"object","required":["id"]},"confluentcloud:index/getAccessPointAwsEgressPrivateLinkEndpoint:getAccessPointAwsEgressPrivateLinkEndpoint":{"properties":{"enableHighAvailability":{"type":"boolean","description":"(Required Boolean) Whether a resource should be provisioned with high availability. Endpoints deployed with high availability have network interfaces deployed in multiple AZs. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"vpcEndpointDnsName":{"type":"string","description":"(Required String) The DNS name of a VPC Endpoint (if any) that is connected to the VPC Endpoint service, for example, `*.vpce-00000000000000000-abcd1234.s3.us-west-2.vpce.amazonaws.com`.\n"},"vpcEndpointId":{"type":"string","description":"(Required String) ID of the VPC Endpoint used for connecting to the VPC Endpoint service, for example, `vpce-00000000000000000`.\n"},"vpcEndpointServiceName":{"type":"string","description":"(Required String) ID of the Confluent Cloud VPC Endpoint service used for PrivateLink, for example, `com.amazonaws.vpce.us-west-2.vpce-svc-00000000000000000`.\n"}},"type":"object","required":["enableHighAvailability","vpcEndpointDnsName","vpcEndpointId","vpcEndpointServiceName"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getAccessPointAwsIngressPrivateLinkEndpoint:getAccessPointAwsIngressPrivateLinkEndpoint":{"properties":{"dnsDomain":{"type":"string","description":"(Required String) DNS domain name used to configure the Private Hosted Zone for the Access Point, for example, `ap123abc.us-west-2.aws.accesspoint.confluent.cloud`.\n"},"vpcEndpointId":{"type":"string","description":"(Required String) ID of the VPC Endpoint used for connecting to the VPC Endpoint service, for example, `vpce-00000000000000000`.\n"},"vpcEndpointServiceName":{"type":"string","description":"(Required String) ID of the Confluent Cloud VPC Endpoint service used for PrivateLink, for example, `com.amazonaws.vpce.us-west-2.vpce-svc-00000000000000000`.\n"}},"type":"object","required":["dnsDomain","vpcEndpointId","vpcEndpointServiceName"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getAccessPointAwsPrivateNetworkInterface:getAccessPointAwsPrivateNetworkInterface":{"properties":{"account":{"type":"string","description":"(Required String) The AWS account ID associated with the ENIs you are using for the Confluent Private Network Interface, for example: \u003cspan pulumi-lang-nodejs=\"`000000000000`\" pulumi-lang-dotnet=\"`000000000000`\" pulumi-lang-go=\"`000000000000`\" pulumi-lang-python=\"`000000000000`\" pulumi-lang-yaml=\"`000000000000`\" pulumi-lang-java=\"`000000000000`\"\u003e`000000000000`\u003c/span\u003e.\n"},"networkInterfaces":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) List of the IDs of the Elastic Network Interfaces, for example: `[\"eni-00000000000000000\", \"eni-00000000000000001\", \"eni-00000000000000002\", \"eni-00000000000000003\", \"eni-00000000000000004\", \"eni-00000000000000005\"]`\n"}},"type":"object","required":["account","networkInterfaces"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getAccessPointAzureEgressPrivateLinkEndpoint:getAccessPointAzureEgressPrivateLinkEndpoint":{"properties":{"privateEndpointCustomDnsConfigDomains":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) Domains of the Private Endpoint (if any) based off FQDNs in Azure custom DNS configs, which are required in your private DNS setup, for example: `[\"dbname.database.windows.net\", \"dbname-region.database.windows.net\"]`.\n"},"privateEndpointDomain":{"type":"string","description":"(Required String) Domain of the Private Endpoint (if any) that is connected to the Private Link service.\n"},"privateEndpointIpAddress":{"type":"string","description":"(Required String) IP address of the Private Endpoint (if any) that is connected to the Private Link service.\n"},"privateEndpointResourceId":{"type":"string","description":"(Required String) Resource ID of the Private Endpoint (if any) that is connected to the Private Link service.\n"},"privateLinkServiceResourceId":{"type":"string","description":"(Required String) Resource ID of the Azure Private Link service.\n"},"privateLinkSubresourceName":{"type":"string","description":"(Required String) Name of the subresource for the Private Endpoint to connect to.\n"}},"type":"object","required":["privateEndpointCustomDnsConfigDomains","privateEndpointDomain","privateEndpointIpAddress","privateEndpointResourceId","privateLinkServiceResourceId","privateLinkSubresourceName"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getAccessPointEnvironment:getAccessPointEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Access Point belongs to, for example, `env-123abc`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getAccessPointGateway:getAccessPointGateway":{"properties":{"id":{"type":"string","description":"The ID of the Access Point, for example, `ap-abc123`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getAccessPointGcpEgressPrivateServiceConnectEndpoint:getAccessPointGcpEgressPrivateServiceConnectEndpoint":{"properties":{"privateServiceConnectEndpointConnectionId":{"type":"string","description":"(Required String) Connection ID of the Private Service Connect Endpoint that is connected to the endpoint target.\n"},"privateServiceConnectEndpointIpAddress":{"type":"string","description":"(Required String) IP address of the Private Service Connect Endpoint that is connected to the endpoint target.\n"},"privateServiceConnectEndpointName":{"type":"string","description":"(Required String) Name of the Private Service Connect Endpoint that is connected to the endpoint target.\n"},"privateServiceConnectEndpointTarget":{"type":"string","description":"(Required String) URI of the service attachment for the published service that the Private Service Connect Endpoint connects to, or \"all-google-apis\" for global Google APIs.\n"}},"type":"object","required":["privateServiceConnectEndpointConnectionId","privateServiceConnectEndpointIpAddress","privateServiceConnectEndpointName","privateServiceConnectEndpointTarget"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getBusinessMetadataAttributeDefinition:getBusinessMetadataAttributeDefinition":{"properties":{"defaultValue":{"type":"string","description":"(Optional String) The default value of this attribute.\n"},"description":{"type":"string","description":"(Optional String) The description of this attribute.\n"},"isOptional":{"type":"boolean","description":"(Optional Boolean) An optional flag to control whether the attribute should be optional or required.\n"},"name":{"type":"string","description":"The name of the Business Metadata, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n"},"options":{"type":"object","additionalProperties":{"type":"string"},"description":"(Optional Map) Block for the attribute options:\n- `applicableEntityTypes` - (Optional String) The entity types that the attribute is applicable, it always returns `[\\\"cf_entity\\\"]`.\n- `maxStrLength` - (Optional String) The maximum length of the string value, it always returns \u003cspan pulumi-lang-nodejs=\"`5000`\" pulumi-lang-dotnet=\"`5000`\" pulumi-lang-go=\"`5000`\" pulumi-lang-python=\"`5000`\" pulumi-lang-yaml=\"`5000`\" pulumi-lang-java=\"`5000`\"\u003e`5000`\u003c/span\u003e.\n"},"type":{"type":"string","description":"(Required String) The type of the attribute, it always returns \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e.\n"}},"type":"object","required":["defaultValue","description","isOptional","name","options","type"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getBusinessMetadataBindingCredentials:getBusinessMetadataBindingCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getBusinessMetadataBindingSchemaRegistryCluster:getBusinessMetadataBindingSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getBusinessMetadataCredentials:getBusinessMetadataCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getBusinessMetadataSchemaRegistryCluster:getBusinessMetadataSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getByokKeyAw:getByokKeyAw":{"properties":{"keyArn":{"type":"string","description":"(Required String) The Amazon Resource Name (ARN) of an AWS KMS key.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"(Optional List of Strings) The Amazon Resource Names (ARNs) of IAM Roles created for this key-environment combination.\n"}},"type":"object","required":["keyArn","roles"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getByokKeyAzure:getByokKeyAzure":{"properties":{"applicationId":{"type":"string","description":"(Optional String) The Application ID created for this key-environment combination.\n"},"keyIdentifier":{"type":"string","description":"(Required String) The unique Key Object Identifier URL of an Azure Key Vault key.\n"},"keyVaultId":{"type":"string","description":"(Required String) Key Vault ID containing the key.\n"},"tenantId":{"type":"string","description":"(Required String) Tenant ID (uuid) hosting the Key Vault containing the key.\n"}},"type":"object","required":["applicationId","keyIdentifier","keyVaultId","tenantId"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getByokKeyGcp:getByokKeyGcp":{"properties":{"keyId":{"type":"string","description":"(Required String) The Google Cloud Platform key ID.\n"},"securityGroup":{"type":"string","description":"(Optional String) The Google security group created for this key.\n"}},"type":"object","required":["keyId","securityGroup"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getCatalogIntegrationAwsGlue:getCatalogIntegrationAwsGlue":{"properties":{"providerIntegrationId":{"type":"string","description":"(Required String) The provider integration id.\n"}},"type":"object","required":["providerIntegrationId"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getCatalogIntegrationCredentials:getCatalogIntegrationCredentials":{"properties":{"key":{"type":"string","description":"The Tableflow API Key.\n","secret":true},"secret":{"type":"string","description":"The Tableflow API Secret.\n\n\u003e **Note:** A Tableflow API key consists of a key and a secret. Tableflow API keys are required to interact with Catalog Integrations in Confluent Cloud.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.CatalogIntegration`\" pulumi-lang-dotnet=\"`confluentcloud.CatalogIntegration`\" pulumi-lang-go=\"`CatalogIntegration`\" pulumi-lang-python=\"`CatalogIntegration`\" pulumi-lang-yaml=\"`confluentcloud.CatalogIntegration`\" pulumi-lang-java=\"`confluentcloud.CatalogIntegration`\"\u003e`confluentcloud.CatalogIntegration`\u003c/span\u003e data source, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getCatalogIntegrationEnvironment:getCatalogIntegrationEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment, for example, `env-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getCatalogIntegrationKafkaCluster:getCatalogIntegrationKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the Kafka cluster, for example, `lkc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getCatalogIntegrationSnowflake:getCatalogIntegrationSnowflake":{"properties":{"allowedScope":{"type":"string","description":"(Required String) Allowed scope of the Snowflake Open Catalog.\n"},"endpoint":{"type":"string","description":"(Required String) The catalog integration connection endpoint for Snowflake Open Catalog.\n"},"warehouse":{"type":"string","description":"(Required String) Warehouse name of the Snowflake Open Catalog.\n"}},"type":"object","required":["allowedScope","endpoint","warehouse"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getCatalogIntegrationUnity:getCatalogIntegrationUnity":{"properties":{"catalogName":{"type":"string","description":"(Required String) The name of the catalog within Unity Catalog.\n"},"workspaceEndpoint":{"type":"string","description":"(Required String) The Databricks workspace URL associated with the Unity Catalog.\n"}},"type":"object","required":["catalogName","workspaceEndpoint"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getCertificatePoolCertificateAuthority:getCertificatePoolCertificateAuthority":{"properties":{"id":{"type":"string","description":"The ID of the Certificate Authority for this Certificate Pool, for example, `op-123abc`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getClusterLinkCredentials:getClusterLinkCredentials":{"properties":{"key":{"type":"string","description":"The Kafka API Key.\n","secret":true},"secret":{"type":"string","description":"The Kafka API Secret.\n\n\u003e **Note:** A Kafka API key consists of a key and a secret. Kafka API keys are required to interact with Kafka clusters in Confluent Cloud. Each Kafka API key is valid for one specific Kafka cluster.\n\n!\u003e **Warning:** Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ClusterLink`\" pulumi-lang-dotnet=\"`confluentcloud.ClusterLink`\" pulumi-lang-go=\"`ClusterLink`\" pulumi-lang-python=\"`ClusterLink`\" pulumi-lang-yaml=\"`confluentcloud.ClusterLink`\" pulumi-lang-java=\"`confluentcloud.ClusterLink`\"\u003e`confluentcloud.ClusterLink`\u003c/span\u003e data-source, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getClusterLinkKafkaCluster:getClusterLinkKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the Kafka cluster to query for the Cluster Link, for example, `lkc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getConnectArtifactEnvironment:getConnectArtifactEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Connect Artifact belongs to.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getDnsRecordEnvironment:getDnsRecordEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the DNS Record belongs to, for example, `env-123abc`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getDnsRecordGateway:getDnsRecordGateway":{"properties":{"id":{"type":"string","description":"The ID of the DNS Record, for example, `dnsrec-abc123`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getDnsRecordPrivateLinkAccessPoint:getDnsRecordPrivateLinkAccessPoint":{"properties":{"id":{"type":"string","description":"The ID of the DNS Record, for example, `dnsrec-abc123`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getEndpointEndpoint:getEndpointEndpoint":{"properties":{"accessPoints":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getEndpointEndpointAccessPoint:getEndpointEndpointAccessPoint"},"description":"(Computed Configuration Block) supports the following:\n"},"apiVersion":{"type":"string","description":"(Computed String) API Version defines the schema version of this representation of an Endpoint.\n"},"cloud":{"type":"string","description":"(Computed String) The cloud service provider.\n"},"connectionType":{"type":"string","description":"(Computed String) The network connection type. Accepted values are: `PUBLIC`, `PRIVATE_LINK`, `PEERING`, `TRANSIT_GATEWAY`, `PRIVATE_NETWORK_INTERFACE`.\n"},"endpoint":{"type":"string","description":"(Computed String) The endpoint URL or address, for example, `https://lkc-abc123-ap12345.us-west-2.aws.accesspoint.glb.confluent.cloud:443`.\n"},"endpointType":{"type":"string","description":"(Computed String) The endpoint type enum values:\n- `REST` - REST API endpoint for HTTP/HTTPS access, used by Kafka/Flink/Schema Registry services.\n- `BOOTSTRAP` - Kafka native protocol bootstrap servers for direct client connections, used by Kafka only.\n- `LANGUAGE_SERVICE` - Flink language service endpoint for SQL/Table API, used by Flink only.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getEndpointEndpointEnvironment:getEndpointEndpointEnvironment","description":"(Computed Configuration Block) supports the following:\n"},"gateways":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getEndpointEndpointGateway:getEndpointEndpointGateway"},"description":"(Computed Configuration Block) supports the following:\n"},"id":{"type":"string","description":"(Computed String) The ID of the access point to which the Endpoint belongs.\n"},"isPrivate":{"type":"boolean","description":"(Computed Boolean) Whether the endpoint is private (true) or public (false).\n"},"kind":{"type":"string","description":"(Computed String) The kind of the resource.\n"},"region":{"type":"string","description":"(Computed String) The cloud service provider region in which the resource is located.\n"},"resources":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getEndpointEndpointResource:getEndpointEndpointResource"},"description":"(Computed Configuration Block) supports the following:\n"},"service":{"type":"string","description":"(Computed String) The Confluent Cloud service.\n"}},"type":"object","required":["accessPoints","apiVersion","cloud","connectionType","endpoint","endpointType","environment","gateways","id","isPrivate","kind","region","resources","service"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getEndpointEndpointAccessPoint:getEndpointEndpointAccessPoint":{"properties":{"id":{"type":"string","description":"(Computed String) The ID of the access point to which the Endpoint belongs.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getEndpointEndpointEnvironment:getEndpointEndpointEnvironment":{"properties":{"id":{"type":"string","description":"(Computed String) The ID of the access point to which the Endpoint belongs.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getEndpointEndpointGateway:getEndpointEndpointGateway":{"properties":{"id":{"type":"string","description":"(Computed String) The ID of the access point to which the Endpoint belongs.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getEndpointEndpointResource:getEndpointEndpointResource":{"properties":{"id":{"type":"string","description":"(Computed String) The ID of the access point to which the Endpoint belongs.\n"},"kind":{"type":"string","description":"(Computed String) The kind of the resource.\n"}},"type":"object","required":["id","kind"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getEndpointFilter:getEndpointFilter":{"properties":{"cloud":{"type":"string","description":"The cloud service provider. Accepted values are: `AWS`, `GCP`, `AZURE`.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getEndpointFilterEnvironment:getEndpointFilterEnvironment","description":"(Computed Configuration Block) supports the following:\n"},"isPrivate":{"type":"boolean","description":"Whether the endpoint is private (true) or public (false).\n"},"region":{"type":"string","description":"The cloud service provider region in which the resource is located, for example, `us-west-2`.\n"},"resource":{"type":"string","description":"The resource associated with the endpoint. The resource can be one of Kafka Cluster ID (example: `lkc-12345`), or Schema Registry Cluster ID (example: `lsrc-12345`). May be omitted if not associated with a resource.\n"},"service":{"type":"string","description":"The Confluent Cloud service. Accepted values are: `KAFKA`, `SCHEMA_REGISTRY`, `FLINK`.\n"}},"type":"object","required":["environment","service"]},"confluentcloud:index/getEndpointFilterEnvironment:getEndpointFilterEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Endpoint belongs to, for example, `env-123abc`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getEnvironmentStreamGovernance:getEnvironmentStreamGovernance":{"properties":{"package":{"type":"string","description":"Stream Governance Package. 'ESSENTIALS' or 'ADVANCED'\n"}},"type":"object","required":["package"]},"confluentcloud:index/getFlinkArtifactEnvironment:getFlinkArtifactEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Flink Artifact belongs to, for example, `env-xyz456`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getFlinkArtifactVersion:getFlinkArtifactVersion":{"properties":{"version":{"type":"string","description":"The version of this Flink Artifact.\n"}},"type":"object","required":["version"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getFlinkComputePoolEnvironment:getFlinkComputePoolEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Flink Compute Pool belongs to, for example, `env-xyz456`.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getFlinkConnectionComputePool:getFlinkConnectionComputePool":{"properties":{"id":{"type":"string","description":"The ID of the Flink Compute Pool, for example, `lfcp-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getFlinkConnectionCredentials:getFlinkConnectionCredentials":{"properties":{"key":{"type":"string","description":"The Flink API Key.\n","secret":true},"secret":{"type":"string","description":"The Flink API Secret.\n\n\u003e **Note:** A Flink API key consists of a key and a secret. Flink API keys are required to interact with Flink Connections in Confluent Cloud. Each Flink API key is valid for one specific Flink Region.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Flink API key, create a new Flink API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Flink API key, run `pulumi up -target=\"confluent_flink_connection.example\"`, and remove the old Flink API key. Alternatively, in case the old Flink API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_flink_connection.example\" -out=rotate-flink-api-key` and `pulumi up rotate-flink-api-key` instead.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getFlinkConnectionEnvironment:getFlinkConnectionEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment, for example, `env-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getFlinkConnectionOrganization:getFlinkConnectionOrganization":{"properties":{"id":{"type":"string","description":"The ID of the Organization, for example, `1111aaaa-11aa-11aa-11aa-111111aaaaaa`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getFlinkConnectionPrincipal:getFlinkConnectionPrincipal":{"properties":{"id":{"type":"string","description":"The ID of the Principal the Flink Connection runs as, for example, `sa-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getGatewayAwsEgressPrivateLinkGateway:getGatewayAwsEgressPrivateLinkGateway":{"properties":{"principalArn":{"type":"string","description":"(Required String) The principal ARN used by the AWS Egress Private Link Gateway.\n"},"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"}},"type":"object","required":["principalArn","region"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewayAwsIngressPrivateLinkGateway:getGatewayAwsIngressPrivateLinkGateway":{"properties":{"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"},"vpcEndpointServiceName":{"type":"string","description":"(Required String) The ID of the AWS VPC Endpoint Service that can be used to establish connections for all zones, for example, `com.amazonaws.vpce.us-west-2.vpce-svc-00000000000000000`.\n"}},"type":"object","required":["region","vpcEndpointServiceName"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewayAwsPeeringGateway:getGatewayAwsPeeringGateway":{"properties":{"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"}},"type":"object","required":["region"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewayAwsPrivateNetworkInterfaceGateway:getGatewayAwsPrivateNetworkInterfaceGateway":{"properties":{"account":{"type":"string","description":"(Required String) The AWS account ID associated with the Private Network Interface Gateway.\n"},"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"},"zones":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) AWS availability zone ids of the Private Network Interface Gateway.\n"}},"type":"object","required":["account","region","zones"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewayAzureEgressPrivateLinkGateway:getGatewayAzureEgressPrivateLinkGateway":{"properties":{"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"},"subscription":{"type":"string","description":"(Required String) The Azure Subscription ID associated with the Confluent Cloud VPC.\n"}},"type":"object","required":["region","subscription"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewayAzurePeeringGateway:getGatewayAzurePeeringGateway":{"properties":{"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"}},"type":"object","required":["region"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewayEnvironment:getGatewayEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Gateway belongs to, for example, `env-123abc`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getGatewayGcpEgressPrivateServiceConnectGateway:getGatewayGcpEgressPrivateServiceConnectGateway":{"properties":{"project":{"type":"string","description":"(Required String) The GCP project used by the GCP Private Service Connect Gateway.\n"},"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"}},"type":"object","required":["project","region"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewayGcpPeeringGateway:getGatewayGcpPeeringGateway":{"properties":{"iamPrincipal":{"type":"string","description":"(Required String) The IAM principal used by the GCP Peering Gateway.\n"},"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"}},"type":"object","required":["iamPrincipal","region"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewaysEnvironment:getGatewaysEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Gateways belong to, for example, `env-123abc`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getGatewaysFilter:getGatewaysFilter":{"properties":{"displayNames":{"type":"array","items":{"type":"string"},"description":"Filter the results by exact match for spec.display_name. Pass multiple times to see results matching any of the values, for example, `[\"prod-gateway-ingress-use1\", \"prod-gateway-ingress-use2\"]`.\n"},"gatewayTypes":{"type":"array","items":{"type":"string"},"description":"Filter the results by exact match for gateway_type. Pass multiple times to see results matching any of the values. Valid values are: `AwsEgressPrivateLink`, `AwsIngressPrivateLink`, `AwsPeering`, `AwsPrivateNetworkInterface`, `AzureEgressPrivateLink`, `AzurePeering`, `GcpEgressPrivateServiceConnect`, `GcpPeering`.\n"},"ids":{"type":"array","items":{"type":"string"},"description":"Filter the results by exact match for id. Pass multiple times to see results matching any of the values, for example, `[\"gw-abc123\", \"gw-def456\"]`.\n"},"phases":{"type":"array","items":{"type":"string"},"description":"Filter the results by exact match for status.phase. Pass multiple times to see results matching any of the values. Valid values are: `CREATED`, `PROVISIONING`, `READY`, `FAILED`, `DEPROVISIONING`, `EXPIRED`.\n"},"regions":{"type":"array","items":{"type":"string"},"description":"Filter the results by exact match for spec.config.region. Pass multiple times to see results matching any of the values, for example, `[\"us-east-1\", \"us-west-2\"]`.\n"}},"type":"object"},"confluentcloud:index/getGatewaysGateway:getGatewaysGateway":{"properties":{"awsEgressPrivateLinkGateways":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getGatewaysGatewayAwsEgressPrivateLinkGateway:getGatewaysGatewayAwsEgressPrivateLinkGateway"},"description":"(Optional Configuration Block) supports the following:\n"},"awsIngressPrivateLinkGateways":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getGatewaysGatewayAwsIngressPrivateLinkGateway:getGatewaysGatewayAwsIngressPrivateLinkGateway"},"description":"(Optional Configuration Block) supports the following:\n"},"awsPeeringGateways":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getGatewaysGatewayAwsPeeringGateway:getGatewaysGatewayAwsPeeringGateway"},"description":"(Optional Configuration Block) supports the following:\n"},"awsPrivateNetworkInterfaceGateways":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getGatewaysGatewayAwsPrivateNetworkInterfaceGateway:getGatewaysGatewayAwsPrivateNetworkInterfaceGateway"},"description":"(Optional Configuration Block) supports the following:\n"},"azureEgressPrivateLinkGateways":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getGatewaysGatewayAzureEgressPrivateLinkGateway:getGatewaysGatewayAzureEgressPrivateLinkGateway"},"description":"(Optional Configuration Block) supports the following:\n"},"azurePeeringGateways":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getGatewaysGatewayAzurePeeringGateway:getGatewaysGatewayAzurePeeringGateway"},"description":"(Optional Configuration Block) supports the following:\n"},"displayName":{"type":"string","description":"(Required String) A human-readable name for the Gateway.\n"},"gcpEgressPrivateServiceConnectGateways":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getGatewaysGatewayGcpEgressPrivateServiceConnectGateway:getGatewaysGatewayGcpEgressPrivateServiceConnectGateway"},"description":"(Optional Configuration Block) supports the following:\n"},"gcpPeeringGateways":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getGatewaysGatewayGcpPeeringGateway:getGatewaysGatewayGcpPeeringGateway"},"description":"(Optional Configuration Block) supports the following:\n"},"id":{"type":"string","description":"(Required String) The ID of the Gateway, for example, `gw-abc123`.\n"}},"type":"object","required":["awsEgressPrivateLinkGateways","awsIngressPrivateLinkGateways","awsPeeringGateways","awsPrivateNetworkInterfaceGateways","azureEgressPrivateLinkGateways","azurePeeringGateways","displayName","gcpEgressPrivateServiceConnectGateways","gcpPeeringGateways","id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewaysGatewayAwsEgressPrivateLinkGateway:getGatewaysGatewayAwsEgressPrivateLinkGateway":{"properties":{"principalArn":{"type":"string","description":"(Required String) The principal ARN used by the AWS Egress Private Link Gateway.\n"},"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"}},"type":"object","required":["principalArn","region"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewaysGatewayAwsIngressPrivateLinkGateway:getGatewaysGatewayAwsIngressPrivateLinkGateway":{"properties":{"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"},"vpcEndpointServiceName":{"type":"string","description":"(Required String) The ID of the AWS VPC Endpoint Service that can be used to establish connections for all zones, for example, `com.amazonaws.vpce.us-west-2.vpce-svc-00000000000000000`.\n"}},"type":"object","required":["region","vpcEndpointServiceName"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewaysGatewayAwsPeeringGateway:getGatewaysGatewayAwsPeeringGateway":{"properties":{"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"}},"type":"object","required":["region"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewaysGatewayAwsPrivateNetworkInterfaceGateway:getGatewaysGatewayAwsPrivateNetworkInterfaceGateway":{"properties":{"account":{"type":"string","description":"(Required String) The AWS account ID associated with the Private Network Interface Gateway.\n"},"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"},"zones":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) AWS availability zone ids of the Private Network Interface Gateway.\n"}},"type":"object","required":["account","region","zones"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewaysGatewayAzureEgressPrivateLinkGateway:getGatewaysGatewayAzureEgressPrivateLinkGateway":{"properties":{"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"},"subscription":{"type":"string","description":"(Required String) The Azure Subscription ID associated with the Confluent Cloud VPC.\n"}},"type":"object","required":["region","subscription"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewaysGatewayAzurePeeringGateway:getGatewaysGatewayAzurePeeringGateway":{"properties":{"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"}},"type":"object","required":["region"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewaysGatewayGcpEgressPrivateServiceConnectGateway:getGatewaysGatewayGcpEgressPrivateServiceConnectGateway":{"properties":{"project":{"type":"string","description":"(Required String) The GCP project used by the GCP Private Service Connect Gateway.\n"},"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"}},"type":"object","required":["project","region"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getGatewaysGatewayGcpPeeringGateway:getGatewaysGatewayGcpPeeringGateway":{"properties":{"iamPrincipal":{"type":"string","description":"(Required String) The IAM principal used by the GCP Peering Gateway.\n"},"region":{"type":"string","description":"(Required String) GCP region of the Peering Gateway.\n"}},"type":"object","required":["iamPrincipal","region"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getIdentityPoolIdentityProvider:getIdentityPoolIdentityProvider":{"properties":{"id":{"type":"string","description":"The ID of the Identity Provider associated with the Identity Pool, for example, `op-abc123`.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getInvitationCreator:getInvitationCreator":{"properties":{"id":{"type":"string","description":"The ID of the Invitation, for example, `i-zyw30`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getInvitationUser:getInvitationUser":{"properties":{"id":{"type":"string","description":"The ID of the Invitation, for example, `i-zyw30`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getIpAddressesFilter:getIpAddressesFilter":{"properties":{"addressTypes":{"type":"array","items":{"type":"string"},"description":"A list of address types to filter by. Accepted values are: `EGRESS`, `INGRESS`.\n"},"clouds":{"type":"array","items":{"type":"string"},"description":"A list of clouds to filter by. Accepted values are: `AWS`, `AZURE`, and `GCP`.\n"},"regions":{"type":"array","items":{"type":"string"},"description":"A list of regions to filter by.\n"},"services":{"type":"array","items":{"type":"string"},"description":"A list of services to filter by. Accepted values are: `CONNECT`, `KAFKA`.\n"}},"type":"object"},"confluentcloud:index/getIpAddressesIpAddress:getIpAddressesIpAddress":{"properties":{"addressType":{"type":"string","description":"(Required Integer) Whether the address is used for egress or ingress.\n"},"apiVersion":{"type":"string","description":"(Required String) An API Version of the schema version of the IP Address, for example, `networking/v1`.\n"},"cloud":{"type":"string","description":"(Required String) The cloud service provider in which the address exists.\n"},"ipPrefix":{"type":"string","description":"(Required String) The IP Address range.\n"},"kind":{"type":"string","description":"(Required String) A kind of the Kafka cluster, for example, `IpAddress`.\n"},"region":{"type":"string","description":"(Required Integer) The region/location where the IP Address is in use.\n"},"services":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) The service types that will use the address.\n"}},"type":"object","required":["addressType","apiVersion","cloud","ipPrefix","kind","region","services"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClientQuotaEnvironment:getKafkaClientQuotaEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Kafka Client Quota (for example, `cq-abc123`).\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClientQuotaKafkaCluster:getKafkaClientQuotaKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the Kafka Client Quota (for example, `cq-abc123`).\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClientQuotaThroughput:getKafkaClientQuotaThroughput":{"properties":{"egressByteRate":{"type":"string","description":"(Required String) The egress throughput limit in bytes per second.\n"},"ingressByteRate":{"type":"string","description":"(Required String) The ingress throughput limit in bytes per second.\n"}},"type":"object","required":["egressByteRate","ingressByteRate"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClusterBasic:getKafkaClusterBasic":{"properties":{"maxEcku":{"type":"integer","description":"(Optional Number) The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to. Kafka clusters with \"HIGH\" availability must have at least two eCKUs. For more details, see [Maximum eCKU requirements](https://docs.confluent.io/cloud/current/clusters/cluster-types.html#minimum-maximum-ecku-requirements).\n"}},"type":"object","required":["maxEcku"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClusterByokKey:getKafkaClusterByokKey":{"properties":{"id":{"type":"string","description":"The ID of the Kafka cluster, for example, `lkc-abc123`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClusterDedicated:getKafkaClusterDedicated":{"properties":{"cku":{"type":"integer","description":"(Required Number) The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. The minimum number of CKUs for `SINGLE_ZONE` dedicated clusters is \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e whereas `MULTI_ZONE` dedicated clusters must have \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e CKUs or more.\n"},"encryptionKey":{"type":"string","description":"The ID of the encryption key that is used to encrypt the data in the Kafka cluster.\n"},"zones":{"type":"array","items":{"type":"string"},"description":"(Required List of String) The list of zones the cluster is in.\n- On AWS, zones are AWS [AZ IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html), for example, `use1-az3`.\n- On GCP, zones are GCP [zones](https://cloud.google.com/compute/docs/regions-zones), for example, `us-central1-c`.\n- On Azure, zones are Confluent-chosen names (for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e) since Azure does not have universal zone identifiers.\n"}},"type":"object","required":["cku","encryptionKey","zones"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClusterEndpoint:getKafkaClusterEndpoint":{"properties":{"accessPointId":{"type":"string","description":"(Required String) The ID of the Access Point that the endpoint corresponds to. Access Point IDs `PUBLIC` and `PRIVATE_LINK` are reserved.\n"},"bootstrapEndpoint":{"type":"string","description":"(Required String) The bootstrap endpoint used by Kafka clients to connect to the cluster (for example, `lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:9092`).\n"},"connectionType":{"type":"string","description":"(Required String) The type of connection used for the endpoint (for example, `PRIVATE_NETWORK_INTERFACE`).\n"},"restEndpoint":{"type":"string","description":"(Required String) The REST endpoint of the Kafka cluster (for example, `https://lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:443`).\n"}},"type":"object","required":["accessPointId","bootstrapEndpoint","connectionType","restEndpoint"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClusterEnterprise:getKafkaClusterEnterprise":{"properties":{"maxEcku":{"type":"integer","description":"(Optional Number) The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to. Kafka clusters with \"HIGH\" availability must have at least two eCKUs. For more details, see [Maximum eCKU requirements](https://docs.confluent.io/cloud/current/clusters/cluster-types.html#minimum-maximum-ecku-requirements).\n"}},"type":"object","required":["maxEcku"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClusterEnvironment:getKafkaClusterEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Kafka cluster belongs to, for example, `env-xyz456`.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getKafkaClusterFreight:getKafkaClusterFreight":{"properties":{"maxEcku":{"type":"integer","description":"(Optional Number) The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to. Kafka clusters with \"HIGH\" availability must have at least two eCKUs. For more details, see [Maximum eCKU requirements](https://docs.confluent.io/cloud/current/clusters/cluster-types.html#minimum-maximum-ecku-requirements).\n"},"zones":{"type":"array","items":{"type":"string"},"description":"(Required List of String) The list of zones the cluster is in.\n- On AWS, zones are AWS [AZ IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html), for example, `use1-az3`.\n- On GCP, zones are GCP [zones](https://cloud.google.com/compute/docs/regions-zones), for example, `us-central1-c`.\n- On Azure, zones are Confluent-chosen names (for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e) since Azure does not have universal zone identifiers.\n"}},"type":"object","required":["maxEcku","zones"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClusterNetwork:getKafkaClusterNetwork":{"properties":{"id":{"type":"string","description":"The ID of the Kafka cluster, for example, `lkc-abc123`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClusterStandard:getKafkaClusterStandard":{"properties":{"maxEcku":{"type":"integer","description":"(Optional Number) The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to. Kafka clusters with \"HIGH\" availability must have at least two eCKUs. For more details, see [Maximum eCKU requirements](https://docs.confluent.io/cloud/current/clusters/cluster-types.html#minimum-maximum-ecku-requirements).\n"}},"type":"object","required":["maxEcku"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClustersCluster:getKafkaClustersCluster":{"properties":{"apiVersion":{"type":"string","description":"(Required String) An API Version of the schema version of the Kafka cluster, for example, `cmk/v2`.\n"},"availability":{"type":"string","description":"(Required String) The availability zone configuration of the Kafka cluster. Accepted values are: `SINGLE_ZONE`, `MULTI_ZONE`, `LOW`, and `HIGH`.\n"},"basics":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getKafkaClustersClusterBasic:getKafkaClustersClusterBasic"},"description":"(Optional Configuration Block) The configuration of the Basic Kafka cluster.\n"},"bootstrapEndpoint":{"type":"string","description":"(Required String) The bootstrap endpoint used by Kafka clients to connect to the cluster (for example, `lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:9092`).\n"},"byokKeys":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getKafkaClustersClusterByokKey:getKafkaClustersClusterByokKey"},"description":"(Optional Configuration Block) supports the following:\n"},"cloud":{"type":"string","description":"(Required String) The cloud service provider that runs the Kafka cluster. Accepted values are: `AWS`, `AZURE`, and `GCP`.\n"},"dedicated":{"$ref":"#/types/confluentcloud:index/getKafkaClustersClusterDedicated:getKafkaClustersClusterDedicated","description":"(Optional Configuration Block) The configuration of the Dedicated Kafka cluster. It supports the following:\n"},"displayName":{"type":"string","description":"(Required String) The name of the Kafka cluster.\n"},"endpoints":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getKafkaClustersClusterEndpoint:getKafkaClustersClusterEndpoint"},"description":"(Optional List) The list of endpoints for connecting to the Kafka cluster. These endpoints provide different network access methods or regions for connecting to the cluster:\n"},"enterprises":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getKafkaClustersClusterEnterprise:getKafkaClustersClusterEnterprise"},"description":"(Optional Configuration Block) The configuration of the Enterprise Kafka cluster.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getKafkaClustersClusterEnvironment:getKafkaClustersClusterEnvironment","description":"(Required Object) exports the following attributes:\n"},"freights":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getKafkaClustersClusterFreight:getKafkaClustersClusterFreight"},"description":"(Optional Configuration Block) The configuration of the Freight Kafka cluster.\n"},"id":{"type":"string","description":"(Required String) The ID of the Confluent key that is used to encrypt the data in the Kafka cluster, for example, `cck-lye5m`.\n"},"kind":{"type":"string","description":"(Required String) A kind of the Kafka cluster, for example, `Cluster`.\n"},"networks":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getKafkaClustersClusterNetwork:getKafkaClustersClusterNetwork"},"description":"(Optional Configuration Block) supports the following:\n"},"rbacCrn":{"type":"string","description":"(Required String) The Confluent Resource Name of the Kafka cluster, for example, `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123/cloud-cluster=lkc-abc123`.\n"},"region":{"type":"string","description":"(Required String) The cloud service provider region where the Kafka cluster is running, for example, `us-west-2`. See [Cloud Providers and Regions](https://docs.confluent.io/cloud/current/clusters/regions.html#cloud-providers-and-regions) for a full list of options for AWS, Azure, and GCP.\n"},"restEndpoint":{"type":"string","description":"(Required String) The REST endpoint of the Kafka cluster (for example, `https://lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:443`).\n"},"standards":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getKafkaClustersClusterStandard:getKafkaClustersClusterStandard"},"description":"(Optional Configuration Block) The configuration of the Standard Kafka cluster.\n"}},"type":"object","required":["apiVersion","availability","bootstrapEndpoint","byokKeys","cloud","displayName","endpoints","environment","id","kind","networks","rbacCrn","region","restEndpoint"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClustersClusterBasic:getKafkaClustersClusterBasic":{"properties":{"maxEcku":{"type":"integer","description":"The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to. Kafka clusters with HIGH availability must have at least two eCKUs.\n"}},"type":"object","required":["maxEcku"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClustersClusterByokKey:getKafkaClustersClusterByokKey":{"properties":{"id":{"type":"string","description":"(Required String) The ID of the Confluent key that is used to encrypt the data in the Kafka cluster, for example, `cck-lye5m`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClustersClusterDedicated:getKafkaClustersClusterDedicated":{"properties":{"cku":{"type":"integer","description":"(Required Number) The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. The minimum number of CKUs for `SINGLE_ZONE` dedicated clusters is \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e whereas `MULTI_ZONE` dedicated clusters must have \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e CKUs or more.\n"},"encryptionKey":{"type":"string","description":"The ID of the encryption key that is used to encrypt the data in the Kafka cluster.\n"},"zones":{"type":"array","items":{"type":"string"},"description":"(Required List of String) The list of zones the cluster is in.\n- On AWS, zones are AWS [AZ IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html), for example, `use1-az3`.\n- On GCP, zones are GCP [zones](https://cloud.google.com/compute/docs/regions-zones), for example, `us-central1-c`.\n- On Azure, zones are Confluent-chosen names (for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e) since Azure does not have universal zone identifiers.\n"}},"type":"object","required":["cku","encryptionKey","zones"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClustersClusterEndpoint:getKafkaClustersClusterEndpoint":{"properties":{"accessPointId":{"type":"string","description":"(Required String) The ID of the Access Point that the endpoint corresponds to. Access Point IDs `PUBLIC` and `PRIVATE_LINK` are reserved.\n"},"bootstrapEndpoint":{"type":"string","description":"(Required String) The bootstrap endpoint used by Kafka clients to connect to the cluster (for example, `lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:9092`).\n"},"connectionType":{"type":"string","description":"(Required String) The type of connection used for the endpoint (for example, `PRIVATE_NETWORK_INTERFACE`).\n"},"restEndpoint":{"type":"string","description":"(Required String) The REST endpoint of the Kafka cluster (for example, `https://lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:443`).\n"}},"type":"object","required":["accessPointId","bootstrapEndpoint","connectionType","restEndpoint"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClustersClusterEnterprise:getKafkaClustersClusterEnterprise":{"properties":{"maxEcku":{"type":"integer","description":"The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to. Kafka clusters with HIGH availability must have at least two eCKUs.\n"}},"type":"object","required":["maxEcku"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClustersClusterEnvironment:getKafkaClustersClusterEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Kafka clusters belongs to, for example, `env-xyz456`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClustersClusterFreight:getKafkaClustersClusterFreight":{"properties":{"maxEcku":{"type":"integer","description":"The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to. Kafka clusters with HIGH availability must have at least two eCKUs.\n"},"zones":{"type":"array","items":{"type":"string"},"description":"(Required List of String) The list of zones the cluster is in.\n- On AWS, zones are AWS [AZ IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html), for example, `use1-az3`.\n- On GCP, zones are GCP [zones](https://cloud.google.com/compute/docs/regions-zones), for example, `us-central1-c`.\n- On Azure, zones are Confluent-chosen names (for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e) since Azure does not have universal zone identifiers.\n"}},"type":"object","required":["maxEcku","zones"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClustersClusterNetwork:getKafkaClustersClusterNetwork":{"properties":{"id":{"type":"string","description":"(Required String) The ID of the Confluent key that is used to encrypt the data in the Kafka cluster, for example, `cck-lye5m`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClustersClusterStandard:getKafkaClustersClusterStandard":{"properties":{"maxEcku":{"type":"integer","description":"The maximum number of Elastic Confluent Kafka Units (eCKUs) that Kafka clusters should auto-scale to. Kafka clusters with HIGH availability must have at least two eCKUs.\n"}},"type":"object","required":["maxEcku"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKafkaClustersEnvironment:getKafkaClustersEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Kafka clusters belongs to, for example, `env-xyz456`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getKafkaTopicCredentials:getKafkaTopicCredentials":{"properties":{"key":{"type":"string","description":"The Kafka API Key.\n","secret":true},"secret":{"type":"string","description":"The Kafka API Secret.\n\n\u003e **Note:** A Kafka API key consists of a key and a secret. Kafka API keys are required to interact with Kafka clusters in Confluent Cloud. Each Kafka API key is valid for one specific Kafka cluster.\n\n!\u003e **Warning:** Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaTopic`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaTopic`\" pulumi-lang-go=\"`KafkaTopic`\" pulumi-lang-python=\"`KafkaTopic`\" pulumi-lang-yaml=\"`confluentcloud.KafkaTopic`\" pulumi-lang-java=\"`confluentcloud.KafkaTopic`\"\u003e`confluentcloud.KafkaTopic`\u003c/span\u003e data source, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getKafkaTopicKafkaCluster:getKafkaTopicKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the Kafka cluster, for example, `lkc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getKsqlClusterCredentialIdentity:getKsqlClusterCredentialIdentity":{"properties":{"id":{"type":"string","description":"The ID of the ksqlDB cluster, for example, `lksqlc-abc123`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getKsqlClusterEnvironment:getKsqlClusterEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the ksqlDB cluster belongs to, for example, `env-xyz456`.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getKsqlClusterKafkaCluster:getKsqlClusterKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the ksqlDB cluster, for example, `lksqlc-abc123`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getNetworkAw:getNetworkAw":{"properties":{"account":{"type":"string","description":"(Required String) The AWS account ID associated with the Confluent Cloud VPC.\n"},"privateLinkEndpointService":{"type":"string","description":"(Optional String) The endpoint service of the Confluent Cloud VPC (used for PrivateLink) if available.\n"},"vpc":{"type":"string","description":"(Required String) The Confluent Cloud VPC ID.\n"}},"type":"object","required":["account","privateLinkEndpointService","vpc"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getNetworkAzure:getNetworkAzure":{"properties":{"privateLinkServiceAliases":{"type":"object","additionalProperties":{"type":"string"},"description":"(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).\n"}},"type":"object","required":["privateLinkServiceAliases"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getNetworkDnsConfig:getNetworkDnsConfig":{"properties":{"resolution":{"type":"string","description":"(Required String) Network DNS resolution.\nWhen resolution is `CHASED_PRIVATE`, clusters in this network require both public and private DNS to resolve cluster endpoints.\nWhen resolution is `PRIVATE`, clusters in this network only require private DNS to resolve cluster endpoints.\n"}},"type":"object","required":["resolution"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getNetworkEnvironment:getNetworkEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Network belongs to, for example, `env-xyz456`.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getNetworkGateway:getNetworkGateway":{"properties":{"id":{"type":"string","description":"The ID of the Network, for example, `n-abc123`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getNetworkGcp:getNetworkGcp":{"properties":{"privateServiceConnectServiceAttachments":{"type":"object","additionalProperties":{"type":"string"},"description":"(Optional Map) The mapping of zones to Private Service Connect Service Attachments if available. Keys are zones and values are [GCP Private Service Connect service attachment](https://cloud.google.com/vpc/docs/configure-private-service-connect-producer#api_7).\n"},"project":{"type":"string","description":"(Required String) The GCP Project ID associated with the Confluent Cloud VPC.\n"},"vpcNetwork":{"type":"string","description":"(Required String) The network name of the Confluent Cloud VPC.\n"}},"type":"object","required":["privateServiceConnectServiceAttachments","project","vpcNetwork"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getNetworkLinkEndpointEnvironment:getNetworkLinkEndpointEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Network Link Endpoint belongs to, for example, `env-xyz456`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getNetworkLinkEndpointNetwork:getNetworkLinkEndpointNetwork":{"properties":{"id":{"type":"string","description":"The ID of the Network Link Endpoint, for example, `nle-zyw30`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getNetworkLinkEndpointNetworkLinkService:getNetworkLinkEndpointNetworkLinkService":{"properties":{"id":{"type":"string","description":"The ID of the Network Link Endpoint, for example, `nle-zyw30`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getNetworkLinkServiceAccept:getNetworkLinkServiceAccept":{"properties":{"environments":{"type":"array","items":{"type":"string"},"description":"(Optional List of Strings) List of environments ids from which connections can be accepted. All networks within the list of environment will be allowed.\n"},"networks":{"type":"array","items":{"type":"string"},"description":"(Optional List of Strings) List of network ids from which connections can be accepted.\n"}},"type":"object","required":["environments","networks"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getNetworkLinkServiceEnvironment:getNetworkLinkServiceEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Network Link Service belongs to, for example, `env-1234`.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getNetworkLinkServiceNetwork:getNetworkLinkServiceNetwork":{"properties":{"id":{"type":"string","description":"The ID of the Network Link Service, for example, `nls-zyw30`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getNetworkZoneInfo:getNetworkZoneInfo":{"properties":{"cidr":{"type":"string","description":"(Required String) The IPv4 CIDR block to be used for the network. Must be `/27`. Required for VPC peering and AWS TransitGateway.\n"},"zoneId":{"type":"string","description":"(Required String) Cloud provider zone ID.\n"}},"type":"object","required":["cidr","zoneId"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPeeringAw:getPeeringAw":{"properties":{"account":{"type":"string","description":"(Required String) 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**.\n"},"customerRegion":{"type":"string","description":"(Required String) The region of the Azure peer VNet.\n"},"routes":{"type":"array","items":{"type":"string"},"description":"(Required String) 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 \u003e Target VPC \u003e Details** section of the AWS Management Console.\n"},"vpc":{"type":"string","description":"(Required String) 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-`.\n"}},"type":"object","required":["account","customerRegion","routes","vpc"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPeeringAzure:getPeeringAzure":{"properties":{"customerRegion":{"type":"string","description":"(Required String) The region of the Azure peer VNet.\n"},"tenant":{"type":"string","description":"(Required String) 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**.\n"},"vnet":{"type":"string","description":"(Required String) The resource (composite) ID of the peer Virtual Network that you're peering with Confluent Cloud, in the format `/subscriptions/\u003cSubscription ID\u003e/resourceGroups/\u003cResource Group Name\u003e/providers/Microsoft.Network/virtualNetworks/\u003cVNet name\u003e`. You can find Subscription ID, Resource Group Name and your VNet name under **Virtual Networks \u003e Target VNet \u003e Essentials** section of your [Microsoft Azure Portal](https://portal.azure.com/).\n"}},"type":"object","required":["customerRegion","tenant","vnet"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPeeringEnvironment:getPeeringEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Peering belongs to, for example, `env-xyz456`.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getPeeringGcp:getPeeringGcp":{"properties":{"importCustomRoutes":{"type":"boolean","description":"(Optional Boolean) 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 \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. 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).\n"},"project":{"type":"string","description":"(Required String) 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).\n"},"vpcNetwork":{"type":"string","description":"(Required String) 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).\n"}},"type":"object","required":["importCustomRoutes","project","vpcNetwork"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPeeringNetwork:getPeeringNetwork":{"properties":{"id":{"type":"string","description":"The ID of the Peering, for example, `peer-abc123`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPrivateLinkAccessAw:getPrivateLinkAccessAw":{"properties":{"account":{"type":"string","description":"(Required String) 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**.\n"}},"type":"object","required":["account"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPrivateLinkAccessAzure:getPrivateLinkAccessAzure":{"properties":{"subscription":{"type":"string","description":"(Required String) 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**.\n"}},"type":"object","required":["subscription"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPrivateLinkAccessEnvironment:getPrivateLinkAccessEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Private Link Access belongs to, for example, `env-xyz456`.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getPrivateLinkAccessGcp:getPrivateLinkAccessGcp":{"properties":{"project":{"type":"string","description":"(Required String) The GCP project ID to allow for Private Service Connect access. 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).\n"}},"type":"object","required":["project"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPrivateLinkAccessNetwork:getPrivateLinkAccessNetwork":{"properties":{"id":{"type":"string","description":"The ID of the Private Link Access, for example, `pla-abc123`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPrivateLinkAttachmentAw:getPrivateLinkAttachmentAw":{"properties":{"vpcEndpointServiceName":{"type":"string","description":"(Required String) AWS VPC Endpoint Service that can be used to establish connections for all zones, for example `com.amazonaws.vpce.us-west-2.vpce-svc-0d3be37e21708ecd3`.\n"}},"type":"object","required":["vpcEndpointServiceName"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPrivateLinkAttachmentAzure:getPrivateLinkAttachmentAzure":{"properties":{"privateLinkServiceAlias":{"type":"string","description":"(Required String) Azure Private Link service alias for the availability zone.\n"},"privateLinkServiceResourceId":{"type":"string","description":"(Required String) Azure Private Link service resource ID for the availability zone.\n"}},"type":"object","required":["privateLinkServiceAlias","privateLinkServiceResourceId"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPrivateLinkAttachmentConnectionAw:getPrivateLinkAttachmentConnectionAw":{"properties":{"vpcEndpointId":{"type":"string","description":"(Required String) Id of a VPC Endpoint that is connected to the VPC Endpoint service.\n"}},"type":"object","required":["vpcEndpointId"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPrivateLinkAttachmentConnectionAzure:getPrivateLinkAttachmentConnectionAzure":{"properties":{"privateEndpointResourceId":{"type":"string","description":"(Required String) Resource ID of the Private Endpoint that is connected to the Private Link service.\n"}},"type":"object","required":["privateEndpointResourceId"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPrivateLinkAttachmentConnectionEnvironment:getPrivateLinkAttachmentConnectionEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Private Link Attachment Connection belongs to, for example `env-xyz456`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getPrivateLinkAttachmentConnectionGcp:getPrivateLinkAttachmentConnectionGcp":{"properties":{"privateServiceConnectConnectionId":{"type":"string","description":"(Required String) GCP Private Service Connect ID used to establish connections for all zones.\n"}},"type":"object","required":["privateServiceConnectConnectionId"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPrivateLinkAttachmentConnectionPrivateLinkAttachment:getPrivateLinkAttachmentConnectionPrivateLinkAttachment":{"properties":{"id":{"type":"string","description":"The ID of the Private Link Attachment Connection, for example, `plattc-p5j3ov`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getPrivateLinkAttachmentEnvironment:getPrivateLinkAttachmentEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Private Link Attachment belongs to, for example `env-xyz456`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getPrivateLinkAttachmentGcp:getPrivateLinkAttachmentGcp":{"properties":{"privateServiceConnectServiceAttachment":{"type":"string","description":"(Required String) The ID of the GCP Private Service Connect Service Attachment on Confluent Cloud.\n"}},"type":"object","required":["privateServiceConnectServiceAttachment"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getProviderIntegrationAuthorizationAzure:getProviderIntegrationAuthorizationAzure":{"properties":{"confluentMultiTenantAppId":{"type":"string","description":"(Computed String) Confluent Multi-Tenant App ID used to access customer Azure resources.\n"},"customerAzureTenantId":{"type":"string","description":"(Computed String) Customer's Azure Tenant ID.\n"}},"type":"object","required":["confluentMultiTenantAppId","customerAzureTenantId"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getProviderIntegrationAuthorizationEnvironment:getProviderIntegrationAuthorizationEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Provider Integration belongs to, for example, `env-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getProviderIntegrationAuthorizationGcp:getProviderIntegrationAuthorizationGcp":{"properties":{"customerGoogleServiceAccount":{"type":"string","description":"(Computed String) Customer's Google Service Account that Confluent Cloud impersonates.\n"},"googleServiceAccount":{"type":"string","description":"(Computed String) Google Service Account that Confluent Cloud uses for impersonation.\n"}},"type":"object","required":["customerGoogleServiceAccount","googleServiceAccount"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getProviderIntegrationAw:getProviderIntegrationAw":{"properties":{"customerRoleArn":{"type":"string","description":"(Required String) Amazon Resource Name (ARN) that identifies the AWS Identity and Access Management (IAM) role that Confluent Cloud assumes when it accesses resources in your AWS account, and must be unique in the same environment.\n"},"externalId":{"type":"string","description":"(Required String) Unique external ID that Confluent Cloud uses when it assumes the IAM role in your Amazon Web Services (AWS) account.\n"},"iamRoleArn":{"type":"string","description":"(Required String) The IAM role ARN used in Confluent Cloud internally, bundled with \u003cspan pulumi-lang-nodejs=\"`customerRoleArn`\" pulumi-lang-dotnet=\"`CustomerRoleArn`\" pulumi-lang-go=\"`customerRoleArn`\" pulumi-lang-python=\"`customer_role_arn`\" pulumi-lang-yaml=\"`customerRoleArn`\" pulumi-lang-java=\"`customerRoleArn`\"\u003e`customer_role_arn`\u003c/span\u003e.\n"}},"type":"object","required":["customerRoleArn","externalId","iamRoleArn"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getProviderIntegrationEnvironment:getProviderIntegrationEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Provider Integration belongs to, for example, `env-xyz456`.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getProviderIntegrationSetupEnvironment:getProviderIntegrationSetupEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Provider Integration belongs to, for example, `env-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getSchemaCredentials:getSchemaCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getSchemaMetadata:getSchemaMetadata":{"properties":{"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"(Optional Map) The custom properties to set:\n"},"sensitives":{"type":"array","items":{"type":"string"},"description":"(Optional List of Strings) A list of metadata properties to be encrypted.\n"},"tags":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getSchemaMetadataTag:getSchemaMetadataTag"},"description":"(Optional String List) The tags to which the rule applies, if any.\n"}},"type":"object","required":["properties","sensitives","tags"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getSchemaMetadataTag:getSchemaMetadataTag":{"properties":{"key":{"type":"string","description":"(Required String) The setting name.\n"},"values":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) The list of tags.\n"}},"type":"object","required":["key","values"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getSchemaRegistryClusterConfigCredentials:getSchemaRegistryClusterConfigCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getSchemaRegistryClusterConfigSchemaRegistryCluster:getSchemaRegistryClusterConfigSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getSchemaRegistryClusterEnvironment:getSchemaRegistryClusterEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Schema Registry cluster belongs to, for example, `env-xyz456`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getSchemaRegistryClusterModeCredentials:getSchemaRegistryClusterModeCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getSchemaRegistryClusterModeSchemaRegistryCluster:getSchemaRegistryClusterModeSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getSchemaRegistryClustersCluster:getSchemaRegistryClustersCluster":{"properties":{"apiVersion":{"type":"string","description":"(Required String) An API Version of the schema version of the Schema Registry cluster, for example, `stream-governance/v2`.\n"},"catalogEndpoint":{"type":"string","description":"(Required String) The Catalog endpoint of the Schema Registry cluster, for example, `https://psrc-y1113.us-west-2.aws.confluent.cloud`.\n"},"cloud":{"type":"string","description":"(Required String) The cloud service provider that the Schema Registry cluster belongs to, for example, `AWS`.\n"},"displayName":{"type":"string","description":"(Required String) The name of the Schema Registry cluster, for example, `Stream Governance Package`.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClustersClusterEnvironment:getSchemaRegistryClustersClusterEnvironment","description":"(Required Object) exports the following attributes:\n"},"id":{"type":"string","description":"(Required String) The id of the environment.\n"},"kind":{"type":"string","description":"(Required String) A kind of the Schema Registry cluster, for example, `Cluster`.\n"},"package":{"type":"string","description":"(Required String) The type of the billing package. Accepted values are: `ESSENTIALS` and `ADVANCED`.\n"},"privateRegionalRestEndpoints":{"type":"object","additionalProperties":{"type":"string"},"description":"(Required Map) The private regional HTTP endpoint map of the Schema Registry cluster. For example, to reference the endpoint corresponding to the us-central-1 region, use `private_regional_rest_endpoints[\"us-central-1\"]`.\n"},"privateRestEndpoint":{"type":"string","description":"(Required String, **Deprecated**) The private HTTP endpoint of the Schema Registry cluster, for example, `https://lsrc.us-west-2.aws.private.stag.cpdev.cloud`. Please use the \u003cspan pulumi-lang-nodejs=\"`privateRegionalRestEndpoints`\" pulumi-lang-dotnet=\"`PrivateRegionalRestEndpoints`\" pulumi-lang-go=\"`privateRegionalRestEndpoints`\" pulumi-lang-python=\"`private_regional_rest_endpoints`\" pulumi-lang-yaml=\"`privateRegionalRestEndpoints`\" pulumi-lang-java=\"`privateRegionalRestEndpoints`\"\u003e`private_regional_rest_endpoints`\u003c/span\u003e attribute instead, which supersedes the \u003cspan pulumi-lang-nodejs=\"`privateRestEndpoint`\" pulumi-lang-dotnet=\"`PrivateRestEndpoint`\" pulumi-lang-go=\"`privateRestEndpoint`\" pulumi-lang-python=\"`private_rest_endpoint`\" pulumi-lang-yaml=\"`privateRestEndpoint`\" pulumi-lang-java=\"`privateRestEndpoint`\"\u003e`private_rest_endpoint`\u003c/span\u003e attribute.\n","deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" privateRegionalRestEndpoints \" pulumi-lang-dotnet=\" PrivateRegionalRestEndpoints \" pulumi-lang-go=\" privateRegionalRestEndpoints \" pulumi-lang-python=\" private_regional_rest_endpoints \" pulumi-lang-yaml=\" privateRegionalRestEndpoints \" pulumi-lang-java=\" privateRegionalRestEndpoints \"\u003e private_regional_rest_endpoints \u003c/span\u003eattribute instead, which supersedes the\u003cspan pulumi-lang-nodejs=\" privateRestEndpoint \" pulumi-lang-dotnet=\" PrivateRestEndpoint \" pulumi-lang-go=\" privateRestEndpoint \" pulumi-lang-python=\" private_rest_endpoint \" pulumi-lang-yaml=\" privateRestEndpoint \" pulumi-lang-java=\" privateRestEndpoint \"\u003e private_rest_endpoint \u003c/span\u003eattribute."},"region":{"type":"string","description":"(Required String) The ID of the Schema Registry region that the Schema Registry cluster belongs to, for example, `us-east4`.\n"},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Schema Registry cluster, for example, `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123/schema-registry=lsrc-abc123`.\n"},"restEndpoint":{"type":"string","description":"(Required String) The HTTP endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-west-2.aws.confluent.cloud`.\n"}},"type":"object","required":["apiVersion","catalogEndpoint","cloud","displayName","environment","id","kind","package","privateRegionalRestEndpoints","privateRestEndpoint","region","resourceName","restEndpoint"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getSchemaRegistryClustersClusterEnvironment:getSchemaRegistryClustersClusterEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Schema Registry cluster belongs to, for example, `env-xyz456`.\n- If no environment id is specified, clusters from all environments will be displayed.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getSchemaRegistryClustersEnvironment:getSchemaRegistryClustersEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Schema Registry cluster belongs to, for example, `env-xyz456`.\n- If no environment id is specified, clusters from all environments will be displayed.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getSchemaRegistryDekCredentials:getSchemaRegistryDekCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getSchemaRegistryDekSchemaRegistryCluster:getSchemaRegistryDekSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getSchemaRegistryKekCredentials:getSchemaRegistryKekCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getSchemaRegistryKekSchemaRegistryCluster:getSchemaRegistryKekSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getSchemaRuleset:getSchemaRuleset":{"properties":{"domainRules":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getSchemaRulesetDomainRule:getSchemaRulesetDomainRule"},"description":"(Optional List of Blocks) supports the following:\n"},"migrationRules":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getSchemaRulesetMigrationRule:getSchemaRulesetMigrationRule"},"description":"(Optional List of Blocks) supports the following:\n"}},"type":"object"},"confluentcloud:index/getSchemaRulesetDomainRule:getSchemaRulesetDomainRule":{"properties":{"disabled":{"type":"boolean","description":"(Optional Boolean) The boolean flag to control whether the rule should be disabled.\n"},"doc":{"type":"string","description":"(Optional String) An optional description of the rule.\n"},"expr":{"type":"string","description":"(Optional String) The rule body. Data quality and transformation rules use `CEL` language expressions, data migration rules use `JSONata` expressions. Defaults to \"\".\n"},"kind":{"type":"string","description":"(Required String) The kind of the rule. Accepted values are `CONDITION` and `TRANSFORM`. `CONDITION` - validate the value of a field, `TRANSFORM` - transform the value of a field. Data quality rules use `CONDITION` kind, data transformation, encryption and migration rules use `TRANSFORM` kind.\n"},"mode":{"type":"string","description":"(Required String) The mode of the rule. Accepted values are `UPGRADE`, `DOWNGRADE`, `UPDOWN`, `WRITE`, `READ`, and `WRITEREAD`.\n"},"name":{"type":"string","description":"(Required String) A user-defined name that can be used to reference the rule.\n"},"onFailure":{"type":"string","description":"(Optional String) An optional action to execute if the rule fails, otherwise the built-in action type `ERROR` is used. For `UPDOWN` and `WRITEREAD` rules, one can specify two actions separated by commas, as mentioned above.\n"},"onSuccess":{"type":"string","description":"(Optional String) An optional action to execute if the rule succeeds, otherwise the built-in action type `NONE` is used. For `UPDOWN` and `WRITEREAD` rules, one can specify two actions separated by commas, such as `NONE,ERROR` for a `WRITEREAD` rule. In this case `NONE` applies to `WRITE` and `ERROR` applies to `READ`.\n"},"params":{"type":"object","additionalProperties":{"type":"string"},"description":"(Optional Configuration Block) A set of static parameters for the rule, which is optional. These are key-value pairs that are passed to the rule.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"(Optional String List) The tags to which the rule applies, if any.\n"},"type":{"type":"string","description":"(Required String) The type of rule, which invokes a specific rule executor that that will run the rule. Google Common Expression Language (`CEL`) is used for data quality and transformation rules, Confluent `ENCRYPT` is used for data encryption rules, and `JSONata` is used for migration rules.\n"}},"type":"object","required":["kind","mode","name","params","tags","type"],"language":{"nodejs":{"requiredInputs":["kind","mode","name","type"]}}},"confluentcloud:index/getSchemaRulesetMigrationRule:getSchemaRulesetMigrationRule":{"properties":{"disabled":{"type":"boolean","description":"(Optional Boolean) The boolean flag to control whether the rule should be disabled.\n"},"doc":{"type":"string","description":"(Optional String) An optional description of the rule.\n"},"expr":{"type":"string","description":"(Optional String) The rule body. Data quality and transformation rules use `CEL` language expressions, data migration rules use `JSONata` expressions. Defaults to \"\".\n"},"kind":{"type":"string","description":"(Required String) The kind of the rule. Accepted values are `CONDITION` and `TRANSFORM`. `CONDITION` - validate the value of a field, `TRANSFORM` - transform the value of a field. Data quality rules use `CONDITION` kind, data transformation, encryption and migration rules use `TRANSFORM` kind.\n"},"mode":{"type":"string","description":"(Required String) The mode of the rule. Accepted values are `UPGRADE`, `DOWNGRADE`, `UPDOWN`, `WRITE`, `READ`, and `WRITEREAD`.\n"},"name":{"type":"string","description":"(Required String) A user-defined name that can be used to reference the rule.\n"},"onFailure":{"type":"string","description":"(Optional String) An optional action to execute if the rule fails, otherwise the built-in action type `ERROR` is used. For `UPDOWN` and `WRITEREAD` rules, one can specify two actions separated by commas, as mentioned above.\n"},"onSuccess":{"type":"string","description":"(Optional String) An optional action to execute if the rule succeeds, otherwise the built-in action type `NONE` is used. For `UPDOWN` and `WRITEREAD` rules, one can specify two actions separated by commas, such as `NONE,ERROR` for a `WRITEREAD` rule. In this case `NONE` applies to `WRITE` and `ERROR` applies to `READ`.\n"},"params":{"type":"object","additionalProperties":{"type":"string"},"description":"(Optional Configuration Block) A set of static parameters for the rule, which is optional. These are key-value pairs that are passed to the rule.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"(Optional String List) The tags to which the rule applies, if any.\n"},"type":{"type":"string","description":"(Required String) The type of rule, which invokes a specific rule executor that that will run the rule. Google Common Expression Language (`CEL`) is used for data quality and transformation rules, Confluent `ENCRYPT` is used for data encryption rules, and `JSONata` is used for migration rules.\n"}},"type":"object","required":["kind","mode","name","params","tags","type"],"language":{"nodejs":{"requiredInputs":["kind","mode","name","type"]}}},"confluentcloud:index/getSchemaSchemaReference:getSchemaSchemaReference":{"properties":{"name":{"type":"string","description":"(Required String) A user-defined name that can be used to reference the rule.\n"},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`. Schemas evolve safely, following a compatibility mode defined, under a subject name.\n"},"version":{"type":"integer","description":"(Required Integer) The version of the Schema, for example, \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e.\n"}},"type":"object","required":["name","subjectName","version"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getSchemaSchemaRegistryCluster:getSchemaSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getSchemasCredentials:getSchemasCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getSchemasFilter:getSchemasFilter":{"properties":{"deleted":{"type":"boolean","description":"The boolean flag to control whether to return soft deleted schemas. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"latestOnly":{"type":"boolean","description":"The boolean flag to control whether to return latest schema versions only for each matching subject. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"subjectPrefix":{"type":"string","description":"The prefix of the subjects (in other words, the namespaces), representing the subjects under which the schemas are registered.\n"}},"type":"object"},"confluentcloud:index/getSchemasSchema:getSchemasSchema":{"properties":{"format":{"type":"string","description":"(Required String) The format of the schema. Accepted values are: `AVRO`, `PROTOBUF`, and `JSON`.\n"},"schema":{"type":"string","description":"(Required String) The schema string.\n"},"schemaIdentifier":{"type":"integer","description":"(Required String) The ID of the Schema, for example: `lsrc-abc123/test-subject/100003`.\n"},"schemaReferences":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getSchemasSchemaSchemaReference:getSchemasSchemaSchemaReference"},"description":"(Optional List) The list of referenced schemas (see [Schema References](https://docs.confluent.io/platform/current/schema-registry/serdes-develop/index.html#schema-references) for more details):\n"},"subjectName":{"type":"string","description":"(Required String) The name for the reference. (For Avro Schema, the reference name is the fully qualified schema name, for JSON Schema it is a URL, and for Protobuf Schema, it is the name of another Protobuf file.)\n"},"version":{"type":"integer","description":"(Required Integer) The version of the Schema, for example, \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e.\n"}},"type":"object","required":["format","schema","schemaIdentifier","schemaReferences","subjectName","version"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getSchemasSchemaRegistryCluster:getSchemasSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getSchemasSchemaSchemaReference:getSchemasSchemaSchemaReference":{"properties":{"name":{"type":"string","description":"(Required String) The name of the subject, representing the subject under which the referenced schema is registered.\n"},"subjectName":{"type":"string","description":"(Required String) The name for the reference. (For Avro Schema, the reference name is the fully qualified schema name, for JSON Schema it is a URL, and for Protobuf Schema, it is the name of another Protobuf file.)\n"},"version":{"type":"integer","description":"(Required Integer) The version of the Schema, for example, \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e.\n"}},"type":"object","required":["name","subjectName","version"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getSubjectConfigCredentials:getSubjectConfigCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getSubjectConfigSchemaRegistryCluster:getSubjectConfigSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getSubjectModeCredentials:getSubjectModeCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getSubjectModeSchemaRegistryCluster:getSubjectModeSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getTableflowTopicAzureDataLakeStorageGen2:getTableflowTopicAzureDataLakeStorageGen2":{"properties":{"containerName":{"type":"string","description":"(Required String) The container name.\n"},"providerIntegrationId":{"type":"string","description":"(Required String) The provider integration id.\n"},"storageAccountName":{"type":"string","description":"(Required String) The storage account name.\n"},"storageRegion":{"type":"string","description":"(Required String) The storage region.\n"},"tablePath":{"type":"string","description":"(Optional String) The current storage path where the data and metadata is stored for this table.\n"}},"type":"object","required":["containerName","providerIntegrationId","storageAccountName","storageRegion","tablePath"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getTableflowTopicByobAw:getTableflowTopicByobAw":{"properties":{"bucketName":{"type":"string","description":"(Required String) The bucket name.\n"},"bucketRegion":{"type":"string","description":"(Required String) The bucket region.\n"},"providerIntegrationId":{"type":"string","description":"(Required String) The provider integration id.\n"}},"type":"object","required":["bucketName","bucketRegion","providerIntegrationId"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getTableflowTopicCredentials:getTableflowTopicCredentials":{"properties":{"key":{"type":"string","description":"The Tableflow API Key.\n","secret":true},"secret":{"type":"string","description":"The Tableflow API Secret.\n\n\u003e **Note:** A Tableflow API key consists of a key and a secret. Tableflow API keys are required to interact with Tableflow Topics in Confluent Cloud.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.TableflowTopic`\" pulumi-lang-dotnet=\"`confluentcloud.TableflowTopic`\" pulumi-lang-go=\"`TableflowTopic`\" pulumi-lang-python=\"`TableflowTopic`\" pulumi-lang-yaml=\"`confluentcloud.TableflowTopic`\" pulumi-lang-java=\"`confluentcloud.TableflowTopic`\"\u003e`confluentcloud.TableflowTopic`\u003c/span\u003e data source, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getTableflowTopicEnvironment:getTableflowTopicEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment, for example, `env-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getTableflowTopicErrorHandling:getTableflowTopicErrorHandling":{"properties":{"logTarget":{"type":"string","description":"(Optional String) The topic to which the bad records will be logged for error handling mode `LOG`. The default topic is \u003cspan pulumi-lang-nodejs=\"\"errorLog\"\" pulumi-lang-dotnet=\"\"ErrorLog\"\" pulumi-lang-go=\"\"errorLog\"\" pulumi-lang-python=\"\"error_log\"\" pulumi-lang-yaml=\"\"errorLog\"\" pulumi-lang-java=\"\"errorLog\"\"\u003e\"error_log\"\u003c/span\u003e if error handling mode is `LOG`, and empty otherwise.\n"},"mode":{"type":"string","description":"(Optional String) The error handling mode. For `SUSPEND`, the materialization of the topic is suspended in case of record failures. For `SKIP`, bad records are skipped and the materialization continues with the next record. For `LOG`, bad records are logged to a dead-letter queue (DLQ) topic and the materialization continues with the next record. The default mode is `SUSPEND`.\n"}},"type":"object","required":["logTarget","mode"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getTableflowTopicKafkaCluster:getTableflowTopicKafkaCluster":{"properties":{"id":{"type":"string","description":"The ID of the Kafka cluster, for example, `lkc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getTableflowTopicManagedStorage:getTableflowTopicManagedStorage":{"type":"object"},"confluentcloud:index/getTagBindingCredentials:getTagBindingCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getTagBindingSchemaRegistryCluster:getTagBindingSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getTagCredentials:getTagCredentials":{"properties":{"key":{"type":"string","description":"The Schema Registry API Key.\n","secret":true},"secret":{"type":"string","description":"The Schema Registry API Secret.\n","secret":true}},"type":"object","required":["key","secret"]},"confluentcloud:index/getTagSchemaRegistryCluster:getTagSchemaRegistryCluster":{"properties":{"id":{"type":"string","description":"The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getTransitGatewayAttachmentAw:getTransitGatewayAttachmentAw":{"properties":{"ramResourceShareArn":{"type":"string","description":"(Required String) The Amazon Resource Name (ARN) of the Resource Access Manager (RAM) Resource Share of the transit gateway your Confluent Cloud network attaches to.\n"},"routes":{"type":"array","items":{"type":"string"},"description":"(Required List of String) List of destination routes for traffic from Confluent VPC to customer VPC via Transit Gateway.\n"},"transitGatewayAttachmentId":{"type":"string","description":"(Required String) The ID of the AWS Transit Gateway VPC Attachment that attaches Confluent VPC to Transit Gateway.\n"},"transitGatewayId":{"type":"string","description":"(Required String) The ID of the AWS Transit Gateway that you want Confluent CLoud to be attached to. Must start with `tgw-`.\n"}},"type":"object","required":["ramResourceShareArn","routes","transitGatewayAttachmentId","transitGatewayId"],"language":{"nodejs":{"requiredInputs":[]}}},"confluentcloud:index/getTransitGatewayAttachmentEnvironment:getTransitGatewayAttachmentEnvironment":{"properties":{"id":{"type":"string","description":"The ID of the Environment that the Transit Gateway Attachment belongs to, for example, `env-xyz456`.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"}},"type":"object","required":["id"]},"confluentcloud:index/getTransitGatewayAttachmentNetwork:getTransitGatewayAttachmentNetwork":{"properties":{"id":{"type":"string","description":"The ID of the Peering, for example, `tgwa-abc123`.\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}}},"provider":{"description":"The provider type for the confluent package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n","properties":{"catalogRestEndpoint":{"type":"string","description":"The Stream Catalog REST Endpoint."},"cloudApiKey":{"type":"string","description":"The Confluent Cloud API Key.","secret":true},"cloudApiSecret":{"type":"string","description":"The Confluent Cloud API Secret.","secret":true},"endpoint":{"type":"string","description":"The base endpoint of Confluent Cloud API."},"environmentId":{"type":"string","description":"The Flink Environment ID."},"flinkApiKey":{"type":"string","description":"The Flink API Key.","secret":true},"flinkApiSecret":{"type":"string","description":"The Flink API Secret.","secret":true},"flinkComputePoolId":{"type":"string","description":"The Flink Compute Pool ID."},"flinkPrincipalId":{"type":"string","description":"The Flink Principal ID."},"flinkRestEndpoint":{"type":"string","description":"The Flink REST Endpoint."},"kafkaApiKey":{"type":"string","description":"The Kafka Cluster API Key.","secret":true},"kafkaApiSecret":{"type":"string","description":"The Kafka Cluster API Secret.","secret":true},"kafkaId":{"type":"string","description":"The Kafka Cluster ID."},"kafkaRestEndpoint":{"type":"string","description":"The Kafka Cluster REST Endpoint."},"maxRetries":{"type":"integer","description":"Maximum number of retries of HTTP client. Defaults to 4."},"oauth":{"$ref":"#/types/confluentcloud:index/ProviderOauth:ProviderOauth","description":"OAuth config settings"},"organizationId":{"type":"string","description":"The Flink Organization ID."},"schemaRegistryApiKey":{"type":"string","description":"The Schema Registry Cluster API Key.","secret":true},"schemaRegistryApiSecret":{"type":"string","description":"The Schema Registry Cluster API Secret.","secret":true},"schemaRegistryId":{"type":"string","description":"The Schema Registry Cluster ID."},"schemaRegistryRestEndpoint":{"type":"string","description":"The Schema Registry Cluster REST Endpoint."},"tableflowApiKey":{"type":"string","description":"The Tableflow API Key.","secret":true},"tableflowApiSecret":{"type":"string","description":"The Tableflow API Secret.","secret":true}},"inputProperties":{"catalogRestEndpoint":{"type":"string","description":"The Stream Catalog REST Endpoint."},"cloudApiKey":{"type":"string","description":"The Confluent Cloud API Key.","secret":true},"cloudApiSecret":{"type":"string","description":"The Confluent Cloud API Secret.","secret":true},"endpoint":{"type":"string","description":"The base endpoint of Confluent Cloud API."},"environmentId":{"type":"string","description":"The Flink Environment ID."},"flinkApiKey":{"type":"string","description":"The Flink API Key.","secret":true},"flinkApiSecret":{"type":"string","description":"The Flink API Secret.","secret":true},"flinkComputePoolId":{"type":"string","description":"The Flink Compute Pool ID."},"flinkPrincipalId":{"type":"string","description":"The Flink Principal ID."},"flinkRestEndpoint":{"type":"string","description":"The Flink REST Endpoint."},"kafkaApiKey":{"type":"string","description":"The Kafka Cluster API Key.","secret":true},"kafkaApiSecret":{"type":"string","description":"The Kafka Cluster API Secret.","secret":true},"kafkaId":{"type":"string","description":"The Kafka Cluster ID."},"kafkaRestEndpoint":{"type":"string","description":"The Kafka Cluster REST Endpoint."},"maxRetries":{"type":"integer","description":"Maximum number of retries of HTTP client. Defaults to 4."},"oauth":{"$ref":"#/types/confluentcloud:index/ProviderOauth:ProviderOauth","description":"OAuth config settings"},"organizationId":{"type":"string","description":"The Flink Organization ID."},"schemaRegistryApiKey":{"type":"string","description":"The Schema Registry Cluster API Key.","secret":true},"schemaRegistryApiSecret":{"type":"string","description":"The Schema Registry Cluster API Secret.","secret":true},"schemaRegistryId":{"type":"string","description":"The Schema Registry Cluster ID."},"schemaRegistryRestEndpoint":{"type":"string","description":"The Schema Registry Cluster REST Endpoint."},"tableflowApiKey":{"type":"string","description":"The Tableflow API Key.","secret":true},"tableflowApiSecret":{"type":"string","description":"The Tableflow API Secret.","secret":true}},"methods":{"terraformConfig":"pulumi:providers:confluentcloud/terraformConfig"}},"resources":{"confluentcloud:index/accessPoint:AccessPoint":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.AccessPoint`\" pulumi-lang-dotnet=\"`confluentcloud.AccessPoint`\" pulumi-lang-go=\"`AccessPoint`\" pulumi-lang-python=\"`AccessPoint`\" pulumi-lang-yaml=\"`confluentcloud.AccessPoint`\" pulumi-lang-java=\"`confluentcloud.AccessPoint`\"\u003e`confluentcloud.AccessPoint`\u003c/span\u003e provides a Access Point resource that enables creating, editing, and deleting Access Points on Confluent Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst aws = new confluentcloud.AccessPoint(\"aws\", {\n    displayName: \"access_point_egress\",\n    environment: {\n        id: development.id,\n    },\n    gateway: {\n        id: main.gateway[0].id,\n    },\n    awsEgressPrivateLinkEndpoint: {\n        vpcEndpointServiceName: \"com.amazonaws.vpce.us-west-2.vpce-svc-00000000000000000\",\n    },\n});\nconst azure = new confluentcloud.AccessPoint(\"azure\", {\n    displayName: \"access_point_egress\",\n    environment: {\n        id: development.id,\n    },\n    gateway: {\n        id: main.gateway[0].id,\n    },\n    azureEgressPrivateLinkEndpoint: {\n        privateLinkServiceResourceId: \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/s-abcde/providers/Microsoft.Network/privateLinkServices/pls-plt-abcdef-az3\",\n        privateLinkSubresourceName: \"sqlServer\",\n    },\n});\nconst gcp = new confluentcloud.AccessPoint(\"gcp\", {\n    displayName: \"access_point\",\n    environment: {\n        id: development.id,\n    },\n    gateway: {\n        id: main.gateway[0].id,\n    },\n    gcpEgressPrivateServiceConnectEndpoint: {\n        privateServiceConnectEndpointTarget: \"projects/example-project/regions/us-central1/serviceAttachments/my-service-attachment\",\n    },\n});\nconst pni = new confluentcloud.AccessPoint(\"pni\", {\n    displayName: \"access_point_egress\",\n    environment: {\n        id: development.id,\n    },\n    gateway: {\n        id: mainConfluentGateway.id,\n    },\n    awsPrivateNetworkInterface: {\n        networkInterfaces: mainAwsNetworkInterface.map(__item =\u003e __item.id),\n        account: awsAccountId,\n    },\n}, {\n    dependsOn: [mainAwsNetworkInterfacePermission],\n});\nconst awsIngress = new confluentcloud.AccessPoint(\"aws_ingress\", {\n    displayName: \"access_point_ingress\",\n    environment: {\n        id: development.id,\n    },\n    gateway: {\n        id: ingress.id,\n    },\n    awsIngressPrivateLinkEndpoint: {\n        vpcEndpointId: \"vpce-00000000000000000\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\naws = confluentcloud.AccessPoint(\"aws\",\n    display_name=\"access_point_egress\",\n    environment={\n        \"id\": development.id,\n    },\n    gateway={\n        \"id\": main[\"gateway\"][0][\"id\"],\n    },\n    aws_egress_private_link_endpoint={\n        \"vpc_endpoint_service_name\": \"com.amazonaws.vpce.us-west-2.vpce-svc-00000000000000000\",\n    })\nazure = confluentcloud.AccessPoint(\"azure\",\n    display_name=\"access_point_egress\",\n    environment={\n        \"id\": development.id,\n    },\n    gateway={\n        \"id\": main[\"gateway\"][0][\"id\"],\n    },\n    azure_egress_private_link_endpoint={\n        \"private_link_service_resource_id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/s-abcde/providers/Microsoft.Network/privateLinkServices/pls-plt-abcdef-az3\",\n        \"private_link_subresource_name\": \"sqlServer\",\n    })\ngcp = confluentcloud.AccessPoint(\"gcp\",\n    display_name=\"access_point\",\n    environment={\n        \"id\": development.id,\n    },\n    gateway={\n        \"id\": main[\"gateway\"][0][\"id\"],\n    },\n    gcp_egress_private_service_connect_endpoint={\n        \"private_service_connect_endpoint_target\": \"projects/example-project/regions/us-central1/serviceAttachments/my-service-attachment\",\n    })\npni = confluentcloud.AccessPoint(\"pni\",\n    display_name=\"access_point_egress\",\n    environment={\n        \"id\": development.id,\n    },\n    gateway={\n        \"id\": main_confluent_gateway[\"id\"],\n    },\n    aws_private_network_interface={\n        \"network_interfaces\": [__item[\"id\"] for __item in main_aws_network_interface],\n        \"account\": aws_account_id,\n    },\n    opts = pulumi.ResourceOptions(depends_on=[main_aws_network_interface_permission]))\naws_ingress = confluentcloud.AccessPoint(\"aws_ingress\",\n    display_name=\"access_point_ingress\",\n    environment={\n        \"id\": development.id,\n    },\n    gateway={\n        \"id\": ingress[\"id\"],\n    },\n    aws_ingress_private_link_endpoint={\n        \"vpc_endpoint_id\": \"vpce-00000000000000000\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var aws = new ConfluentCloud.AccessPoint(\"aws\", new()\n    {\n        DisplayName = \"access_point_egress\",\n        Environment = new ConfluentCloud.Inputs.AccessPointEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Gateway = new ConfluentCloud.Inputs.AccessPointGatewayArgs\n        {\n            Id = main.Gateway[0].Id,\n        },\n        AwsEgressPrivateLinkEndpoint = new ConfluentCloud.Inputs.AccessPointAwsEgressPrivateLinkEndpointArgs\n        {\n            VpcEndpointServiceName = \"com.amazonaws.vpce.us-west-2.vpce-svc-00000000000000000\",\n        },\n    });\n\n    var azure = new ConfluentCloud.AccessPoint(\"azure\", new()\n    {\n        DisplayName = \"access_point_egress\",\n        Environment = new ConfluentCloud.Inputs.AccessPointEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Gateway = new ConfluentCloud.Inputs.AccessPointGatewayArgs\n        {\n            Id = main.Gateway[0].Id,\n        },\n        AzureEgressPrivateLinkEndpoint = new ConfluentCloud.Inputs.AccessPointAzureEgressPrivateLinkEndpointArgs\n        {\n            PrivateLinkServiceResourceId = \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/s-abcde/providers/Microsoft.Network/privateLinkServices/pls-plt-abcdef-az3\",\n            PrivateLinkSubresourceName = \"sqlServer\",\n        },\n    });\n\n    var gcp = new ConfluentCloud.AccessPoint(\"gcp\", new()\n    {\n        DisplayName = \"access_point\",\n        Environment = new ConfluentCloud.Inputs.AccessPointEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Gateway = new ConfluentCloud.Inputs.AccessPointGatewayArgs\n        {\n            Id = main.Gateway[0].Id,\n        },\n        GcpEgressPrivateServiceConnectEndpoint = new ConfluentCloud.Inputs.AccessPointGcpEgressPrivateServiceConnectEndpointArgs\n        {\n            PrivateServiceConnectEndpointTarget = \"projects/example-project/regions/us-central1/serviceAttachments/my-service-attachment\",\n        },\n    });\n\n    var pni = new ConfluentCloud.AccessPoint(\"pni\", new()\n    {\n        DisplayName = \"access_point_egress\",\n        Environment = new ConfluentCloud.Inputs.AccessPointEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Gateway = new ConfluentCloud.Inputs.AccessPointGatewayArgs\n        {\n            Id = mainConfluentGateway.Id,\n        },\n        AwsPrivateNetworkInterface = new ConfluentCloud.Inputs.AccessPointAwsPrivateNetworkInterfaceArgs\n        {\n            NetworkInterfaces = mainAwsNetworkInterface.Select(__item =\u003e __item.Id).ToList(),\n            Account = awsAccountId,\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            mainAwsNetworkInterfacePermission,\n        },\n    });\n\n    var awsIngress = new ConfluentCloud.AccessPoint(\"aws_ingress\", new()\n    {\n        DisplayName = \"access_point_ingress\",\n        Environment = new ConfluentCloud.Inputs.AccessPointEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Gateway = new ConfluentCloud.Inputs.AccessPointGatewayArgs\n        {\n            Id = ingress.Id,\n        },\n        AwsIngressPrivateLinkEndpoint = new ConfluentCloud.Inputs.AccessPointAwsIngressPrivateLinkEndpointArgs\n        {\n            VpcEndpointId = \"vpce-00000000000000000\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ndevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\nDisplayName: pulumi.String(\"Development\"),\n})\nif err != nil {\nreturn err\n}\n_, err = confluentcloud.NewAccessPoint(ctx, \"aws\", \u0026confluentcloud.AccessPointArgs{\nDisplayName: pulumi.String(\"access_point_egress\"),\nEnvironment: \u0026confluentcloud.AccessPointEnvironmentArgs{\nId: development.ID(),\n},\nGateway: \u0026confluentcloud.AccessPointGatewayArgs{\nId: pulumi.Any(main.Gateway[0].Id),\n},\nAwsEgressPrivateLinkEndpoint: \u0026confluentcloud.AccessPointAwsEgressPrivateLinkEndpointArgs{\nVpcEndpointServiceName: pulumi.String(\"com.amazonaws.vpce.us-west-2.vpce-svc-00000000000000000\"),\n},\n})\nif err != nil {\nreturn err\n}\n_, err = confluentcloud.NewAccessPoint(ctx, \"azure\", \u0026confluentcloud.AccessPointArgs{\nDisplayName: pulumi.String(\"access_point_egress\"),\nEnvironment: \u0026confluentcloud.AccessPointEnvironmentArgs{\nId: development.ID(),\n},\nGateway: \u0026confluentcloud.AccessPointGatewayArgs{\nId: pulumi.Any(main.Gateway[0].Id),\n},\nAzureEgressPrivateLinkEndpoint: \u0026confluentcloud.AccessPointAzureEgressPrivateLinkEndpointArgs{\nPrivateLinkServiceResourceId: pulumi.String(\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/s-abcde/providers/Microsoft.Network/privateLinkServices/pls-plt-abcdef-az3\"),\nPrivateLinkSubresourceName: pulumi.String(\"sqlServer\"),\n},\n})\nif err != nil {\nreturn err\n}\n_, err = confluentcloud.NewAccessPoint(ctx, \"gcp\", \u0026confluentcloud.AccessPointArgs{\nDisplayName: pulumi.String(\"access_point\"),\nEnvironment: \u0026confluentcloud.AccessPointEnvironmentArgs{\nId: development.ID(),\n},\nGateway: \u0026confluentcloud.AccessPointGatewayArgs{\nId: pulumi.Any(main.Gateway[0].Id),\n},\nGcpEgressPrivateServiceConnectEndpoint: \u0026confluentcloud.AccessPointGcpEgressPrivateServiceConnectEndpointArgs{\nPrivateServiceConnectEndpointTarget: pulumi.String(\"projects/example-project/regions/us-central1/serviceAttachments/my-service-attachment\"),\n},\n})\nif err != nil {\nreturn err\n}\n_, err = confluentcloud.NewAccessPoint(ctx, \"pni\", \u0026confluentcloud.AccessPointArgs{\nDisplayName: pulumi.String(\"access_point_egress\"),\nEnvironment: \u0026confluentcloud.AccessPointEnvironmentArgs{\nId: development.ID(),\n},\nGateway: \u0026confluentcloud.AccessPointGatewayArgs{\nId: pulumi.Any(mainConfluentGateway.Id),\n},\nAwsPrivateNetworkInterface: \u0026confluentcloud.AccessPointAwsPrivateNetworkInterfaceArgs{\nNetworkInterfaces: []pulumi.String(%!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:56,25-54)),\nAccount: pulumi.Any(awsAccountId),\n},\n}, pulumi.DependsOn([]pulumi.Resource{\nmainAwsNetworkInterfacePermission,\n}))\nif err != nil {\nreturn err\n}\n_, err = confluentcloud.NewAccessPoint(ctx, \"aws_ingress\", \u0026confluentcloud.AccessPointArgs{\nDisplayName: pulumi.String(\"access_point_ingress\"),\nEnvironment: \u0026confluentcloud.AccessPointEnvironmentArgs{\nId: development.ID(),\n},\nGateway: \u0026confluentcloud.AccessPointGatewayArgs{\nId: pulumi.Any(ingress.Id),\n},\nAwsIngressPrivateLinkEndpoint: \u0026confluentcloud.AccessPointAwsIngressPrivateLinkEndpointArgs{\nVpcEndpointId: pulumi.String(\"vpce-00000000000000000\"),\n},\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.AccessPoint;\nimport com.pulumi.confluentcloud.AccessPointArgs;\nimport com.pulumi.confluentcloud.inputs.AccessPointEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.AccessPointGatewayArgs;\nimport com.pulumi.confluentcloud.inputs.AccessPointAwsEgressPrivateLinkEndpointArgs;\nimport com.pulumi.confluentcloud.inputs.AccessPointAzureEgressPrivateLinkEndpointArgs;\nimport com.pulumi.confluentcloud.inputs.AccessPointGcpEgressPrivateServiceConnectEndpointArgs;\nimport com.pulumi.confluentcloud.inputs.AccessPointAwsPrivateNetworkInterfaceArgs;\nimport com.pulumi.confluentcloud.inputs.AccessPointAwsIngressPrivateLinkEndpointArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var aws = new AccessPoint(\"aws\", AccessPointArgs.builder()\n            .displayName(\"access_point_egress\")\n            .environment(AccessPointEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .gateway(AccessPointGatewayArgs.builder()\n                .id(main.gateway()[0].id())\n                .build())\n            .awsEgressPrivateLinkEndpoint(AccessPointAwsEgressPrivateLinkEndpointArgs.builder()\n                .vpcEndpointServiceName(\"com.amazonaws.vpce.us-west-2.vpce-svc-00000000000000000\")\n                .build())\n            .build());\n\n        var azure = new AccessPoint(\"azure\", AccessPointArgs.builder()\n            .displayName(\"access_point_egress\")\n            .environment(AccessPointEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .gateway(AccessPointGatewayArgs.builder()\n                .id(main.gateway()[0].id())\n                .build())\n            .azureEgressPrivateLinkEndpoint(AccessPointAzureEgressPrivateLinkEndpointArgs.builder()\n                .privateLinkServiceResourceId(\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/s-abcde/providers/Microsoft.Network/privateLinkServices/pls-plt-abcdef-az3\")\n                .privateLinkSubresourceName(\"sqlServer\")\n                .build())\n            .build());\n\n        var gcp = new AccessPoint(\"gcp\", AccessPointArgs.builder()\n            .displayName(\"access_point\")\n            .environment(AccessPointEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .gateway(AccessPointGatewayArgs.builder()\n                .id(main.gateway()[0].id())\n                .build())\n            .gcpEgressPrivateServiceConnectEndpoint(AccessPointGcpEgressPrivateServiceConnectEndpointArgs.builder()\n                .privateServiceConnectEndpointTarget(\"projects/example-project/regions/us-central1/serviceAttachments/my-service-attachment\")\n                .build())\n            .build());\n\n        var pni = new AccessPoint(\"pni\", AccessPointArgs.builder()\n            .displayName(\"access_point_egress\")\n            .environment(AccessPointEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .gateway(AccessPointGatewayArgs.builder()\n                .id(mainConfluentGateway.id())\n                .build())\n            .awsPrivateNetworkInterface(AccessPointAwsPrivateNetworkInterfaceArgs.builder()\n                .networkInterfaces(mainAwsNetworkInterface.stream().map(element -\u003e element.id()).collect(toList()))\n                .account(awsAccountId)\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(mainAwsNetworkInterfacePermission)\n                .build());\n\n        var awsIngress = new AccessPoint(\"awsIngress\", AccessPointArgs.builder()\n            .displayName(\"access_point_ingress\")\n            .environment(AccessPointEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .gateway(AccessPointGatewayArgs.builder()\n                .id(ingress.id())\n                .build())\n            .awsIngressPrivateLinkEndpoint(AccessPointAwsIngressPrivateLinkEndpointArgs.builder()\n                .vpcEndpointId(\"vpce-00000000000000000\")\n                .build())\n            .build());\n\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.AccessPoint`\" pulumi-lang-dotnet=\"`confluentcloud.AccessPoint`\" pulumi-lang-go=\"`AccessPoint`\" pulumi-lang-python=\"`AccessPoint`\" pulumi-lang-yaml=\"`confluentcloud.AccessPoint`\" pulumi-lang-java=\"`confluentcloud.AccessPoint`\"\u003e`confluentcloud.AccessPoint`\u003c/span\u003e resource:\n  * enterprise-pni-aws-kafka-rbac: _Enterprise_ Kafka cluster on AWS that is accessible via Confluent Private Network Interface (PNI) with authorization using RBAC\n  * freight-aws-kafka-rbac: _Freight_ Kafka cluster on AWS that is accessible via Confluent Private Network Interface (PNI) with authorization using RBAC\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Access Point.\n\nYou can import a Access Point by using Environment ID and Access Point ID, in the format `\u003cEnvironment ID\u003e/\u003cAccess Point ID\u003e`. The following example shows how to import a Access Point:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/accessPoint:AccessPoint main env-abc123/ap-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"awsEgressPrivateLinkEndpoint":{"$ref":"#/types/confluentcloud:index/AccessPointAwsEgressPrivateLinkEndpoint:AccessPointAwsEgressPrivateLinkEndpoint","description":"(Optional Configuration Block) supports the following:\n"},"awsIngressPrivateLinkEndpoint":{"$ref":"#/types/confluentcloud:index/AccessPointAwsIngressPrivateLinkEndpoint:AccessPointAwsIngressPrivateLinkEndpoint","description":"(Optional Configuration Block) supports the following:\n"},"awsPrivateNetworkInterface":{"$ref":"#/types/confluentcloud:index/AccessPointAwsPrivateNetworkInterface:AccessPointAwsPrivateNetworkInterface","description":"(Optional Configuration Block) supports the following:\n"},"azureEgressPrivateLinkEndpoint":{"$ref":"#/types/confluentcloud:index/AccessPointAzureEgressPrivateLinkEndpoint:AccessPointAzureEgressPrivateLinkEndpoint","description":"(Optional Configuration Block) supports the following:\n"},"displayName":{"type":"string","description":"The name of the Access Point.\n"},"environment":{"$ref":"#/types/confluentcloud:index/AccessPointEnvironment:AccessPointEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"gateway":{"$ref":"#/types/confluentcloud:index/AccessPointGateway:AccessPointGateway"},"gcpEgressPrivateServiceConnectEndpoint":{"$ref":"#/types/confluentcloud:index/AccessPointGcpEgressPrivateServiceConnectEndpoint:AccessPointGcpEgressPrivateServiceConnectEndpoint","description":"(Optional Configuration Block) supports the following:\n"}},"required":["displayName","environment","gateway"],"inputProperties":{"awsEgressPrivateLinkEndpoint":{"$ref":"#/types/confluentcloud:index/AccessPointAwsEgressPrivateLinkEndpoint:AccessPointAwsEgressPrivateLinkEndpoint","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"awsIngressPrivateLinkEndpoint":{"$ref":"#/types/confluentcloud:index/AccessPointAwsIngressPrivateLinkEndpoint:AccessPointAwsIngressPrivateLinkEndpoint","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"awsPrivateNetworkInterface":{"$ref":"#/types/confluentcloud:index/AccessPointAwsPrivateNetworkInterface:AccessPointAwsPrivateNetworkInterface","description":"(Optional Configuration Block) supports the following:\n"},"azureEgressPrivateLinkEndpoint":{"$ref":"#/types/confluentcloud:index/AccessPointAzureEgressPrivateLinkEndpoint:AccessPointAzureEgressPrivateLinkEndpoint","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Access Point.\n"},"environment":{"$ref":"#/types/confluentcloud:index/AccessPointEnvironment:AccessPointEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gateway":{"$ref":"#/types/confluentcloud:index/AccessPointGateway:AccessPointGateway","willReplaceOnChanges":true},"gcpEgressPrivateServiceConnectEndpoint":{"$ref":"#/types/confluentcloud:index/AccessPointGcpEgressPrivateServiceConnectEndpoint:AccessPointGcpEgressPrivateServiceConnectEndpoint","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true}},"requiredInputs":["environment","gateway"],"stateInputs":{"description":"Input properties used for looking up and filtering AccessPoint resources.\n","properties":{"awsEgressPrivateLinkEndpoint":{"$ref":"#/types/confluentcloud:index/AccessPointAwsEgressPrivateLinkEndpoint:AccessPointAwsEgressPrivateLinkEndpoint","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"awsIngressPrivateLinkEndpoint":{"$ref":"#/types/confluentcloud:index/AccessPointAwsIngressPrivateLinkEndpoint:AccessPointAwsIngressPrivateLinkEndpoint","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"awsPrivateNetworkInterface":{"$ref":"#/types/confluentcloud:index/AccessPointAwsPrivateNetworkInterface:AccessPointAwsPrivateNetworkInterface","description":"(Optional Configuration Block) supports the following:\n"},"azureEgressPrivateLinkEndpoint":{"$ref":"#/types/confluentcloud:index/AccessPointAzureEgressPrivateLinkEndpoint:AccessPointAzureEgressPrivateLinkEndpoint","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Access Point.\n"},"environment":{"$ref":"#/types/confluentcloud:index/AccessPointEnvironment:AccessPointEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gateway":{"$ref":"#/types/confluentcloud:index/AccessPointGateway:AccessPointGateway","willReplaceOnChanges":true},"gcpEgressPrivateServiceConnectEndpoint":{"$ref":"#/types/confluentcloud:index/AccessPointGcpEgressPrivateServiceConnectEndpoint:AccessPointGcpEgressPrivateServiceConnectEndpoint","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/apiKey:ApiKey":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ApiKey`\" pulumi-lang-dotnet=\"`confluentcloud.ApiKey`\" pulumi-lang-go=\"`ApiKey`\" pulumi-lang-python=\"`ApiKey`\" pulumi-lang-yaml=\"`confluentcloud.ApiKey`\" pulumi-lang-java=\"`confluentcloud.ApiKey`\"\u003e`confluentcloud.ApiKey`\u003c/span\u003e provides an API Key resource that enables creating, editing, and deleting Cloud API Keys, Cluster API Keys (Kafka API Key, ksqlDB API Key, Schema Registry API Key, Flink API Key, Tableflow API Key) on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental API Key deletion. This setting rejects plans that would destroy or recreate the API Key, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Example Kafka API Key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst app_manager_kafka_api_key = new confluentcloud.ApiKey(\"app-manager-kafka-api-key\", {\n    displayName: \"app-manager-kafka-api-key\",\n    description: \"Kafka API Key that is owned by 'app-manager' service account\",\n    owner: {\n        id: app_manager.id,\n        apiVersion: app_manager.apiVersion,\n        kind: app_manager.kind,\n    },\n    managedResource: {\n        id: basic.id,\n        apiVersion: basic.apiVersion,\n        kind: basic.kind,\n        environments: [{\n            id: staging.id,\n        }],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\napp_manager_kafka_api_key = confluentcloud.ApiKey(\"app-manager-kafka-api-key\",\n    display_name=\"app-manager-kafka-api-key\",\n    description=\"Kafka API Key that is owned by 'app-manager' service account\",\n    owner={\n        \"id\": app_manager[\"id\"],\n        \"api_version\": app_manager[\"apiVersion\"],\n        \"kind\": app_manager[\"kind\"],\n    },\n    managed_resource={\n        \"id\": basic[\"id\"],\n        \"api_version\": basic[\"apiVersion\"],\n        \"kind\": basic[\"kind\"],\n        \"environments\": [{\n            \"id\": staging[\"id\"],\n        }],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var app_manager_kafka_api_key = new ConfluentCloud.ApiKey(\"app-manager-kafka-api-key\", new()\n    {\n        DisplayName = \"app-manager-kafka-api-key\",\n        Description = \"Kafka API Key that is owned by 'app-manager' service account\",\n        Owner = new ConfluentCloud.Inputs.ApiKeyOwnerArgs\n        {\n            Id = app_manager.Id,\n            ApiVersion = app_manager.ApiVersion,\n            Kind = app_manager.Kind,\n        },\n        ManagedResource = new ConfluentCloud.Inputs.ApiKeyManagedResourceArgs\n        {\n            Id = basic.Id,\n            ApiVersion = basic.ApiVersion,\n            Kind = basic.Kind,\n            Environments = new[]\n            {\n                \n                {\n                    { \"id\", staging.Id },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewApiKey(ctx, \"app-manager-kafka-api-key\", \u0026confluentcloud.ApiKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"app-manager-kafka-api-key\"),\n\t\t\tDescription: pulumi.String(\"Kafka API Key that is owned by 'app-manager' service account\"),\n\t\t\tOwner: \u0026confluentcloud.ApiKeyOwnerArgs{\n\t\t\t\tId:         pulumi.Any(app_manager.Id),\n\t\t\t\tApiVersion: pulumi.Any(app_manager.ApiVersion),\n\t\t\t\tKind:       pulumi.Any(app_manager.Kind),\n\t\t\t},\n\t\t\tManagedResource: \u0026confluentcloud.ApiKeyManagedResourceArgs{\n\t\t\t\tId:         pulumi.Any(basic.Id),\n\t\t\t\tApiVersion: pulumi.Any(basic.ApiVersion),\n\t\t\t\tKind:       pulumi.Any(basic.Kind),\n\t\t\t\tEnvironments: []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"id\": staging.Id,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ApiKey;\nimport com.pulumi.confluentcloud.ApiKeyArgs;\nimport com.pulumi.confluentcloud.inputs.ApiKeyOwnerArgs;\nimport com.pulumi.confluentcloud.inputs.ApiKeyManagedResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var app_manager_kafka_api_key = new ApiKey(\"app-manager-kafka-api-key\", ApiKeyArgs.builder()\n            .displayName(\"app-manager-kafka-api-key\")\n            .description(\"Kafka API Key that is owned by 'app-manager' service account\")\n            .owner(ApiKeyOwnerArgs.builder()\n                .id(app_manager.id())\n                .apiVersion(app_manager.apiVersion())\n                .kind(app_manager.kind())\n                .build())\n            .managedResource(ApiKeyManagedResourceArgs.builder()\n                .id(basic.id())\n                .apiVersion(basic.apiVersion())\n                .kind(basic.kind())\n                .environments(List.of(Map.of(\"id\", staging.id())))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app-manager-kafka-api-key:\n    type: confluentcloud:ApiKey\n    properties:\n      displayName: app-manager-kafka-api-key\n      description: Kafka API Key that is owned by 'app-manager' service account\n      owner:\n        id: ${[\"app-manager\"].id}\n        apiVersion: ${[\"app-manager\"].apiVersion}\n        kind: ${[\"app-manager\"].kind}\n      managedResource:\n        id: ${basic.id}\n        apiVersion: ${basic.apiVersion}\n        kind: ${basic.kind}\n        environments:\n          - id: ${staging.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example ksqlDB API Key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst ksqldb_api_key = new confluentcloud.ApiKey(\"ksqldb-api-key\", {\n    displayName: \"ksqldb-api-key\",\n    description: \"KsqlDB API Key that is owned by 'app-manager' service account\",\n    owner: {\n        id: app_manager.id,\n        apiVersion: app_manager.apiVersion,\n        kind: app_manager.kind,\n    },\n    managedResource: {\n        id: main.id,\n        apiVersion: main.apiVersion,\n        kind: main.kind,\n        environments: [{\n            id: staging.id,\n        }],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nksqldb_api_key = confluentcloud.ApiKey(\"ksqldb-api-key\",\n    display_name=\"ksqldb-api-key\",\n    description=\"KsqlDB API Key that is owned by 'app-manager' service account\",\n    owner={\n        \"id\": app_manager[\"id\"],\n        \"api_version\": app_manager[\"apiVersion\"],\n        \"kind\": app_manager[\"kind\"],\n    },\n    managed_resource={\n        \"id\": main[\"id\"],\n        \"api_version\": main[\"apiVersion\"],\n        \"kind\": main[\"kind\"],\n        \"environments\": [{\n            \"id\": staging[\"id\"],\n        }],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ksqldb_api_key = new ConfluentCloud.ApiKey(\"ksqldb-api-key\", new()\n    {\n        DisplayName = \"ksqldb-api-key\",\n        Description = \"KsqlDB API Key that is owned by 'app-manager' service account\",\n        Owner = new ConfluentCloud.Inputs.ApiKeyOwnerArgs\n        {\n            Id = app_manager.Id,\n            ApiVersion = app_manager.ApiVersion,\n            Kind = app_manager.Kind,\n        },\n        ManagedResource = new ConfluentCloud.Inputs.ApiKeyManagedResourceArgs\n        {\n            Id = main.Id,\n            ApiVersion = main.ApiVersion,\n            Kind = main.Kind,\n            Environments = new[]\n            {\n                \n                {\n                    { \"id\", staging.Id },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewApiKey(ctx, \"ksqldb-api-key\", \u0026confluentcloud.ApiKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"ksqldb-api-key\"),\n\t\t\tDescription: pulumi.String(\"KsqlDB API Key that is owned by 'app-manager' service account\"),\n\t\t\tOwner: \u0026confluentcloud.ApiKeyOwnerArgs{\n\t\t\t\tId:         pulumi.Any(app_manager.Id),\n\t\t\t\tApiVersion: pulumi.Any(app_manager.ApiVersion),\n\t\t\t\tKind:       pulumi.Any(app_manager.Kind),\n\t\t\t},\n\t\t\tManagedResource: \u0026confluentcloud.ApiKeyManagedResourceArgs{\n\t\t\t\tId:         pulumi.Any(main.Id),\n\t\t\t\tApiVersion: pulumi.Any(main.ApiVersion),\n\t\t\t\tKind:       pulumi.Any(main.Kind),\n\t\t\t\tEnvironments: []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"id\": staging.Id,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ApiKey;\nimport com.pulumi.confluentcloud.ApiKeyArgs;\nimport com.pulumi.confluentcloud.inputs.ApiKeyOwnerArgs;\nimport com.pulumi.confluentcloud.inputs.ApiKeyManagedResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var ksqldb_api_key = new ApiKey(\"ksqldb-api-key\", ApiKeyArgs.builder()\n            .displayName(\"ksqldb-api-key\")\n            .description(\"KsqlDB API Key that is owned by 'app-manager' service account\")\n            .owner(ApiKeyOwnerArgs.builder()\n                .id(app_manager.id())\n                .apiVersion(app_manager.apiVersion())\n                .kind(app_manager.kind())\n                .build())\n            .managedResource(ApiKeyManagedResourceArgs.builder()\n                .id(main.id())\n                .apiVersion(main.apiVersion())\n                .kind(main.kind())\n                .environments(List.of(Map.of(\"id\", staging.id())))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ksqldb-api-key:\n    type: confluentcloud:ApiKey\n    properties:\n      displayName: ksqldb-api-key\n      description: KsqlDB API Key that is owned by 'app-manager' service account\n      owner:\n        id: ${[\"app-manager\"].id}\n        apiVersion: ${[\"app-manager\"].apiVersion}\n        kind: ${[\"app-manager\"].kind}\n      managedResource:\n        id: ${main.id}\n        apiVersion: ${main.apiVersion}\n        kind: ${main.kind}\n        environments:\n          - id: ${staging.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Schema Registry API Key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst env_manager_schema_registry_api_key = new confluentcloud.ApiKey(\"env-manager-schema-registry-api-key\", {\n    displayName: \"env-manager-schema-registry-api-key\",\n    description: \"Schema Registry API Key that is owned by 'env-manager' service account\",\n    owner: {\n        id: env_manager.id,\n        apiVersion: env_manager.apiVersion,\n        kind: env_manager.kind,\n    },\n    managedResource: {\n        id: essentials.id,\n        apiVersion: essentials.apiVersion,\n        kind: essentials.kind,\n        environments: [{\n            id: staging.id,\n        }],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nenv_manager_schema_registry_api_key = confluentcloud.ApiKey(\"env-manager-schema-registry-api-key\",\n    display_name=\"env-manager-schema-registry-api-key\",\n    description=\"Schema Registry API Key that is owned by 'env-manager' service account\",\n    owner={\n        \"id\": env_manager[\"id\"],\n        \"api_version\": env_manager[\"apiVersion\"],\n        \"kind\": env_manager[\"kind\"],\n    },\n    managed_resource={\n        \"id\": essentials[\"id\"],\n        \"api_version\": essentials[\"apiVersion\"],\n        \"kind\": essentials[\"kind\"],\n        \"environments\": [{\n            \"id\": staging[\"id\"],\n        }],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var env_manager_schema_registry_api_key = new ConfluentCloud.ApiKey(\"env-manager-schema-registry-api-key\", new()\n    {\n        DisplayName = \"env-manager-schema-registry-api-key\",\n        Description = \"Schema Registry API Key that is owned by 'env-manager' service account\",\n        Owner = new ConfluentCloud.Inputs.ApiKeyOwnerArgs\n        {\n            Id = env_manager.Id,\n            ApiVersion = env_manager.ApiVersion,\n            Kind = env_manager.Kind,\n        },\n        ManagedResource = new ConfluentCloud.Inputs.ApiKeyManagedResourceArgs\n        {\n            Id = essentials.Id,\n            ApiVersion = essentials.ApiVersion,\n            Kind = essentials.Kind,\n            Environments = new[]\n            {\n                \n                {\n                    { \"id\", staging.Id },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewApiKey(ctx, \"env-manager-schema-registry-api-key\", \u0026confluentcloud.ApiKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"env-manager-schema-registry-api-key\"),\n\t\t\tDescription: pulumi.String(\"Schema Registry API Key that is owned by 'env-manager' service account\"),\n\t\t\tOwner: \u0026confluentcloud.ApiKeyOwnerArgs{\n\t\t\t\tId:         pulumi.Any(env_manager.Id),\n\t\t\t\tApiVersion: pulumi.Any(env_manager.ApiVersion),\n\t\t\t\tKind:       pulumi.Any(env_manager.Kind),\n\t\t\t},\n\t\t\tManagedResource: \u0026confluentcloud.ApiKeyManagedResourceArgs{\n\t\t\t\tId:         pulumi.Any(essentials.Id),\n\t\t\t\tApiVersion: pulumi.Any(essentials.ApiVersion),\n\t\t\t\tKind:       pulumi.Any(essentials.Kind),\n\t\t\t\tEnvironments: []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"id\": staging.Id,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ApiKey;\nimport com.pulumi.confluentcloud.ApiKeyArgs;\nimport com.pulumi.confluentcloud.inputs.ApiKeyOwnerArgs;\nimport com.pulumi.confluentcloud.inputs.ApiKeyManagedResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var env_manager_schema_registry_api_key = new ApiKey(\"env-manager-schema-registry-api-key\", ApiKeyArgs.builder()\n            .displayName(\"env-manager-schema-registry-api-key\")\n            .description(\"Schema Registry API Key that is owned by 'env-manager' service account\")\n            .owner(ApiKeyOwnerArgs.builder()\n                .id(env_manager.id())\n                .apiVersion(env_manager.apiVersion())\n                .kind(env_manager.kind())\n                .build())\n            .managedResource(ApiKeyManagedResourceArgs.builder()\n                .id(essentials.id())\n                .apiVersion(essentials.apiVersion())\n                .kind(essentials.kind())\n                .environments(List.of(Map.of(\"id\", staging.id())))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  env-manager-schema-registry-api-key:\n    type: confluentcloud:ApiKey\n    properties:\n      displayName: env-manager-schema-registry-api-key\n      description: Schema Registry API Key that is owned by 'env-manager' service account\n      owner:\n        id: ${[\"env-manager\"].id}\n        apiVersion: ${[\"env-manager\"].apiVersion}\n        kind: ${[\"env-manager\"].kind}\n      managedResource:\n        id: ${essentials.id}\n        apiVersion: ${essentials.apiVersion}\n        kind: ${essentials.kind}\n        environments:\n          - id: ${staging.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Flink API Key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst env_manager_flink_api_key = new confluentcloud.ApiKey(\"env-manager-flink-api-key\", {\n    displayName: \"env-manager-flink-api-key\",\n    description: \"Flink API Key that is owned by 'env-manager' service account\",\n    owner: {\n        id: env_manager.id,\n        apiVersion: env_manager.apiVersion,\n        kind: env_manager.kind,\n    },\n    managedResource: {\n        id: example.id,\n        apiVersion: example.apiVersion,\n        kind: example.kind,\n        environments: [{\n            id: staging.id,\n        }],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nenv_manager_flink_api_key = confluentcloud.ApiKey(\"env-manager-flink-api-key\",\n    display_name=\"env-manager-flink-api-key\",\n    description=\"Flink API Key that is owned by 'env-manager' service account\",\n    owner={\n        \"id\": env_manager[\"id\"],\n        \"api_version\": env_manager[\"apiVersion\"],\n        \"kind\": env_manager[\"kind\"],\n    },\n    managed_resource={\n        \"id\": example[\"id\"],\n        \"api_version\": example[\"apiVersion\"],\n        \"kind\": example[\"kind\"],\n        \"environments\": [{\n            \"id\": staging[\"id\"],\n        }],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var env_manager_flink_api_key = new ConfluentCloud.ApiKey(\"env-manager-flink-api-key\", new()\n    {\n        DisplayName = \"env-manager-flink-api-key\",\n        Description = \"Flink API Key that is owned by 'env-manager' service account\",\n        Owner = new ConfluentCloud.Inputs.ApiKeyOwnerArgs\n        {\n            Id = env_manager.Id,\n            ApiVersion = env_manager.ApiVersion,\n            Kind = env_manager.Kind,\n        },\n        ManagedResource = new ConfluentCloud.Inputs.ApiKeyManagedResourceArgs\n        {\n            Id = example.Id,\n            ApiVersion = example.ApiVersion,\n            Kind = example.Kind,\n            Environments = new[]\n            {\n                \n                {\n                    { \"id\", staging.Id },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewApiKey(ctx, \"env-manager-flink-api-key\", \u0026confluentcloud.ApiKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"env-manager-flink-api-key\"),\n\t\t\tDescription: pulumi.String(\"Flink API Key that is owned by 'env-manager' service account\"),\n\t\t\tOwner: \u0026confluentcloud.ApiKeyOwnerArgs{\n\t\t\t\tId:         pulumi.Any(env_manager.Id),\n\t\t\t\tApiVersion: pulumi.Any(env_manager.ApiVersion),\n\t\t\t\tKind:       pulumi.Any(env_manager.Kind),\n\t\t\t},\n\t\t\tManagedResource: \u0026confluentcloud.ApiKeyManagedResourceArgs{\n\t\t\t\tId:         pulumi.Any(example.Id),\n\t\t\t\tApiVersion: pulumi.Any(example.ApiVersion),\n\t\t\t\tKind:       pulumi.Any(example.Kind),\n\t\t\t\tEnvironments: []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"id\": staging.Id,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ApiKey;\nimport com.pulumi.confluentcloud.ApiKeyArgs;\nimport com.pulumi.confluentcloud.inputs.ApiKeyOwnerArgs;\nimport com.pulumi.confluentcloud.inputs.ApiKeyManagedResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var env_manager_flink_api_key = new ApiKey(\"env-manager-flink-api-key\", ApiKeyArgs.builder()\n            .displayName(\"env-manager-flink-api-key\")\n            .description(\"Flink API Key that is owned by 'env-manager' service account\")\n            .owner(ApiKeyOwnerArgs.builder()\n                .id(env_manager.id())\n                .apiVersion(env_manager.apiVersion())\n                .kind(env_manager.kind())\n                .build())\n            .managedResource(ApiKeyManagedResourceArgs.builder()\n                .id(example.id())\n                .apiVersion(example.apiVersion())\n                .kind(example.kind())\n                .environments(List.of(Map.of(\"id\", staging.id())))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  env-manager-flink-api-key:\n    type: confluentcloud:ApiKey\n    properties:\n      displayName: env-manager-flink-api-key\n      description: Flink API Key that is owned by 'env-manager' service account\n      owner:\n        id: ${[\"env-manager\"].id}\n        apiVersion: ${[\"env-manager\"].apiVersion}\n        kind: ${[\"env-manager\"].kind}\n      managedResource:\n        id: ${example.id}\n        apiVersion: ${example.apiVersion}\n        kind: ${example.kind}\n        environments:\n          - id: ${staging.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Tableflow API Key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst env_manager_tableflow_api_key = new confluentcloud.ApiKey(\"env-manager-tableflow-api-key\", {\n    displayName: \"env-manager-tableflow-api-key\",\n    description: \"Tableflow API Key that is owned by 'env-manager' service account\",\n    owner: {\n        id: env_manager.id,\n        apiVersion: env_manager.apiVersion,\n        kind: env_manager.kind,\n    },\n    managedResource: {\n        id: \"tableflow\",\n        apiVersion: \"tableflow/v1\",\n        kind: \"Tableflow\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nenv_manager_tableflow_api_key = confluentcloud.ApiKey(\"env-manager-tableflow-api-key\",\n    display_name=\"env-manager-tableflow-api-key\",\n    description=\"Tableflow API Key that is owned by 'env-manager' service account\",\n    owner={\n        \"id\": env_manager[\"id\"],\n        \"api_version\": env_manager[\"apiVersion\"],\n        \"kind\": env_manager[\"kind\"],\n    },\n    managed_resource={\n        \"id\": \"tableflow\",\n        \"api_version\": \"tableflow/v1\",\n        \"kind\": \"Tableflow\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var env_manager_tableflow_api_key = new ConfluentCloud.ApiKey(\"env-manager-tableflow-api-key\", new()\n    {\n        DisplayName = \"env-manager-tableflow-api-key\",\n        Description = \"Tableflow API Key that is owned by 'env-manager' service account\",\n        Owner = new ConfluentCloud.Inputs.ApiKeyOwnerArgs\n        {\n            Id = env_manager.Id,\n            ApiVersion = env_manager.ApiVersion,\n            Kind = env_manager.Kind,\n        },\n        ManagedResource = new ConfluentCloud.Inputs.ApiKeyManagedResourceArgs\n        {\n            Id = \"tableflow\",\n            ApiVersion = \"tableflow/v1\",\n            Kind = \"Tableflow\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewApiKey(ctx, \"env-manager-tableflow-api-key\", \u0026confluentcloud.ApiKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"env-manager-tableflow-api-key\"),\n\t\t\tDescription: pulumi.String(\"Tableflow API Key that is owned by 'env-manager' service account\"),\n\t\t\tOwner: \u0026confluentcloud.ApiKeyOwnerArgs{\n\t\t\t\tId:         pulumi.Any(env_manager.Id),\n\t\t\t\tApiVersion: pulumi.Any(env_manager.ApiVersion),\n\t\t\t\tKind:       pulumi.Any(env_manager.Kind),\n\t\t\t},\n\t\t\tManagedResource: \u0026confluentcloud.ApiKeyManagedResourceArgs{\n\t\t\t\tId:         pulumi.String(\"tableflow\"),\n\t\t\t\tApiVersion: pulumi.String(\"tableflow/v1\"),\n\t\t\t\tKind:       pulumi.String(\"Tableflow\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ApiKey;\nimport com.pulumi.confluentcloud.ApiKeyArgs;\nimport com.pulumi.confluentcloud.inputs.ApiKeyOwnerArgs;\nimport com.pulumi.confluentcloud.inputs.ApiKeyManagedResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var env_manager_tableflow_api_key = new ApiKey(\"env-manager-tableflow-api-key\", ApiKeyArgs.builder()\n            .displayName(\"env-manager-tableflow-api-key\")\n            .description(\"Tableflow API Key that is owned by 'env-manager' service account\")\n            .owner(ApiKeyOwnerArgs.builder()\n                .id(env_manager.id())\n                .apiVersion(env_manager.apiVersion())\n                .kind(env_manager.kind())\n                .build())\n            .managedResource(ApiKeyManagedResourceArgs.builder()\n                .id(\"tableflow\")\n                .apiVersion(\"tableflow/v1\")\n                .kind(\"Tableflow\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  env-manager-tableflow-api-key:\n    type: confluentcloud:ApiKey\n    properties:\n      displayName: env-manager-tableflow-api-key\n      description: Tableflow API Key that is owned by 'env-manager' service account\n      owner:\n        id: ${[\"env-manager\"].id}\n        apiVersion: ${[\"env-manager\"].apiVersion}\n        kind: ${[\"env-manager\"].kind}\n      managedResource:\n        id: tableflow\n        apiVersion: tableflow/v1\n        kind: Tableflow\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Cloud API Key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst env_manager_cloud_api_key = new confluentcloud.ApiKey(\"env-manager-cloud-api-key\", {\n    displayName: \"env-manager-cloud-api-key\",\n    description: \"Cloud API Key that is owned by 'env-manager' service account\",\n    owner: {\n        id: env_manager.id,\n        apiVersion: env_manager.apiVersion,\n        kind: env_manager.kind,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nenv_manager_cloud_api_key = confluentcloud.ApiKey(\"env-manager-cloud-api-key\",\n    display_name=\"env-manager-cloud-api-key\",\n    description=\"Cloud API Key that is owned by 'env-manager' service account\",\n    owner={\n        \"id\": env_manager[\"id\"],\n        \"api_version\": env_manager[\"apiVersion\"],\n        \"kind\": env_manager[\"kind\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var env_manager_cloud_api_key = new ConfluentCloud.ApiKey(\"env-manager-cloud-api-key\", new()\n    {\n        DisplayName = \"env-manager-cloud-api-key\",\n        Description = \"Cloud API Key that is owned by 'env-manager' service account\",\n        Owner = new ConfluentCloud.Inputs.ApiKeyOwnerArgs\n        {\n            Id = env_manager.Id,\n            ApiVersion = env_manager.ApiVersion,\n            Kind = env_manager.Kind,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewApiKey(ctx, \"env-manager-cloud-api-key\", \u0026confluentcloud.ApiKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"env-manager-cloud-api-key\"),\n\t\t\tDescription: pulumi.String(\"Cloud API Key that is owned by 'env-manager' service account\"),\n\t\t\tOwner: \u0026confluentcloud.ApiKeyOwnerArgs{\n\t\t\t\tId:         pulumi.Any(env_manager.Id),\n\t\t\t\tApiVersion: pulumi.Any(env_manager.ApiVersion),\n\t\t\t\tKind:       pulumi.Any(env_manager.Kind),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ApiKey;\nimport com.pulumi.confluentcloud.ApiKeyArgs;\nimport com.pulumi.confluentcloud.inputs.ApiKeyOwnerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var env_manager_cloud_api_key = new ApiKey(\"env-manager-cloud-api-key\", ApiKeyArgs.builder()\n            .displayName(\"env-manager-cloud-api-key\")\n            .description(\"Cloud API Key that is owned by 'env-manager' service account\")\n            .owner(ApiKeyOwnerArgs.builder()\n                .id(env_manager.id())\n                .apiVersion(env_manager.apiVersion())\n                .kind(env_manager.kind())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  env-manager-cloud-api-key:\n    type: confluentcloud:ApiKey\n    properties:\n      displayName: env-manager-cloud-api-key\n      description: Cloud API Key that is owned by 'env-manager' service account\n      owner:\n        id: ${[\"env-manager\"].id}\n        apiVersion: ${[\"env-manager\"].apiVersion}\n        kind: ${[\"env-manager\"].kind}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ApiKey`\" pulumi-lang-dotnet=\"`confluentcloud.ApiKey`\" pulumi-lang-go=\"`ApiKey`\" pulumi-lang-python=\"`ApiKey`\" pulumi-lang-yaml=\"`confluentcloud.ApiKey`\" pulumi-lang-java=\"`confluentcloud.ApiKey`\"\u003e`confluentcloud.ApiKey`\u003c/span\u003e resource:\n  * basic-kafka-acls: _Basic_ Kafka cluster with authorization using ACLs\n  * basic-kafka-acls-with-alias: _Basic_ Kafka cluster with authorization using ACLs\n  * standard-kafka-acls: _Standard_ Kafka cluster with authorization using ACLs\n  * standard-kafka-rbac: _Standard_ Kafka cluster with authorization using RBAC\n  * dedicated-public-kafka-acls: _Dedicated_ Kafka cluster that is accessible over the public internet with authorization using ACLs\n  * dedicated-public-kafka-rbac: _Dedicated_ Kafka cluster that is accessible over the public internet with authorization using RBAC\n  * dedicated-privatelink-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-privatelink-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using RBAC\n  * dedicated-vnet-peering-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vnet-peering-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-transit-gateway-attachment-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using ACLs\n  * dedicated-transit-gateway-attachment-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using RBAC\n  * enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n\n## Import\n\n\u003e **Note:** You must set the `API_KEY_SECRET` (\u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e) environment variable before importing an API Key.\n\nYou can import a Cluster API Key by using the Environment ID and Cluster API Key ID in the format `\u003cEnvironment ID\u003e/\u003cCluster API Key ID\u003e`, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ export API_KEY_SECRET=\"\u003capi_key_secret\u003e\"\n```\n\nOption #1: Cluster API Key\n\n```sh\n$ pulumi import confluentcloud:index/apiKey:ApiKey example_kafka_api_key \"env-abc123/UTT6WDRXX7FHD2GV\"\n```\n\nYou can import a Cloud or Tableflow API Key by using Cloud or Tableflow API Key ID, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ export API_KEY_SECRET=\"\u003capi_key_secret\u003e\"\n```\n\nOption #2: Cloud or Tableflow API Key\n\n```sh\n$ pulumi import confluentcloud:index/apiKey:ApiKey example_cloud_api_key \"4UEXOMMWIBE5KZQG\"\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"description":{"type":"string","description":"A free-form description of the API Account.\n"},"disableWaitForReady":{"type":"boolean","description":"An optional flag to disable wait-for-readiness on create. Its primary use case is for Cluster API Keys for private networking options when readiness check fails. Must be unset when importing. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"displayName":{"type":"string","description":"A human-readable name for the API Key.\n"},"managedResource":{"$ref":"#/types/confluentcloud:index/ApiKeyManagedResource:ApiKeyManagedResource","description":"The resource associated with this object. The only resource that is supported is 'cmk.v2.Cluster', 'srcm.v2.Cluster', 'srcm.v3.Cluster'."},"owner":{"$ref":"#/types/confluentcloud:index/ApiKeyOwner:ApiKeyOwner","description":"The owner to which the API Key belongs. The owner can be one of 'iam.v2.User', 'iam.v2.ServiceAccount'."},"secret":{"type":"string","description":"(Required String, Sensitive) The secret of the API Key.\n","secret":true}},"required":["displayName","owner","secret"],"inputProperties":{"description":{"type":"string","description":"A free-form description of the API Account.\n"},"disableWaitForReady":{"type":"boolean","description":"An optional flag to disable wait-for-readiness on create. Its primary use case is for Cluster API Keys for private networking options when readiness check fails. Must be unset when importing. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"displayName":{"type":"string","description":"A human-readable name for the API Key.\n"},"managedResource":{"$ref":"#/types/confluentcloud:index/ApiKeyManagedResource:ApiKeyManagedResource","description":"The resource associated with this object. The only resource that is supported is 'cmk.v2.Cluster', 'srcm.v2.Cluster', 'srcm.v3.Cluster'.","willReplaceOnChanges":true},"owner":{"$ref":"#/types/confluentcloud:index/ApiKeyOwner:ApiKeyOwner","description":"The owner to which the API Key belongs. The owner can be one of 'iam.v2.User', 'iam.v2.ServiceAccount'.","willReplaceOnChanges":true}},"requiredInputs":["owner"],"stateInputs":{"description":"Input properties used for looking up and filtering ApiKey resources.\n","properties":{"description":{"type":"string","description":"A free-form description of the API Account.\n"},"disableWaitForReady":{"type":"boolean","description":"An optional flag to disable wait-for-readiness on create. Its primary use case is for Cluster API Keys for private networking options when readiness check fails. Must be unset when importing. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"displayName":{"type":"string","description":"A human-readable name for the API Key.\n"},"managedResource":{"$ref":"#/types/confluentcloud:index/ApiKeyManagedResource:ApiKeyManagedResource","description":"The resource associated with this object. The only resource that is supported is 'cmk.v2.Cluster', 'srcm.v2.Cluster', 'srcm.v3.Cluster'.","willReplaceOnChanges":true},"owner":{"$ref":"#/types/confluentcloud:index/ApiKeyOwner:ApiKeyOwner","description":"The owner to which the API Key belongs. The owner can be one of 'iam.v2.User', 'iam.v2.ServiceAccount'.","willReplaceOnChanges":true},"secret":{"type":"string","description":"(Required String, Sensitive) The secret of the API Key.\n","secret":true}},"type":"object"}},"confluentcloud:index/businessMetadata:BusinessMetadata":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.BusinessMetadata`\" pulumi-lang-dotnet=\"`confluentcloud.BusinessMetadata`\" pulumi-lang-go=\"`BusinessMetadata`\" pulumi-lang-python=\"`BusinessMetadata`\" pulumi-lang-yaml=\"`confluentcloud.BusinessMetadata`\" pulumi-lang-java=\"`confluentcloud.BusinessMetadata`\"\u003e`confluentcloud.BusinessMetadata`\u003c/span\u003e provides a Business Metadata resource that enables creating, editing, and deleting Business Metadata on Confluent Cloud.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst pii = new confluentcloud.BusinessMetadata(\"pii\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name: \"PII\",\n    description: \"PII metadata\",\n    attributeDefinitions: [\n        {\n            name: \"team\",\n        },\n        {\n            name: \"email\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npii = confluentcloud.BusinessMetadata(\"pii\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name=\"PII\",\n    description=\"PII metadata\",\n    attribute_definitions=[\n        {\n            \"name\": \"team\",\n        },\n        {\n            \"name\": \"email\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pii = new ConfluentCloud.BusinessMetadata(\"pii\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.BusinessMetadataSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.BusinessMetadataCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        Name = \"PII\",\n        Description = \"PII metadata\",\n        AttributeDefinitions = new[]\n        {\n            new ConfluentCloud.Inputs.BusinessMetadataAttributeDefinitionArgs\n            {\n                Name = \"team\",\n            },\n            new ConfluentCloud.Inputs.BusinessMetadataAttributeDefinitionArgs\n            {\n                Name = \"email\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewBusinessMetadata(ctx, \"pii\", \u0026confluentcloud.BusinessMetadataArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.BusinessMetadataSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.BusinessMetadataCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t\tName:        pulumi.String(\"PII\"),\n\t\t\tDescription: pulumi.String(\"PII metadata\"),\n\t\t\tAttributeDefinitions: confluentcloud.BusinessMetadataAttributeDefinitionArray{\n\t\t\t\t\u0026confluentcloud.BusinessMetadataAttributeDefinitionArgs{\n\t\t\t\t\tName: pulumi.String(\"team\"),\n\t\t\t\t},\n\t\t\t\t\u0026confluentcloud.BusinessMetadataAttributeDefinitionArgs{\n\t\t\t\t\tName: pulumi.String(\"email\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.BusinessMetadata;\nimport com.pulumi.confluentcloud.BusinessMetadataArgs;\nimport com.pulumi.confluentcloud.inputs.BusinessMetadataSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.BusinessMetadataCredentialsArgs;\nimport com.pulumi.confluentcloud.inputs.BusinessMetadataAttributeDefinitionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var pii = new BusinessMetadata(\"pii\", BusinessMetadataArgs.builder()\n            .schemaRegistryCluster(BusinessMetadataSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(BusinessMetadataCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .name(\"PII\")\n            .description(\"PII metadata\")\n            .attributeDefinitions(            \n                BusinessMetadataAttributeDefinitionArgs.builder()\n                    .name(\"team\")\n                    .build(),\n                BusinessMetadataAttributeDefinitionArgs.builder()\n                    .name(\"email\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pii:\n    type: confluentcloud:BusinessMetadata\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n      name: PII\n      description: PII metadata\n      attributeDefinitions:\n        - name: team\n        - name: email\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst pii = new confluentcloud.BusinessMetadata(\"pii\", {\n    name: \"PII\",\n    description: \"PII metadata\",\n    attributeDefinitions: [\n        {\n            name: \"team\",\n        },\n        {\n            name: \"email\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npii = confluentcloud.BusinessMetadata(\"pii\",\n    name=\"PII\",\n    description=\"PII metadata\",\n    attribute_definitions=[\n        {\n            \"name\": \"team\",\n        },\n        {\n            \"name\": \"email\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pii = new ConfluentCloud.BusinessMetadata(\"pii\", new()\n    {\n        Name = \"PII\",\n        Description = \"PII metadata\",\n        AttributeDefinitions = new[]\n        {\n            new ConfluentCloud.Inputs.BusinessMetadataAttributeDefinitionArgs\n            {\n                Name = \"team\",\n            },\n            new ConfluentCloud.Inputs.BusinessMetadataAttributeDefinitionArgs\n            {\n                Name = \"email\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewBusinessMetadata(ctx, \"pii\", \u0026confluentcloud.BusinessMetadataArgs{\n\t\t\tName:        pulumi.String(\"PII\"),\n\t\t\tDescription: pulumi.String(\"PII metadata\"),\n\t\t\tAttributeDefinitions: confluentcloud.BusinessMetadataAttributeDefinitionArray{\n\t\t\t\t\u0026confluentcloud.BusinessMetadataAttributeDefinitionArgs{\n\t\t\t\t\tName: pulumi.String(\"team\"),\n\t\t\t\t},\n\t\t\t\t\u0026confluentcloud.BusinessMetadataAttributeDefinitionArgs{\n\t\t\t\t\tName: pulumi.String(\"email\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.BusinessMetadata;\nimport com.pulumi.confluentcloud.BusinessMetadataArgs;\nimport com.pulumi.confluentcloud.inputs.BusinessMetadataAttributeDefinitionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var pii = new BusinessMetadata(\"pii\", BusinessMetadataArgs.builder()\n            .name(\"PII\")\n            .description(\"PII metadata\")\n            .attributeDefinitions(            \n                BusinessMetadataAttributeDefinitionArgs.builder()\n                    .name(\"team\")\n                    .build(),\n                BusinessMetadataAttributeDefinitionArgs.builder()\n                    .name(\"email\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pii:\n    type: confluentcloud:BusinessMetadata\n    properties:\n      name: PII\n      description: PII metadata\n      attributeDefinitions:\n        - name: team\n        - name: email\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\u003e **Note:** We also support \u003cspan pulumi-lang-nodejs=\"`schemaRegistryRestEndpoint`\" pulumi-lang-dotnet=\"`SchemaRegistryRestEndpoint`\" pulumi-lang-go=\"`schemaRegistryRestEndpoint`\" pulumi-lang-python=\"`schema_registry_rest_endpoint`\" pulumi-lang-yaml=\"`schemaRegistryRestEndpoint`\" pulumi-lang-java=\"`schemaRegistryRestEndpoint`\"\u003e`schema_registry_rest_endpoint`\u003c/span\u003e instead of \u003cspan pulumi-lang-nodejs=\"`catalogRestEndpoint`\" pulumi-lang-dotnet=\"`CatalogRestEndpoint`\" pulumi-lang-go=\"`catalogRestEndpoint`\" pulumi-lang-python=\"`catalog_rest_endpoint`\" pulumi-lang-yaml=\"`catalogRestEndpoint`\" pulumi-lang-java=\"`catalogRestEndpoint`\"\u003e`catalog_rest_endpoint`\u003c/span\u003e for the time being.\n\n\n## Getting Started\n\nThe following end-to-end example might help to get started with [Stream Catalog](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog.html):\n* stream-catalog\n\n## Import\n\nYou can import a Business Metadata by using the Schema Registry cluster ID, Business Metadata name in the format `\u003cSchema Registry cluster ID\u003e/\u003cBusiness Metadata name\u003e`, for example:\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_CATALOG_REST_ENDPOINT=\"\u003ccatalog_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/businessMetadata:BusinessMetadata pii lsrc-8wrx70/PII\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"attributeDefinitions":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/BusinessMetadataAttributeDefinition:BusinessMetadataAttributeDefinition"},"description":"The list of attribute definitions (see [Business Metadata](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog.html#business-metadata-for-schemas) for more details):\n"},"credentials":{"$ref":"#/types/confluentcloud:index/BusinessMetadataCredentials:BusinessMetadataCredentials","description":"The Cluster API Credentials.","secret":true},"description":{"type":"string","description":"The description of the Business Metadata.\n"},"name":{"type":"string","description":"The name of the Business Metadata, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/BusinessMetadataSchemaRegistryCluster:BusinessMetadataSchemaRegistryCluster"},"version":{"type":"integer","description":"(Required Integer) The version of the Business Metadata, for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n"}},"required":["attributeDefinitions","name","version"],"inputProperties":{"attributeDefinitions":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/BusinessMetadataAttributeDefinition:BusinessMetadataAttributeDefinition"},"description":"The list of attribute definitions (see [Business Metadata](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog.html#business-metadata-for-schemas) for more details):\n"},"credentials":{"$ref":"#/types/confluentcloud:index/BusinessMetadataCredentials:BusinessMetadataCredentials","description":"The Cluster API Credentials.","secret":true},"description":{"type":"string","description":"The description of the Business Metadata.\n"},"name":{"type":"string","description":"The name of the Business Metadata, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/BusinessMetadataSchemaRegistryCluster:BusinessMetadataSchemaRegistryCluster","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering BusinessMetadata resources.\n","properties":{"attributeDefinitions":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/BusinessMetadataAttributeDefinition:BusinessMetadataAttributeDefinition"},"description":"The list of attribute definitions (see [Business Metadata](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog.html#business-metadata-for-schemas) for more details):\n"},"credentials":{"$ref":"#/types/confluentcloud:index/BusinessMetadataCredentials:BusinessMetadataCredentials","description":"The Cluster API Credentials.","secret":true},"description":{"type":"string","description":"The description of the Business Metadata.\n"},"name":{"type":"string","description":"The name of the Business Metadata, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/BusinessMetadataSchemaRegistryCluster:BusinessMetadataSchemaRegistryCluster","willReplaceOnChanges":true},"version":{"type":"integer","description":"(Required Integer) The version of the Business Metadata, for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n"}},"type":"object"}},"confluentcloud:index/businessMetadataBinding:BusinessMetadataBinding":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-dotnet=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-go=\"`BusinessMetadataBinding`\" pulumi-lang-python=\"`BusinessMetadataBinding`\" pulumi-lang-yaml=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-java=\"`confluentcloud.BusinessMetadataBinding`\"\u003e`confluentcloud.BusinessMetadataBinding`\u003c/span\u003e provides a Business Metadata Binding resource that enables creating, editing, and deleting Business Metadata Bindings on Confluent Cloud.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getKafkaTopic({\n    topicName: \"orders\",\n});\nconst mainBusinessMetadataBinding = new confluentcloud.BusinessMetadataBinding(\"main\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    businessMetadataName: pii.name,\n    entityName: main.then(main =\u003e `${schemaRegistryId}:${kafkaId}:${main.topicName}`),\n    entityType: \"kafka_topic\",\n    attributes: {\n        team: \"teamName\",\n        email: \"team@company.com\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_kafka_topic(topic_name=\"orders\")\nmain_business_metadata_binding = confluentcloud.BusinessMetadataBinding(\"main\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    business_metadata_name=pii[\"name\"],\n    entity_name=f\"{schema_registry_id}:{kafka_id}:{main.topic_name}\",\n    entity_type=\"kafka_topic\",\n    attributes={\n        \"team\": \"teamName\",\n        \"email\": \"team@company.com\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetKafkaTopic.Invoke(new()\n    {\n        TopicName = \"orders\",\n    });\n\n    var mainBusinessMetadataBinding = new ConfluentCloud.BusinessMetadataBinding(\"main\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.BusinessMetadataBindingSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.BusinessMetadataBindingCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        BusinessMetadataName = pii.Name,\n        EntityName = $\"{schemaRegistryId}:{kafkaId}:{main.Apply(getKafkaTopicResult =\u003e getKafkaTopicResult.TopicName)}\",\n        EntityType = \"kafka_topic\",\n        Attributes = \n        {\n            { \"team\", \"teamName\" },\n            { \"email\", \"team@company.com\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupKafkaTopic(ctx, \u0026confluentcloud.LookupKafkaTopicArgs{\n\t\t\tTopicName: \"orders\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewBusinessMetadataBinding(ctx, \"main\", \u0026confluentcloud.BusinessMetadataBindingArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.BusinessMetadataBindingSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.BusinessMetadataBindingCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t\tBusinessMetadataName: pulumi.Any(pii.Name),\n\t\t\tEntityName:           pulumi.Sprintf(\"%v:%v:%v\", schemaRegistryId, kafkaId, main.TopicName),\n\t\t\tEntityType:           pulumi.String(\"kafka_topic\"),\n\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\"team\":  pulumi.String(\"teamName\"),\n\t\t\t\t\"email\": pulumi.String(\"team@company.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetKafkaTopicArgs;\nimport com.pulumi.confluentcloud.BusinessMetadataBinding;\nimport com.pulumi.confluentcloud.BusinessMetadataBindingArgs;\nimport com.pulumi.confluentcloud.inputs.BusinessMetadataBindingSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.BusinessMetadataBindingCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getKafkaTopic(GetKafkaTopicArgs.builder()\n            .topicName(\"orders\")\n            .build());\n\n        var mainBusinessMetadataBinding = new BusinessMetadataBinding(\"mainBusinessMetadataBinding\", BusinessMetadataBindingArgs.builder()\n            .schemaRegistryCluster(BusinessMetadataBindingSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(BusinessMetadataBindingCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .businessMetadataName(pii.name())\n            .entityName(String.format(\"%s:%s:%s\", schemaRegistryId,kafkaId,main.topicName()))\n            .entityType(\"kafka_topic\")\n            .attributes(Map.ofEntries(\n                Map.entry(\"team\", \"teamName\"),\n                Map.entry(\"email\", \"team@company.com\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mainBusinessMetadataBinding:\n    type: confluentcloud:BusinessMetadataBinding\n    name: main\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n      businessMetadataName: ${pii.name}\n      entityName: ${schemaRegistryId}:${kafkaId}:${main.topicName}\n      entityType: kafka_topic\n      attributes:\n        team: teamName\n        email: team@company.com\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getKafkaTopic\n      arguments:\n        topicName: orders\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getKafkaTopic({\n    topicName: \"orders\",\n});\nconst mainBusinessMetadataBinding = new confluentcloud.BusinessMetadataBinding(\"main\", {\n    businessMetadataName: pii.name,\n    entityName: main.then(main =\u003e `${schemaRegistryId}:${kafkaId}:${main.topicName}`),\n    entityType: \"kafka_topic\",\n    attributes: {\n        team: \"teamName\",\n        email: \"team@company.com\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_kafka_topic(topic_name=\"orders\")\nmain_business_metadata_binding = confluentcloud.BusinessMetadataBinding(\"main\",\n    business_metadata_name=pii[\"name\"],\n    entity_name=f\"{schema_registry_id}:{kafka_id}:{main.topic_name}\",\n    entity_type=\"kafka_topic\",\n    attributes={\n        \"team\": \"teamName\",\n        \"email\": \"team@company.com\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetKafkaTopic.Invoke(new()\n    {\n        TopicName = \"orders\",\n    });\n\n    var mainBusinessMetadataBinding = new ConfluentCloud.BusinessMetadataBinding(\"main\", new()\n    {\n        BusinessMetadataName = pii.Name,\n        EntityName = $\"{schemaRegistryId}:{kafkaId}:{main.Apply(getKafkaTopicResult =\u003e getKafkaTopicResult.TopicName)}\",\n        EntityType = \"kafka_topic\",\n        Attributes = \n        {\n            { \"team\", \"teamName\" },\n            { \"email\", \"team@company.com\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupKafkaTopic(ctx, \u0026confluentcloud.LookupKafkaTopicArgs{\n\t\t\tTopicName: \"orders\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewBusinessMetadataBinding(ctx, \"main\", \u0026confluentcloud.BusinessMetadataBindingArgs{\n\t\t\tBusinessMetadataName: pulumi.Any(pii.Name),\n\t\t\tEntityName:           pulumi.Sprintf(\"%v:%v:%v\", schemaRegistryId, kafkaId, main.TopicName),\n\t\t\tEntityType:           pulumi.String(\"kafka_topic\"),\n\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\"team\":  pulumi.String(\"teamName\"),\n\t\t\t\t\"email\": pulumi.String(\"team@company.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetKafkaTopicArgs;\nimport com.pulumi.confluentcloud.BusinessMetadataBinding;\nimport com.pulumi.confluentcloud.BusinessMetadataBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getKafkaTopic(GetKafkaTopicArgs.builder()\n            .topicName(\"orders\")\n            .build());\n\n        var mainBusinessMetadataBinding = new BusinessMetadataBinding(\"mainBusinessMetadataBinding\", BusinessMetadataBindingArgs.builder()\n            .businessMetadataName(pii.name())\n            .entityName(String.format(\"%s:%s:%s\", schemaRegistryId,kafkaId,main.topicName()))\n            .entityType(\"kafka_topic\")\n            .attributes(Map.ofEntries(\n                Map.entry(\"team\", \"teamName\"),\n                Map.entry(\"email\", \"team@company.com\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mainBusinessMetadataBinding:\n    type: confluentcloud:BusinessMetadataBinding\n    name: main\n    properties:\n      businessMetadataName: ${pii.name}\n      entityName: ${schemaRegistryId}:${kafkaId}:${main.topicName}\n      entityType: kafka_topic\n      attributes:\n        team: teamName\n        email: team@company.com\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getKafkaTopic\n      arguments:\n        topicName: orders\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\u003e **Note:** We also support \u003cspan pulumi-lang-nodejs=\"`schemaRegistryRestEndpoint`\" pulumi-lang-dotnet=\"`SchemaRegistryRestEndpoint`\" pulumi-lang-go=\"`schemaRegistryRestEndpoint`\" pulumi-lang-python=\"`schema_registry_rest_endpoint`\" pulumi-lang-yaml=\"`schemaRegistryRestEndpoint`\" pulumi-lang-java=\"`schemaRegistryRestEndpoint`\"\u003e`schema_registry_rest_endpoint`\u003c/span\u003e instead of \u003cspan pulumi-lang-nodejs=\"`catalogRestEndpoint`\" pulumi-lang-dotnet=\"`CatalogRestEndpoint`\" pulumi-lang-go=\"`catalogRestEndpoint`\" pulumi-lang-python=\"`catalog_rest_endpoint`\" pulumi-lang-yaml=\"`catalogRestEndpoint`\" pulumi-lang-java=\"`catalogRestEndpoint`\"\u003e`catalog_rest_endpoint`\u003c/span\u003e for the time being.\n\n\n## Getting Started\n\nThe following end-to-end example might help to get started with [Stream Catalog](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog.html):\n* stream-catalog\n\n## Import\n\nYou can import a Business Metadata Binding by using the Schema Registry cluster ID, Business Metadata name, entity name and entity type in the format `\u003cSchema Registry Cluster Id\u003e/\u003cBusiness Metadata Name\u003e/\u003cEntity Name\u003e/\u003cEntity Type\u003e`, for example:\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_CATALOG_REST_ENDPOINT=\"\u003ccatalog_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/businessMetadataBinding:BusinessMetadataBinding main lsrc-8wrx70/PII/lsrc-8wrx70:.:100001/sr_schema\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"The block of key-value pair attributes.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_business_metadata_binding.main\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_business_metadata_binding.main\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-dotnet=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-go=\"`BusinessMetadataBinding`\" pulumi-lang-python=\"`BusinessMetadataBinding`\" pulumi-lang-yaml=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-java=\"`confluentcloud.BusinessMetadataBinding`\"\u003e`confluentcloud.BusinessMetadataBinding`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"businessMetadataName":{"type":"string","description":"The name of the Business Metadata to be applied, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/BusinessMetadataBindingCredentials:BusinessMetadataBindingCredentials","description":"The Cluster API Credentials.","secret":true},"entityName":{"type":"string","description":"The qualified name of the entity, for example, `${data.confluent_schema_registry_cluster.essentials.id}:.:${confluent_schema.purchase.schema_identifier}`, `${data.confluent_schema_registry_cluster.essentials.id}:${confluent_kafka_cluster.basic.id}:${confluent_kafka_topic.purchase.topic_name}`. Refer to the [Examples of qualified names](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#examples-of-qualified-names) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityName`\" pulumi-lang-dotnet=\"`EntityName`\" pulumi-lang-go=\"`entityName`\" pulumi-lang-python=\"`entity_name`\" pulumi-lang-yaml=\"`entityName`\" pulumi-lang-java=\"`entityName`\"\u003e`entity_name`\u003c/span\u003e attribute.\n"},"entityType":{"type":"string","description":"The entity type, for example, \u003cspan pulumi-lang-nodejs=\"`srSchema`\" pulumi-lang-dotnet=\"`SrSchema`\" pulumi-lang-go=\"`srSchema`\" pulumi-lang-python=\"`sr_schema`\" pulumi-lang-yaml=\"`srSchema`\" pulumi-lang-java=\"`srSchema`\"\u003e`sr_schema`\u003c/span\u003e. Refer to the [Entity types](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#entity-types) to learn more about entity types.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/BusinessMetadataBindingSchemaRegistryCluster:BusinessMetadataBindingSchemaRegistryCluster"}},"required":["attributes","businessMetadataName","entityName","entityType"],"inputProperties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"The block of key-value pair attributes.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_business_metadata_binding.main\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_business_metadata_binding.main\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-dotnet=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-go=\"`BusinessMetadataBinding`\" pulumi-lang-python=\"`BusinessMetadataBinding`\" pulumi-lang-yaml=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-java=\"`confluentcloud.BusinessMetadataBinding`\"\u003e`confluentcloud.BusinessMetadataBinding`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"businessMetadataName":{"type":"string","description":"The name of the Business Metadata to be applied, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n","willReplaceOnChanges":true},"credentials":{"$ref":"#/types/confluentcloud:index/BusinessMetadataBindingCredentials:BusinessMetadataBindingCredentials","description":"The Cluster API Credentials.","secret":true},"entityName":{"type":"string","description":"The qualified name of the entity, for example, `${data.confluent_schema_registry_cluster.essentials.id}:.:${confluent_schema.purchase.schema_identifier}`, `${data.confluent_schema_registry_cluster.essentials.id}:${confluent_kafka_cluster.basic.id}:${confluent_kafka_topic.purchase.topic_name}`. Refer to the [Examples of qualified names](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#examples-of-qualified-names) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityName`\" pulumi-lang-dotnet=\"`EntityName`\" pulumi-lang-go=\"`entityName`\" pulumi-lang-python=\"`entity_name`\" pulumi-lang-yaml=\"`entityName`\" pulumi-lang-java=\"`entityName`\"\u003e`entity_name`\u003c/span\u003e attribute.\n"},"entityType":{"type":"string","description":"The entity type, for example, \u003cspan pulumi-lang-nodejs=\"`srSchema`\" pulumi-lang-dotnet=\"`SrSchema`\" pulumi-lang-go=\"`srSchema`\" pulumi-lang-python=\"`sr_schema`\" pulumi-lang-yaml=\"`srSchema`\" pulumi-lang-java=\"`srSchema`\"\u003e`sr_schema`\u003c/span\u003e. Refer to the [Entity types](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#entity-types) to learn more about entity types.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/BusinessMetadataBindingSchemaRegistryCluster:BusinessMetadataBindingSchemaRegistryCluster","willReplaceOnChanges":true}},"requiredInputs":["businessMetadataName","entityName","entityType"],"stateInputs":{"description":"Input properties used for looking up and filtering BusinessMetadataBinding resources.\n","properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"The block of key-value pair attributes.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_business_metadata_binding.main\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_business_metadata_binding.main\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-dotnet=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-go=\"`BusinessMetadataBinding`\" pulumi-lang-python=\"`BusinessMetadataBinding`\" pulumi-lang-yaml=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-java=\"`confluentcloud.BusinessMetadataBinding`\"\u003e`confluentcloud.BusinessMetadataBinding`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"businessMetadataName":{"type":"string","description":"The name of the Business Metadata to be applied, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n","willReplaceOnChanges":true},"credentials":{"$ref":"#/types/confluentcloud:index/BusinessMetadataBindingCredentials:BusinessMetadataBindingCredentials","description":"The Cluster API Credentials.","secret":true},"entityName":{"type":"string","description":"The qualified name of the entity, for example, `${data.confluent_schema_registry_cluster.essentials.id}:.:${confluent_schema.purchase.schema_identifier}`, `${data.confluent_schema_registry_cluster.essentials.id}:${confluent_kafka_cluster.basic.id}:${confluent_kafka_topic.purchase.topic_name}`. Refer to the [Examples of qualified names](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#examples-of-qualified-names) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityName`\" pulumi-lang-dotnet=\"`EntityName`\" pulumi-lang-go=\"`entityName`\" pulumi-lang-python=\"`entity_name`\" pulumi-lang-yaml=\"`entityName`\" pulumi-lang-java=\"`entityName`\"\u003e`entity_name`\u003c/span\u003e attribute.\n"},"entityType":{"type":"string","description":"The entity type, for example, \u003cspan pulumi-lang-nodejs=\"`srSchema`\" pulumi-lang-dotnet=\"`SrSchema`\" pulumi-lang-go=\"`srSchema`\" pulumi-lang-python=\"`sr_schema`\" pulumi-lang-yaml=\"`srSchema`\" pulumi-lang-java=\"`srSchema`\"\u003e`sr_schema`\u003c/span\u003e. Refer to the [Entity types](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#entity-types) to learn more about entity types.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/BusinessMetadataBindingSchemaRegistryCluster:BusinessMetadataBindingSchemaRegistryCluster","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/byokKey:ByokKey":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ByokKey`\" pulumi-lang-dotnet=\"`confluentcloud.ByokKey`\" pulumi-lang-go=\"`ByokKey`\" pulumi-lang-python=\"`ByokKey`\" pulumi-lang-yaml=\"`confluentcloud.ByokKey`\" pulumi-lang-java=\"`confluentcloud.ByokKey`\"\u003e`confluentcloud.ByokKey`\u003c/span\u003e provides a BYOK Key resource that enables creating, editing, and deleting BYOK Key on Confluent Cloud.\n\n## Example Usage\n\n### Example BYOK Key on Azure\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst azureKey = new confluentcloud.ByokKey(\"azure_key\", {azure: {\n    tenantId: \"11111111-1111-1111-1111-111111111111\",\n    keyVaultId: \"/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/test-vault/providers/Microsoft.KeyVault/vaults/test-vault\",\n    keyIdentifier: \"https://test-vault.vault.azure.net/keys/test-key\",\n}});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nazure_key = confluentcloud.ByokKey(\"azure_key\", azure={\n    \"tenant_id\": \"11111111-1111-1111-1111-111111111111\",\n    \"key_vault_id\": \"/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/test-vault/providers/Microsoft.KeyVault/vaults/test-vault\",\n    \"key_identifier\": \"https://test-vault.vault.azure.net/keys/test-key\",\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var azureKey = new ConfluentCloud.ByokKey(\"azure_key\", new()\n    {\n        Azure = new ConfluentCloud.Inputs.ByokKeyAzureArgs\n        {\n            TenantId = \"11111111-1111-1111-1111-111111111111\",\n            KeyVaultId = \"/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/test-vault/providers/Microsoft.KeyVault/vaults/test-vault\",\n            KeyIdentifier = \"https://test-vault.vault.azure.net/keys/test-key\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewByokKey(ctx, \"azure_key\", \u0026confluentcloud.ByokKeyArgs{\n\t\t\tAzure: \u0026confluentcloud.ByokKeyAzureArgs{\n\t\t\t\tTenantId:      pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\n\t\t\t\tKeyVaultId:    pulumi.String(\"/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/test-vault/providers/Microsoft.KeyVault/vaults/test-vault\"),\n\t\t\t\tKeyIdentifier: pulumi.String(\"https://test-vault.vault.azure.net/keys/test-key\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ByokKey;\nimport com.pulumi.confluentcloud.ByokKeyArgs;\nimport com.pulumi.confluentcloud.inputs.ByokKeyAzureArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var azureKey = new ByokKey(\"azureKey\", ByokKeyArgs.builder()\n            .azure(ByokKeyAzureArgs.builder()\n                .tenantId(\"11111111-1111-1111-1111-111111111111\")\n                .keyVaultId(\"/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/test-vault/providers/Microsoft.KeyVault/vaults/test-vault\")\n                .keyIdentifier(\"https://test-vault.vault.azure.net/keys/test-key\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  azureKey:\n    type: confluentcloud:ByokKey\n    name: azure_key\n    properties:\n      azure:\n        tenantId: 11111111-1111-1111-1111-111111111111\n        keyVaultId: /subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/test-vault/providers/Microsoft.KeyVault/vaults/test-vault\n        keyIdentifier: https://test-vault.vault.azure.net/keys/test-key\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example BYOK Key on GCP\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst gcpKey = new confluentcloud.ByokKey(\"gcp_key\", {gcp: {\n    keyId: \"projects/temp-gear-123456/locations/us-central1/keyRings/byok-test/cryptoKeys/byok-test\",\n}});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ngcp_key = confluentcloud.ByokKey(\"gcp_key\", gcp={\n    \"key_id\": \"projects/temp-gear-123456/locations/us-central1/keyRings/byok-test/cryptoKeys/byok-test\",\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var gcpKey = new ConfluentCloud.ByokKey(\"gcp_key\", new()\n    {\n        Gcp = new ConfluentCloud.Inputs.ByokKeyGcpArgs\n        {\n            KeyId = \"projects/temp-gear-123456/locations/us-central1/keyRings/byok-test/cryptoKeys/byok-test\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewByokKey(ctx, \"gcp_key\", \u0026confluentcloud.ByokKeyArgs{\n\t\t\tGcp: \u0026confluentcloud.ByokKeyGcpArgs{\n\t\t\t\tKeyId: pulumi.String(\"projects/temp-gear-123456/locations/us-central1/keyRings/byok-test/cryptoKeys/byok-test\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ByokKey;\nimport com.pulumi.confluentcloud.ByokKeyArgs;\nimport com.pulumi.confluentcloud.inputs.ByokKeyGcpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var gcpKey = new ByokKey(\"gcpKey\", ByokKeyArgs.builder()\n            .gcp(ByokKeyGcpArgs.builder()\n                .keyId(\"projects/temp-gear-123456/locations/us-central1/keyRings/byok-test/cryptoKeys/byok-test\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  gcpKey:\n    type: confluentcloud:ByokKey\n    name: gcp_key\n    properties:\n      gcp:\n        keyId: projects/temp-gear-123456/locations/us-central1/keyRings/byok-test/cryptoKeys/byok-test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ByokKey`\" pulumi-lang-dotnet=\"`confluentcloud.ByokKey`\" pulumi-lang-go=\"`ByokKey`\" pulumi-lang-python=\"`ByokKey`\" pulumi-lang-yaml=\"`confluentcloud.ByokKey`\" pulumi-lang-java=\"`confluentcloud.ByokKey`\"\u003e`confluentcloud.ByokKey`\u003c/span\u003e resource:\n  * dedicated-public-aws-byok-kafka-acls: An example of Encrypting Confluent Cloud Dedicated Kafka Clusters using Self-Managed Keys on AWS.\n  * dedicated-public-azure-byok-kafka-acls: An example of Encrypting Confluent Cloud Dedicated Kafka Clusters using Self-Managed Keys on Azure.\n\nSee [Confluent Cloud Bring Your Own Key (BYOK) Management API](https://docs.confluent.io/cloud/current/clusters/byok/index.html) to learn more about Encrypting Confluent Cloud Kafka Clusters using Self-Managed Keys.\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a BYOK Key.\n\nYou can import a BYOK Key by using BYOK Key ID. The following example shows how to import a BYOK Key:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/byokKey:ByokKey aws_key cck-abcde\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"aws":{"$ref":"#/types/confluentcloud:index/ByokKeyAws:ByokKeyAws","description":"(Optional Configuration Block) supports the following:\n"},"azure":{"$ref":"#/types/confluentcloud:index/ByokKeyAzure:ByokKeyAzure","description":"(Optional Configuration Block) supports the following:\n"},"gcp":{"$ref":"#/types/confluentcloud:index/ByokKeyGcp:ByokKeyGcp","description":"(Optional Configuration Block) supports the following:\n"}},"required":["aws","azure","gcp"],"inputProperties":{"aws":{"$ref":"#/types/confluentcloud:index/ByokKeyAws:ByokKeyAws","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"azure":{"$ref":"#/types/confluentcloud:index/ByokKeyAzure:ByokKeyAzure","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"gcp":{"$ref":"#/types/confluentcloud:index/ByokKeyGcp:ByokKeyGcp","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering ByokKey resources.\n","properties":{"aws":{"$ref":"#/types/confluentcloud:index/ByokKeyAws:ByokKeyAws","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"azure":{"$ref":"#/types/confluentcloud:index/ByokKeyAzure:ByokKeyAzure","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"gcp":{"$ref":"#/types/confluentcloud:index/ByokKeyGcp:ByokKeyGcp","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/catalogEntityAttributes:CatalogEntityAttributes":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.CatalogEntityAttributes`\" pulumi-lang-dotnet=\"`confluentcloud.CatalogEntityAttributes`\" pulumi-lang-go=\"`CatalogEntityAttributes`\" pulumi-lang-python=\"`CatalogEntityAttributes`\" pulumi-lang-yaml=\"`confluentcloud.CatalogEntityAttributes`\" pulumi-lang-java=\"`confluentcloud.CatalogEntityAttributes`\"\u003e`confluentcloud.CatalogEntityAttributes`\u003c/span\u003e provides a Catalog Entity Attributes resource that enables creating, evolving, and deleting Catalog Entity Attributes on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental catalog entity attributes deletion. This setting rejects plans that would destroy or recreate the schema, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst environment = new confluentcloud.CatalogEntityAttributes(\"environment\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    entityName: main.id,\n    entityType: \"cf_environment\",\n    attributes: {\n        description: \"Environment description\",\n    },\n});\nconst kafka_cluster = new confluentcloud.CatalogEntityAttributes(\"kafka-cluster\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    entityName: basic.id,\n    entityType: \"kafka_logical_cluster\",\n    attributes: {\n        description: \"Kafka Cluster description\",\n    },\n});\nconst topic = new confluentcloud.CatalogEntityAttributes(\"topic\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    entityName: `${basic.id}:${purchase.topicName}`,\n    entityType: \"kafka_topic\",\n    attributes: {\n        owner: \"dev\",\n        description: \"Kafka topic for orders\",\n        ownerEmail: \"dev@gmail.com\",\n    },\n});\nconst schema = new confluentcloud.CatalogEntityAttributes(\"schema\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    entityName: `${essentials.id}:.:${purchaseConfluentSchema.schemaIdentifier}`,\n    entityType: \"sr_schema\",\n    attributes: {\n        description: \"Schema description\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nenvironment = confluentcloud.CatalogEntityAttributes(\"environment\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    entity_name=main[\"id\"],\n    entity_type=\"cf_environment\",\n    attributes={\n        \"description\": \"Environment description\",\n    })\nkafka_cluster = confluentcloud.CatalogEntityAttributes(\"kafka-cluster\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    entity_name=basic[\"id\"],\n    entity_type=\"kafka_logical_cluster\",\n    attributes={\n        \"description\": \"Kafka Cluster description\",\n    })\ntopic = confluentcloud.CatalogEntityAttributes(\"topic\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    entity_name=f\"{basic['id']}:{purchase['topicName']}\",\n    entity_type=\"kafka_topic\",\n    attributes={\n        \"owner\": \"dev\",\n        \"description\": \"Kafka topic for orders\",\n        \"ownerEmail\": \"dev@gmail.com\",\n    })\nschema = confluentcloud.CatalogEntityAttributes(\"schema\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    entity_name=f\"{essentials['id']}:.:{purchase_confluent_schema['schemaIdentifier']}\",\n    entity_type=\"sr_schema\",\n    attributes={\n        \"description\": \"Schema description\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var environment = new ConfluentCloud.CatalogEntityAttributes(\"environment\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.CatalogEntityAttributesSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.CatalogEntityAttributesCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        EntityName = main.Id,\n        EntityType = \"cf_environment\",\n        Attributes = \n        {\n            { \"description\", \"Environment description\" },\n        },\n    });\n\n    var kafka_cluster = new ConfluentCloud.CatalogEntityAttributes(\"kafka-cluster\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.CatalogEntityAttributesSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.CatalogEntityAttributesCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        EntityName = basic.Id,\n        EntityType = \"kafka_logical_cluster\",\n        Attributes = \n        {\n            { \"description\", \"Kafka Cluster description\" },\n        },\n    });\n\n    var topic = new ConfluentCloud.CatalogEntityAttributes(\"topic\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.CatalogEntityAttributesSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.CatalogEntityAttributesCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        EntityName = $\"{basic.Id}:{purchase.TopicName}\",\n        EntityType = \"kafka_topic\",\n        Attributes = \n        {\n            { \"owner\", \"dev\" },\n            { \"description\", \"Kafka topic for orders\" },\n            { \"ownerEmail\", \"dev@gmail.com\" },\n        },\n    });\n\n    var schema = new ConfluentCloud.CatalogEntityAttributes(\"schema\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.CatalogEntityAttributesSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.CatalogEntityAttributesCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        EntityName = $\"{essentials.Id}:.:{purchaseConfluentSchema.SchemaIdentifier}\",\n        EntityType = \"sr_schema\",\n        Attributes = \n        {\n            { \"description\", \"Schema description\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewCatalogEntityAttributes(ctx, \"environment\", \u0026confluentcloud.CatalogEntityAttributesArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.CatalogEntityAttributesSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.CatalogEntityAttributesCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t\tEntityName: pulumi.Any(main.Id),\n\t\t\tEntityType: pulumi.String(\"cf_environment\"),\n\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\"description\": pulumi.String(\"Environment description\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewCatalogEntityAttributes(ctx, \"kafka-cluster\", \u0026confluentcloud.CatalogEntityAttributesArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.CatalogEntityAttributesSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.CatalogEntityAttributesCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t\tEntityName: pulumi.Any(basic.Id),\n\t\t\tEntityType: pulumi.String(\"kafka_logical_cluster\"),\n\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\"description\": pulumi.String(\"Kafka Cluster description\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewCatalogEntityAttributes(ctx, \"topic\", \u0026confluentcloud.CatalogEntityAttributesArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.CatalogEntityAttributesSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.CatalogEntityAttributesCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t\tEntityName: pulumi.Sprintf(\"%v:%v\", basic.Id, purchase.TopicName),\n\t\t\tEntityType: pulumi.String(\"kafka_topic\"),\n\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\"owner\":       pulumi.String(\"dev\"),\n\t\t\t\t\"description\": pulumi.String(\"Kafka topic for orders\"),\n\t\t\t\t\"ownerEmail\":  pulumi.String(\"dev@gmail.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewCatalogEntityAttributes(ctx, \"schema\", \u0026confluentcloud.CatalogEntityAttributesArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.CatalogEntityAttributesSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.CatalogEntityAttributesCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t\tEntityName: pulumi.Sprintf(\"%v:.:%v\", essentials.Id, purchaseConfluentSchema.SchemaIdentifier),\n\t\t\tEntityType: pulumi.String(\"sr_schema\"),\n\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\"description\": pulumi.String(\"Schema description\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.CatalogEntityAttributes;\nimport com.pulumi.confluentcloud.CatalogEntityAttributesArgs;\nimport com.pulumi.confluentcloud.inputs.CatalogEntityAttributesSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.CatalogEntityAttributesCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var environment = new CatalogEntityAttributes(\"environment\", CatalogEntityAttributesArgs.builder()\n            .schemaRegistryCluster(CatalogEntityAttributesSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(CatalogEntityAttributesCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .entityName(main.id())\n            .entityType(\"cf_environment\")\n            .attributes(Map.of(\"description\", \"Environment description\"))\n            .build());\n\n        var kafka_cluster = new CatalogEntityAttributes(\"kafka-cluster\", CatalogEntityAttributesArgs.builder()\n            .schemaRegistryCluster(CatalogEntityAttributesSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(CatalogEntityAttributesCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .entityName(basic.id())\n            .entityType(\"kafka_logical_cluster\")\n            .attributes(Map.of(\"description\", \"Kafka Cluster description\"))\n            .build());\n\n        var topic = new CatalogEntityAttributes(\"topic\", CatalogEntityAttributesArgs.builder()\n            .schemaRegistryCluster(CatalogEntityAttributesSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(CatalogEntityAttributesCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .entityName(String.format(\"%s:%s\", basic.id(),purchase.topicName()))\n            .entityType(\"kafka_topic\")\n            .attributes(Map.ofEntries(\n                Map.entry(\"owner\", \"dev\"),\n                Map.entry(\"description\", \"Kafka topic for orders\"),\n                Map.entry(\"ownerEmail\", \"dev@gmail.com\")\n            ))\n            .build());\n\n        var schema = new CatalogEntityAttributes(\"schema\", CatalogEntityAttributesArgs.builder()\n            .schemaRegistryCluster(CatalogEntityAttributesSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(CatalogEntityAttributesCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .entityName(String.format(\"%s:.:%s\", essentials.id(),purchaseConfluentSchema.schemaIdentifier()))\n            .entityType(\"sr_schema\")\n            .attributes(Map.of(\"description\", \"Schema description\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  environment:\n    type: confluentcloud:CatalogEntityAttributes\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n      entityName: ${main.id}\n      entityType: cf_environment\n      attributes:\n        description: Environment description\n  kafka-cluster:\n    type: confluentcloud:CatalogEntityAttributes\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n      entityName: ${basic.id}\n      entityType: kafka_logical_cluster\n      attributes:\n        description: Kafka Cluster description\n  topic:\n    type: confluentcloud:CatalogEntityAttributes\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n      entityName: ${basic.id}:${purchase.topicName}\n      entityType: kafka_topic\n      attributes:\n        owner: dev\n        description: Kafka topic for orders\n        ownerEmail: dev@gmail.com\n  schema:\n    type: confluentcloud:CatalogEntityAttributes\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n      entityName: ${essentials.id}:.:${purchaseConfluentSchema.schemaIdentifier}\n      entityType: sr_schema\n      attributes:\n        description: Schema description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst environment = new confluentcloud.CatalogEntityAttributes(\"environment\", {\n    entityName: environmentId,\n    entityType: \"cf_environment\",\n    attributes: {\n        description: \"Environment description\",\n    },\n});\nconst kafka_cluster = new confluentcloud.CatalogEntityAttributes(\"kafka-cluster\", {\n    entityName: kafkaClusterId,\n    entityType: \"kafka_logical_cluster\",\n    attributes: {\n        description: \"Kafka Cluster description\",\n    },\n});\nconst topic = new confluentcloud.CatalogEntityAttributes(\"topic\", {\n    entityName: `${kafkaClusterId}:${kafkaTopicName}`,\n    entityType: \"kafka_topic\",\n    attributes: {\n        owner: \"dev\",\n        description: \"Kafka topic for orders\",\n        ownerEmail: \"dev@gmail.com\",\n    },\n});\nconst schema = new confluentcloud.CatalogEntityAttributes(\"schema\", {\n    entityName: `${schemaRegistryClusterId}:.:${purchase.schemaIdentifier}`,\n    entityType: \"sr_schema\",\n    attributes: {\n        description: \"Schema description\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nenvironment = confluentcloud.CatalogEntityAttributes(\"environment\",\n    entity_name=environment_id,\n    entity_type=\"cf_environment\",\n    attributes={\n        \"description\": \"Environment description\",\n    })\nkafka_cluster = confluentcloud.CatalogEntityAttributes(\"kafka-cluster\",\n    entity_name=kafka_cluster_id,\n    entity_type=\"kafka_logical_cluster\",\n    attributes={\n        \"description\": \"Kafka Cluster description\",\n    })\ntopic = confluentcloud.CatalogEntityAttributes(\"topic\",\n    entity_name=f\"{kafka_cluster_id}:{kafka_topic_name}\",\n    entity_type=\"kafka_topic\",\n    attributes={\n        \"owner\": \"dev\",\n        \"description\": \"Kafka topic for orders\",\n        \"ownerEmail\": \"dev@gmail.com\",\n    })\nschema = confluentcloud.CatalogEntityAttributes(\"schema\",\n    entity_name=f\"{schema_registry_cluster_id}:.:{purchase['schemaIdentifier']}\",\n    entity_type=\"sr_schema\",\n    attributes={\n        \"description\": \"Schema description\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var environment = new ConfluentCloud.CatalogEntityAttributes(\"environment\", new()\n    {\n        EntityName = environmentId,\n        EntityType = \"cf_environment\",\n        Attributes = \n        {\n            { \"description\", \"Environment description\" },\n        },\n    });\n\n    var kafka_cluster = new ConfluentCloud.CatalogEntityAttributes(\"kafka-cluster\", new()\n    {\n        EntityName = kafkaClusterId,\n        EntityType = \"kafka_logical_cluster\",\n        Attributes = \n        {\n            { \"description\", \"Kafka Cluster description\" },\n        },\n    });\n\n    var topic = new ConfluentCloud.CatalogEntityAttributes(\"topic\", new()\n    {\n        EntityName = $\"{kafkaClusterId}:{kafkaTopicName}\",\n        EntityType = \"kafka_topic\",\n        Attributes = \n        {\n            { \"owner\", \"dev\" },\n            { \"description\", \"Kafka topic for orders\" },\n            { \"ownerEmail\", \"dev@gmail.com\" },\n        },\n    });\n\n    var schema = new ConfluentCloud.CatalogEntityAttributes(\"schema\", new()\n    {\n        EntityName = $\"{schemaRegistryClusterId}:.:{purchase.SchemaIdentifier}\",\n        EntityType = \"sr_schema\",\n        Attributes = \n        {\n            { \"description\", \"Schema description\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewCatalogEntityAttributes(ctx, \"environment\", \u0026confluentcloud.CatalogEntityAttributesArgs{\n\t\t\tEntityName: pulumi.Any(environmentId),\n\t\t\tEntityType: pulumi.String(\"cf_environment\"),\n\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\"description\": pulumi.String(\"Environment description\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewCatalogEntityAttributes(ctx, \"kafka-cluster\", \u0026confluentcloud.CatalogEntityAttributesArgs{\n\t\t\tEntityName: pulumi.Any(kafkaClusterId),\n\t\t\tEntityType: pulumi.String(\"kafka_logical_cluster\"),\n\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\"description\": pulumi.String(\"Kafka Cluster description\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewCatalogEntityAttributes(ctx, \"topic\", \u0026confluentcloud.CatalogEntityAttributesArgs{\n\t\t\tEntityName: pulumi.Sprintf(\"%v:%v\", kafkaClusterId, kafkaTopicName),\n\t\t\tEntityType: pulumi.String(\"kafka_topic\"),\n\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\"owner\":       pulumi.String(\"dev\"),\n\t\t\t\t\"description\": pulumi.String(\"Kafka topic for orders\"),\n\t\t\t\t\"ownerEmail\":  pulumi.String(\"dev@gmail.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewCatalogEntityAttributes(ctx, \"schema\", \u0026confluentcloud.CatalogEntityAttributesArgs{\n\t\t\tEntityName: pulumi.Sprintf(\"%v:.:%v\", schemaRegistryClusterId, purchase.SchemaIdentifier),\n\t\t\tEntityType: pulumi.String(\"sr_schema\"),\n\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\"description\": pulumi.String(\"Schema description\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.CatalogEntityAttributes;\nimport com.pulumi.confluentcloud.CatalogEntityAttributesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var environment = new CatalogEntityAttributes(\"environment\", CatalogEntityAttributesArgs.builder()\n            .entityName(environmentId)\n            .entityType(\"cf_environment\")\n            .attributes(Map.of(\"description\", \"Environment description\"))\n            .build());\n\n        var kafka_cluster = new CatalogEntityAttributes(\"kafka-cluster\", CatalogEntityAttributesArgs.builder()\n            .entityName(kafkaClusterId)\n            .entityType(\"kafka_logical_cluster\")\n            .attributes(Map.of(\"description\", \"Kafka Cluster description\"))\n            .build());\n\n        var topic = new CatalogEntityAttributes(\"topic\", CatalogEntityAttributesArgs.builder()\n            .entityName(String.format(\"%s:%s\", kafkaClusterId,kafkaTopicName))\n            .entityType(\"kafka_topic\")\n            .attributes(Map.ofEntries(\n                Map.entry(\"owner\", \"dev\"),\n                Map.entry(\"description\", \"Kafka topic for orders\"),\n                Map.entry(\"ownerEmail\", \"dev@gmail.com\")\n            ))\n            .build());\n\n        var schema = new CatalogEntityAttributes(\"schema\", CatalogEntityAttributesArgs.builder()\n            .entityName(String.format(\"%s:.:%s\", schemaRegistryClusterId,purchase.schemaIdentifier()))\n            .entityType(\"sr_schema\")\n            .attributes(Map.of(\"description\", \"Schema description\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  environment:\n    type: confluentcloud:CatalogEntityAttributes\n    properties:\n      entityName: ${environmentId}\n      entityType: cf_environment\n      attributes:\n        description: Environment description\n  kafka-cluster:\n    type: confluentcloud:CatalogEntityAttributes\n    properties:\n      entityName: ${kafkaClusterId}\n      entityType: kafka_logical_cluster\n      attributes:\n        description: Kafka Cluster description\n  topic:\n    type: confluentcloud:CatalogEntityAttributes\n    properties:\n      entityName: ${kafkaClusterId}:${kafkaTopicName}\n      entityType: kafka_topic\n      attributes:\n        owner: dev\n        description: Kafka topic for orders\n        ownerEmail: dev@gmail.com\n  schema:\n    type: confluentcloud:CatalogEntityAttributes\n    properties:\n      entityName: ${schemaRegistryClusterId}:.:${purchase.schemaIdentifier}\n      entityType: sr_schema\n      attributes:\n        description: Schema description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\u003e **Note:** We also support \u003cspan pulumi-lang-nodejs=\"`schemaRegistryRestEndpoint`\" pulumi-lang-dotnet=\"`SchemaRegistryRestEndpoint`\" pulumi-lang-go=\"`schemaRegistryRestEndpoint`\" pulumi-lang-python=\"`schema_registry_rest_endpoint`\" pulumi-lang-yaml=\"`schemaRegistryRestEndpoint`\" pulumi-lang-java=\"`schemaRegistryRestEndpoint`\"\u003e`schema_registry_rest_endpoint`\u003c/span\u003e instead of \u003cspan pulumi-lang-nodejs=\"`catalogRestEndpoint`\" pulumi-lang-dotnet=\"`CatalogRestEndpoint`\" pulumi-lang-go=\"`catalogRestEndpoint`\" pulumi-lang-python=\"`catalog_rest_endpoint`\" pulumi-lang-yaml=\"`catalogRestEndpoint`\" pulumi-lang-java=\"`catalogRestEndpoint`\"\u003e`catalog_rest_endpoint`\u003c/span\u003e for the time being.\n\n## Import\n\nYou can import a Catalog Entity Attributes resource by using the Schema Registry Cluster ID, Entity name in the format `\u003cSchema Registry Cluster ID\u003e/\u003cEntity Type\u003e/\u003cEntity Name\u003e/\u003cComma-Delimited-Attributes\u003e`, for example:\n\nOption #1: Manage multiple Catalog Entity Attributes in the same Pulumi Stack\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT=\"\u003cschema_registry_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/catalogEntityAttributes:CatalogEntityAttributes environment lsrc-abc123/cf_environment/env-abc123/owner,description,ownerEmail\n```\n\nOption #2: Manage a single Catalog Entity Attributes in the same Pulumi Stack\n\n```sh\n$ pulumi import confluentcloud:index/catalogEntityAttributes:CatalogEntityAttributes environment lsrc-abc123/cf_environment/env-abc123/owner,description,ownerEmail\n```\n\n\u003e **Note:** Use the `\u003cSchema Registry Cluster ID\u003e/\u003cEntity Type\u003e/\u003cEntity Name\u003e/` format to import a Catalog Entity Attributes resource with an empty list of attributes.\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"The block of key-value pair attributes. Refer to the [add-a-topic-owner-and-email](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#add-a-topic-owner-and-email) for more details.\n\n\u003e **Note:** You have to set the attribute value to an empty string if you plan to delete an attribute.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_catalog_entity_attributes.main\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_catalog_entity_attributes.main\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.CatalogEntityAttributes`\" pulumi-lang-dotnet=\"`confluentcloud.CatalogEntityAttributes`\" pulumi-lang-go=\"`CatalogEntityAttributes`\" pulumi-lang-python=\"`CatalogEntityAttributes`\" pulumi-lang-yaml=\"`confluentcloud.CatalogEntityAttributes`\" pulumi-lang-java=\"`confluentcloud.CatalogEntityAttributes`\"\u003e`confluentcloud.CatalogEntityAttributes`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/CatalogEntityAttributesCredentials:CatalogEntityAttributesCredentials","description":"The Cluster API Credentials.","secret":true},"entityName":{"type":"string","description":"The qualified name of the entity, for example, `${data.confluent_schema_registry_cluster.essentials.id}:.:${confluent_schema.purchase.schema_identifier}`, `${data.confluent_schema_registry_cluster.essentials.id}:${confluent_kafka_cluster.basic.id}:${confluent_kafka_topic.purchase.topic_name}`. Refer to the [Examples of qualified names](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#examples-of-qualified-names) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityName`\" pulumi-lang-dotnet=\"`EntityName`\" pulumi-lang-go=\"`entityName`\" pulumi-lang-python=\"`entity_name`\" pulumi-lang-yaml=\"`entityName`\" pulumi-lang-java=\"`entityName`\"\u003e`entity_name`\u003c/span\u003e attribute.\n"},"entityType":{"type":"string","description":"The entity type, for example, \u003cspan pulumi-lang-nodejs=\"`cfEnvironment`\" pulumi-lang-dotnet=\"`CfEnvironment`\" pulumi-lang-go=\"`cfEnvironment`\" pulumi-lang-python=\"`cf_environment`\" pulumi-lang-yaml=\"`cfEnvironment`\" pulumi-lang-java=\"`cfEnvironment`\"\u003e`cf_environment`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`kafkaLogicalCluster`\" pulumi-lang-dotnet=\"`KafkaLogicalCluster`\" pulumi-lang-go=\"`kafkaLogicalCluster`\" pulumi-lang-python=\"`kafka_logical_cluster`\" pulumi-lang-yaml=\"`kafkaLogicalCluster`\" pulumi-lang-java=\"`kafkaLogicalCluster`\"\u003e`kafka_logical_cluster`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`kafkaTopic`\" pulumi-lang-dotnet=\"`KafkaTopic`\" pulumi-lang-go=\"`kafkaTopic`\" pulumi-lang-python=\"`kafka_topic`\" pulumi-lang-yaml=\"`kafkaTopic`\" pulumi-lang-java=\"`kafkaTopic`\"\u003e`kafka_topic`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`srSchema`\" pulumi-lang-dotnet=\"`SrSchema`\" pulumi-lang-go=\"`srSchema`\" pulumi-lang-python=\"`sr_schema`\" pulumi-lang-yaml=\"`srSchema`\" pulumi-lang-java=\"`srSchema`\"\u003e`sr_schema`\u003c/span\u003e, etc. Refer to the [Entity types](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#entity-types) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityType`\" pulumi-lang-dotnet=\"`EntityType`\" pulumi-lang-go=\"`entityType`\" pulumi-lang-python=\"`entity_type`\" pulumi-lang-yaml=\"`entityType`\" pulumi-lang-java=\"`entityType`\"\u003e`entity_type`\u003c/span\u003e attribute.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/CatalogEntityAttributesSchemaRegistryCluster:CatalogEntityAttributesSchemaRegistryCluster"}},"required":["entityName","entityType"],"inputProperties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"The block of key-value pair attributes. Refer to the [add-a-topic-owner-and-email](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#add-a-topic-owner-and-email) for more details.\n\n\u003e **Note:** You have to set the attribute value to an empty string if you plan to delete an attribute.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_catalog_entity_attributes.main\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_catalog_entity_attributes.main\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.CatalogEntityAttributes`\" pulumi-lang-dotnet=\"`confluentcloud.CatalogEntityAttributes`\" pulumi-lang-go=\"`CatalogEntityAttributes`\" pulumi-lang-python=\"`CatalogEntityAttributes`\" pulumi-lang-yaml=\"`confluentcloud.CatalogEntityAttributes`\" pulumi-lang-java=\"`confluentcloud.CatalogEntityAttributes`\"\u003e`confluentcloud.CatalogEntityAttributes`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/CatalogEntityAttributesCredentials:CatalogEntityAttributesCredentials","description":"The Cluster API Credentials.","secret":true},"entityName":{"type":"string","description":"The qualified name of the entity, for example, `${data.confluent_schema_registry_cluster.essentials.id}:.:${confluent_schema.purchase.schema_identifier}`, `${data.confluent_schema_registry_cluster.essentials.id}:${confluent_kafka_cluster.basic.id}:${confluent_kafka_topic.purchase.topic_name}`. Refer to the [Examples of qualified names](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#examples-of-qualified-names) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityName`\" pulumi-lang-dotnet=\"`EntityName`\" pulumi-lang-go=\"`entityName`\" pulumi-lang-python=\"`entity_name`\" pulumi-lang-yaml=\"`entityName`\" pulumi-lang-java=\"`entityName`\"\u003e`entity_name`\u003c/span\u003e attribute.\n","willReplaceOnChanges":true},"entityType":{"type":"string","description":"The entity type, for example, \u003cspan pulumi-lang-nodejs=\"`cfEnvironment`\" pulumi-lang-dotnet=\"`CfEnvironment`\" pulumi-lang-go=\"`cfEnvironment`\" pulumi-lang-python=\"`cf_environment`\" pulumi-lang-yaml=\"`cfEnvironment`\" pulumi-lang-java=\"`cfEnvironment`\"\u003e`cf_environment`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`kafkaLogicalCluster`\" pulumi-lang-dotnet=\"`KafkaLogicalCluster`\" pulumi-lang-go=\"`kafkaLogicalCluster`\" pulumi-lang-python=\"`kafka_logical_cluster`\" pulumi-lang-yaml=\"`kafkaLogicalCluster`\" pulumi-lang-java=\"`kafkaLogicalCluster`\"\u003e`kafka_logical_cluster`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`kafkaTopic`\" pulumi-lang-dotnet=\"`KafkaTopic`\" pulumi-lang-go=\"`kafkaTopic`\" pulumi-lang-python=\"`kafka_topic`\" pulumi-lang-yaml=\"`kafkaTopic`\" pulumi-lang-java=\"`kafkaTopic`\"\u003e`kafka_topic`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`srSchema`\" pulumi-lang-dotnet=\"`SrSchema`\" pulumi-lang-go=\"`srSchema`\" pulumi-lang-python=\"`sr_schema`\" pulumi-lang-yaml=\"`srSchema`\" pulumi-lang-java=\"`srSchema`\"\u003e`sr_schema`\u003c/span\u003e, etc. Refer to the [Entity types](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#entity-types) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityType`\" pulumi-lang-dotnet=\"`EntityType`\" pulumi-lang-go=\"`entityType`\" pulumi-lang-python=\"`entity_type`\" pulumi-lang-yaml=\"`entityType`\" pulumi-lang-java=\"`entityType`\"\u003e`entity_type`\u003c/span\u003e attribute.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/CatalogEntityAttributesSchemaRegistryCluster:CatalogEntityAttributesSchemaRegistryCluster","willReplaceOnChanges":true}},"requiredInputs":["entityName","entityType"],"stateInputs":{"description":"Input properties used for looking up and filtering CatalogEntityAttributes resources.\n","properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"The block of key-value pair attributes. Refer to the [add-a-topic-owner-and-email](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#add-a-topic-owner-and-email) for more details.\n\n\u003e **Note:** You have to set the attribute value to an empty string if you plan to delete an attribute.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_catalog_entity_attributes.main\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_catalog_entity_attributes.main\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.CatalogEntityAttributes`\" pulumi-lang-dotnet=\"`confluentcloud.CatalogEntityAttributes`\" pulumi-lang-go=\"`CatalogEntityAttributes`\" pulumi-lang-python=\"`CatalogEntityAttributes`\" pulumi-lang-yaml=\"`confluentcloud.CatalogEntityAttributes`\" pulumi-lang-java=\"`confluentcloud.CatalogEntityAttributes`\"\u003e`confluentcloud.CatalogEntityAttributes`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/CatalogEntityAttributesCredentials:CatalogEntityAttributesCredentials","description":"The Cluster API Credentials.","secret":true},"entityName":{"type":"string","description":"The qualified name of the entity, for example, `${data.confluent_schema_registry_cluster.essentials.id}:.:${confluent_schema.purchase.schema_identifier}`, `${data.confluent_schema_registry_cluster.essentials.id}:${confluent_kafka_cluster.basic.id}:${confluent_kafka_topic.purchase.topic_name}`. Refer to the [Examples of qualified names](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#examples-of-qualified-names) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityName`\" pulumi-lang-dotnet=\"`EntityName`\" pulumi-lang-go=\"`entityName`\" pulumi-lang-python=\"`entity_name`\" pulumi-lang-yaml=\"`entityName`\" pulumi-lang-java=\"`entityName`\"\u003e`entity_name`\u003c/span\u003e attribute.\n","willReplaceOnChanges":true},"entityType":{"type":"string","description":"The entity type, for example, \u003cspan pulumi-lang-nodejs=\"`cfEnvironment`\" pulumi-lang-dotnet=\"`CfEnvironment`\" pulumi-lang-go=\"`cfEnvironment`\" pulumi-lang-python=\"`cf_environment`\" pulumi-lang-yaml=\"`cfEnvironment`\" pulumi-lang-java=\"`cfEnvironment`\"\u003e`cf_environment`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`kafkaLogicalCluster`\" pulumi-lang-dotnet=\"`KafkaLogicalCluster`\" pulumi-lang-go=\"`kafkaLogicalCluster`\" pulumi-lang-python=\"`kafka_logical_cluster`\" pulumi-lang-yaml=\"`kafkaLogicalCluster`\" pulumi-lang-java=\"`kafkaLogicalCluster`\"\u003e`kafka_logical_cluster`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`kafkaTopic`\" pulumi-lang-dotnet=\"`KafkaTopic`\" pulumi-lang-go=\"`kafkaTopic`\" pulumi-lang-python=\"`kafka_topic`\" pulumi-lang-yaml=\"`kafkaTopic`\" pulumi-lang-java=\"`kafkaTopic`\"\u003e`kafka_topic`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`srSchema`\" pulumi-lang-dotnet=\"`SrSchema`\" pulumi-lang-go=\"`srSchema`\" pulumi-lang-python=\"`sr_schema`\" pulumi-lang-yaml=\"`srSchema`\" pulumi-lang-java=\"`srSchema`\"\u003e`sr_schema`\u003c/span\u003e, etc. Refer to the [Entity types](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#entity-types) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityType`\" pulumi-lang-dotnet=\"`EntityType`\" pulumi-lang-go=\"`entityType`\" pulumi-lang-python=\"`entity_type`\" pulumi-lang-yaml=\"`entityType`\" pulumi-lang-java=\"`entityType`\"\u003e`entity_type`\u003c/span\u003e attribute.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/CatalogEntityAttributesSchemaRegistryCluster:CatalogEntityAttributesSchemaRegistryCluster","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/catalogIntegration:CatalogIntegration":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental catalog integration deletion. This setting rejects plans that would destroy or recreate the catalog integration, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Option #1: Manage multiple Catalog Integrations in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.CatalogIntegration(\"example\", {\n    environment: {\n        id: staging.id,\n    },\n    kafkaCluster: {\n        id: stagingConfluentKafkaCluster.id,\n    },\n    displayName: \"catalog-integration-1\",\n    awsGlue: {\n        providerIntegrationId: main.id,\n    },\n    credentials: {\n        key: env_admin_tableflow_api_key.id,\n        secret: env_admin_tableflow_api_key.secret,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.CatalogIntegration(\"example\",\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    kafka_cluster={\n        \"id\": staging_confluent_kafka_cluster[\"id\"],\n    },\n    display_name=\"catalog-integration-1\",\n    aws_glue={\n        \"provider_integration_id\": main[\"id\"],\n    },\n    credentials={\n        \"key\": env_admin_tableflow_api_key[\"id\"],\n        \"secret\": env_admin_tableflow_api_key[\"secret\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.CatalogIntegration(\"example\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.CatalogIntegrationEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.CatalogIntegrationKafkaClusterArgs\n        {\n            Id = stagingConfluentKafkaCluster.Id,\n        },\n        DisplayName = \"catalog-integration-1\",\n        AwsGlue = new ConfluentCloud.Inputs.CatalogIntegrationAwsGlueArgs\n        {\n            ProviderIntegrationId = main.Id,\n        },\n        Credentials = new ConfluentCloud.Inputs.CatalogIntegrationCredentialsArgs\n        {\n            Key = env_admin_tableflow_api_key.Id,\n            Secret = env_admin_tableflow_api_key.Secret,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewCatalogIntegration(ctx, \"example\", \u0026confluentcloud.CatalogIntegrationArgs{\n\t\t\tEnvironment: \u0026confluentcloud.CatalogIntegrationEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tKafkaCluster: \u0026confluentcloud.CatalogIntegrationKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(stagingConfluentKafkaCluster.Id),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"catalog-integration-1\"),\n\t\t\tAwsGlue: \u0026confluentcloud.CatalogIntegrationAwsGlueArgs{\n\t\t\t\tProviderIntegrationId: pulumi.Any(main.Id),\n\t\t\t},\n\t\t\tCredentials: \u0026confluentcloud.CatalogIntegrationCredentialsArgs{\n\t\t\t\tKey:    pulumi.Any(env_admin_tableflow_api_key.Id),\n\t\t\t\tSecret: pulumi.Any(env_admin_tableflow_api_key.Secret),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.CatalogIntegration;\nimport com.pulumi.confluentcloud.CatalogIntegrationArgs;\nimport com.pulumi.confluentcloud.inputs.CatalogIntegrationEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.CatalogIntegrationKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.CatalogIntegrationAwsGlueArgs;\nimport com.pulumi.confluentcloud.inputs.CatalogIntegrationCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new CatalogIntegration(\"example\", CatalogIntegrationArgs.builder()\n            .environment(CatalogIntegrationEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .kafkaCluster(CatalogIntegrationKafkaClusterArgs.builder()\n                .id(stagingConfluentKafkaCluster.id())\n                .build())\n            .displayName(\"catalog-integration-1\")\n            .awsGlue(CatalogIntegrationAwsGlueArgs.builder()\n                .providerIntegrationId(main.id())\n                .build())\n            .credentials(CatalogIntegrationCredentialsArgs.builder()\n                .key(env_admin_tableflow_api_key.id())\n                .secret(env_admin_tableflow_api_key.secret())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:CatalogIntegration\n    properties:\n      environment:\n        id: ${staging.id}\n      kafkaCluster:\n        id: ${stagingConfluentKafkaCluster.id}\n      displayName: catalog-integration-1\n      awsGlue:\n        providerIntegrationId: ${main.id}\n      credentials:\n        key: ${[\"env-admin-tableflow-api-key\"].id}\n        secret: ${[\"env-admin-tableflow-api-key\"].secret}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Catalog Integration in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.CatalogIntegration(\"example\", {\n    environment: {\n        id: staging.id,\n    },\n    kafkaCluster: {\n        id: stagingConfluentKafkaCluster.id,\n    },\n    displayName: \"catalog-integration-1\",\n    snowflake: {\n        endpoint: \"https://vuser1_polaris.snowflakecomputing.com/\",\n        clientId: \"***REDACTED***\",\n        clientSecret: \"***REDACTED***\",\n        warehouse: \"catalog-name\",\n        allowedScope: \"session:role:R1\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.CatalogIntegration(\"example\",\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    kafka_cluster={\n        \"id\": staging_confluent_kafka_cluster[\"id\"],\n    },\n    display_name=\"catalog-integration-1\",\n    snowflake={\n        \"endpoint\": \"https://vuser1_polaris.snowflakecomputing.com/\",\n        \"client_id\": \"***REDACTED***\",\n        \"client_secret\": \"***REDACTED***\",\n        \"warehouse\": \"catalog-name\",\n        \"allowed_scope\": \"session:role:R1\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.CatalogIntegration(\"example\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.CatalogIntegrationEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.CatalogIntegrationKafkaClusterArgs\n        {\n            Id = stagingConfluentKafkaCluster.Id,\n        },\n        DisplayName = \"catalog-integration-1\",\n        Snowflake = new ConfluentCloud.Inputs.CatalogIntegrationSnowflakeArgs\n        {\n            Endpoint = \"https://vuser1_polaris.snowflakecomputing.com/\",\n            ClientId = \"***REDACTED***\",\n            ClientSecret = \"***REDACTED***\",\n            Warehouse = \"catalog-name\",\n            AllowedScope = \"session:role:R1\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewCatalogIntegration(ctx, \"example\", \u0026confluentcloud.CatalogIntegrationArgs{\n\t\t\tEnvironment: \u0026confluentcloud.CatalogIntegrationEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tKafkaCluster: \u0026confluentcloud.CatalogIntegrationKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(stagingConfluentKafkaCluster.Id),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"catalog-integration-1\"),\n\t\t\tSnowflake: \u0026confluentcloud.CatalogIntegrationSnowflakeArgs{\n\t\t\t\tEndpoint:     pulumi.String(\"https://vuser1_polaris.snowflakecomputing.com/\"),\n\t\t\t\tClientId:     pulumi.String(\"***REDACTED***\"),\n\t\t\t\tClientSecret: pulumi.String(\"***REDACTED***\"),\n\t\t\t\tWarehouse:    pulumi.String(\"catalog-name\"),\n\t\t\t\tAllowedScope: pulumi.String(\"session:role:R1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.CatalogIntegration;\nimport com.pulumi.confluentcloud.CatalogIntegrationArgs;\nimport com.pulumi.confluentcloud.inputs.CatalogIntegrationEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.CatalogIntegrationKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.CatalogIntegrationSnowflakeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new CatalogIntegration(\"example\", CatalogIntegrationArgs.builder()\n            .environment(CatalogIntegrationEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .kafkaCluster(CatalogIntegrationKafkaClusterArgs.builder()\n                .id(stagingConfluentKafkaCluster.id())\n                .build())\n            .displayName(\"catalog-integration-1\")\n            .snowflake(CatalogIntegrationSnowflakeArgs.builder()\n                .endpoint(\"https://vuser1_polaris.snowflakecomputing.com/\")\n                .clientId(\"***REDACTED***\")\n                .clientSecret(\"***REDACTED***\")\n                .warehouse(\"catalog-name\")\n                .allowedScope(\"session:role:R1\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:CatalogIntegration\n    properties:\n      environment:\n        id: ${staging.id}\n      kafkaCluster:\n        id: ${stagingConfluentKafkaCluster.id}\n      displayName: catalog-integration-1\n      snowflake:\n        endpoint: https://vuser1_polaris.snowflakecomputing.com/\n        clientId: '***REDACTED***'\n        clientSecret: '***REDACTED***'\n        warehouse: catalog-name\n        allowedScope: session:role:R1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import a Catalog Integration by using the Catalog Integration name, Environment ID, and Kafka Cluster ID, in the format `\u003cEnvironment ID\u003e/\u003cKafka Cluster ID\u003e/\u003cCatalog Integration Id\u003e`, for example:\n\nOption #1: Manage multiple Catalog Integrations in the same Pulumi Stack\n\n```sh\n$ export IMPORT_TABLEFLOW_API_KEY=\"\u003ctableflow_api_key\u003e\"\n$ export IMPORT_TABLEFLOW_API_SECRET=\"\u003ctableflow_api_secret\u003e\"\n$ pulumi import confluentcloud:index/catalogIntegration:CatalogIntegration example env-abc123/lkc-abc123/tci-abc123\n```\n\nOption #2: Manage a single Catalog Integration in the same Pulumi Stack\n\n```sh\n$ pulumi import confluentcloud:index/catalogIntegration:CatalogIntegration example env-abc123/lkc-abc123/tci-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"awsGlue":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationAwsGlue:CatalogIntegrationAwsGlue","description":"supports the following (see [Integrate Tableflow with the AWS Glue Catalog in Confluent Cloud](https://docs.confluent.io/cloud/current/topics/tableflow/how-to-guides/catalog-integration/integrate-with-aws-glue-catalog.html) for more details):\n"},"credentials":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationCredentials:CatalogIntegrationCredentials","description":"The Cluster API Credentials.","secret":true},"displayName":{"type":"string","description":"The name of the catalog integration.\n"},"environment":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationEnvironment:CatalogIntegrationEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationKafkaCluster:CatalogIntegrationKafkaCluster"},"snowflake":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationSnowflake:CatalogIntegrationSnowflake","description":"supports the following (see [Integrate Tableflow with Snowflake Open Catalog or Apache Polaris in Confluent Cloud](https://docs.confluent.io/cloud/current/topics/tableflow/how-to-guides/catalog-integration/integrate-with-snowflake-open-catalog-or-apache-polaris.html) for more details):\n"},"suspended":{"type":"boolean","description":"(Optional Boolean) Indicates whether the Catalog Integration should be suspended.\n"},"unity":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationUnity:CatalogIntegrationUnity","description":"supports the following (see [Integrate Tableflow with Unity Catalog in Confluent Cloud](https://docs.confluent.io/cloud/current/topics/tableflow/how-to-guides/catalog-integration/integrate-with-unity-catalog.html) for more details):\n"}},"required":["displayName","environment","kafkaCluster","suspended"],"inputProperties":{"awsGlue":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationAwsGlue:CatalogIntegrationAwsGlue","description":"supports the following (see [Integrate Tableflow with the AWS Glue Catalog in Confluent Cloud](https://docs.confluent.io/cloud/current/topics/tableflow/how-to-guides/catalog-integration/integrate-with-aws-glue-catalog.html) for more details):\n"},"credentials":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationCredentials:CatalogIntegrationCredentials","description":"The Cluster API Credentials.","secret":true},"displayName":{"type":"string","description":"The name of the catalog integration.\n"},"environment":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationEnvironment:CatalogIntegrationEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationKafkaCluster:CatalogIntegrationKafkaCluster","willReplaceOnChanges":true},"snowflake":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationSnowflake:CatalogIntegrationSnowflake","description":"supports the following (see [Integrate Tableflow with Snowflake Open Catalog or Apache Polaris in Confluent Cloud](https://docs.confluent.io/cloud/current/topics/tableflow/how-to-guides/catalog-integration/integrate-with-snowflake-open-catalog-or-apache-polaris.html) for more details):\n"},"unity":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationUnity:CatalogIntegrationUnity","description":"supports the following (see [Integrate Tableflow with Unity Catalog in Confluent Cloud](https://docs.confluent.io/cloud/current/topics/tableflow/how-to-guides/catalog-integration/integrate-with-unity-catalog.html) for more details):\n"}},"requiredInputs":["displayName","environment","kafkaCluster"],"stateInputs":{"description":"Input properties used for looking up and filtering CatalogIntegration resources.\n","properties":{"awsGlue":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationAwsGlue:CatalogIntegrationAwsGlue","description":"supports the following (see [Integrate Tableflow with the AWS Glue Catalog in Confluent Cloud](https://docs.confluent.io/cloud/current/topics/tableflow/how-to-guides/catalog-integration/integrate-with-aws-glue-catalog.html) for more details):\n"},"credentials":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationCredentials:CatalogIntegrationCredentials","description":"The Cluster API Credentials.","secret":true},"displayName":{"type":"string","description":"The name of the catalog integration.\n"},"environment":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationEnvironment:CatalogIntegrationEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationKafkaCluster:CatalogIntegrationKafkaCluster","willReplaceOnChanges":true},"snowflake":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationSnowflake:CatalogIntegrationSnowflake","description":"supports the following (see [Integrate Tableflow with Snowflake Open Catalog or Apache Polaris in Confluent Cloud](https://docs.confluent.io/cloud/current/topics/tableflow/how-to-guides/catalog-integration/integrate-with-snowflake-open-catalog-or-apache-polaris.html) for more details):\n"},"suspended":{"type":"boolean","description":"(Optional Boolean) Indicates whether the Catalog Integration should be suspended.\n"},"unity":{"$ref":"#/types/confluentcloud:index/CatalogIntegrationUnity:CatalogIntegrationUnity","description":"supports the following (see [Integrate Tableflow with Unity Catalog in Confluent Cloud](https://docs.confluent.io/cloud/current/topics/tableflow/how-to-guides/catalog-integration/integrate-with-unity-catalog.html) for more details):\n"}},"type":"object"}},"confluentcloud:index/certificateAuthority:CertificateAuthority":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.CertificateAuthority`\" pulumi-lang-dotnet=\"`confluentcloud.CertificateAuthority`\" pulumi-lang-go=\"`CertificateAuthority`\" pulumi-lang-python=\"`CertificateAuthority`\" pulumi-lang-yaml=\"`confluentcloud.CertificateAuthority`\" pulumi-lang-java=\"`confluentcloud.CertificateAuthority`\"\u003e`confluentcloud.CertificateAuthority`\u003c/span\u003e provides a Certificate Authority resource that enables creating, editing, and deleting Certificate Authorities on Confluent Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = new confluentcloud.CertificateAuthority(\"main\", {\n    displayName: \"my_certificate_authority\",\n    description: \"description\",\n    certificateChainFilename: \"certificate.pem\",\n    certificateChain: \"***REDACTED***\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.CertificateAuthority(\"main\",\n    display_name=\"my_certificate_authority\",\n    description=\"description\",\n    certificate_chain_filename=\"certificate.pem\",\n    certificate_chain=\"***REDACTED***\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new ConfluentCloud.CertificateAuthority(\"main\", new()\n    {\n        DisplayName = \"my_certificate_authority\",\n        Description = \"description\",\n        CertificateChainFilename = \"certificate.pem\",\n        CertificateChain = \"***REDACTED***\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewCertificateAuthority(ctx, \"main\", \u0026confluentcloud.CertificateAuthorityArgs{\n\t\t\tDisplayName:              pulumi.String(\"my_certificate_authority\"),\n\t\t\tDescription:              pulumi.String(\"description\"),\n\t\t\tCertificateChainFilename: pulumi.String(\"certificate.pem\"),\n\t\t\tCertificateChain:         pulumi.String(\"***REDACTED***\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.CertificateAuthority;\nimport com.pulumi.confluentcloud.CertificateAuthorityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new CertificateAuthority(\"main\", CertificateAuthorityArgs.builder()\n            .displayName(\"my_certificate_authority\")\n            .description(\"description\")\n            .certificateChainFilename(\"certificate.pem\")\n            .certificateChain(\"***REDACTED***\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: confluentcloud:CertificateAuthority\n    properties:\n      displayName: my_certificate_authority\n      description: description\n      certificateChainFilename: certificate.pem\n      certificateChain: '***REDACTED***'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Certificate Authority.\n\nYou can import a Certificate Authority by using Certificate Authority ID, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/certificateAuthority:CertificateAuthority main op-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"certificateChain":{"type":"string","description":"A PEM encoded string containing the signing certificate chain.\n","secret":true},"certificateChainFilename":{"type":"string","description":"The name of the certificate file.\n"},"crlChain":{"type":"string","description":"A PEM encoded string containing the CRL for this certificate authority.\n","secret":true},"crlSource":{"type":"string","description":"(Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL).\n"},"crlUpdatedAt":{"type":"string","description":"(Optional String) The timestamp for when CRL was last updated.\n"},"crlUrl":{"type":"string","description":"The url from which to fetch the CRL for the certificate authority.\n"},"description":{"type":"string","description":"A description of the Certificate Authority.\n"},"displayName":{"type":"string","description":"The name of the Certificate Authority.\n"},"expirationDates":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) The expiration dates of certificates in the chain.\n"},"fingerprints":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) The fingerprints for each certificate in the certificate chain.\n"},"serialNumbers":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) The serial numbers for each certificate in the certificate chain.\n"}},"required":["certificateChain","certificateChainFilename","crlSource","crlUpdatedAt","description","displayName","expirationDates","fingerprints","serialNumbers"],"inputProperties":{"certificateChain":{"type":"string","description":"A PEM encoded string containing the signing certificate chain.\n","secret":true},"certificateChainFilename":{"type":"string","description":"The name of the certificate file.\n"},"crlChain":{"type":"string","description":"A PEM encoded string containing the CRL for this certificate authority.\n","secret":true},"crlUrl":{"type":"string","description":"The url from which to fetch the CRL for the certificate authority.\n"},"description":{"type":"string","description":"A description of the Certificate Authority.\n"},"displayName":{"type":"string","description":"The name of the Certificate Authority.\n"}},"requiredInputs":["certificateChain","certificateChainFilename","description","displayName"],"stateInputs":{"description":"Input properties used for looking up and filtering CertificateAuthority resources.\n","properties":{"certificateChain":{"type":"string","description":"A PEM encoded string containing the signing certificate chain.\n","secret":true},"certificateChainFilename":{"type":"string","description":"The name of the certificate file.\n"},"crlChain":{"type":"string","description":"A PEM encoded string containing the CRL for this certificate authority.\n","secret":true},"crlSource":{"type":"string","description":"(Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL).\n"},"crlUpdatedAt":{"type":"string","description":"(Optional String) The timestamp for when CRL was last updated.\n"},"crlUrl":{"type":"string","description":"The url from which to fetch the CRL for the certificate authority.\n"},"description":{"type":"string","description":"A description of the Certificate Authority.\n"},"displayName":{"type":"string","description":"The name of the Certificate Authority.\n"},"expirationDates":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) The expiration dates of certificates in the chain.\n"},"fingerprints":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) The fingerprints for each certificate in the certificate chain.\n"},"serialNumbers":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) The serial numbers for each certificate in the certificate chain.\n"}},"type":"object"}},"confluentcloud:index/certificatePool:CertificatePool":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.CertificatePool`\" pulumi-lang-dotnet=\"`confluentcloud.CertificatePool`\" pulumi-lang-go=\"`CertificatePool`\" pulumi-lang-python=\"`CertificatePool`\" pulumi-lang-yaml=\"`confluentcloud.CertificatePool`\" pulumi-lang-java=\"`confluentcloud.CertificatePool`\"\u003e`confluentcloud.CertificatePool`\u003c/span\u003e provides a Certificate Pool resource that enables creating, editing, and deleting Certificate Pools on Confluent Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = new confluentcloud.CertificatePool(\"main\", {\n    certificateAuthority: {\n        id: mainConfluentCertificateAuthority.id,\n    },\n    displayName: \"my-certificate-pool\",\n    description: \"example description\",\n    externalIdentifier: \"CN\",\n    filter: \"CN == \\\"test\\\"\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.CertificatePool(\"main\",\n    certificate_authority={\n        \"id\": main_confluent_certificate_authority[\"id\"],\n    },\n    display_name=\"my-certificate-pool\",\n    description=\"example description\",\n    external_identifier=\"CN\",\n    filter=\"CN == \\\"test\\\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new ConfluentCloud.CertificatePool(\"main\", new()\n    {\n        CertificateAuthority = new ConfluentCloud.Inputs.CertificatePoolCertificateAuthorityArgs\n        {\n            Id = mainConfluentCertificateAuthority.Id,\n        },\n        DisplayName = \"my-certificate-pool\",\n        Description = \"example description\",\n        ExternalIdentifier = \"CN\",\n        Filter = \"CN == \\\"test\\\"\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewCertificatePool(ctx, \"main\", \u0026confluentcloud.CertificatePoolArgs{\n\t\t\tCertificateAuthority: \u0026confluentcloud.CertificatePoolCertificateAuthorityArgs{\n\t\t\t\tId: pulumi.Any(mainConfluentCertificateAuthority.Id),\n\t\t\t},\n\t\t\tDisplayName:        pulumi.String(\"my-certificate-pool\"),\n\t\t\tDescription:        pulumi.String(\"example description\"),\n\t\t\tExternalIdentifier: pulumi.String(\"CN\"),\n\t\t\tFilter:             pulumi.String(\"CN == \\\"test\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.CertificatePool;\nimport com.pulumi.confluentcloud.CertificatePoolArgs;\nimport com.pulumi.confluentcloud.inputs.CertificatePoolCertificateAuthorityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new CertificatePool(\"main\", CertificatePoolArgs.builder()\n            .certificateAuthority(CertificatePoolCertificateAuthorityArgs.builder()\n                .id(mainConfluentCertificateAuthority.id())\n                .build())\n            .displayName(\"my-certificate-pool\")\n            .description(\"example description\")\n            .externalIdentifier(\"CN\")\n            .filter(\"CN == \\\"test\\\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: confluentcloud:CertificatePool\n    properties:\n      certificateAuthority:\n        id: ${mainConfluentCertificateAuthority.id}\n      displayName: my-certificate-pool\n      description: example description\n      externalIdentifier: CN\n      filter: CN == \"test\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Certificate Pool.\n\nYou can import a Certificate Pool by using Certificate Authority ID and Certificate Pool ID, in the format `\u003cCertificate Authority ID\u003e/\u003cCertificate Pool ID\u003e`. The following example shows how to import a Certificate Pool:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/certificatePool:CertificatePool main op-abc123/pool-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"certificateAuthority":{"$ref":"#/types/confluentcloud:index/CertificatePoolCertificateAuthority:CertificatePoolCertificateAuthority"},"description":{"type":"string","description":"A description of the Certificate Pool.\n"},"displayName":{"type":"string","description":"The name of the Certificate Pool.\n"},"externalIdentifier":{"type":"string","description":"The certificate field that will be used to represent the pool's external identity for audit logging.\n"},"filter":{"type":"string","description":"A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool.\n"}},"required":["certificateAuthority","description","displayName","externalIdentifier","filter"],"inputProperties":{"certificateAuthority":{"$ref":"#/types/confluentcloud:index/CertificatePoolCertificateAuthority:CertificatePoolCertificateAuthority","willReplaceOnChanges":true},"description":{"type":"string","description":"A description of the Certificate Pool.\n"},"displayName":{"type":"string","description":"The name of the Certificate Pool.\n"},"externalIdentifier":{"type":"string","description":"The certificate field that will be used to represent the pool's external identity for audit logging.\n"},"filter":{"type":"string","description":"A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool.\n"}},"requiredInputs":["certificateAuthority","description","displayName","externalIdentifier","filter"],"stateInputs":{"description":"Input properties used for looking up and filtering CertificatePool resources.\n","properties":{"certificateAuthority":{"$ref":"#/types/confluentcloud:index/CertificatePoolCertificateAuthority:CertificatePoolCertificateAuthority","willReplaceOnChanges":true},"description":{"type":"string","description":"A description of the Certificate Pool.\n"},"displayName":{"type":"string","description":"The name of the Certificate Pool.\n"},"externalIdentifier":{"type":"string","description":"The certificate field that will be used to represent the pool's external identity for audit logging.\n"},"filter":{"type":"string","description":"A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool.\n"}},"type":"object"}},"confluentcloud:index/clusterLink:ClusterLink":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ClusterLink`\" pulumi-lang-dotnet=\"`confluentcloud.ClusterLink`\" pulumi-lang-go=\"`ClusterLink`\" pulumi-lang-python=\"`ClusterLink`\" pulumi-lang-yaml=\"`confluentcloud.ClusterLink`\" pulumi-lang-java=\"`confluentcloud.ClusterLink`\"\u003e`confluentcloud.ClusterLink`\u003c/span\u003e provides a Cluster Link resource that enables creating and deleting Cluster Links on a Kafka cluster on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental cluster link deletion. This setting rejects plans that would destroy or recreate the cluster link. Read more about it in the Terraform docs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\n// https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode\nconst east_to_west = new confluentcloud.ClusterLink(\"east-to-west\", {\n    link: \"bidirectional-link\",\n    linkMode: \"BIDIRECTIONAL\",\n    localKafkaCluster: {\n        id: east.id,\n        restEndpoint: east.restEndpoint,\n        credentials: {\n            key: app_manager_east_cluster_api_key.id,\n            secret: app_manager_east_cluster_api_key.secret,\n        },\n    },\n    remoteKafkaCluster: {\n        id: west.id,\n        bootstrapEndpoint: west.bootstrapEndpoint,\n        credentials: {\n            key: app_manager_west_cluster_api_key.id,\n            secret: app_manager_west_cluster_api_key.secret,\n        },\n    },\n});\nconst west_to_east = new confluentcloud.ClusterLink(\"west-to-east\", {\n    link: \"bidirectional-link\",\n    linkMode: \"BIDIRECTIONAL\",\n    localKafkaCluster: {\n        id: west.id,\n        restEndpoint: west.restEndpoint,\n        credentials: {\n            key: app_manager_west_cluster_api_key.id,\n            secret: app_manager_west_cluster_api_key.secret,\n        },\n    },\n    remoteKafkaCluster: {\n        id: east.id,\n        bootstrapEndpoint: east.bootstrapEndpoint,\n        credentials: {\n            key: app_manager_east_cluster_api_key.id,\n            secret: app_manager_east_cluster_api_key.secret,\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\n# https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode\neast_to_west = confluentcloud.ClusterLink(\"east-to-west\",\n    link=\"bidirectional-link\",\n    link_mode=\"BIDIRECTIONAL\",\n    local_kafka_cluster={\n        \"id\": east[\"id\"],\n        \"rest_endpoint\": east[\"restEndpoint\"],\n        \"credentials\": {\n            \"key\": app_manager_east_cluster_api_key[\"id\"],\n            \"secret\": app_manager_east_cluster_api_key[\"secret\"],\n        },\n    },\n    remote_kafka_cluster={\n        \"id\": west[\"id\"],\n        \"bootstrap_endpoint\": west[\"bootstrapEndpoint\"],\n        \"credentials\": {\n            \"key\": app_manager_west_cluster_api_key[\"id\"],\n            \"secret\": app_manager_west_cluster_api_key[\"secret\"],\n        },\n    })\nwest_to_east = confluentcloud.ClusterLink(\"west-to-east\",\n    link=\"bidirectional-link\",\n    link_mode=\"BIDIRECTIONAL\",\n    local_kafka_cluster={\n        \"id\": west[\"id\"],\n        \"rest_endpoint\": west[\"restEndpoint\"],\n        \"credentials\": {\n            \"key\": app_manager_west_cluster_api_key[\"id\"],\n            \"secret\": app_manager_west_cluster_api_key[\"secret\"],\n        },\n    },\n    remote_kafka_cluster={\n        \"id\": east[\"id\"],\n        \"bootstrap_endpoint\": east[\"bootstrapEndpoint\"],\n        \"credentials\": {\n            \"key\": app_manager_east_cluster_api_key[\"id\"],\n            \"secret\": app_manager_east_cluster_api_key[\"secret\"],\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode\n    var east_to_west = new ConfluentCloud.ClusterLink(\"east-to-west\", new()\n    {\n        Link = \"bidirectional-link\",\n        LinkMode = \"BIDIRECTIONAL\",\n        LocalKafkaCluster = new ConfluentCloud.Inputs.ClusterLinkLocalKafkaClusterArgs\n        {\n            Id = east.Id,\n            RestEndpoint = east.RestEndpoint,\n            Credentials = new ConfluentCloud.Inputs.ClusterLinkLocalKafkaClusterCredentialsArgs\n            {\n                Key = app_manager_east_cluster_api_key.Id,\n                Secret = app_manager_east_cluster_api_key.Secret,\n            },\n        },\n        RemoteKafkaCluster = new ConfluentCloud.Inputs.ClusterLinkRemoteKafkaClusterArgs\n        {\n            Id = west.Id,\n            BootstrapEndpoint = west.BootstrapEndpoint,\n            Credentials = new ConfluentCloud.Inputs.ClusterLinkRemoteKafkaClusterCredentialsArgs\n            {\n                Key = app_manager_west_cluster_api_key.Id,\n                Secret = app_manager_west_cluster_api_key.Secret,\n            },\n        },\n    });\n\n    var west_to_east = new ConfluentCloud.ClusterLink(\"west-to-east\", new()\n    {\n        Link = \"bidirectional-link\",\n        LinkMode = \"BIDIRECTIONAL\",\n        LocalKafkaCluster = new ConfluentCloud.Inputs.ClusterLinkLocalKafkaClusterArgs\n        {\n            Id = west.Id,\n            RestEndpoint = west.RestEndpoint,\n            Credentials = new ConfluentCloud.Inputs.ClusterLinkLocalKafkaClusterCredentialsArgs\n            {\n                Key = app_manager_west_cluster_api_key.Id,\n                Secret = app_manager_west_cluster_api_key.Secret,\n            },\n        },\n        RemoteKafkaCluster = new ConfluentCloud.Inputs.ClusterLinkRemoteKafkaClusterArgs\n        {\n            Id = east.Id,\n            BootstrapEndpoint = east.BootstrapEndpoint,\n            Credentials = new ConfluentCloud.Inputs.ClusterLinkRemoteKafkaClusterCredentialsArgs\n            {\n                Key = app_manager_east_cluster_api_key.Id,\n                Secret = app_manager_east_cluster_api_key.Secret,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode\n\t\t_, err := confluentcloud.NewClusterLink(ctx, \"east-to-west\", \u0026confluentcloud.ClusterLinkArgs{\n\t\t\tLink:     pulumi.String(\"bidirectional-link\"),\n\t\t\tLinkMode: pulumi.String(\"BIDIRECTIONAL\"),\n\t\t\tLocalKafkaCluster: \u0026confluentcloud.ClusterLinkLocalKafkaClusterArgs{\n\t\t\t\tId:           pulumi.Any(east.Id),\n\t\t\t\tRestEndpoint: pulumi.Any(east.RestEndpoint),\n\t\t\t\tCredentials: \u0026confluentcloud.ClusterLinkLocalKafkaClusterCredentialsArgs{\n\t\t\t\t\tKey:    pulumi.Any(app_manager_east_cluster_api_key.Id),\n\t\t\t\t\tSecret: pulumi.Any(app_manager_east_cluster_api_key.Secret),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRemoteKafkaCluster: \u0026confluentcloud.ClusterLinkRemoteKafkaClusterArgs{\n\t\t\t\tId:                pulumi.Any(west.Id),\n\t\t\t\tBootstrapEndpoint: pulumi.Any(west.BootstrapEndpoint),\n\t\t\t\tCredentials: \u0026confluentcloud.ClusterLinkRemoteKafkaClusterCredentialsArgs{\n\t\t\t\t\tKey:    pulumi.Any(app_manager_west_cluster_api_key.Id),\n\t\t\t\t\tSecret: pulumi.Any(app_manager_west_cluster_api_key.Secret),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewClusterLink(ctx, \"west-to-east\", \u0026confluentcloud.ClusterLinkArgs{\n\t\t\tLink:     pulumi.String(\"bidirectional-link\"),\n\t\t\tLinkMode: pulumi.String(\"BIDIRECTIONAL\"),\n\t\t\tLocalKafkaCluster: \u0026confluentcloud.ClusterLinkLocalKafkaClusterArgs{\n\t\t\t\tId:           pulumi.Any(west.Id),\n\t\t\t\tRestEndpoint: pulumi.Any(west.RestEndpoint),\n\t\t\t\tCredentials: \u0026confluentcloud.ClusterLinkLocalKafkaClusterCredentialsArgs{\n\t\t\t\t\tKey:    pulumi.Any(app_manager_west_cluster_api_key.Id),\n\t\t\t\t\tSecret: pulumi.Any(app_manager_west_cluster_api_key.Secret),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRemoteKafkaCluster: \u0026confluentcloud.ClusterLinkRemoteKafkaClusterArgs{\n\t\t\t\tId:                pulumi.Any(east.Id),\n\t\t\t\tBootstrapEndpoint: pulumi.Any(east.BootstrapEndpoint),\n\t\t\t\tCredentials: \u0026confluentcloud.ClusterLinkRemoteKafkaClusterCredentialsArgs{\n\t\t\t\t\tKey:    pulumi.Any(app_manager_east_cluster_api_key.Id),\n\t\t\t\t\tSecret: pulumi.Any(app_manager_east_cluster_api_key.Secret),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ClusterLink;\nimport com.pulumi.confluentcloud.ClusterLinkArgs;\nimport com.pulumi.confluentcloud.inputs.ClusterLinkLocalKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.ClusterLinkLocalKafkaClusterCredentialsArgs;\nimport com.pulumi.confluentcloud.inputs.ClusterLinkRemoteKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.ClusterLinkRemoteKafkaClusterCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode\n        var east_to_west = new ClusterLink(\"east-to-west\", ClusterLinkArgs.builder()\n            .link(\"bidirectional-link\")\n            .linkMode(\"BIDIRECTIONAL\")\n            .localKafkaCluster(ClusterLinkLocalKafkaClusterArgs.builder()\n                .id(east.id())\n                .restEndpoint(east.restEndpoint())\n                .credentials(ClusterLinkLocalKafkaClusterCredentialsArgs.builder()\n                    .key(app_manager_east_cluster_api_key.id())\n                    .secret(app_manager_east_cluster_api_key.secret())\n                    .build())\n                .build())\n            .remoteKafkaCluster(ClusterLinkRemoteKafkaClusterArgs.builder()\n                .id(west.id())\n                .bootstrapEndpoint(west.bootstrapEndpoint())\n                .credentials(ClusterLinkRemoteKafkaClusterCredentialsArgs.builder()\n                    .key(app_manager_west_cluster_api_key.id())\n                    .secret(app_manager_west_cluster_api_key.secret())\n                    .build())\n                .build())\n            .build());\n\n        var west_to_east = new ClusterLink(\"west-to-east\", ClusterLinkArgs.builder()\n            .link(\"bidirectional-link\")\n            .linkMode(\"BIDIRECTIONAL\")\n            .localKafkaCluster(ClusterLinkLocalKafkaClusterArgs.builder()\n                .id(west.id())\n                .restEndpoint(west.restEndpoint())\n                .credentials(ClusterLinkLocalKafkaClusterCredentialsArgs.builder()\n                    .key(app_manager_west_cluster_api_key.id())\n                    .secret(app_manager_west_cluster_api_key.secret())\n                    .build())\n                .build())\n            .remoteKafkaCluster(ClusterLinkRemoteKafkaClusterArgs.builder()\n                .id(east.id())\n                .bootstrapEndpoint(east.bootstrapEndpoint())\n                .credentials(ClusterLinkRemoteKafkaClusterCredentialsArgs.builder()\n                    .key(app_manager_east_cluster_api_key.id())\n                    .secret(app_manager_east_cluster_api_key.secret())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode\n  east-to-west:\n    type: confluentcloud:ClusterLink\n    properties:\n      link: bidirectional-link\n      linkMode: BIDIRECTIONAL\n      localKafkaCluster:\n        id: ${east.id}\n        restEndpoint: ${east.restEndpoint}\n        credentials:\n          key: ${[\"app-manager-east-cluster-api-key\"].id}\n          secret: ${[\"app-manager-east-cluster-api-key\"].secret}\n      remoteKafkaCluster:\n        id: ${west.id}\n        bootstrapEndpoint: ${west.bootstrapEndpoint}\n        credentials:\n          key: ${[\"app-manager-west-cluster-api-key\"].id}\n          secret: ${[\"app-manager-west-cluster-api-key\"].secret}\n  west-to-east:\n    type: confluentcloud:ClusterLink\n    properties:\n      link: bidirectional-link\n      linkMode: BIDIRECTIONAL\n      localKafkaCluster:\n        id: ${west.id}\n        restEndpoint: ${west.restEndpoint}\n        credentials:\n          key: ${[\"app-manager-west-cluster-api-key\"].id}\n          secret: ${[\"app-manager-west-cluster-api-key\"].secret}\n      remoteKafkaCluster:\n        id: ${east.id}\n        bootstrapEndpoint: ${east.bootstrapEndpoint}\n        credentials:\n          key: ${[\"app-manager-east-cluster-api-key\"].id}\n          secret: ${[\"app-manager-east-cluster-api-key\"].secret}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ClusterLink`\" pulumi-lang-dotnet=\"`confluentcloud.ClusterLink`\" pulumi-lang-go=\"`ClusterLink`\" pulumi-lang-python=\"`ClusterLink`\" pulumi-lang-yaml=\"`confluentcloud.ClusterLink`\" pulumi-lang-java=\"`confluentcloud.ClusterLink`\"\u003e`confluentcloud.ClusterLink`\u003c/span\u003e resource:\n  * destination-initiated-cluster-link-rbac: An example of setting up a _destination_ initiated cluster link with a mirror topic\n  * source-initiated-cluster-link-rbac: An example of setting up a _source_ initiated cluster link with a mirror topic\n  * regular-bidirectional-cluster-link-rbac: An example of setting up a bidirectional cluster link with 2 mirror topics\n  * advanced-bidirectional-cluster-link-rbac: An example of setting up a bidirectional cluster link with 2 mirror topics ([advanced option](https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.html#create-a-cluster-link-in-bidirectional-mode))\n\nAdditionally, OAuth-specific examples can be found in the cluster-link-using-oauth directory.\n\nSee [Cluster Linking on Confluent Cloud](https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/index.html) to learn more about Cluster Linking on Confluent Cloud.\n\n## Import\n\nYou can import a Kafka mirror topic by using the cluster link name, cluster link mode, cluster link connection mode,\nsource (or local for bidirectional cluster links) Kafka cluster ID, and destination (or remote  for bidirectional cluster links) Kafka cluster ID, in the format `\u003cCluster link name\u003e/\u003cCluster link mode\u003e/\u003cCluster connection mode\u003e/\u003cSource (Local) Kafka cluster ID\u003e/\u003cDestination (Remote) Kafka cluster ID\u003e`, for example:\n\nOption #1 when using source-initiated or destination-initiated cluster links\n\n```sh\n$ export IMPORT_SOURCE_KAFKA_BOOTSTRAP_ENDPOINT=\"\u003csource_kafka_bootstrap_endpoint\u003e\"\n$ export IMPORT_SOURCE_KAFKA_API_KEY=\"\u003csource_kafka_api_key\u003e\"\n$ export IMPORT_SOURCE_KAFKA_API_SECRET=\"\u003csource_kafka_api_secret\u003e\"\n$ export IMPORT_DESTINATION_KAFKA_REST_ENDPOINT=\"\u003cdestination_kafka_rest_endpoint\u003e\"\n$ export IMPORT_DESTINATION_KAFKA_API_KEY=\"\u003cdestination_kafka_api_key\u003e\"\n$ export IMPORT_DESTINATION_KAFKA_API_SECRET=\"\u003cdestination_kafka_api_secret\u003e\"\n$ pulumi import confluentcloud:index/clusterLink:ClusterLink my_cluster_link my-cluster-link/DESTINATION/OUTBOUND/lkc-abc123/lkc-xyz456\n```\n\nOption #2 when using bidirectional cluster links\n\n```sh\n$ export IMPORT_LOCAL_KAFKA_BOOTSTRAP_ENDPOINT=\"\u003clocal_kafka_bootstrap_endpoint\u003e\"\n$ export IMPORT_LOCAL_KAFKA_API_KEY=\"\u003clocal_kafka_api_key\u003e\"\n$ export IMPORT_LOCAL_KAFKA_API_SECRET=\"\u003clocal_kafka_api_secret\u003e\"\n$ export IMPORT_REMOTE_KAFKA_REST_ENDPOINT=\"\u003cremote_kafka_rest_endpoint\u003e\"\n$ export IMPORT_REMOTE_KAFKA_API_KEY=\"\u003cremote_kafka_api_key\u003e\"\n$ export IMPORT_REMOTE_KAFKA_API_SECRET=\"\u003cremote_kafka_api_secret\u003e\"\n$ pulumi import confluentcloud:index/clusterLink:ClusterLink my_cluster_link my-cluster-link/BIDIRECTIONAL/OUTBOUND/lkc-abc123/lkc-xyz456\n```\n\nWhen using OAuth to authenticate to Confluent Cloud, the Kafka cluster API key and secret should be skipped:\n\nOption #3 when using OAuth to authenticate the source-initiated or destination-initiated cluster links\n\n```sh\n$ export IMPORT_SOURCE_KAFKA_BOOTSTRAP_ENDPOINT=\"\u003csource_kafka_bootstrap_endpoint\u003e\"\n$ export IMPORT_DESTINATION_KAFKA_REST_ENDPOINT=\"\u003cdestination_kafka_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/clusterLink:ClusterLink my_cluster_link my-cluster-link/DESTINATION/OUTBOUND/lkc-abc123/lkc-xyz456\n```\n\nOption #4 when using OAuth to authenticate the bidirectional cluster links\n\n```sh\n$ export IMPORT_LOCAL_KAFKA_REST_ENDPOINT=\"\u003clocal_kafka_rest_endpoint\u003e\"\n$ export IMPORT_REMOTE_KAFKA_BOOTSTRAP_ENDPOINT=\"\u003cremote_kafka_bootstrap_endpoint\u003e\"\n$ pulumi import confluentcloud:index/clusterLink:ClusterLink my_cluster_link my-cluster-link/BIDIRECTIONAL/OUTBOUND/lkc-abc123/lkc-xyz456\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"clusterLinkId":{"type":"string","description":"(Required String) The actual Cluster Link ID assigned from Confluent Cloud that uniquely represents a link between two Kafka clusters, for example, `qz0HDEV-Qz2B5aPFpcWQJQ`.\n"},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom cluster link settings to set:\n"},"connectionMode":{"type":"string","description":"The connection mode of the cluster link. The supported values are `\"INBOUND\"` and `\"OUTBOUND\"`. Defaults to `\"OUTBOUND\"`.\n"},"destinationKafkaCluster":{"$ref":"#/types/confluentcloud:index/ClusterLinkDestinationKafkaCluster:ClusterLinkDestinationKafkaCluster"},"link":{"type":"string","description":"The name of the cluster link, for example, `my-cluster-link`.\n"},"linkMode":{"type":"string","description":"The mode of the cluster link. The supported values are `\"DESTINATION\"`, `\"SOURCE\"`, and `\"BIDIRECTIONAL\"`. Defaults to `\"DESTINATION\"`.\n"},"localKafkaCluster":{"$ref":"#/types/confluentcloud:index/ClusterLinkLocalKafkaCluster:ClusterLinkLocalKafkaCluster"},"remoteKafkaCluster":{"$ref":"#/types/confluentcloud:index/ClusterLinkRemoteKafkaCluster:ClusterLinkRemoteKafkaCluster"},"sourceKafkaCluster":{"$ref":"#/types/confluentcloud:index/ClusterLinkSourceKafkaCluster:ClusterLinkSourceKafkaCluster"}},"required":["clusterLinkId","config","link"],"inputProperties":{"config":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom cluster link settings to set:\n"},"connectionMode":{"type":"string","description":"The connection mode of the cluster link. The supported values are `\"INBOUND\"` and `\"OUTBOUND\"`. Defaults to `\"OUTBOUND\"`.\n","willReplaceOnChanges":true},"destinationKafkaCluster":{"$ref":"#/types/confluentcloud:index/ClusterLinkDestinationKafkaCluster:ClusterLinkDestinationKafkaCluster"},"link":{"type":"string","description":"The name of the cluster link, for example, `my-cluster-link`.\n","willReplaceOnChanges":true},"linkMode":{"type":"string","description":"The mode of the cluster link. The supported values are `\"DESTINATION\"`, `\"SOURCE\"`, and `\"BIDIRECTIONAL\"`. Defaults to `\"DESTINATION\"`.\n","willReplaceOnChanges":true},"localKafkaCluster":{"$ref":"#/types/confluentcloud:index/ClusterLinkLocalKafkaCluster:ClusterLinkLocalKafkaCluster"},"remoteKafkaCluster":{"$ref":"#/types/confluentcloud:index/ClusterLinkRemoteKafkaCluster:ClusterLinkRemoteKafkaCluster"},"sourceKafkaCluster":{"$ref":"#/types/confluentcloud:index/ClusterLinkSourceKafkaCluster:ClusterLinkSourceKafkaCluster"}},"stateInputs":{"description":"Input properties used for looking up and filtering ClusterLink resources.\n","properties":{"clusterLinkId":{"type":"string","description":"(Required String) The actual Cluster Link ID assigned from Confluent Cloud that uniquely represents a link between two Kafka clusters, for example, `qz0HDEV-Qz2B5aPFpcWQJQ`.\n"},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom cluster link settings to set:\n"},"connectionMode":{"type":"string","description":"The connection mode of the cluster link. The supported values are `\"INBOUND\"` and `\"OUTBOUND\"`. Defaults to `\"OUTBOUND\"`.\n","willReplaceOnChanges":true},"destinationKafkaCluster":{"$ref":"#/types/confluentcloud:index/ClusterLinkDestinationKafkaCluster:ClusterLinkDestinationKafkaCluster"},"link":{"type":"string","description":"The name of the cluster link, for example, `my-cluster-link`.\n","willReplaceOnChanges":true},"linkMode":{"type":"string","description":"The mode of the cluster link. The supported values are `\"DESTINATION\"`, `\"SOURCE\"`, and `\"BIDIRECTIONAL\"`. Defaults to `\"DESTINATION\"`.\n","willReplaceOnChanges":true},"localKafkaCluster":{"$ref":"#/types/confluentcloud:index/ClusterLinkLocalKafkaCluster:ClusterLinkLocalKafkaCluster"},"remoteKafkaCluster":{"$ref":"#/types/confluentcloud:index/ClusterLinkRemoteKafkaCluster:ClusterLinkRemoteKafkaCluster"},"sourceKafkaCluster":{"$ref":"#/types/confluentcloud:index/ClusterLinkSourceKafkaCluster:ClusterLinkSourceKafkaCluster"}},"type":"object"}},"confluentcloud:index/connectArtifact:ConnectArtifact":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ConnectArtifact`\" pulumi-lang-dotnet=\"`confluentcloud.ConnectArtifact`\" pulumi-lang-go=\"`ConnectArtifact`\" pulumi-lang-python=\"`ConnectArtifact`\" pulumi-lang-yaml=\"`confluentcloud.ConnectArtifact`\" pulumi-lang-java=\"`confluentcloud.ConnectArtifact`\"\u003e`confluentcloud.ConnectArtifact`\u003c/span\u003e provides a Connect Artifact resource that enables creating and deleting Connect Artifact on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Connect Artifact deletion. This setting rejects plans that would destroy or recreate the Connect Artifact, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.ConnectArtifact(\"example\", {\n    displayName: \"example-connect-artifact\",\n    cloud: \"AWS\",\n    environment: {\n        id: \"env-123456\",\n    },\n    contentFormat: \"JAR\",\n    artifactFile: \"path/to/your/artifact.jar\",\n    description: \"Example Connect Artifact\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.ConnectArtifact(\"example\",\n    display_name=\"example-connect-artifact\",\n    cloud=\"AWS\",\n    environment={\n        \"id\": \"env-123456\",\n    },\n    content_format=\"JAR\",\n    artifact_file=\"path/to/your/artifact.jar\",\n    description=\"Example Connect Artifact\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.ConnectArtifact(\"example\", new()\n    {\n        DisplayName = \"example-connect-artifact\",\n        Cloud = \"AWS\",\n        Environment = new ConfluentCloud.Inputs.ConnectArtifactEnvironmentArgs\n        {\n            Id = \"env-123456\",\n        },\n        ContentFormat = \"JAR\",\n        ArtifactFile = \"path/to/your/artifact.jar\",\n        Description = \"Example Connect Artifact\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewConnectArtifact(ctx, \"example\", \u0026confluentcloud.ConnectArtifactArgs{\n\t\t\tDisplayName: pulumi.String(\"example-connect-artifact\"),\n\t\t\tCloud:       pulumi.String(\"AWS\"),\n\t\t\tEnvironment: \u0026confluentcloud.ConnectArtifactEnvironmentArgs{\n\t\t\t\tId: pulumi.String(\"env-123456\"),\n\t\t\t},\n\t\t\tContentFormat: pulumi.String(\"JAR\"),\n\t\t\tArtifactFile:  pulumi.String(\"path/to/your/artifact.jar\"),\n\t\t\tDescription:   pulumi.String(\"Example Connect Artifact\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConnectArtifact;\nimport com.pulumi.confluentcloud.ConnectArtifactArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectArtifactEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new ConnectArtifact(\"example\", ConnectArtifactArgs.builder()\n            .displayName(\"example-connect-artifact\")\n            .cloud(\"AWS\")\n            .environment(ConnectArtifactEnvironmentArgs.builder()\n                .id(\"env-123456\")\n                .build())\n            .contentFormat(\"JAR\")\n            .artifactFile(\"path/to/your/artifact.jar\")\n            .description(\"Example Connect Artifact\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:ConnectArtifact\n    properties:\n      displayName: example-connect-artifact\n      cloud: AWS\n      environment:\n        id: env-123456\n      contentFormat: JAR\n      artifactFile: path/to/your/artifact.jar\n      description: Example Connect Artifact\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** Set \u003cspan pulumi-lang-nodejs=\"`artifactFile \" pulumi-lang-dotnet=\"`ArtifactFile \" pulumi-lang-go=\"`artifactFile \" pulumi-lang-python=\"`artifact_file \" pulumi-lang-yaml=\"`artifactFile \" pulumi-lang-java=\"`artifactFile \"\u003e`artifact_file \u003c/span\u003e= \"\"` or use `IMPORT_ARTIFACT_FILENAME` environment variables before importing a Connect Artifact.\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Connect Artifact.\n\nYou can import a Connect Artifact by using Environment ID, Cloud, and Connect Artifact ID in the format `\u003cEnvironment ID\u003e/\u003ccloud\u003e/\u003cConnect Artifact ID\u003e`, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/connectArtifact:ConnectArtifact example env-123456/AWS/ca-123456\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"artifactFile":{"type":"string","description":"The artifact file for Connect Artifact in `JAR` or `ZIP` format. This can be relative or absolute path\n"},"cloud":{"type":"string","description":"Cloud provider where the Connect Artifact archive is uploaded. Accepted values are: `AWS`, `AZURE`.\n"},"contentFormat":{"type":"string","description":"Archive format of the Connect Artifact. Supported formats are `JAR` and `ZIP`.\n"},"description":{"type":"string","description":"Description of the Connect Artifact.\n"},"displayName":{"type":"string","description":"The unique name of the Connect Artifact per cloud, environment scope.\n"},"environment":{"$ref":"#/types/confluentcloud:index/ConnectArtifactEnvironment:ConnectArtifactEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"status":{"type":"string","description":"Status of the Connect Artifact."}},"required":["cloud","contentFormat","displayName","environment","status"],"inputProperties":{"artifactFile":{"type":"string","description":"The artifact file for Connect Artifact in `JAR` or `ZIP` format. This can be relative or absolute path\n","willReplaceOnChanges":true},"cloud":{"type":"string","description":"Cloud provider where the Connect Artifact archive is uploaded. Accepted values are: `AWS`, `AZURE`.\n","willReplaceOnChanges":true},"contentFormat":{"type":"string","description":"Archive format of the Connect Artifact. Supported formats are `JAR` and `ZIP`.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Description of the Connect Artifact.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The unique name of the Connect Artifact per cloud, environment scope.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/ConnectArtifactEnvironment:ConnectArtifactEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true}},"requiredInputs":["cloud","contentFormat","displayName","environment"],"stateInputs":{"description":"Input properties used for looking up and filtering ConnectArtifact resources.\n","properties":{"artifactFile":{"type":"string","description":"The artifact file for Connect Artifact in `JAR` or `ZIP` format. This can be relative or absolute path\n","willReplaceOnChanges":true},"cloud":{"type":"string","description":"Cloud provider where the Connect Artifact archive is uploaded. Accepted values are: `AWS`, `AZURE`.\n","willReplaceOnChanges":true},"contentFormat":{"type":"string","description":"Archive format of the Connect Artifact. Supported formats are `JAR` and `ZIP`.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Description of the Connect Artifact.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The unique name of the Connect Artifact per cloud, environment scope.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/ConnectArtifactEnvironment:ConnectArtifactEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"status":{"type":"string","description":"Status of the Connect Artifact."}},"type":"object"}},"confluentcloud:index/connector:Connector":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Connector`\" pulumi-lang-dotnet=\"`confluentcloud.Connector`\" pulumi-lang-go=\"`Connector`\" pulumi-lang-python=\"`Connector`\" pulumi-lang-yaml=\"`confluentcloud.Connector`\" pulumi-lang-java=\"`confluentcloud.Connector`\"\u003e`confluentcloud.Connector`\u003c/span\u003e provides a connector resource that enables creating, editing, and deleting connectors on Confluent Cloud.\n\n\u003e **Note:** Use [Confluent docs](https://docs.confluent.io/cloud/current/connectors/index.html) or the [Confluent Cloud Console](https://docs.confluent.io/cloud/current/connectors/cc-s3-sink.html#using-the-ccloud-console) to pregenerate the configuration for your desired connector and to see what ACLs are required to be created.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental connector deletion. This setting rejects plans that would destroy or recreate the connector, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Example Managed [Datagen Source Connector](https://docs.confluent.io/cloud/current/connectors/cc-datagen-source.html) that uses a service account to communicate with your Kafka cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\n// https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/managed-datagen-source-connector\nconst source = new confluentcloud.Connector(\"source\", {\n    environment: {\n        id: staging.id,\n    },\n    kafkaCluster: {\n        id: basic.id,\n    },\n    configSensitive: {},\n    configNonsensitive: {\n        \"connector.class\": \"DatagenSource\",\n        name: \"DatagenSourceConnector_0\",\n        \"kafka.auth.mode\": \"SERVICE_ACCOUNT\",\n        \"kafka.service.account.id\": app_connector.id,\n        \"kafka.topic\": orders.topicName,\n        \"output.data.format\": \"JSON\",\n        quickstart: \"ORDERS\",\n        \"tasks.max\": \"1\",\n    },\n}, {\n    dependsOn: [\n        app_connector_describe_on_cluster,\n        app_connector_write_on_target_topic,\n        app_connector_create_on_data_preview_topics,\n        app_connector_write_on_data_preview_topics,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\n# https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/managed-datagen-source-connector\nsource = confluentcloud.Connector(\"source\",\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    kafka_cluster={\n        \"id\": basic[\"id\"],\n    },\n    config_sensitive={},\n    config_nonsensitive={\n        \"connector.class\": \"DatagenSource\",\n        \"name\": \"DatagenSourceConnector_0\",\n        \"kafka.auth.mode\": \"SERVICE_ACCOUNT\",\n        \"kafka.service.account.id\": app_connector[\"id\"],\n        \"kafka.topic\": orders[\"topicName\"],\n        \"output.data.format\": \"JSON\",\n        \"quickstart\": \"ORDERS\",\n        \"tasks.max\": \"1\",\n    },\n    opts = pulumi.ResourceOptions(depends_on=[\n            app_connector_describe_on_cluster,\n            app_connector_write_on_target_topic,\n            app_connector_create_on_data_preview_topics,\n            app_connector_write_on_data_preview_topics,\n        ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/managed-datagen-source-connector\n    var source = new ConfluentCloud.Connector(\"source\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ConnectorEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.ConnectorKafkaClusterArgs\n        {\n            Id = basic.Id,\n        },\n        ConfigSensitive = null,\n        ConfigNonsensitive = \n        {\n            { \"connector.class\", \"DatagenSource\" },\n            { \"name\", \"DatagenSourceConnector_0\" },\n            { \"kafka.auth.mode\", \"SERVICE_ACCOUNT\" },\n            { \"kafka.service.account.id\", app_connector.Id },\n            { \"kafka.topic\", orders.TopicName },\n            { \"output.data.format\", \"JSON\" },\n            { \"quickstart\", \"ORDERS\" },\n            { \"tasks.max\", \"1\" },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            app_connector_describe_on_cluster,\n            app_connector_write_on_target_topic,\n            app_connector_create_on_data_preview_topics,\n            app_connector_write_on_data_preview_topics,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/managed-datagen-source-connector\n\t\t_, err := confluentcloud.NewConnector(ctx, \"source\", \u0026confluentcloud.ConnectorArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ConnectorEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tKafkaCluster: \u0026confluentcloud.ConnectorKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(basic.Id),\n\t\t\t},\n\t\t\tConfigSensitive: pulumi.StringMap{},\n\t\t\tConfigNonsensitive: pulumi.StringMap{\n\t\t\t\t\"connector.class\":          pulumi.String(\"DatagenSource\"),\n\t\t\t\t\"name\":                     pulumi.String(\"DatagenSourceConnector_0\"),\n\t\t\t\t\"kafka.auth.mode\":          pulumi.String(\"SERVICE_ACCOUNT\"),\n\t\t\t\t\"kafka.service.account.id\": pulumi.Any(app_connector.Id),\n\t\t\t\t\"kafka.topic\":              pulumi.Any(orders.TopicName),\n\t\t\t\t\"output.data.format\":       pulumi.String(\"JSON\"),\n\t\t\t\t\"quickstart\":               pulumi.String(\"ORDERS\"),\n\t\t\t\t\"tasks.max\":                pulumi.String(\"1\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapp_connector_describe_on_cluster,\n\t\t\tapp_connector_write_on_target_topic,\n\t\t\tapp_connector_create_on_data_preview_topics,\n\t\t\tapp_connector_write_on_data_preview_topics,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Connector;\nimport com.pulumi.confluentcloud.ConnectorArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorKafkaClusterArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/managed-datagen-source-connector\n        var source = new Connector(\"source\", ConnectorArgs.builder()\n            .environment(ConnectorEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .kafkaCluster(ConnectorKafkaClusterArgs.builder()\n                .id(basic.id())\n                .build())\n            .configSensitive(Map.ofEntries(\n            ))\n            .configNonsensitive(Map.ofEntries(\n                Map.entry(\"connector.class\", \"DatagenSource\"),\n                Map.entry(\"name\", \"DatagenSourceConnector_0\"),\n                Map.entry(\"kafka.auth.mode\", \"SERVICE_ACCOUNT\"),\n                Map.entry(\"kafka.service.account.id\", app_connector.id()),\n                Map.entry(\"kafka.topic\", orders.topicName()),\n                Map.entry(\"output.data.format\", \"JSON\"),\n                Map.entry(\"quickstart\", \"ORDERS\"),\n                Map.entry(\"tasks.max\", \"1\")\n            ))\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    app_connector_describe_on_cluster,\n                    app_connector_write_on_target_topic,\n                    app_connector_create_on_data_preview_topics,\n                    app_connector_write_on_data_preview_topics)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/managed-datagen-source-connector\n  source:\n    type: confluentcloud:Connector\n    properties:\n      environment:\n        id: ${staging.id}\n      kafkaCluster:\n        id: ${basic.id}\n      configSensitive: {}\n      configNonsensitive:\n        connector.class: DatagenSource\n        name: DatagenSourceConnector_0\n        kafka.auth.mode: SERVICE_ACCOUNT\n        kafka.service.account.id: ${[\"app-connector\"].id}\n        kafka.topic: ${orders.topicName}\n        output.data.format: JSON\n        quickstart: ORDERS\n        tasks.max: '1'\n    options:\n      dependsOn:\n        - ${[\"app-connector-describe-on-cluster\"]}\n        - ${[\"app-connector-write-on-target-topic\"]}\n        - ${[\"app-connector-create-on-data-preview-topics\"]}\n        - ${[\"app-connector-write-on-data-preview-topics\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Managed [Amazon S3 Sink Connector](https://docs.confluent.io/cloud/current/connectors/cc-s3-sink.html) that uses a service account to communicate with your Kafka cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\n// https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/s3-sink-connector\nconst sink = new confluentcloud.Connector(\"sink\", {\n    environment: {\n        id: staging.id,\n    },\n    kafkaCluster: {\n        id: basic.id,\n    },\n    configSensitive: {\n        \"aws.access.key.id\": \"***REDACTED***\",\n        \"aws.secret.access.key\": \"***REDACTED***\",\n    },\n    configNonsensitive: {\n        topics: orders.topicName,\n        \"input.data.format\": \"JSON\",\n        \"connector.class\": \"S3_SINK\",\n        name: \"S3_SINKConnector_0\",\n        \"kafka.auth.mode\": \"SERVICE_ACCOUNT\",\n        \"kafka.service.account.id\": app_connector.id,\n        \"s3.bucket.name\": \"\u003cs3-bucket-name\u003e\",\n        \"output.data.format\": \"JSON\",\n        \"time.interval\": \"DAILY\",\n        \"flush.size\": \"1000\",\n        \"tasks.max\": \"1\",\n    },\n}, {\n    dependsOn: [\n        app_connector_describe_on_cluster,\n        app_connector_read_on_target_topic,\n        app_connector_create_on_dlq_lcc_topics,\n        app_connector_write_on_dlq_lcc_topics,\n        app_connector_create_on_success_lcc_topics,\n        app_connector_write_on_success_lcc_topics,\n        app_connector_create_on_error_lcc_topics,\n        app_connector_write_on_error_lcc_topics,\n        app_connector_read_on_connect_lcc_group,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\n# https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/s3-sink-connector\nsink = confluentcloud.Connector(\"sink\",\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    kafka_cluster={\n        \"id\": basic[\"id\"],\n    },\n    config_sensitive={\n        \"aws.access.key.id\": \"***REDACTED***\",\n        \"aws.secret.access.key\": \"***REDACTED***\",\n    },\n    config_nonsensitive={\n        \"topics\": orders[\"topicName\"],\n        \"input.data.format\": \"JSON\",\n        \"connector.class\": \"S3_SINK\",\n        \"name\": \"S3_SINKConnector_0\",\n        \"kafka.auth.mode\": \"SERVICE_ACCOUNT\",\n        \"kafka.service.account.id\": app_connector[\"id\"],\n        \"s3.bucket.name\": \"\u003cs3-bucket-name\u003e\",\n        \"output.data.format\": \"JSON\",\n        \"time.interval\": \"DAILY\",\n        \"flush.size\": \"1000\",\n        \"tasks.max\": \"1\",\n    },\n    opts = pulumi.ResourceOptions(depends_on=[\n            app_connector_describe_on_cluster,\n            app_connector_read_on_target_topic,\n            app_connector_create_on_dlq_lcc_topics,\n            app_connector_write_on_dlq_lcc_topics,\n            app_connector_create_on_success_lcc_topics,\n            app_connector_write_on_success_lcc_topics,\n            app_connector_create_on_error_lcc_topics,\n            app_connector_write_on_error_lcc_topics,\n            app_connector_read_on_connect_lcc_group,\n        ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/s3-sink-connector\n    var sink = new ConfluentCloud.Connector(\"sink\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ConnectorEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.ConnectorKafkaClusterArgs\n        {\n            Id = basic.Id,\n        },\n        ConfigSensitive = \n        {\n            { \"aws.access.key.id\", \"***REDACTED***\" },\n            { \"aws.secret.access.key\", \"***REDACTED***\" },\n        },\n        ConfigNonsensitive = \n        {\n            { \"topics\", orders.TopicName },\n            { \"input.data.format\", \"JSON\" },\n            { \"connector.class\", \"S3_SINK\" },\n            { \"name\", \"S3_SINKConnector_0\" },\n            { \"kafka.auth.mode\", \"SERVICE_ACCOUNT\" },\n            { \"kafka.service.account.id\", app_connector.Id },\n            { \"s3.bucket.name\", \"\u003cs3-bucket-name\u003e\" },\n            { \"output.data.format\", \"JSON\" },\n            { \"time.interval\", \"DAILY\" },\n            { \"flush.size\", \"1000\" },\n            { \"tasks.max\", \"1\" },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            app_connector_describe_on_cluster,\n            app_connector_read_on_target_topic,\n            app_connector_create_on_dlq_lcc_topics,\n            app_connector_write_on_dlq_lcc_topics,\n            app_connector_create_on_success_lcc_topics,\n            app_connector_write_on_success_lcc_topics,\n            app_connector_create_on_error_lcc_topics,\n            app_connector_write_on_error_lcc_topics,\n            app_connector_read_on_connect_lcc_group,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/s3-sink-connector\n\t\t_, err := confluentcloud.NewConnector(ctx, \"sink\", \u0026confluentcloud.ConnectorArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ConnectorEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tKafkaCluster: \u0026confluentcloud.ConnectorKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(basic.Id),\n\t\t\t},\n\t\t\tConfigSensitive: pulumi.StringMap{\n\t\t\t\t\"aws.access.key.id\":     pulumi.String(\"***REDACTED***\"),\n\t\t\t\t\"aws.secret.access.key\": pulumi.String(\"***REDACTED***\"),\n\t\t\t},\n\t\t\tConfigNonsensitive: pulumi.StringMap{\n\t\t\t\t\"topics\":                   pulumi.Any(orders.TopicName),\n\t\t\t\t\"input.data.format\":        pulumi.String(\"JSON\"),\n\t\t\t\t\"connector.class\":          pulumi.String(\"S3_SINK\"),\n\t\t\t\t\"name\":                     pulumi.String(\"S3_SINKConnector_0\"),\n\t\t\t\t\"kafka.auth.mode\":          pulumi.String(\"SERVICE_ACCOUNT\"),\n\t\t\t\t\"kafka.service.account.id\": pulumi.Any(app_connector.Id),\n\t\t\t\t\"s3.bucket.name\":           pulumi.String(\"\u003cs3-bucket-name\u003e\"),\n\t\t\t\t\"output.data.format\":       pulumi.String(\"JSON\"),\n\t\t\t\t\"time.interval\":            pulumi.String(\"DAILY\"),\n\t\t\t\t\"flush.size\":               pulumi.String(\"1000\"),\n\t\t\t\t\"tasks.max\":                pulumi.String(\"1\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapp_connector_describe_on_cluster,\n\t\t\tapp_connector_read_on_target_topic,\n\t\t\tapp_connector_create_on_dlq_lcc_topics,\n\t\t\tapp_connector_write_on_dlq_lcc_topics,\n\t\t\tapp_connector_create_on_success_lcc_topics,\n\t\t\tapp_connector_write_on_success_lcc_topics,\n\t\t\tapp_connector_create_on_error_lcc_topics,\n\t\t\tapp_connector_write_on_error_lcc_topics,\n\t\t\tapp_connector_read_on_connect_lcc_group,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Connector;\nimport com.pulumi.confluentcloud.ConnectorArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorKafkaClusterArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/s3-sink-connector\n        var sink = new Connector(\"sink\", ConnectorArgs.builder()\n            .environment(ConnectorEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .kafkaCluster(ConnectorKafkaClusterArgs.builder()\n                .id(basic.id())\n                .build())\n            .configSensitive(Map.ofEntries(\n                Map.entry(\"aws.access.key.id\", \"***REDACTED***\"),\n                Map.entry(\"aws.secret.access.key\", \"***REDACTED***\")\n            ))\n            .configNonsensitive(Map.ofEntries(\n                Map.entry(\"topics\", orders.topicName()),\n                Map.entry(\"input.data.format\", \"JSON\"),\n                Map.entry(\"connector.class\", \"S3_SINK\"),\n                Map.entry(\"name\", \"S3_SINKConnector_0\"),\n                Map.entry(\"kafka.auth.mode\", \"SERVICE_ACCOUNT\"),\n                Map.entry(\"kafka.service.account.id\", app_connector.id()),\n                Map.entry(\"s3.bucket.name\", \"\u003cs3-bucket-name\u003e\"),\n                Map.entry(\"output.data.format\", \"JSON\"),\n                Map.entry(\"time.interval\", \"DAILY\"),\n                Map.entry(\"flush.size\", \"1000\"),\n                Map.entry(\"tasks.max\", \"1\")\n            ))\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    app_connector_describe_on_cluster,\n                    app_connector_read_on_target_topic,\n                    app_connector_create_on_dlq_lcc_topics,\n                    app_connector_write_on_dlq_lcc_topics,\n                    app_connector_create_on_success_lcc_topics,\n                    app_connector_write_on_success_lcc_topics,\n                    app_connector_create_on_error_lcc_topics,\n                    app_connector_write_on_error_lcc_topics,\n                    app_connector_read_on_connect_lcc_group)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/s3-sink-connector\n  sink:\n    type: confluentcloud:Connector\n    properties:\n      environment:\n        id: ${staging.id}\n      kafkaCluster:\n        id: ${basic.id}\n      configSensitive:\n        aws.access.key.id: '***REDACTED***'\n        aws.secret.access.key: '***REDACTED***'\n      configNonsensitive:\n        topics: ${orders.topicName}\n        input.data.format: JSON\n        connector.class: S3_SINK\n        name: S3_SINKConnector_0\n        kafka.auth.mode: SERVICE_ACCOUNT\n        kafka.service.account.id: ${[\"app-connector\"].id}\n        s3.bucket.name: \u003cs3-bucket-name\u003e\n        output.data.format: JSON\n        time.interval: DAILY\n        flush.size: '1000'\n        tasks.max: '1'\n    options:\n      dependsOn:\n        - ${[\"app-connector-describe-on-cluster\"]}\n        - ${[\"app-connector-read-on-target-topic\"]}\n        - ${[\"app-connector-create-on-dlq-lcc-topics\"]}\n        - ${[\"app-connector-write-on-dlq-lcc-topics\"]}\n        - ${[\"app-connector-create-on-success-lcc-topics\"]}\n        - ${[\"app-connector-write-on-success-lcc-topics\"]}\n        - ${[\"app-connector-create-on-error-lcc-topics\"]}\n        - ${[\"app-connector-write-on-error-lcc-topics\"]}\n        - ${[\"app-connector-read-on-connect-lcc-group\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Managed [Amazon S3 Sink Connector](https://docs.confluent.io/cloud/current/connectors/cc-s3-sink.html) that uses a service account to communicate with your Kafka cluster and IAM Roles for AWS authentication\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\n// https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/s3-sink-connector-assume-role\nconst sink = new confluentcloud.Connector(\"sink\", {\n    environment: {\n        id: staging.id,\n    },\n    kafkaCluster: {\n        id: basic.id,\n    },\n    configSensitive: {},\n    configNonsensitive: {\n        topics: orders.topicName,\n        \"input.data.format\": \"JSON\",\n        \"connector.class\": \"S3_SINK\",\n        name: \"S3_SINKConnector_0\",\n        \"kafka.auth.mode\": \"SERVICE_ACCOUNT\",\n        \"kafka.service.account.id\": app_connector.id,\n        \"s3.bucket.name\": \"\u003cs3-bucket-name\u003e\",\n        \"output.data.format\": \"JSON\",\n        \"time.interval\": \"DAILY\",\n        \"flush.size\": \"1000\",\n        \"tasks.max\": \"1\",\n        \"authentication.method\": \"IAM Roles\",\n        \"provider.integration.id\": main.id,\n    },\n}, {\n    dependsOn: [\n        app_connector_describe_on_cluster,\n        app_connector_read_on_target_topic,\n        app_connector_create_on_dlq_lcc_topics,\n        app_connector_write_on_dlq_lcc_topics,\n        app_connector_create_on_success_lcc_topics,\n        app_connector_write_on_success_lcc_topics,\n        app_connector_create_on_error_lcc_topics,\n        app_connector_write_on_error_lcc_topics,\n        app_connector_read_on_connect_lcc_group,\n        main,\n        s3AccessRole,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\n# https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/s3-sink-connector-assume-role\nsink = confluentcloud.Connector(\"sink\",\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    kafka_cluster={\n        \"id\": basic[\"id\"],\n    },\n    config_sensitive={},\n    config_nonsensitive={\n        \"topics\": orders[\"topicName\"],\n        \"input.data.format\": \"JSON\",\n        \"connector.class\": \"S3_SINK\",\n        \"name\": \"S3_SINKConnector_0\",\n        \"kafka.auth.mode\": \"SERVICE_ACCOUNT\",\n        \"kafka.service.account.id\": app_connector[\"id\"],\n        \"s3.bucket.name\": \"\u003cs3-bucket-name\u003e\",\n        \"output.data.format\": \"JSON\",\n        \"time.interval\": \"DAILY\",\n        \"flush.size\": \"1000\",\n        \"tasks.max\": \"1\",\n        \"authentication.method\": \"IAM Roles\",\n        \"provider.integration.id\": main[\"id\"],\n    },\n    opts = pulumi.ResourceOptions(depends_on=[\n            app_connector_describe_on_cluster,\n            app_connector_read_on_target_topic,\n            app_connector_create_on_dlq_lcc_topics,\n            app_connector_write_on_dlq_lcc_topics,\n            app_connector_create_on_success_lcc_topics,\n            app_connector_write_on_success_lcc_topics,\n            app_connector_create_on_error_lcc_topics,\n            app_connector_write_on_error_lcc_topics,\n            app_connector_read_on_connect_lcc_group,\n            main,\n            s3_access_role,\n        ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/s3-sink-connector-assume-role\n    var sink = new ConfluentCloud.Connector(\"sink\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ConnectorEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.ConnectorKafkaClusterArgs\n        {\n            Id = basic.Id,\n        },\n        ConfigSensitive = null,\n        ConfigNonsensitive = \n        {\n            { \"topics\", orders.TopicName },\n            { \"input.data.format\", \"JSON\" },\n            { \"connector.class\", \"S3_SINK\" },\n            { \"name\", \"S3_SINKConnector_0\" },\n            { \"kafka.auth.mode\", \"SERVICE_ACCOUNT\" },\n            { \"kafka.service.account.id\", app_connector.Id },\n            { \"s3.bucket.name\", \"\u003cs3-bucket-name\u003e\" },\n            { \"output.data.format\", \"JSON\" },\n            { \"time.interval\", \"DAILY\" },\n            { \"flush.size\", \"1000\" },\n            { \"tasks.max\", \"1\" },\n            { \"authentication.method\", \"IAM Roles\" },\n            { \"provider.integration.id\", main.Id },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            app_connector_describe_on_cluster,\n            app_connector_read_on_target_topic,\n            app_connector_create_on_dlq_lcc_topics,\n            app_connector_write_on_dlq_lcc_topics,\n            app_connector_create_on_success_lcc_topics,\n            app_connector_write_on_success_lcc_topics,\n            app_connector_create_on_error_lcc_topics,\n            app_connector_write_on_error_lcc_topics,\n            app_connector_read_on_connect_lcc_group,\n            main,\n            s3AccessRole,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/s3-sink-connector-assume-role\n\t\t_, err := confluentcloud.NewConnector(ctx, \"sink\", \u0026confluentcloud.ConnectorArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ConnectorEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tKafkaCluster: \u0026confluentcloud.ConnectorKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(basic.Id),\n\t\t\t},\n\t\t\tConfigSensitive: pulumi.StringMap{},\n\t\t\tConfigNonsensitive: pulumi.StringMap{\n\t\t\t\t\"topics\":                   pulumi.Any(orders.TopicName),\n\t\t\t\t\"input.data.format\":        pulumi.String(\"JSON\"),\n\t\t\t\t\"connector.class\":          pulumi.String(\"S3_SINK\"),\n\t\t\t\t\"name\":                     pulumi.String(\"S3_SINKConnector_0\"),\n\t\t\t\t\"kafka.auth.mode\":          pulumi.String(\"SERVICE_ACCOUNT\"),\n\t\t\t\t\"kafka.service.account.id\": pulumi.Any(app_connector.Id),\n\t\t\t\t\"s3.bucket.name\":           pulumi.String(\"\u003cs3-bucket-name\u003e\"),\n\t\t\t\t\"output.data.format\":       pulumi.String(\"JSON\"),\n\t\t\t\t\"time.interval\":            pulumi.String(\"DAILY\"),\n\t\t\t\t\"flush.size\":               pulumi.String(\"1000\"),\n\t\t\t\t\"tasks.max\":                pulumi.String(\"1\"),\n\t\t\t\t\"authentication.method\":    pulumi.String(\"IAM Roles\"),\n\t\t\t\t\"provider.integration.id\":  pulumi.Any(main.Id),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapp_connector_describe_on_cluster,\n\t\t\tapp_connector_read_on_target_topic,\n\t\t\tapp_connector_create_on_dlq_lcc_topics,\n\t\t\tapp_connector_write_on_dlq_lcc_topics,\n\t\t\tapp_connector_create_on_success_lcc_topics,\n\t\t\tapp_connector_write_on_success_lcc_topics,\n\t\t\tapp_connector_create_on_error_lcc_topics,\n\t\t\tapp_connector_write_on_error_lcc_topics,\n\t\t\tapp_connector_read_on_connect_lcc_group,\n\t\t\tmain,\n\t\t\ts3AccessRole,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Connector;\nimport com.pulumi.confluentcloud.ConnectorArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorKafkaClusterArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/s3-sink-connector-assume-role\n        var sink = new Connector(\"sink\", ConnectorArgs.builder()\n            .environment(ConnectorEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .kafkaCluster(ConnectorKafkaClusterArgs.builder()\n                .id(basic.id())\n                .build())\n            .configSensitive(Map.ofEntries(\n            ))\n            .configNonsensitive(Map.ofEntries(\n                Map.entry(\"topics\", orders.topicName()),\n                Map.entry(\"input.data.format\", \"JSON\"),\n                Map.entry(\"connector.class\", \"S3_SINK\"),\n                Map.entry(\"name\", \"S3_SINKConnector_0\"),\n                Map.entry(\"kafka.auth.mode\", \"SERVICE_ACCOUNT\"),\n                Map.entry(\"kafka.service.account.id\", app_connector.id()),\n                Map.entry(\"s3.bucket.name\", \"\u003cs3-bucket-name\u003e\"),\n                Map.entry(\"output.data.format\", \"JSON\"),\n                Map.entry(\"time.interval\", \"DAILY\"),\n                Map.entry(\"flush.size\", \"1000\"),\n                Map.entry(\"tasks.max\", \"1\"),\n                Map.entry(\"authentication.method\", \"IAM Roles\"),\n                Map.entry(\"provider.integration.id\", main.id())\n            ))\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    app_connector_describe_on_cluster,\n                    app_connector_read_on_target_topic,\n                    app_connector_create_on_dlq_lcc_topics,\n                    app_connector_write_on_dlq_lcc_topics,\n                    app_connector_create_on_success_lcc_topics,\n                    app_connector_write_on_success_lcc_topics,\n                    app_connector_create_on_error_lcc_topics,\n                    app_connector_write_on_error_lcc_topics,\n                    app_connector_read_on_connect_lcc_group,\n                    main,\n                    s3AccessRole)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/s3-sink-connector-assume-role\n  sink:\n    type: confluentcloud:Connector\n    properties:\n      environment:\n        id: ${staging.id}\n      kafkaCluster:\n        id: ${basic.id}\n      configSensitive: {}\n      configNonsensitive:\n        topics: ${orders.topicName}\n        input.data.format: JSON\n        connector.class: S3_SINK\n        name: S3_SINKConnector_0\n        kafka.auth.mode: SERVICE_ACCOUNT\n        kafka.service.account.id: ${[\"app-connector\"].id}\n        s3.bucket.name: \u003cs3-bucket-name\u003e\n        output.data.format: JSON\n        time.interval: DAILY\n        flush.size: '1000'\n        tasks.max: '1'\n        authentication.method: IAM Roles\n        provider.integration.id: ${main.id}\n    options:\n      dependsOn:\n        - ${[\"app-connector-describe-on-cluster\"]}\n        - ${[\"app-connector-read-on-target-topic\"]}\n        - ${[\"app-connector-create-on-dlq-lcc-topics\"]}\n        - ${[\"app-connector-write-on-dlq-lcc-topics\"]}\n        - ${[\"app-connector-create-on-success-lcc-topics\"]}\n        - ${[\"app-connector-write-on-success-lcc-topics\"]}\n        - ${[\"app-connector-create-on-error-lcc-topics\"]}\n        - ${[\"app-connector-write-on-error-lcc-topics\"]}\n        - ${[\"app-connector-read-on-connect-lcc-group\"]}\n        - ${main}\n        - ${s3AccessRole}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Managed [Amazon DynamoDB Connector](https://docs.confluent.io/cloud/current/connectors/cc-amazon-dynamo-db-sink.html) that uses a service account to communicate with your Kafka cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\n// https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/dynamo-db-sink-connector\nconst sink = new confluentcloud.Connector(\"sink\", {\n    environment: {\n        id: staging.id,\n    },\n    kafkaCluster: {\n        id: basic.id,\n    },\n    configSensitive: {\n        \"aws.access.key.id\": \"***REDACTED***\",\n        \"aws.secret.access.key\": \"***REDACTED***\",\n    },\n    configNonsensitive: {\n        topics: orders.topicName,\n        \"input.data.format\": \"JSON\",\n        \"connector.class\": \"DynamoDbSink\",\n        name: \"DynamoDbSinkConnector_0\",\n        \"kafka.auth.mode\": \"SERVICE_ACCOUNT\",\n        \"kafka.service.account.id\": app_connector.id,\n        \"aws.dynamodb.pk.hash\": \"value.userid\",\n        \"aws.dynamodb.pk.sort\": \"value.pageid\",\n        \"tasks.max\": \"1\",\n    },\n}, {\n    dependsOn: [\n        app_connector_describe_on_cluster,\n        app_connector_read_on_target_topic,\n        app_connector_create_on_dlq_lcc_topics,\n        app_connector_write_on_dlq_lcc_topics,\n        app_connector_create_on_success_lcc_topics,\n        app_connector_write_on_success_lcc_topics,\n        app_connector_create_on_error_lcc_topics,\n        app_connector_write_on_error_lcc_topics,\n        app_connector_read_on_connect_lcc_group,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\n# https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/dynamo-db-sink-connector\nsink = confluentcloud.Connector(\"sink\",\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    kafka_cluster={\n        \"id\": basic[\"id\"],\n    },\n    config_sensitive={\n        \"aws.access.key.id\": \"***REDACTED***\",\n        \"aws.secret.access.key\": \"***REDACTED***\",\n    },\n    config_nonsensitive={\n        \"topics\": orders[\"topicName\"],\n        \"input.data.format\": \"JSON\",\n        \"connector.class\": \"DynamoDbSink\",\n        \"name\": \"DynamoDbSinkConnector_0\",\n        \"kafka.auth.mode\": \"SERVICE_ACCOUNT\",\n        \"kafka.service.account.id\": app_connector[\"id\"],\n        \"aws.dynamodb.pk.hash\": \"value.userid\",\n        \"aws.dynamodb.pk.sort\": \"value.pageid\",\n        \"tasks.max\": \"1\",\n    },\n    opts = pulumi.ResourceOptions(depends_on=[\n            app_connector_describe_on_cluster,\n            app_connector_read_on_target_topic,\n            app_connector_create_on_dlq_lcc_topics,\n            app_connector_write_on_dlq_lcc_topics,\n            app_connector_create_on_success_lcc_topics,\n            app_connector_write_on_success_lcc_topics,\n            app_connector_create_on_error_lcc_topics,\n            app_connector_write_on_error_lcc_topics,\n            app_connector_read_on_connect_lcc_group,\n        ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/dynamo-db-sink-connector\n    var sink = new ConfluentCloud.Connector(\"sink\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ConnectorEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.ConnectorKafkaClusterArgs\n        {\n            Id = basic.Id,\n        },\n        ConfigSensitive = \n        {\n            { \"aws.access.key.id\", \"***REDACTED***\" },\n            { \"aws.secret.access.key\", \"***REDACTED***\" },\n        },\n        ConfigNonsensitive = \n        {\n            { \"topics\", orders.TopicName },\n            { \"input.data.format\", \"JSON\" },\n            { \"connector.class\", \"DynamoDbSink\" },\n            { \"name\", \"DynamoDbSinkConnector_0\" },\n            { \"kafka.auth.mode\", \"SERVICE_ACCOUNT\" },\n            { \"kafka.service.account.id\", app_connector.Id },\n            { \"aws.dynamodb.pk.hash\", \"value.userid\" },\n            { \"aws.dynamodb.pk.sort\", \"value.pageid\" },\n            { \"tasks.max\", \"1\" },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            app_connector_describe_on_cluster,\n            app_connector_read_on_target_topic,\n            app_connector_create_on_dlq_lcc_topics,\n            app_connector_write_on_dlq_lcc_topics,\n            app_connector_create_on_success_lcc_topics,\n            app_connector_write_on_success_lcc_topics,\n            app_connector_create_on_error_lcc_topics,\n            app_connector_write_on_error_lcc_topics,\n            app_connector_read_on_connect_lcc_group,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/dynamo-db-sink-connector\n\t\t_, err := confluentcloud.NewConnector(ctx, \"sink\", \u0026confluentcloud.ConnectorArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ConnectorEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tKafkaCluster: \u0026confluentcloud.ConnectorKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(basic.Id),\n\t\t\t},\n\t\t\tConfigSensitive: pulumi.StringMap{\n\t\t\t\t\"aws.access.key.id\":     pulumi.String(\"***REDACTED***\"),\n\t\t\t\t\"aws.secret.access.key\": pulumi.String(\"***REDACTED***\"),\n\t\t\t},\n\t\t\tConfigNonsensitive: pulumi.StringMap{\n\t\t\t\t\"topics\":                   pulumi.Any(orders.TopicName),\n\t\t\t\t\"input.data.format\":        pulumi.String(\"JSON\"),\n\t\t\t\t\"connector.class\":          pulumi.String(\"DynamoDbSink\"),\n\t\t\t\t\"name\":                     pulumi.String(\"DynamoDbSinkConnector_0\"),\n\t\t\t\t\"kafka.auth.mode\":          pulumi.String(\"SERVICE_ACCOUNT\"),\n\t\t\t\t\"kafka.service.account.id\": pulumi.Any(app_connector.Id),\n\t\t\t\t\"aws.dynamodb.pk.hash\":     pulumi.String(\"value.userid\"),\n\t\t\t\t\"aws.dynamodb.pk.sort\":     pulumi.String(\"value.pageid\"),\n\t\t\t\t\"tasks.max\":                pulumi.String(\"1\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapp_connector_describe_on_cluster,\n\t\t\tapp_connector_read_on_target_topic,\n\t\t\tapp_connector_create_on_dlq_lcc_topics,\n\t\t\tapp_connector_write_on_dlq_lcc_topics,\n\t\t\tapp_connector_create_on_success_lcc_topics,\n\t\t\tapp_connector_write_on_success_lcc_topics,\n\t\t\tapp_connector_create_on_error_lcc_topics,\n\t\t\tapp_connector_write_on_error_lcc_topics,\n\t\t\tapp_connector_read_on_connect_lcc_group,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Connector;\nimport com.pulumi.confluentcloud.ConnectorArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorKafkaClusterArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/dynamo-db-sink-connector\n        var sink = new Connector(\"sink\", ConnectorArgs.builder()\n            .environment(ConnectorEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .kafkaCluster(ConnectorKafkaClusterArgs.builder()\n                .id(basic.id())\n                .build())\n            .configSensitive(Map.ofEntries(\n                Map.entry(\"aws.access.key.id\", \"***REDACTED***\"),\n                Map.entry(\"aws.secret.access.key\", \"***REDACTED***\")\n            ))\n            .configNonsensitive(Map.ofEntries(\n                Map.entry(\"topics\", orders.topicName()),\n                Map.entry(\"input.data.format\", \"JSON\"),\n                Map.entry(\"connector.class\", \"DynamoDbSink\"),\n                Map.entry(\"name\", \"DynamoDbSinkConnector_0\"),\n                Map.entry(\"kafka.auth.mode\", \"SERVICE_ACCOUNT\"),\n                Map.entry(\"kafka.service.account.id\", app_connector.id()),\n                Map.entry(\"aws.dynamodb.pk.hash\", \"value.userid\"),\n                Map.entry(\"aws.dynamodb.pk.sort\", \"value.pageid\"),\n                Map.entry(\"tasks.max\", \"1\")\n            ))\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    app_connector_describe_on_cluster,\n                    app_connector_read_on_target_topic,\n                    app_connector_create_on_dlq_lcc_topics,\n                    app_connector_write_on_dlq_lcc_topics,\n                    app_connector_create_on_success_lcc_topics,\n                    app_connector_write_on_success_lcc_topics,\n                    app_connector_create_on_error_lcc_topics,\n                    app_connector_write_on_error_lcc_topics,\n                    app_connector_read_on_connect_lcc_group)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/dynamo-db-sink-connector\n  sink:\n    type: confluentcloud:Connector\n    properties:\n      environment:\n        id: ${staging.id}\n      kafkaCluster:\n        id: ${basic.id}\n      configSensitive:\n        aws.access.key.id: '***REDACTED***'\n        aws.secret.access.key: '***REDACTED***'\n      configNonsensitive:\n        topics: ${orders.topicName}\n        input.data.format: JSON\n        connector.class: DynamoDbSink\n        name: DynamoDbSinkConnector_0\n        kafka.auth.mode: SERVICE_ACCOUNT\n        kafka.service.account.id: ${[\"app-connector\"].id}\n        aws.dynamodb.pk.hash: value.userid\n        aws.dynamodb.pk.sort: value.pageid\n        tasks.max: '1'\n    options:\n      dependsOn:\n        - ${[\"app-connector-describe-on-cluster\"]}\n        - ${[\"app-connector-read-on-target-topic\"]}\n        - ${[\"app-connector-create-on-dlq-lcc-topics\"]}\n        - ${[\"app-connector-write-on-dlq-lcc-topics\"]}\n        - ${[\"app-connector-create-on-success-lcc-topics\"]}\n        - ${[\"app-connector-write-on-success-lcc-topics\"]}\n        - ${[\"app-connector-create-on-error-lcc-topics\"]}\n        - ${[\"app-connector-write-on-error-lcc-topics\"]}\n        - ${[\"app-connector-read-on-connect-lcc-group\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Managed [MySQL Sink Connector](https://docs.confluent.io/cloud/current/connectors/cc-mysql-sink.html) that uses a service account to communicate with your Kafka cluster\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\n// https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/manage-offsets-source-sink-connector\nconst sink = new confluentcloud.Connector(\"sink\", {\n    environment: {\n        id: staging.id,\n    },\n    kafkaCluster: {\n        id: basic.id,\n    },\n    configSensitive: {\n        \"connection.password\": \"***REDACTED***\",\n    },\n    configNonsensitive: {\n        \"connector.class\": \"MySqlSink\",\n        name: \"MySQLSinkConnector_0\",\n        topics: orders.topicName,\n        \"input.data.format\": \"AVRO\",\n        \"kafka.auth.mode\": \"SERVICE_ACCOUNT\",\n        \"kafka.service.account.id\": app_connector.id,\n        \"db.name\": \"test_database\",\n        \"connection.user\": \"confluent_user\",\n        \"connection.host\": \"dev-testing-temp.abcdefghijk.us-west-7.rds.amazonaws.com\",\n        \"connection.port\": \"3306\",\n        \"insert.mode\": \"INSERT\",\n        \"auto.create\": \"true\",\n        \"auto.evolve\": \"true\",\n        \"tasks.max\": \"1\",\n    },\n    offsets: [\n        {\n            partition: {\n                kafka_partition: \"0\",\n                kafka_topic: orders.topicName,\n            },\n            offset: {\n                kafka_offset: \"100\",\n            },\n        },\n        {\n            partition: {\n                kafka_partition: \"1\",\n                kafka_topic: orders.topicName,\n            },\n            offset: {\n                kafka_offset: \"200\",\n            },\n        },\n        {\n            partition: {\n                kafka_partition: \"2\",\n                kafka_topic: orders.topicName,\n            },\n            offset: {\n                kafka_offset: \"300\",\n            },\n        },\n    ],\n}, {\n    dependsOn: [\n        app_connector_describe_on_cluster,\n        app_connector_read_on_target_topic,\n        app_connector_create_on_dlq_lcc_topics,\n        app_connector_write_on_dlq_lcc_topics,\n        app_connector_create_on_success_lcc_topics,\n        app_connector_write_on_success_lcc_topics,\n        app_connector_create_on_error_lcc_topics,\n        app_connector_write_on_error_lcc_topics,\n        app_connector_read_on_connect_lcc_group,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\n# https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/manage-offsets-source-sink-connector\nsink = confluentcloud.Connector(\"sink\",\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    kafka_cluster={\n        \"id\": basic[\"id\"],\n    },\n    config_sensitive={\n        \"connection.password\": \"***REDACTED***\",\n    },\n    config_nonsensitive={\n        \"connector.class\": \"MySqlSink\",\n        \"name\": \"MySQLSinkConnector_0\",\n        \"topics\": orders[\"topicName\"],\n        \"input.data.format\": \"AVRO\",\n        \"kafka.auth.mode\": \"SERVICE_ACCOUNT\",\n        \"kafka.service.account.id\": app_connector[\"id\"],\n        \"db.name\": \"test_database\",\n        \"connection.user\": \"confluent_user\",\n        \"connection.host\": \"dev-testing-temp.abcdefghijk.us-west-7.rds.amazonaws.com\",\n        \"connection.port\": \"3306\",\n        \"insert.mode\": \"INSERT\",\n        \"auto.create\": \"true\",\n        \"auto.evolve\": \"true\",\n        \"tasks.max\": \"1\",\n    },\n    offsets=[\n        {\n            \"partition\": {\n                \"kafka_partition\": \"0\",\n                \"kafka_topic\": orders[\"topicName\"],\n            },\n            \"offset\": {\n                \"kafka_offset\": \"100\",\n            },\n        },\n        {\n            \"partition\": {\n                \"kafka_partition\": \"1\",\n                \"kafka_topic\": orders[\"topicName\"],\n            },\n            \"offset\": {\n                \"kafka_offset\": \"200\",\n            },\n        },\n        {\n            \"partition\": {\n                \"kafka_partition\": \"2\",\n                \"kafka_topic\": orders[\"topicName\"],\n            },\n            \"offset\": {\n                \"kafka_offset\": \"300\",\n            },\n        },\n    ],\n    opts = pulumi.ResourceOptions(depends_on=[\n            app_connector_describe_on_cluster,\n            app_connector_read_on_target_topic,\n            app_connector_create_on_dlq_lcc_topics,\n            app_connector_write_on_dlq_lcc_topics,\n            app_connector_create_on_success_lcc_topics,\n            app_connector_write_on_success_lcc_topics,\n            app_connector_create_on_error_lcc_topics,\n            app_connector_write_on_error_lcc_topics,\n            app_connector_read_on_connect_lcc_group,\n        ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/manage-offsets-source-sink-connector\n    var sink = new ConfluentCloud.Connector(\"sink\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ConnectorEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.ConnectorKafkaClusterArgs\n        {\n            Id = basic.Id,\n        },\n        ConfigSensitive = \n        {\n            { \"connection.password\", \"***REDACTED***\" },\n        },\n        ConfigNonsensitive = \n        {\n            { \"connector.class\", \"MySqlSink\" },\n            { \"name\", \"MySQLSinkConnector_0\" },\n            { \"topics\", orders.TopicName },\n            { \"input.data.format\", \"AVRO\" },\n            { \"kafka.auth.mode\", \"SERVICE_ACCOUNT\" },\n            { \"kafka.service.account.id\", app_connector.Id },\n            { \"db.name\", \"test_database\" },\n            { \"connection.user\", \"confluent_user\" },\n            { \"connection.host\", \"dev-testing-temp.abcdefghijk.us-west-7.rds.amazonaws.com\" },\n            { \"connection.port\", \"3306\" },\n            { \"insert.mode\", \"INSERT\" },\n            { \"auto.create\", \"true\" },\n            { \"auto.evolve\", \"true\" },\n            { \"tasks.max\", \"1\" },\n        },\n        Offsets = new[]\n        {\n            new ConfluentCloud.Inputs.ConnectorOffsetArgs\n            {\n                Partition = \n                {\n                    { \"kafka_partition\", \"0\" },\n                    { \"kafka_topic\", orders.TopicName },\n                },\n                Offset = \n                {\n                    { \"kafka_offset\", \"100\" },\n                },\n            },\n            new ConfluentCloud.Inputs.ConnectorOffsetArgs\n            {\n                Partition = \n                {\n                    { \"kafka_partition\", \"1\" },\n                    { \"kafka_topic\", orders.TopicName },\n                },\n                Offset = \n                {\n                    { \"kafka_offset\", \"200\" },\n                },\n            },\n            new ConfluentCloud.Inputs.ConnectorOffsetArgs\n            {\n                Partition = \n                {\n                    { \"kafka_partition\", \"2\" },\n                    { \"kafka_topic\", orders.TopicName },\n                },\n                Offset = \n                {\n                    { \"kafka_offset\", \"300\" },\n                },\n            },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            app_connector_describe_on_cluster,\n            app_connector_read_on_target_topic,\n            app_connector_create_on_dlq_lcc_topics,\n            app_connector_write_on_dlq_lcc_topics,\n            app_connector_create_on_success_lcc_topics,\n            app_connector_write_on_success_lcc_topics,\n            app_connector_create_on_error_lcc_topics,\n            app_connector_write_on_error_lcc_topics,\n            app_connector_read_on_connect_lcc_group,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/manage-offsets-source-sink-connector\n\t\t_, err := confluentcloud.NewConnector(ctx, \"sink\", \u0026confluentcloud.ConnectorArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ConnectorEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tKafkaCluster: \u0026confluentcloud.ConnectorKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(basic.Id),\n\t\t\t},\n\t\t\tConfigSensitive: pulumi.StringMap{\n\t\t\t\t\"connection.password\": pulumi.String(\"***REDACTED***\"),\n\t\t\t},\n\t\t\tConfigNonsensitive: pulumi.StringMap{\n\t\t\t\t\"connector.class\":          pulumi.String(\"MySqlSink\"),\n\t\t\t\t\"name\":                     pulumi.String(\"MySQLSinkConnector_0\"),\n\t\t\t\t\"topics\":                   pulumi.Any(orders.TopicName),\n\t\t\t\t\"input.data.format\":        pulumi.String(\"AVRO\"),\n\t\t\t\t\"kafka.auth.mode\":          pulumi.String(\"SERVICE_ACCOUNT\"),\n\t\t\t\t\"kafka.service.account.id\": pulumi.Any(app_connector.Id),\n\t\t\t\t\"db.name\":                  pulumi.String(\"test_database\"),\n\t\t\t\t\"connection.user\":          pulumi.String(\"confluent_user\"),\n\t\t\t\t\"connection.host\":          pulumi.String(\"dev-testing-temp.abcdefghijk.us-west-7.rds.amazonaws.com\"),\n\t\t\t\t\"connection.port\":          pulumi.String(\"3306\"),\n\t\t\t\t\"insert.mode\":              pulumi.String(\"INSERT\"),\n\t\t\t\t\"auto.create\":              pulumi.String(\"true\"),\n\t\t\t\t\"auto.evolve\":              pulumi.String(\"true\"),\n\t\t\t\t\"tasks.max\":                pulumi.String(\"1\"),\n\t\t\t},\n\t\t\tOffsets: confluentcloud.ConnectorOffsetArray{\n\t\t\t\t\u0026confluentcloud.ConnectorOffsetArgs{\n\t\t\t\t\tPartition: pulumi.StringMap{\n\t\t\t\t\t\t\"kafka_partition\": pulumi.String(\"0\"),\n\t\t\t\t\t\t\"kafka_topic\":     pulumi.Any(orders.TopicName),\n\t\t\t\t\t},\n\t\t\t\t\tOffset: pulumi.StringMap{\n\t\t\t\t\t\t\"kafka_offset\": pulumi.String(\"100\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026confluentcloud.ConnectorOffsetArgs{\n\t\t\t\t\tPartition: pulumi.StringMap{\n\t\t\t\t\t\t\"kafka_partition\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\"kafka_topic\":     pulumi.Any(orders.TopicName),\n\t\t\t\t\t},\n\t\t\t\t\tOffset: pulumi.StringMap{\n\t\t\t\t\t\t\"kafka_offset\": pulumi.String(\"200\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026confluentcloud.ConnectorOffsetArgs{\n\t\t\t\t\tPartition: pulumi.StringMap{\n\t\t\t\t\t\t\"kafka_partition\": pulumi.String(\"2\"),\n\t\t\t\t\t\t\"kafka_topic\":     pulumi.Any(orders.TopicName),\n\t\t\t\t\t},\n\t\t\t\t\tOffset: pulumi.StringMap{\n\t\t\t\t\t\t\"kafka_offset\": pulumi.String(\"300\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapp_connector_describe_on_cluster,\n\t\t\tapp_connector_read_on_target_topic,\n\t\t\tapp_connector_create_on_dlq_lcc_topics,\n\t\t\tapp_connector_write_on_dlq_lcc_topics,\n\t\t\tapp_connector_create_on_success_lcc_topics,\n\t\t\tapp_connector_write_on_success_lcc_topics,\n\t\t\tapp_connector_create_on_error_lcc_topics,\n\t\t\tapp_connector_write_on_error_lcc_topics,\n\t\t\tapp_connector_read_on_connect_lcc_group,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Connector;\nimport com.pulumi.confluentcloud.ConnectorArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorOffsetArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/manage-offsets-source-sink-connector\n        var sink = new Connector(\"sink\", ConnectorArgs.builder()\n            .environment(ConnectorEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .kafkaCluster(ConnectorKafkaClusterArgs.builder()\n                .id(basic.id())\n                .build())\n            .configSensitive(Map.of(\"connection.password\", \"***REDACTED***\"))\n            .configNonsensitive(Map.ofEntries(\n                Map.entry(\"connector.class\", \"MySqlSink\"),\n                Map.entry(\"name\", \"MySQLSinkConnector_0\"),\n                Map.entry(\"topics\", orders.topicName()),\n                Map.entry(\"input.data.format\", \"AVRO\"),\n                Map.entry(\"kafka.auth.mode\", \"SERVICE_ACCOUNT\"),\n                Map.entry(\"kafka.service.account.id\", app_connector.id()),\n                Map.entry(\"db.name\", \"test_database\"),\n                Map.entry(\"connection.user\", \"confluent_user\"),\n                Map.entry(\"connection.host\", \"dev-testing-temp.abcdefghijk.us-west-7.rds.amazonaws.com\"),\n                Map.entry(\"connection.port\", \"3306\"),\n                Map.entry(\"insert.mode\", \"INSERT\"),\n                Map.entry(\"auto.create\", \"true\"),\n                Map.entry(\"auto.evolve\", \"true\"),\n                Map.entry(\"tasks.max\", \"1\")\n            ))\n            .offsets(            \n                ConnectorOffsetArgs.builder()\n                    .partition(Map.ofEntries(\n                        Map.entry(\"kafka_partition\", \"0\"),\n                        Map.entry(\"kafka_topic\", orders.topicName())\n                    ))\n                    .offset(Map.of(\"kafka_offset\", \"100\"))\n                    .build(),\n                ConnectorOffsetArgs.builder()\n                    .partition(Map.ofEntries(\n                        Map.entry(\"kafka_partition\", \"1\"),\n                        Map.entry(\"kafka_topic\", orders.topicName())\n                    ))\n                    .offset(Map.of(\"kafka_offset\", \"200\"))\n                    .build(),\n                ConnectorOffsetArgs.builder()\n                    .partition(Map.ofEntries(\n                        Map.entry(\"kafka_partition\", \"2\"),\n                        Map.entry(\"kafka_topic\", orders.topicName())\n                    ))\n                    .offset(Map.of(\"kafka_offset\", \"300\"))\n                    .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    app_connector_describe_on_cluster,\n                    app_connector_read_on_target_topic,\n                    app_connector_create_on_dlq_lcc_topics,\n                    app_connector_write_on_dlq_lcc_topics,\n                    app_connector_create_on_success_lcc_topics,\n                    app_connector_write_on_success_lcc_topics,\n                    app_connector_create_on_error_lcc_topics,\n                    app_connector_write_on_error_lcc_topics,\n                    app_connector_read_on_connect_lcc_group)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/manage-offsets-source-sink-connector\n  sink:\n    type: confluentcloud:Connector\n    properties:\n      environment:\n        id: ${staging.id}\n      kafkaCluster:\n        id: ${basic.id}\n      configSensitive:\n        connection.password: '***REDACTED***'\n      configNonsensitive:\n        connector.class: MySqlSink\n        name: MySQLSinkConnector_0\n        topics: ${orders.topicName}\n        input.data.format: AVRO\n        kafka.auth.mode: SERVICE_ACCOUNT\n        kafka.service.account.id: ${[\"app-connector\"].id}\n        db.name: test_database\n        connection.user: confluent_user\n        connection.host: dev-testing-temp.abcdefghijk.us-west-7.rds.amazonaws.com\n        connection.port: '3306'\n        insert.mode: INSERT\n        auto.create: 'true'\n        auto.evolve: 'true'\n        tasks.max: '1'\n      offsets:\n        - partition:\n            kafka_partition: '0'\n            kafka_topic: ${orders.topicName}\n          offset:\n            kafka_offset: '100'\n        - partition:\n            kafka_partition: '1'\n            kafka_topic: ${orders.topicName}\n          offset:\n            kafka_offset: '200'\n        - partition:\n            kafka_partition: '2'\n            kafka_topic: ${orders.topicName}\n          offset:\n            kafka_offset: '300'\n    options:\n      dependsOn:\n        - ${[\"app-connector-describe-on-cluster\"]}\n        - ${[\"app-connector-read-on-target-topic\"]}\n        - ${[\"app-connector-create-on-dlq-lcc-topics\"]}\n        - ${[\"app-connector-write-on-dlq-lcc-topics\"]}\n        - ${[\"app-connector-create-on-success-lcc-topics\"]}\n        - ${[\"app-connector-write-on-success-lcc-topics\"]}\n        - ${[\"app-connector-create-on-error-lcc-topics\"]}\n        - ${[\"app-connector-write-on-error-lcc-topics\"]}\n        - ${[\"app-connector-read-on-connect-lcc-group\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Custom [Datagen Source Connector](https://www.confluent.io/hub/confluentinc/kafka-connect-datagen) that uses a Kafka API Key to communicate with your Kafka cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\n// https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/custom-datagen-source-connector\nconst source = new confluentcloud.Connector(\"source\", {\n    environment: {\n        id: staging.id,\n    },\n    kafkaCluster: {\n        id: basic.id,\n    },\n    configSensitive: {\n        \"kafka.api.key\": \"***REDACTED***\",\n        \"kafka.api.secret\": \"***REDACTED***\",\n    },\n    configNonsensitive: {\n        \"confluent.connector.type\": \"CUSTOM\",\n        \"connector.class\": sourceConfluentCustomConnectorPlugin.connectorClass,\n        name: \"DatagenConnectorExampleName\",\n        \"kafka.auth.mode\": \"KAFKA_API_KEY\",\n        \"kafka.topic\": orders.topicName,\n        \"output.data.format\": \"JSON\",\n        quickstart: \"ORDERS\",\n        \"confluent.custom.plugin.id\": sourceConfluentCustomConnectorPlugin.id,\n        \"min.interval\": \"1000\",\n        \"max.interval\": \"2000\",\n        \"tasks.max\": \"1\",\n    },\n}, {\n    dependsOn: [app_manager_kafka_cluster_admin],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\n# https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/custom-datagen-source-connector\nsource = confluentcloud.Connector(\"source\",\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    kafka_cluster={\n        \"id\": basic[\"id\"],\n    },\n    config_sensitive={\n        \"kafka.api.key\": \"***REDACTED***\",\n        \"kafka.api.secret\": \"***REDACTED***\",\n    },\n    config_nonsensitive={\n        \"confluent.connector.type\": \"CUSTOM\",\n        \"connector.class\": source_confluent_custom_connector_plugin[\"connectorClass\"],\n        \"name\": \"DatagenConnectorExampleName\",\n        \"kafka.auth.mode\": \"KAFKA_API_KEY\",\n        \"kafka.topic\": orders[\"topicName\"],\n        \"output.data.format\": \"JSON\",\n        \"quickstart\": \"ORDERS\",\n        \"confluent.custom.plugin.id\": source_confluent_custom_connector_plugin[\"id\"],\n        \"min.interval\": \"1000\",\n        \"max.interval\": \"2000\",\n        \"tasks.max\": \"1\",\n    },\n    opts = pulumi.ResourceOptions(depends_on=[app_manager_kafka_cluster_admin]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/custom-datagen-source-connector\n    var source = new ConfluentCloud.Connector(\"source\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ConnectorEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.ConnectorKafkaClusterArgs\n        {\n            Id = basic.Id,\n        },\n        ConfigSensitive = \n        {\n            { \"kafka.api.key\", \"***REDACTED***\" },\n            { \"kafka.api.secret\", \"***REDACTED***\" },\n        },\n        ConfigNonsensitive = \n        {\n            { \"confluent.connector.type\", \"CUSTOM\" },\n            { \"connector.class\", sourceConfluentCustomConnectorPlugin.ConnectorClass },\n            { \"name\", \"DatagenConnectorExampleName\" },\n            { \"kafka.auth.mode\", \"KAFKA_API_KEY\" },\n            { \"kafka.topic\", orders.TopicName },\n            { \"output.data.format\", \"JSON\" },\n            { \"quickstart\", \"ORDERS\" },\n            { \"confluent.custom.plugin.id\", sourceConfluentCustomConnectorPlugin.Id },\n            { \"min.interval\", \"1000\" },\n            { \"max.interval\", \"2000\" },\n            { \"tasks.max\", \"1\" },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            app_manager_kafka_cluster_admin,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/custom-datagen-source-connector\n\t\t_, err := confluentcloud.NewConnector(ctx, \"source\", \u0026confluentcloud.ConnectorArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ConnectorEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tKafkaCluster: \u0026confluentcloud.ConnectorKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(basic.Id),\n\t\t\t},\n\t\t\tConfigSensitive: pulumi.StringMap{\n\t\t\t\t\"kafka.api.key\":    pulumi.String(\"***REDACTED***\"),\n\t\t\t\t\"kafka.api.secret\": pulumi.String(\"***REDACTED***\"),\n\t\t\t},\n\t\t\tConfigNonsensitive: pulumi.StringMap{\n\t\t\t\t\"confluent.connector.type\":   pulumi.String(\"CUSTOM\"),\n\t\t\t\t\"connector.class\":            pulumi.Any(sourceConfluentCustomConnectorPlugin.ConnectorClass),\n\t\t\t\t\"name\":                       pulumi.String(\"DatagenConnectorExampleName\"),\n\t\t\t\t\"kafka.auth.mode\":            pulumi.String(\"KAFKA_API_KEY\"),\n\t\t\t\t\"kafka.topic\":                pulumi.Any(orders.TopicName),\n\t\t\t\t\"output.data.format\":         pulumi.String(\"JSON\"),\n\t\t\t\t\"quickstart\":                 pulumi.String(\"ORDERS\"),\n\t\t\t\t\"confluent.custom.plugin.id\": pulumi.Any(sourceConfluentCustomConnectorPlugin.Id),\n\t\t\t\t\"min.interval\":               pulumi.String(\"1000\"),\n\t\t\t\t\"max.interval\":               pulumi.String(\"2000\"),\n\t\t\t\t\"tasks.max\":                  pulumi.String(\"1\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapp_manager_kafka_cluster_admin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Connector;\nimport com.pulumi.confluentcloud.ConnectorArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ConnectorKafkaClusterArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/custom-datagen-source-connector\n        var source = new Connector(\"source\", ConnectorArgs.builder()\n            .environment(ConnectorEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .kafkaCluster(ConnectorKafkaClusterArgs.builder()\n                .id(basic.id())\n                .build())\n            .configSensitive(Map.ofEntries(\n                Map.entry(\"kafka.api.key\", \"***REDACTED***\"),\n                Map.entry(\"kafka.api.secret\", \"***REDACTED***\")\n            ))\n            .configNonsensitive(Map.ofEntries(\n                Map.entry(\"confluent.connector.type\", \"CUSTOM\"),\n                Map.entry(\"connector.class\", sourceConfluentCustomConnectorPlugin.connectorClass()),\n                Map.entry(\"name\", \"DatagenConnectorExampleName\"),\n                Map.entry(\"kafka.auth.mode\", \"KAFKA_API_KEY\"),\n                Map.entry(\"kafka.topic\", orders.topicName()),\n                Map.entry(\"output.data.format\", \"JSON\"),\n                Map.entry(\"quickstart\", \"ORDERS\"),\n                Map.entry(\"confluent.custom.plugin.id\", sourceConfluentCustomConnectorPlugin.id()),\n                Map.entry(\"min.interval\", \"1000\"),\n                Map.entry(\"max.interval\", \"2000\"),\n                Map.entry(\"tasks.max\", \"1\")\n            ))\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(app_manager_kafka_cluster_admin)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # https://github.com/confluentinc/terraform-provider-confluent/tree/master/examples/configurations/connectors/custom-datagen-source-connector\n  source:\n    type: confluentcloud:Connector\n    properties:\n      environment:\n        id: ${staging.id}\n      kafkaCluster:\n        id: ${basic.id}\n      configSensitive:\n        kafka.api.key: '***REDACTED***'\n        kafka.api.secret: '***REDACTED***'\n      configNonsensitive:\n        confluent.connector.type: CUSTOM\n        connector.class: ${sourceConfluentCustomConnectorPlugin.connectorClass}\n        name: DatagenConnectorExampleName\n        kafka.auth.mode: KAFKA_API_KEY\n        kafka.topic: ${orders.topicName}\n        output.data.format: JSON\n        quickstart: ORDERS\n        confluent.custom.plugin.id: ${sourceConfluentCustomConnectorPlugin.id}\n        min.interval: '1000'\n        max.interval: '2000'\n        tasks.max: '1'\n    options:\n      dependsOn:\n        - ${[\"app-manager-kafka-cluster-admin\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Connector`\" pulumi-lang-dotnet=\"`confluentcloud.Connector`\" pulumi-lang-go=\"`Connector`\" pulumi-lang-python=\"`Connector`\" pulumi-lang-yaml=\"`confluentcloud.Connector`\" pulumi-lang-java=\"`confluentcloud.Connector`\"\u003e`confluentcloud.Connector`\u003c/span\u003e resource:\n* s3-sink-connector\n* s3-sink-connector-assume-role\n* snowflake-sink-connector\n* managed-datagen-source-connector\n* elasticsearch-sink-connector\n* dynamo-db-sink-connector\n* mongo-db-source-connector\n* mongo-db-sink-connector\n* sql-server-cdc-debezium-source-connector\n* postgre-sql-cdc-debezium-source-connector\n* custom-datagen-source-connector\n* manage-offsets-github-source-connector\n* manage-offsets-mongo-db-source-connector\n* manage-offsets-mysql-sink-connector\n\n\u003e **Note:** Certain connectors require additional ACL entries. See [Additional ACL entries](https://docs.confluent.io/cloud/current/connectors/service-account.html#additional-acl-entries) for more details.\n\n\u003e **Note:** If there isn’t an example available for your target connector in the connectors folder, use the Confluent Cloud Console to begin the provisioning process. This can help you determine the required ACLs (example). You can also refer to the connector’s documentation page ([example](https://docs.confluent.io/cloud/current/connectors/cc-amazon-dynamo-db-sink.html#step-3-create-the-connector-configuration-file)) to copy its default configuration and learn more about all available settings. Afterward, we recommend selecting an example with the same connector type (sink or source) and modifying its ACL list and configuration to fit your specific requirements.\n\n## Import\n\n\u003e **Note:** Set \u003cspan pulumi-lang-nodejs=\"`configSensitive \" pulumi-lang-dotnet=\"`ConfigSensitive \" pulumi-lang-go=\"`configSensitive \" pulumi-lang-python=\"`config_sensitive \" pulumi-lang-yaml=\"`configSensitive \" pulumi-lang-java=\"`configSensitive \"\u003e`config_sensitive \u003c/span\u003e= {}` and do not specify \u003cspan pulumi-lang-nodejs=\"`offsets`\" pulumi-lang-dotnet=\"`Offsets`\" pulumi-lang-go=\"`offsets`\" pulumi-lang-python=\"`offsets`\" pulumi-lang-yaml=\"`offsets`\" pulumi-lang-java=\"`offsets`\"\u003e`offsets`\u003c/span\u003e block before importing a connector.\n\nYou can import a connector by using Environment ID, Kafka cluster ID, and connector's name, in the format `\u003cEnvironment ID\u003e/\u003cKafka cluster ID\u003e/\u003cConnector name\u003e`, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/connector:Connector my_connector \"env-abc123/lkc-abc123/S3_SINKConnector_0\"\n```\n\n","properties":{"configNonsensitive":{"type":"object","additionalProperties":{"type":"string"},"description":"Block for custom *nonsensitive* configuration properties that are *not* labelled with \"Type: password\" under \"Configuration Properties\" section in [the docs](https://docs.confluent.io/cloud/current/connectors/index.html):\n"},"configSensitive":{"type":"object","additionalProperties":{"type":"string"},"description":"Block for custom *sensitive* configuration properties that are labelled with \"Type: password\" under \"Configuration Properties\" section in [the docs](https://docs.confluent.io/cloud/current/connectors/index.html):\n","secret":true},"environment":{"$ref":"#/types/confluentcloud:index/ConnectorEnvironment:ConnectorEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/ConnectorKafkaCluster:ConnectorKafkaCluster"},"offsets":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/ConnectorOffset:ConnectorOffset"},"description":"Connector partitions with offsets"},"status":{"type":"string","description":"The status of the connector (one of `\"NONE\"`, `\"PROVISIONING\"`, `\"RUNNING\"`, `\"DEGRADED\"`, `\"FAILED\"`, `\"PAUSED\"`, `\"DELETED\"`). Pausing (`\"RUNNING\" \u003e \"PAUSED\"`) and resuming (`\"PAUSED\" \u003e \"RUNNING\"`) a connector is supported via an update operation.\n\nFor more information on connector offset management, see [Manage Offsets for Fully-Managed Connectors in Confluent Cloud](https://docs.confluent.io/cloud/current/connectors/offsets.html).\n\n\u003e **Note:** If there are no _sensitive_ configuration settings for your connector, set \u003cspan pulumi-lang-nodejs=\"`configSensitive \" pulumi-lang-dotnet=\"`ConfigSensitive \" pulumi-lang-go=\"`configSensitive \" pulumi-lang-python=\"`config_sensitive \" pulumi-lang-yaml=\"`configSensitive \" pulumi-lang-java=\"`configSensitive \"\u003e`config_sensitive \u003c/span\u003e= {}` explicitly.\n\n\u003e **Note:** You may declare sensitive variables for secrets \u003cspan pulumi-lang-nodejs=\"`configSensitive`\" pulumi-lang-dotnet=\"`ConfigSensitive`\" pulumi-lang-go=\"`configSensitive`\" pulumi-lang-python=\"`config_sensitive`\" pulumi-lang-yaml=\"`configSensitive`\" pulumi-lang-java=\"`configSensitive`\"\u003e`config_sensitive`\u003c/span\u003e block and set them using environment variables (for example, `export TF_VAR_aws_access_key_id=\"foo\"`).\n"}},"required":["configNonsensitive","configSensitive","environment","kafkaCluster","status"],"inputProperties":{"configNonsensitive":{"type":"object","additionalProperties":{"type":"string"},"description":"Block for custom *nonsensitive* configuration properties that are *not* labelled with \"Type: password\" under \"Configuration Properties\" section in [the docs](https://docs.confluent.io/cloud/current/connectors/index.html):\n"},"configSensitive":{"type":"object","additionalProperties":{"type":"string"},"description":"Block for custom *sensitive* configuration properties that are labelled with \"Type: password\" under \"Configuration Properties\" section in [the docs](https://docs.confluent.io/cloud/current/connectors/index.html):\n","secret":true},"environment":{"$ref":"#/types/confluentcloud:index/ConnectorEnvironment:ConnectorEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/ConnectorKafkaCluster:ConnectorKafkaCluster","willReplaceOnChanges":true},"offsets":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/ConnectorOffset:ConnectorOffset"},"description":"Connector partitions with offsets"},"status":{"type":"string","description":"The status of the connector (one of `\"NONE\"`, `\"PROVISIONING\"`, `\"RUNNING\"`, `\"DEGRADED\"`, `\"FAILED\"`, `\"PAUSED\"`, `\"DELETED\"`). Pausing (`\"RUNNING\" \u003e \"PAUSED\"`) and resuming (`\"PAUSED\" \u003e \"RUNNING\"`) a connector is supported via an update operation.\n\nFor more information on connector offset management, see [Manage Offsets for Fully-Managed Connectors in Confluent Cloud](https://docs.confluent.io/cloud/current/connectors/offsets.html).\n\n\u003e **Note:** If there are no _sensitive_ configuration settings for your connector, set \u003cspan pulumi-lang-nodejs=\"`configSensitive \" pulumi-lang-dotnet=\"`ConfigSensitive \" pulumi-lang-go=\"`configSensitive \" pulumi-lang-python=\"`config_sensitive \" pulumi-lang-yaml=\"`configSensitive \" pulumi-lang-java=\"`configSensitive \"\u003e`config_sensitive \u003c/span\u003e= {}` explicitly.\n\n\u003e **Note:** You may declare sensitive variables for secrets \u003cspan pulumi-lang-nodejs=\"`configSensitive`\" pulumi-lang-dotnet=\"`ConfigSensitive`\" pulumi-lang-go=\"`configSensitive`\" pulumi-lang-python=\"`config_sensitive`\" pulumi-lang-yaml=\"`configSensitive`\" pulumi-lang-java=\"`configSensitive`\"\u003e`config_sensitive`\u003c/span\u003e block and set them using environment variables (for example, `export TF_VAR_aws_access_key_id=\"foo\"`).\n"}},"requiredInputs":["configNonsensitive","environment","kafkaCluster"],"stateInputs":{"description":"Input properties used for looking up and filtering Connector resources.\n","properties":{"configNonsensitive":{"type":"object","additionalProperties":{"type":"string"},"description":"Block for custom *nonsensitive* configuration properties that are *not* labelled with \"Type: password\" under \"Configuration Properties\" section in [the docs](https://docs.confluent.io/cloud/current/connectors/index.html):\n"},"configSensitive":{"type":"object","additionalProperties":{"type":"string"},"description":"Block for custom *sensitive* configuration properties that are labelled with \"Type: password\" under \"Configuration Properties\" section in [the docs](https://docs.confluent.io/cloud/current/connectors/index.html):\n","secret":true},"environment":{"$ref":"#/types/confluentcloud:index/ConnectorEnvironment:ConnectorEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/ConnectorKafkaCluster:ConnectorKafkaCluster","willReplaceOnChanges":true},"offsets":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/ConnectorOffset:ConnectorOffset"},"description":"Connector partitions with offsets"},"status":{"type":"string","description":"The status of the connector (one of `\"NONE\"`, `\"PROVISIONING\"`, `\"RUNNING\"`, `\"DEGRADED\"`, `\"FAILED\"`, `\"PAUSED\"`, `\"DELETED\"`). Pausing (`\"RUNNING\" \u003e \"PAUSED\"`) and resuming (`\"PAUSED\" \u003e \"RUNNING\"`) a connector is supported via an update operation.\n\nFor more information on connector offset management, see [Manage Offsets for Fully-Managed Connectors in Confluent Cloud](https://docs.confluent.io/cloud/current/connectors/offsets.html).\n\n\u003e **Note:** If there are no _sensitive_ configuration settings for your connector, set \u003cspan pulumi-lang-nodejs=\"`configSensitive \" pulumi-lang-dotnet=\"`ConfigSensitive \" pulumi-lang-go=\"`configSensitive \" pulumi-lang-python=\"`config_sensitive \" pulumi-lang-yaml=\"`configSensitive \" pulumi-lang-java=\"`configSensitive \"\u003e`config_sensitive \u003c/span\u003e= {}` explicitly.\n\n\u003e **Note:** You may declare sensitive variables for secrets \u003cspan pulumi-lang-nodejs=\"`configSensitive`\" pulumi-lang-dotnet=\"`ConfigSensitive`\" pulumi-lang-go=\"`configSensitive`\" pulumi-lang-python=\"`config_sensitive`\" pulumi-lang-yaml=\"`configSensitive`\" pulumi-lang-java=\"`configSensitive`\"\u003e`config_sensitive`\u003c/span\u003e block and set them using environment variables (for example, `export TF_VAR_aws_access_key_id=\"foo\"`).\n"}},"type":"object"}},"confluentcloud:index/customConnectorPlugin:CustomConnectorPlugin":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.CustomConnectorPlugin`\" pulumi-lang-dotnet=\"`confluentcloud.CustomConnectorPlugin`\" pulumi-lang-go=\"`CustomConnectorPlugin`\" pulumi-lang-python=\"`CustomConnectorPlugin`\" pulumi-lang-yaml=\"`confluentcloud.CustomConnectorPlugin`\" pulumi-lang-java=\"`confluentcloud.CustomConnectorPlugin`\"\u003e`confluentcloud.CustomConnectorPlugin`\u003c/span\u003e provides a Custom Connector Plugin resource that enables creating, editing, and deleting Custom Connector Plugins on Confluent Cloud.\n\n\u003e **Note:** See [Custom Connector Quick Start](https://docs.confluent.io/cloud/current/connectors/bring-your-connector/custom-connector-qs.html#custom-connector-quick-start) and [Custom Connector Plugin Examples](https://docs.confluent.io/cloud/current/connectors/connect-api-section.html#custom-connector-plugin-examples) for more details.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Custom Connector Plugin deletion. This setting rejects plans that would destroy or recreate the Custom Connector Plugin, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst source = new confluentcloud.CustomConnectorPlugin(\"source\", {\n    displayName: \"Datagen Source Connector Plugin\",\n    documentationLink: \"https://www.confluent.io/hub/confluentinc/kafka-connect-datagen\",\n    connectorClass: \"io.confluent.kafka.connect.datagen.DatagenConnector\",\n    connectorType: \"SOURCE\",\n    sensitiveConfigProperties: [],\n    filename: \"confluentinc-kafka-connect-datagen-0.6.2.zip\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nsource = confluentcloud.CustomConnectorPlugin(\"source\",\n    display_name=\"Datagen Source Connector Plugin\",\n    documentation_link=\"https://www.confluent.io/hub/confluentinc/kafka-connect-datagen\",\n    connector_class=\"io.confluent.kafka.connect.datagen.DatagenConnector\",\n    connector_type=\"SOURCE\",\n    sensitive_config_properties=[],\n    filename=\"confluentinc-kafka-connect-datagen-0.6.2.zip\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var source = new ConfluentCloud.CustomConnectorPlugin(\"source\", new()\n    {\n        DisplayName = \"Datagen Source Connector Plugin\",\n        DocumentationLink = \"https://www.confluent.io/hub/confluentinc/kafka-connect-datagen\",\n        ConnectorClass = \"io.confluent.kafka.connect.datagen.DatagenConnector\",\n        ConnectorType = \"SOURCE\",\n        SensitiveConfigProperties = new[] {},\n        Filename = \"confluentinc-kafka-connect-datagen-0.6.2.zip\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewCustomConnectorPlugin(ctx, \"source\", \u0026confluentcloud.CustomConnectorPluginArgs{\n\t\t\tDisplayName:               pulumi.String(\"Datagen Source Connector Plugin\"),\n\t\t\tDocumentationLink:         pulumi.String(\"https://www.confluent.io/hub/confluentinc/kafka-connect-datagen\"),\n\t\t\tConnectorClass:            pulumi.String(\"io.confluent.kafka.connect.datagen.DatagenConnector\"),\n\t\t\tConnectorType:             pulumi.String(\"SOURCE\"),\n\t\t\tSensitiveConfigProperties: pulumi.StringArray{},\n\t\t\tFilename:                  pulumi.String(\"confluentinc-kafka-connect-datagen-0.6.2.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.CustomConnectorPlugin;\nimport com.pulumi.confluentcloud.CustomConnectorPluginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var source = new CustomConnectorPlugin(\"source\", CustomConnectorPluginArgs.builder()\n            .displayName(\"Datagen Source Connector Plugin\")\n            .documentationLink(\"https://www.confluent.io/hub/confluentinc/kafka-connect-datagen\")\n            .connectorClass(\"io.confluent.kafka.connect.datagen.DatagenConnector\")\n            .connectorType(\"SOURCE\")\n            .sensitiveConfigProperties()\n            .filename(\"confluentinc-kafka-connect-datagen-0.6.2.zip\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  source:\n    type: confluentcloud:CustomConnectorPlugin\n    properties:\n      displayName: Datagen Source Connector Plugin\n      documentationLink: https://www.confluent.io/hub/confluentinc/kafka-connect-datagen\n      connectorClass: io.confluent.kafka.connect.datagen.DatagenConnector\n      connectorType: SOURCE\n      sensitiveConfigProperties: []\n      filename: confluentinc-kafka-connect-datagen-0.6.2.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** Set `filename = \"\"` or use `IMPORT_CUSTOM_CONNECTOR_PLUGIN_FILENAME` environment variables before importing a Custom Connector Plugin.\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Custom Connector Plugin.\n\nYou can import a Custom Connector Plugin by using a Custom Connector Plugin ID, in the format `\u003cCustom Connector Plugin\u003e`. The following example shows how to import a Custom Connector Plugin:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/customConnectorPlugin:CustomConnectorPlugin main ccp-abc123xyz\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"cloud":{"type":"string","description":"Cloud provider where the Custom Connector Plugin archive is uploaded. Defaults to `AWS`. Accepted values are: `AWS`, `AZURE`, `GCP`.\n"},"connectorClass":{"type":"string","description":"The Java class or alias for the connector. You can get the connector class from the connector documentation provided by the developer.\n"},"connectorType":{"type":"string","description":"The type of the Custom Connector Plugin. Accepted values are: `SOURCE`, `SINK`.\n"},"description":{"type":"string","description":"The description of the Custom Connector Plugin.\n"},"displayName":{"type":"string","description":"The name of the Custom Connector Plugin.\n"},"documentationLink":{"type":"string","description":"The documentation link of the Custom Connector Plugin.\n"},"filename":{"type":"string","description":"The path to the Custom Connector Plugin archive to be uploaded. Accepted archive formats are: `.jar`, `.zip`.\n"},"sensitiveConfigProperties":{"type":"array","items":{"type":"string"},"description":"The list of sensitive properties. A sensitive property is a connector configuration property that must be hidden after a user enters the property value when setting up the connector, for example, passwords, keys, and tokens. Refer to the developer documentation and add all required and optional sensitive properties that a user could potentially configure for the connector. Marking a property as sensitive ensures that these fields are handled appropriately within the Confluent infrastructure. This includes masking fields, for example in exception logging, and encrypting field values in the underlying data store. You must identify all sensitive properties. Failure to identify sensitive properties can result in the sensitive property value being stored in plain text rather than in encrypted format. Only add connector-specific sensitive properties. Kafka keys, passwords, and service account information should not be entered here.\n"}},"required":["cloud","connectorClass","connectorType","displayName","filename"],"inputProperties":{"cloud":{"type":"string","description":"Cloud provider where the Custom Connector Plugin archive is uploaded. Defaults to `AWS`. Accepted values are: `AWS`, `AZURE`, `GCP`.\n","willReplaceOnChanges":true},"connectorClass":{"type":"string","description":"The Java class or alias for the connector. You can get the connector class from the connector documentation provided by the developer.\n","willReplaceOnChanges":true},"connectorType":{"type":"string","description":"The type of the Custom Connector Plugin. Accepted values are: `SOURCE`, `SINK`.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"The description of the Custom Connector Plugin.\n"},"displayName":{"type":"string","description":"The name of the Custom Connector Plugin.\n"},"documentationLink":{"type":"string","description":"The documentation link of the Custom Connector Plugin.\n"},"filename":{"type":"string","description":"The path to the Custom Connector Plugin archive to be uploaded. Accepted archive formats are: `.jar`, `.zip`.\n","willReplaceOnChanges":true},"sensitiveConfigProperties":{"type":"array","items":{"type":"string"},"description":"The list of sensitive properties. A sensitive property is a connector configuration property that must be hidden after a user enters the property value when setting up the connector, for example, passwords, keys, and tokens. Refer to the developer documentation and add all required and optional sensitive properties that a user could potentially configure for the connector. Marking a property as sensitive ensures that these fields are handled appropriately within the Confluent infrastructure. This includes masking fields, for example in exception logging, and encrypting field values in the underlying data store. You must identify all sensitive properties. Failure to identify sensitive properties can result in the sensitive property value being stored in plain text rather than in encrypted format. Only add connector-specific sensitive properties. Kafka keys, passwords, and service account information should not be entered here.\n"}},"requiredInputs":["connectorClass","connectorType","displayName","filename"],"stateInputs":{"description":"Input properties used for looking up and filtering CustomConnectorPlugin resources.\n","properties":{"cloud":{"type":"string","description":"Cloud provider where the Custom Connector Plugin archive is uploaded. Defaults to `AWS`. Accepted values are: `AWS`, `AZURE`, `GCP`.\n","willReplaceOnChanges":true},"connectorClass":{"type":"string","description":"The Java class or alias for the connector. You can get the connector class from the connector documentation provided by the developer.\n","willReplaceOnChanges":true},"connectorType":{"type":"string","description":"The type of the Custom Connector Plugin. Accepted values are: `SOURCE`, `SINK`.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"The description of the Custom Connector Plugin.\n"},"displayName":{"type":"string","description":"The name of the Custom Connector Plugin.\n"},"documentationLink":{"type":"string","description":"The documentation link of the Custom Connector Plugin.\n"},"filename":{"type":"string","description":"The path to the Custom Connector Plugin archive to be uploaded. Accepted archive formats are: `.jar`, `.zip`.\n","willReplaceOnChanges":true},"sensitiveConfigProperties":{"type":"array","items":{"type":"string"},"description":"The list of sensitive properties. A sensitive property is a connector configuration property that must be hidden after a user enters the property value when setting up the connector, for example, passwords, keys, and tokens. Refer to the developer documentation and add all required and optional sensitive properties that a user could potentially configure for the connector. Marking a property as sensitive ensures that these fields are handled appropriately within the Confluent infrastructure. This includes masking fields, for example in exception logging, and encrypting field values in the underlying data store. You must identify all sensitive properties. Failure to identify sensitive properties can result in the sensitive property value being stored in plain text rather than in encrypted format. Only add connector-specific sensitive properties. Kafka keys, passwords, and service account information should not be entered here.\n"}},"type":"object"}},"confluentcloud:index/customConnectorPluginVersion:CustomConnectorPluginVersion":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.CustomConnectorPlugin`\" pulumi-lang-dotnet=\"`confluentcloud.CustomConnectorPlugin`\" pulumi-lang-go=\"`CustomConnectorPlugin`\" pulumi-lang-python=\"`CustomConnectorPlugin`\" pulumi-lang-yaml=\"`confluentcloud.CustomConnectorPlugin`\" pulumi-lang-java=\"`confluentcloud.CustomConnectorPlugin`\"\u003e`confluentcloud.CustomConnectorPlugin`\u003c/span\u003e provides a Custom Connector Plugin resource that enables creating and deleting Custom Connector Plugin Versions on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Custom Connector Plugin Version deletion. This setting rejects plans that would destroy or recreate the Custom Connector Plugin Version, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst source = new confluentcloud.CustomConnectorPluginVersion(\"source\", {\n    version: \"v1.2.4\",\n    cloud: \"AWS\",\n    documentationLink: \"https://www.confluent.io/hub/confluentinc/kafka-connect-datagen\",\n    connectorClasses: [{\n        connectorClassName: \"io.confluent.kafka.connect.datagen.DatagenConnector\",\n        connectorType: \"SOURCE\",\n    }],\n    sensitiveConfigProperties: [],\n    filename: \"confluentinc-kafka-connect-datagen-0.6.2.zip\",\n    pluginId: \"ccp-dev-123\",\n    environment: {\n        id: \"env-devc0k7oxp\",\n    },\n}, {\n    dependsOn: [plugin],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nsource = confluentcloud.CustomConnectorPluginVersion(\"source\",\n    version=\"v1.2.4\",\n    cloud=\"AWS\",\n    documentation_link=\"https://www.confluent.io/hub/confluentinc/kafka-connect-datagen\",\n    connector_classes=[{\n        \"connector_class_name\": \"io.confluent.kafka.connect.datagen.DatagenConnector\",\n        \"connector_type\": \"SOURCE\",\n    }],\n    sensitive_config_properties=[],\n    filename=\"confluentinc-kafka-connect-datagen-0.6.2.zip\",\n    plugin_id=\"ccp-dev-123\",\n    environment={\n        \"id\": \"env-devc0k7oxp\",\n    },\n    opts = pulumi.ResourceOptions(depends_on=[plugin]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var source = new ConfluentCloud.CustomConnectorPluginVersion(\"source\", new()\n    {\n        Version = \"v1.2.4\",\n        Cloud = \"AWS\",\n        DocumentationLink = \"https://www.confluent.io/hub/confluentinc/kafka-connect-datagen\",\n        ConnectorClasses = new[]\n        {\n            new ConfluentCloud.Inputs.CustomConnectorPluginVersionConnectorClassArgs\n            {\n                ConnectorClassName = \"io.confluent.kafka.connect.datagen.DatagenConnector\",\n                ConnectorType = \"SOURCE\",\n            },\n        },\n        SensitiveConfigProperties = new[] {},\n        Filename = \"confluentinc-kafka-connect-datagen-0.6.2.zip\",\n        PluginId = \"ccp-dev-123\",\n        Environment = new ConfluentCloud.Inputs.CustomConnectorPluginVersionEnvironmentArgs\n        {\n            Id = \"env-devc0k7oxp\",\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            plugin,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewCustomConnectorPluginVersion(ctx, \"source\", \u0026confluentcloud.CustomConnectorPluginVersionArgs{\n\t\t\tVersion:           pulumi.String(\"v1.2.4\"),\n\t\t\tCloud:             pulumi.String(\"AWS\"),\n\t\t\tDocumentationLink: pulumi.String(\"https://www.confluent.io/hub/confluentinc/kafka-connect-datagen\"),\n\t\t\tConnectorClasses: confluentcloud.CustomConnectorPluginVersionConnectorClassArray{\n\t\t\t\t\u0026confluentcloud.CustomConnectorPluginVersionConnectorClassArgs{\n\t\t\t\t\tConnectorClassName: pulumi.String(\"io.confluent.kafka.connect.datagen.DatagenConnector\"),\n\t\t\t\t\tConnectorType:      pulumi.String(\"SOURCE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSensitiveConfigProperties: pulumi.StringArray{},\n\t\t\tFilename:                  pulumi.String(\"confluentinc-kafka-connect-datagen-0.6.2.zip\"),\n\t\t\tPluginId:                  pulumi.String(\"ccp-dev-123\"),\n\t\t\tEnvironment: \u0026confluentcloud.CustomConnectorPluginVersionEnvironmentArgs{\n\t\t\t\tId: pulumi.String(\"env-devc0k7oxp\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tplugin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.CustomConnectorPluginVersion;\nimport com.pulumi.confluentcloud.CustomConnectorPluginVersionArgs;\nimport com.pulumi.confluentcloud.inputs.CustomConnectorPluginVersionConnectorClassArgs;\nimport com.pulumi.confluentcloud.inputs.CustomConnectorPluginVersionEnvironmentArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var source = new CustomConnectorPluginVersion(\"source\", CustomConnectorPluginVersionArgs.builder()\n            .version(\"v1.2.4\")\n            .cloud(\"AWS\")\n            .documentationLink(\"https://www.confluent.io/hub/confluentinc/kafka-connect-datagen\")\n            .connectorClasses(CustomConnectorPluginVersionConnectorClassArgs.builder()\n                .connectorClassName(\"io.confluent.kafka.connect.datagen.DatagenConnector\")\n                .connectorType(\"SOURCE\")\n                .build())\n            .sensitiveConfigProperties()\n            .filename(\"confluentinc-kafka-connect-datagen-0.6.2.zip\")\n            .pluginId(\"ccp-dev-123\")\n            .environment(CustomConnectorPluginVersionEnvironmentArgs.builder()\n                .id(\"env-devc0k7oxp\")\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(plugin)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  source:\n    type: confluentcloud:CustomConnectorPluginVersion\n    properties:\n      version: v1.2.4\n      cloud: AWS\n      documentationLink: https://www.confluent.io/hub/confluentinc/kafka-connect-datagen\n      connectorClasses:\n        - connectorClassName: io.confluent.kafka.connect.datagen.DatagenConnector\n          connectorType: SOURCE\n      sensitiveConfigProperties: []\n      filename: confluentinc-kafka-connect-datagen-0.6.2.zip\n      pluginId: ccp-dev-123\n      environment:\n        id: env-devc0k7oxp\n    options:\n      dependsOn:\n        - ${plugin}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** Set `filename = \"\"` or use `IMPORT_CUSTOM_CONNECTOR_PLUGIN_VERSION_FILENAME` environment variables before importing a Custom Connector Plugin Version.\n\n\u003e **Note:** Set `cloud = \"\"` or use `IMPORT_CLOUD` environment variables before importing a Custom Connector Plugin Version.\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Custom Connector Plugin.\n\nYou can import a Custom Connector Plugin by using a Custom Connector Plugin ID, in the format `\u003cEnvironment ID\u003e/\u003cPlugin ID\u003e/\u003cVersion ID\u003e`. The following example shows how to import a Custom Connector Plugin:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/customConnectorPluginVersion:CustomConnectorPluginVersion main env-123/plug-123/ccp-ver123xyz\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"apiVersion":{"type":"string","description":"(Required String) The API Version of the schema version of the plugin version, for example, `ccpm/v1`.\n"},"cloud":{"type":"string","description":"Cloud provider where the Custom Connector Plugin Version archive is uploaded. Accepted values are: `AWS`, `AZURE`, `GCP`.\n"},"connectorClasses":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/CustomConnectorPluginVersionConnectorClass:CustomConnectorPluginVersionConnectorClass"},"description":"The Java class name or alias for the connector. You can get the connector class from the connector documentation provided by the developer.\n"},"documentationLink":{"type":"string","description":"The documentation link of the Custom Connector Plugin Version.\n"},"environment":{"$ref":"#/types/confluentcloud:index/CustomConnectorPluginVersionEnvironment:CustomConnectorPluginVersionEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"filename":{"type":"string","description":"The path to the Custom Connector Plugin Version archive to be uploaded. Accepted archive formats are: `.jar`, `.zip`.\n"},"kind":{"type":"string","description":"(Required String) The kind of the Plugin Version, for example, `CustomConnectPluginVersion`.\n"},"pluginId":{"type":"string","description":"The ID of the plugin created using \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Plugin`\" pulumi-lang-dotnet=\"`confluentcloud.Plugin`\" pulumi-lang-go=\"`Plugin`\" pulumi-lang-python=\"`Plugin`\" pulumi-lang-yaml=\"`confluentcloud.Plugin`\" pulumi-lang-java=\"`confluentcloud.Plugin`\"\u003e`confluentcloud.Plugin`\u003c/span\u003e resource, or through other ways.\n"},"sensitiveConfigProperties":{"type":"array","items":{"type":"string"},"description":"The list of sensitive properties. A sensitive property is a connector configuration property that must be hidden after a user enters the property value when setting up the connector, for example, passwords, keys, and tokens. Refer to the developer documentation and add all required and optional sensitive properties that a user could potentially configure for the connector. Marking a property as sensitive ensures that these fields are handled appropriately within the Confluent infrastructure. This includes masking fields, for example in exception logging, and encrypting field values in the underlying data store. You must identify all sensitive properties. Failure to identify sensitive properties can result in the sensitive property value being stored in plain text rather than in encrypted format. Only add connector-specific sensitive properties. Kafka keys, passwords, and service account information should not be entered here.\n"},"version":{"type":"string","description":"The version number of the plugin version we want to create. This must start with the character \u003cspan pulumi-lang-nodejs=\"`v`\" pulumi-lang-dotnet=\"`V`\" pulumi-lang-go=\"`v`\" pulumi-lang-python=\"`v`\" pulumi-lang-yaml=\"`v`\" pulumi-lang-java=\"`v`\"\u003e`v`\u003c/span\u003e and follow semantic versioning.\n"}},"required":["apiVersion","cloud","connectorClasses","environment","filename","kind","pluginId","version"],"inputProperties":{"cloud":{"type":"string","description":"Cloud provider where the Custom Connector Plugin Version archive is uploaded. Accepted values are: `AWS`, `AZURE`, `GCP`.\n","willReplaceOnChanges":true},"connectorClasses":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/CustomConnectorPluginVersionConnectorClass:CustomConnectorPluginVersionConnectorClass"},"description":"The Java class name or alias for the connector. You can get the connector class from the connector documentation provided by the developer.\n","willReplaceOnChanges":true},"documentationLink":{"type":"string","description":"The documentation link of the Custom Connector Plugin Version.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/CustomConnectorPluginVersionEnvironment:CustomConnectorPluginVersionEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"filename":{"type":"string","description":"The path to the Custom Connector Plugin Version archive to be uploaded. Accepted archive formats are: `.jar`, `.zip`.\n","willReplaceOnChanges":true},"pluginId":{"type":"string","description":"The ID of the plugin created using \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Plugin`\" pulumi-lang-dotnet=\"`confluentcloud.Plugin`\" pulumi-lang-go=\"`Plugin`\" pulumi-lang-python=\"`Plugin`\" pulumi-lang-yaml=\"`confluentcloud.Plugin`\" pulumi-lang-java=\"`confluentcloud.Plugin`\"\u003e`confluentcloud.Plugin`\u003c/span\u003e resource, or through other ways.\n","willReplaceOnChanges":true},"sensitiveConfigProperties":{"type":"array","items":{"type":"string"},"description":"The list of sensitive properties. A sensitive property is a connector configuration property that must be hidden after a user enters the property value when setting up the connector, for example, passwords, keys, and tokens. Refer to the developer documentation and add all required and optional sensitive properties that a user could potentially configure for the connector. Marking a property as sensitive ensures that these fields are handled appropriately within the Confluent infrastructure. This includes masking fields, for example in exception logging, and encrypting field values in the underlying data store. You must identify all sensitive properties. Failure to identify sensitive properties can result in the sensitive property value being stored in plain text rather than in encrypted format. Only add connector-specific sensitive properties. Kafka keys, passwords, and service account information should not be entered here.\n","willReplaceOnChanges":true},"version":{"type":"string","description":"The version number of the plugin version we want to create. This must start with the character \u003cspan pulumi-lang-nodejs=\"`v`\" pulumi-lang-dotnet=\"`V`\" pulumi-lang-go=\"`v`\" pulumi-lang-python=\"`v`\" pulumi-lang-yaml=\"`v`\" pulumi-lang-java=\"`v`\"\u003e`v`\u003c/span\u003e and follow semantic versioning.\n","willReplaceOnChanges":true}},"requiredInputs":["cloud","connectorClasses","environment","filename","pluginId","version"],"stateInputs":{"description":"Input properties used for looking up and filtering CustomConnectorPluginVersion resources.\n","properties":{"apiVersion":{"type":"string","description":"(Required String) The API Version of the schema version of the plugin version, for example, `ccpm/v1`.\n"},"cloud":{"type":"string","description":"Cloud provider where the Custom Connector Plugin Version archive is uploaded. Accepted values are: `AWS`, `AZURE`, `GCP`.\n","willReplaceOnChanges":true},"connectorClasses":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/CustomConnectorPluginVersionConnectorClass:CustomConnectorPluginVersionConnectorClass"},"description":"The Java class name or alias for the connector. You can get the connector class from the connector documentation provided by the developer.\n","willReplaceOnChanges":true},"documentationLink":{"type":"string","description":"The documentation link of the Custom Connector Plugin Version.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/CustomConnectorPluginVersionEnvironment:CustomConnectorPluginVersionEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"filename":{"type":"string","description":"The path to the Custom Connector Plugin Version archive to be uploaded. Accepted archive formats are: `.jar`, `.zip`.\n","willReplaceOnChanges":true},"kind":{"type":"string","description":"(Required String) The kind of the Plugin Version, for example, `CustomConnectPluginVersion`.\n"},"pluginId":{"type":"string","description":"The ID of the plugin created using \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Plugin`\" pulumi-lang-dotnet=\"`confluentcloud.Plugin`\" pulumi-lang-go=\"`Plugin`\" pulumi-lang-python=\"`Plugin`\" pulumi-lang-yaml=\"`confluentcloud.Plugin`\" pulumi-lang-java=\"`confluentcloud.Plugin`\"\u003e`confluentcloud.Plugin`\u003c/span\u003e resource, or through other ways.\n","willReplaceOnChanges":true},"sensitiveConfigProperties":{"type":"array","items":{"type":"string"},"description":"The list of sensitive properties. A sensitive property is a connector configuration property that must be hidden after a user enters the property value when setting up the connector, for example, passwords, keys, and tokens. Refer to the developer documentation and add all required and optional sensitive properties that a user could potentially configure for the connector. Marking a property as sensitive ensures that these fields are handled appropriately within the Confluent infrastructure. This includes masking fields, for example in exception logging, and encrypting field values in the underlying data store. You must identify all sensitive properties. Failure to identify sensitive properties can result in the sensitive property value being stored in plain text rather than in encrypted format. Only add connector-specific sensitive properties. Kafka keys, passwords, and service account information should not be entered here.\n","willReplaceOnChanges":true},"version":{"type":"string","description":"The version number of the plugin version we want to create. This must start with the character \u003cspan pulumi-lang-nodejs=\"`v`\" pulumi-lang-dotnet=\"`V`\" pulumi-lang-go=\"`v`\" pulumi-lang-python=\"`v`\" pulumi-lang-yaml=\"`v`\" pulumi-lang-java=\"`v`\"\u003e`v`\u003c/span\u003e and follow semantic versioning.\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/dnsForwarder:DnsForwarder":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.DnsForwarder`\" pulumi-lang-dotnet=\"`confluentcloud.DnsForwarder`\" pulumi-lang-go=\"`DnsForwarder`\" pulumi-lang-python=\"`DnsForwarder`\" pulumi-lang-yaml=\"`confluentcloud.DnsForwarder`\" pulumi-lang-java=\"`confluentcloud.DnsForwarder`\"\u003e`confluentcloud.DnsForwarder`\u003c/span\u003e provides a DNS Forwarder resource that enables creating, editing, and deleting DNS Forwarders on Confluent Cloud.\n\n## Example Usage\n\n### Option #1: Create using ForwardViaIp method\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst main = new confluentcloud.DnsForwarder(\"main\", {\n    displayName: \"dns_forwarder\",\n    environment: {\n        id: development.id,\n    },\n    domains: [\n        \"example.com\",\n        \"domainname.com\",\n    ],\n    gateway: {\n        id: mainConfluentNetwork.gateway[0].id,\n    },\n    forwardViaIp: {\n        dnsServerIps: [\n            \"10.200.0.0\",\n            \"10.200.0.1\",\n        ],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\nmain = confluentcloud.DnsForwarder(\"main\",\n    display_name=\"dns_forwarder\",\n    environment={\n        \"id\": development.id,\n    },\n    domains=[\n        \"example.com\",\n        \"domainname.com\",\n    ],\n    gateway={\n        \"id\": main_confluent_network[\"gateway\"][0][\"id\"],\n    },\n    forward_via_ip={\n        \"dns_server_ips\": [\n            \"10.200.0.0\",\n            \"10.200.0.1\",\n        ],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var main = new ConfluentCloud.DnsForwarder(\"main\", new()\n    {\n        DisplayName = \"dns_forwarder\",\n        Environment = new ConfluentCloud.Inputs.DnsForwarderEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Domains = new[]\n        {\n            \"example.com\",\n            \"domainname.com\",\n        },\n        Gateway = new ConfluentCloud.Inputs.DnsForwarderGatewayArgs\n        {\n            Id = mainConfluentNetwork.Gateway[0].Id,\n        },\n        ForwardViaIp = new ConfluentCloud.Inputs.DnsForwarderForwardViaIpArgs\n        {\n            DnsServerIps = new[]\n            {\n                \"10.200.0.0\",\n                \"10.200.0.1\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewDnsForwarder(ctx, \"main\", \u0026confluentcloud.DnsForwarderArgs{\n\t\t\tDisplayName: pulumi.String(\"dns_forwarder\"),\n\t\t\tEnvironment: \u0026confluentcloud.DnsForwarderEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\tpulumi.String(\"domainname.com\"),\n\t\t\t},\n\t\t\tGateway: \u0026confluentcloud.DnsForwarderGatewayArgs{\n\t\t\t\tId: pulumi.Any(mainConfluentNetwork.Gateway[0].Id),\n\t\t\t},\n\t\t\tForwardViaIp: \u0026confluentcloud.DnsForwarderForwardViaIpArgs{\n\t\t\t\tDnsServerIps: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.200.0.0\"),\n\t\t\t\t\tpulumi.String(\"10.200.0.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.DnsForwarder;\nimport com.pulumi.confluentcloud.DnsForwarderArgs;\nimport com.pulumi.confluentcloud.inputs.DnsForwarderEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.DnsForwarderGatewayArgs;\nimport com.pulumi.confluentcloud.inputs.DnsForwarderForwardViaIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var main = new DnsForwarder(\"main\", DnsForwarderArgs.builder()\n            .displayName(\"dns_forwarder\")\n            .environment(DnsForwarderEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .domains(            \n                \"example.com\",\n                \"domainname.com\")\n            .gateway(DnsForwarderGatewayArgs.builder()\n                .id(mainConfluentNetwork.gateway()[0].id())\n                .build())\n            .forwardViaIp(DnsForwarderForwardViaIpArgs.builder()\n                .dnsServerIps(                \n                    \"10.200.0.0\",\n                    \"10.200.0.1\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  main:\n    type: confluentcloud:DnsForwarder\n    properties:\n      displayName: dns_forwarder\n      environment:\n        id: ${development.id}\n      domains:\n        - example.com\n        - domainname.com\n      gateway:\n        id: ${mainConfluentNetwork.gateway[0].id}\n      forwardViaIp:\n        dnsServerIps:\n          - 10.200.0.0\n          - 10.200.0.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Create using ForwardViaGcpDnsZones method\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst main = new confluentcloud.DnsForwarder(\"main\", {\n    displayName: \"dns_forwarder\",\n    environment: {\n        id: development.id,\n    },\n    domains: [\n        \"example.com\",\n        \"domainname.com\",\n    ],\n    gateway: {\n        id: mainConfluentNetwork.gateway[0].id,\n    },\n    forwardViaGcpZones: [{\n        domainMappings: {\n            \"example.com\": \"zone-1,project-1\",\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\nmain = confluentcloud.DnsForwarder(\"main\",\n    display_name=\"dns_forwarder\",\n    environment={\n        \"id\": development.id,\n    },\n    domains=[\n        \"example.com\",\n        \"domainname.com\",\n    ],\n    gateway={\n        \"id\": main_confluent_network[\"gateway\"][0][\"id\"],\n    },\n    forward_via_gcp_zones=[{\n        \"domainMappings\": {\n            \"example.com\": \"zone-1,project-1\",\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var main = new ConfluentCloud.DnsForwarder(\"main\", new()\n    {\n        DisplayName = \"dns_forwarder\",\n        Environment = new ConfluentCloud.Inputs.DnsForwarderEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Domains = new[]\n        {\n            \"example.com\",\n            \"domainname.com\",\n        },\n        Gateway = new ConfluentCloud.Inputs.DnsForwarderGatewayArgs\n        {\n            Id = mainConfluentNetwork.Gateway[0].Id,\n        },\n        ForwardViaGcpZones = new[]\n        {\n            \n            {\n                { \"domainMappings\", \n                {\n                    { \"example.com\", \"zone-1,project-1\" },\n                } },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewDnsForwarder(ctx, \"main\", \u0026confluentcloud.DnsForwarderArgs{\n\t\t\tDisplayName: pulumi.String(\"dns_forwarder\"),\n\t\t\tEnvironment: \u0026confluentcloud.DnsForwarderEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\tpulumi.String(\"domainname.com\"),\n\t\t\t},\n\t\t\tGateway: \u0026confluentcloud.DnsForwarderGatewayArgs{\n\t\t\t\tId: pulumi.Any(mainConfluentNetwork.Gateway[0].Id),\n\t\t\t},\n\t\t\tForwardViaGcpZones: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"domainMappings\": map[string]interface{}{\n\t\t\t\t\t\t\"example.com\": \"zone-1,project-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.DnsForwarder;\nimport com.pulumi.confluentcloud.DnsForwarderArgs;\nimport com.pulumi.confluentcloud.inputs.DnsForwarderEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.DnsForwarderGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var main = new DnsForwarder(\"main\", DnsForwarderArgs.builder()\n            .displayName(\"dns_forwarder\")\n            .environment(DnsForwarderEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .domains(            \n                \"example.com\",\n                \"domainname.com\")\n            .gateway(DnsForwarderGatewayArgs.builder()\n                .id(mainConfluentNetwork.gateway()[0].id())\n                .build())\n            .forwardViaGcpZones(List.of(Map.of(\"domainMappings\", Map.of(\"example.com\", \"zone-1,project-1\"))))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  main:\n    type: confluentcloud:DnsForwarder\n    properties:\n      displayName: dns_forwarder\n      environment:\n        id: ${development.id}\n      domains:\n        - example.com\n        - domainname.com\n      gateway:\n        id: ${mainConfluentNetwork.gateway[0].id}\n      forwardViaGcpZones:\n        - domainMappings:\n            example.com: zone-1,project-1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a DNS Forwarder.\n\nYou can import a DNS Forwarder by using Environment ID and DNS Forwarder ID, in the format `\u003cEnvironment ID\u003e/\u003cDNS Forwarder ID\u003e`. The following example shows how to import a DNS Forwarder:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/dnsForwarder:DnsForwarder main env-abc123/dnsf-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"displayName":{"type":"string","description":"The name of the DNS Forwarder.\n"},"domains":{"type":"array","items":{"type":"string"},"description":"List of domains for the DNS forwarder to use.\n"},"environment":{"$ref":"#/types/confluentcloud:index/DnsForwarderEnvironment:DnsForwarderEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"forwardViaGcpDnsZones":{"$ref":"#/types/confluentcloud:index/DnsForwarderForwardViaGcpDnsZones:DnsForwarderForwardViaGcpDnsZones"},"forwardViaIp":{"$ref":"#/types/confluentcloud:index/DnsForwarderForwardViaIp:DnsForwarderForwardViaIp"},"gateway":{"$ref":"#/types/confluentcloud:index/DnsForwarderGateway:DnsForwarderGateway"}},"required":["displayName","domains","environment","gateway"],"inputProperties":{"displayName":{"type":"string","description":"The name of the DNS Forwarder.\n"},"domains":{"type":"array","items":{"type":"string"},"description":"List of domains for the DNS forwarder to use.\n"},"environment":{"$ref":"#/types/confluentcloud:index/DnsForwarderEnvironment:DnsForwarderEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"forwardViaGcpDnsZones":{"$ref":"#/types/confluentcloud:index/DnsForwarderForwardViaGcpDnsZones:DnsForwarderForwardViaGcpDnsZones","willReplaceOnChanges":true},"forwardViaIp":{"$ref":"#/types/confluentcloud:index/DnsForwarderForwardViaIp:DnsForwarderForwardViaIp","willReplaceOnChanges":true},"gateway":{"$ref":"#/types/confluentcloud:index/DnsForwarderGateway:DnsForwarderGateway","willReplaceOnChanges":true}},"requiredInputs":["domains","environment","gateway"],"stateInputs":{"description":"Input properties used for looking up and filtering DnsForwarder resources.\n","properties":{"displayName":{"type":"string","description":"The name of the DNS Forwarder.\n"},"domains":{"type":"array","items":{"type":"string"},"description":"List of domains for the DNS forwarder to use.\n"},"environment":{"$ref":"#/types/confluentcloud:index/DnsForwarderEnvironment:DnsForwarderEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"forwardViaGcpDnsZones":{"$ref":"#/types/confluentcloud:index/DnsForwarderForwardViaGcpDnsZones:DnsForwarderForwardViaGcpDnsZones","willReplaceOnChanges":true},"forwardViaIp":{"$ref":"#/types/confluentcloud:index/DnsForwarderForwardViaIp:DnsForwarderForwardViaIp","willReplaceOnChanges":true},"gateway":{"$ref":"#/types/confluentcloud:index/DnsForwarderGateway:DnsForwarderGateway","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/dnsRecord:DnsRecord":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.DnsRecord`\" pulumi-lang-dotnet=\"`confluentcloud.DnsRecord`\" pulumi-lang-go=\"`DnsRecord`\" pulumi-lang-python=\"`DnsRecord`\" pulumi-lang-yaml=\"`confluentcloud.DnsRecord`\" pulumi-lang-java=\"`confluentcloud.DnsRecord`\"\u003e`confluentcloud.DnsRecord`\u003c/span\u003e provides a DNS Record resource that enables creating, editing, and deleting DNS Records on Confluent Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst main = new confluentcloud.DnsRecord(\"main\", {\n    displayName: \"dns_record\",\n    environment: {\n        id: development.id,\n    },\n    domain: \"example.com\",\n    gateway: {\n        id: mainConfluentNetwork.gateway[0].id,\n    },\n    privateLinkAccessPoint: {\n        id: mainConfluentAccessPoint.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\nmain = confluentcloud.DnsRecord(\"main\",\n    display_name=\"dns_record\",\n    environment={\n        \"id\": development.id,\n    },\n    domain=\"example.com\",\n    gateway={\n        \"id\": main_confluent_network[\"gateway\"][0][\"id\"],\n    },\n    private_link_access_point={\n        \"id\": main_confluent_access_point[\"id\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var main = new ConfluentCloud.DnsRecord(\"main\", new()\n    {\n        DisplayName = \"dns_record\",\n        Environment = new ConfluentCloud.Inputs.DnsRecordEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Domain = \"example.com\",\n        Gateway = new ConfluentCloud.Inputs.DnsRecordGatewayArgs\n        {\n            Id = mainConfluentNetwork.Gateway[0].Id,\n        },\n        PrivateLinkAccessPoint = new ConfluentCloud.Inputs.DnsRecordPrivateLinkAccessPointArgs\n        {\n            Id = mainConfluentAccessPoint.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewDnsRecord(ctx, \"main\", \u0026confluentcloud.DnsRecordArgs{\n\t\t\tDisplayName: pulumi.String(\"dns_record\"),\n\t\t\tEnvironment: \u0026confluentcloud.DnsRecordEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tDomain: pulumi.String(\"example.com\"),\n\t\t\tGateway: \u0026confluentcloud.DnsRecordGatewayArgs{\n\t\t\t\tId: pulumi.Any(mainConfluentNetwork.Gateway[0].Id),\n\t\t\t},\n\t\t\tPrivateLinkAccessPoint: \u0026confluentcloud.DnsRecordPrivateLinkAccessPointArgs{\n\t\t\t\tId: pulumi.Any(mainConfluentAccessPoint.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.DnsRecord;\nimport com.pulumi.confluentcloud.DnsRecordArgs;\nimport com.pulumi.confluentcloud.inputs.DnsRecordEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.DnsRecordGatewayArgs;\nimport com.pulumi.confluentcloud.inputs.DnsRecordPrivateLinkAccessPointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var main = new DnsRecord(\"main\", DnsRecordArgs.builder()\n            .displayName(\"dns_record\")\n            .environment(DnsRecordEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .domain(\"example.com\")\n            .gateway(DnsRecordGatewayArgs.builder()\n                .id(mainConfluentNetwork.gateway()[0].id())\n                .build())\n            .privateLinkAccessPoint(DnsRecordPrivateLinkAccessPointArgs.builder()\n                .id(mainConfluentAccessPoint.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  main:\n    type: confluentcloud:DnsRecord\n    properties:\n      displayName: dns_record\n      environment:\n        id: ${development.id}\n      domain: example.com\n      gateway:\n        id: ${mainConfluentNetwork.gateway[0].id}\n      privateLinkAccessPoint:\n        id: ${mainConfluentAccessPoint.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a DNS Record.\n\nYou can import a DNS Record by using Environment ID and DNS Record ID, in the format `\u003cEnvironment ID\u003e/\u003cDNS Record ID\u003e`. The following example shows how to import a DNS Record:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/dnsRecord:DnsRecord main env-abc123/dnsrec-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"displayName":{"type":"string","description":"The name of the DNS Record.\n"},"domain":{"type":"string","description":"The fully qualified domain name of the DNS Record.\n"},"environment":{"$ref":"#/types/confluentcloud:index/DnsRecordEnvironment:DnsRecordEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"gateway":{"$ref":"#/types/confluentcloud:index/DnsRecordGateway:DnsRecordGateway"},"privateLinkAccessPoint":{"$ref":"#/types/confluentcloud:index/DnsRecordPrivateLinkAccessPoint:DnsRecordPrivateLinkAccessPoint"}},"required":["displayName","domain","environment","gateway"],"inputProperties":{"displayName":{"type":"string","description":"The name of the DNS Record.\n"},"domain":{"type":"string","description":"The fully qualified domain name of the DNS Record.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/DnsRecordEnvironment:DnsRecordEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gateway":{"$ref":"#/types/confluentcloud:index/DnsRecordGateway:DnsRecordGateway","willReplaceOnChanges":true},"privateLinkAccessPoint":{"$ref":"#/types/confluentcloud:index/DnsRecordPrivateLinkAccessPoint:DnsRecordPrivateLinkAccessPoint"}},"requiredInputs":["domain","environment","gateway"],"stateInputs":{"description":"Input properties used for looking up and filtering DnsRecord resources.\n","properties":{"displayName":{"type":"string","description":"The name of the DNS Record.\n"},"domain":{"type":"string","description":"The fully qualified domain name of the DNS Record.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/DnsRecordEnvironment:DnsRecordEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gateway":{"$ref":"#/types/confluentcloud:index/DnsRecordGateway:DnsRecordGateway","willReplaceOnChanges":true},"privateLinkAccessPoint":{"$ref":"#/types/confluentcloud:index/DnsRecordPrivateLinkAccessPoint:DnsRecordPrivateLinkAccessPoint"}},"type":"object"}},"confluentcloud:index/environment:Environment":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Environment`\" pulumi-lang-dotnet=\"`confluentcloud.Environment`\" pulumi-lang-go=\"`Environment`\" pulumi-lang-python=\"`Environment`\" pulumi-lang-yaml=\"`confluentcloud.Environment`\" pulumi-lang-java=\"`confluentcloud.Environment`\"\u003e`confluentcloud.Environment`\u003c/span\u003e provides an Environment resource. The resource lets you create, edit and delete environments on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Environment deletion. This setting rejects plans that would destroy or recreate the Environment, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst prod = new confluentcloud.Environment(\"prod\", {\n    displayName: \"Production\",\n    streamGovernance: {\n        \"package\": \"ESSENTIALS\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nprod = confluentcloud.Environment(\"prod\",\n    display_name=\"Production\",\n    stream_governance={\n        \"package\": \"ESSENTIALS\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var prod = new ConfluentCloud.Environment(\"prod\", new()\n    {\n        DisplayName = \"Production\",\n        StreamGovernance = new ConfluentCloud.Inputs.EnvironmentStreamGovernanceArgs\n        {\n            Package = \"ESSENTIALS\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewEnvironment(ctx, \"prod\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Production\"),\n\t\t\tStreamGovernance: \u0026confluentcloud.EnvironmentStreamGovernanceArgs{\n\t\t\t\tPackage: pulumi.String(\"ESSENTIALS\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.EnvironmentStreamGovernanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var prod = new Environment(\"prod\", EnvironmentArgs.builder()\n            .displayName(\"Production\")\n            .streamGovernance(EnvironmentStreamGovernanceArgs.builder()\n                .package_(\"ESSENTIALS\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  prod:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Production\n      streamGovernance:\n        package: ESSENTIALS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Environment`\" pulumi-lang-dotnet=\"`confluentcloud.Environment`\" pulumi-lang-go=\"`Environment`\" pulumi-lang-python=\"`Environment`\" pulumi-lang-yaml=\"`confluentcloud.Environment`\" pulumi-lang-java=\"`confluentcloud.Environment`\"\u003e`confluentcloud.Environment`\u003c/span\u003e resource:\n  * basic-kafka-acls: _Basic_ Kafka cluster with authorization using ACLs\n  * basic-kafka-acls-with-alias: _Basic_ Kafka cluster with authorization using ACLs\n  * standard-kafka-acls: _Standard_ Kafka cluster with authorization using ACLs\n  * standard-kafka-rbac: _Standard_ Kafka cluster with authorization using RBAC\n  * dedicated-public-kafka-acls: _Dedicated_ Kafka cluster that is accessible over the public internet with authorization using ACLs\n  * dedicated-public-kafka-rbac: _Dedicated_ Kafka cluster that is accessible over the public internet with authorization using RBAC\n  * dedicated-privatelink-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-privatelink-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using RBAC\n  * dedicated-vnet-peering-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vnet-peering-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-transit-gateway-attachment-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using ACLs\n  * dedicated-transit-gateway-attachment-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using RBAC\n  * enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing an Environment.\n\nYou can import an Environment by using Environment ID, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/environment:Environment my_env env-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"displayName":{"type":"string","description":"A human-readable name for the Environment. Start and end the name with alphanumeric characters, for example, \"Development\". The name can contain hyphens and underscores.\n"},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Environment, for example, `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123`.\n"},"streamGovernance":{"$ref":"#/types/confluentcloud:index/EnvironmentStreamGovernance:EnvironmentStreamGovernance","description":"The stream governance configuration for the Environment. The block supports the following arguments:\n"}},"required":["displayName","resourceName","streamGovernance"],"inputProperties":{"displayName":{"type":"string","description":"A human-readable name for the Environment. Start and end the name with alphanumeric characters, for example, \"Development\". The name can contain hyphens and underscores.\n"},"streamGovernance":{"$ref":"#/types/confluentcloud:index/EnvironmentStreamGovernance:EnvironmentStreamGovernance","description":"The stream governance configuration for the Environment. The block supports the following arguments:\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Environment resources.\n","properties":{"displayName":{"type":"string","description":"A human-readable name for the Environment. Start and end the name with alphanumeric characters, for example, \"Development\". The name can contain hyphens and underscores.\n"},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Environment, for example, `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123`.\n"},"streamGovernance":{"$ref":"#/types/confluentcloud:index/EnvironmentStreamGovernance:EnvironmentStreamGovernance","description":"The stream governance configuration for the Environment. The block supports the following arguments:\n"}},"type":"object"}},"confluentcloud:index/flinkArtifact:FlinkArtifact":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.FlinkArtifact`\" pulumi-lang-dotnet=\"`confluentcloud.FlinkArtifact`\" pulumi-lang-go=\"`FlinkArtifact`\" pulumi-lang-python=\"`FlinkArtifact`\" pulumi-lang-yaml=\"`confluentcloud.FlinkArtifact`\" pulumi-lang-java=\"`confluentcloud.FlinkArtifact`\"\u003e`confluentcloud.FlinkArtifact`\u003c/span\u003e provides a Flink Artifact resource that enables creating and deleting Flink Artifact on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Flink Artifact deletion. This setting rejects plans that would destroy or recreate the Flink Artifact, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst main = new confluentcloud.FlinkArtifact(\"main\", {\n    cloud: \"AWS\",\n    region: \"us-west-2\",\n    displayName: \"my_flink_sumscalar_artifact\",\n    contentFormat: \"JAR\",\n    artifactFile: \"path/to/your/artifact.jar\",\n    environment: {\n        id: development.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\nmain = confluentcloud.FlinkArtifact(\"main\",\n    cloud=\"AWS\",\n    region=\"us-west-2\",\n    display_name=\"my_flink_sumscalar_artifact\",\n    content_format=\"JAR\",\n    artifact_file=\"path/to/your/artifact.jar\",\n    environment={\n        \"id\": development.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var main = new ConfluentCloud.FlinkArtifact(\"main\", new()\n    {\n        Cloud = \"AWS\",\n        Region = \"us-west-2\",\n        DisplayName = \"my_flink_sumscalar_artifact\",\n        ContentFormat = \"JAR\",\n        ArtifactFile = \"path/to/your/artifact.jar\",\n        Environment = new ConfluentCloud.Inputs.FlinkArtifactEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewFlinkArtifact(ctx, \"main\", \u0026confluentcloud.FlinkArtifactArgs{\n\t\t\tCloud:         pulumi.String(\"AWS\"),\n\t\t\tRegion:        pulumi.String(\"us-west-2\"),\n\t\t\tDisplayName:   pulumi.String(\"my_flink_sumscalar_artifact\"),\n\t\t\tContentFormat: pulumi.String(\"JAR\"),\n\t\t\tArtifactFile:  pulumi.String(\"path/to/your/artifact.jar\"),\n\t\t\tEnvironment: \u0026confluentcloud.FlinkArtifactEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.FlinkArtifact;\nimport com.pulumi.confluentcloud.FlinkArtifactArgs;\nimport com.pulumi.confluentcloud.inputs.FlinkArtifactEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var main = new FlinkArtifact(\"main\", FlinkArtifactArgs.builder()\n            .cloud(\"AWS\")\n            .region(\"us-west-2\")\n            .displayName(\"my_flink_sumscalar_artifact\")\n            .contentFormat(\"JAR\")\n            .artifactFile(\"path/to/your/artifact.jar\")\n            .environment(FlinkArtifactEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  main:\n    type: confluentcloud:FlinkArtifact\n    properties:\n      cloud: AWS\n      region: us-west-2\n      displayName: my_flink_sumscalar_artifact\n      contentFormat: JAR\n      artifactFile: path/to/your/artifact.jar\n      environment:\n        id: ${development.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** Set \u003cspan pulumi-lang-nodejs=\"`artifactFile \" pulumi-lang-dotnet=\"`ArtifactFile \" pulumi-lang-go=\"`artifactFile \" pulumi-lang-python=\"`artifact_file \" pulumi-lang-yaml=\"`artifactFile \" pulumi-lang-java=\"`artifactFile \"\u003e`artifact_file \u003c/span\u003e= \"\"` or use `IMPORT_ARTIFACT_FILENAME` environment variables before importing a Flink Artifact.\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Flink Artifact.\n\nYou can import a Flink Artifact by using cloud, region, Flink Artifact ID and artifact file, in the format `\u003cEnvironment ID\u003e/\u003cregion\u003e/\u003ccloud\u003e/\u003cFlink Artifact ID\u003e`. The following example shows how to import a Flink Artifact:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/flinkArtifact:FlinkArtifact main env-abc123/us-east-1/aws/fa-123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"apiVersion":{"type":"string","description":"(Required String) The API Version of the schema version of the Flink Artifact Pool, for example, `fa/v2`.\n"},"artifactFile":{"type":"string","description":"The artifact file for Flink Artifact. Can be a relative or absolute path. Must have a `.jar` or `.zip` extension. This can be relative or absolute path\n"},"class":{"type":"string","description":"Java class or alias for the Flink Artifact as provided by developer.\n","deprecationMessage":"The \"class\" attribute has been deprecated and will be removed in the next major version of the provider (3.0.0). Refer to the Upgrade Guide at https://registry.terraform.io/providers/confluentinc/confluent/latest/docs/guides/version-3-upgrade for more details. The guide will be published once version 3.0.0 is released."},"cloud":{"type":"string","description":"The cloud service provider that runs the Flink Artifact. Accepted values are: `AWS`, `AZURE`.\n"},"contentFormat":{"type":"string","description":"Archive format of the Flink Artifact. Accepted values are: `JAR`, `ZIP`. Should match the file extension of your artifact file.\n"},"description":{"type":"string","description":"(Optional String) Description of the Flink Artifact.\n"},"displayName":{"type":"string","description":"The unique name of the Flink Artifact per cloud, region, environment scope.\n"},"documentationLink":{"type":"string","description":"(Optional String) Documentation link of the Flink Artifact.\n"},"environment":{"$ref":"#/types/confluentcloud:index/FlinkArtifactEnvironment:FlinkArtifactEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"kind":{"type":"string","description":"(Required String) The kind of the Flink Artifact Pool, for example, `FlinkArtifact`.\n"},"region":{"type":"string","description":"The cloud service provider region that hosts the Flink Artifact.\n"},"runtimeLanguage":{"type":"string","description":"(Optional String) Runtime language of the Flink Artifact as `Python` or `Java`. Defaults to `Java`.\n"},"versions":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/FlinkArtifactVersion:FlinkArtifactVersion"},"description":"List of versions for this Flink Artifact."}},"required":["apiVersion","cloud","contentFormat","displayName","environment","kind","region","versions"],"inputProperties":{"artifactFile":{"type":"string","description":"The artifact file for Flink Artifact. Can be a relative or absolute path. Must have a `.jar` or `.zip` extension. This can be relative or absolute path\n","willReplaceOnChanges":true},"class":{"type":"string","description":"Java class or alias for the Flink Artifact as provided by developer.\n","deprecationMessage":"The \"class\" attribute has been deprecated and will be removed in the next major version of the provider (3.0.0). Refer to the Upgrade Guide at https://registry.terraform.io/providers/confluentinc/confluent/latest/docs/guides/version-3-upgrade for more details. The guide will be published once version 3.0.0 is released.","willReplaceOnChanges":true},"cloud":{"type":"string","description":"The cloud service provider that runs the Flink Artifact. Accepted values are: `AWS`, `AZURE`.\n","willReplaceOnChanges":true},"contentFormat":{"type":"string","description":"Archive format of the Flink Artifact. Accepted values are: `JAR`, `ZIP`. Should match the file extension of your artifact file.\n"},"description":{"type":"string","description":"(Optional String) Description of the Flink Artifact.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The unique name of the Flink Artifact per cloud, region, environment scope.\n","willReplaceOnChanges":true},"documentationLink":{"type":"string","description":"(Optional String) Documentation link of the Flink Artifact.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/FlinkArtifactEnvironment:FlinkArtifactEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"region":{"type":"string","description":"The cloud service provider region that hosts the Flink Artifact.\n","willReplaceOnChanges":true},"runtimeLanguage":{"type":"string","description":"(Optional String) Runtime language of the Flink Artifact as `Python` or `Java`. Defaults to `Java`.\n","willReplaceOnChanges":true}},"requiredInputs":["cloud","displayName","environment","region"],"stateInputs":{"description":"Input properties used for looking up and filtering FlinkArtifact resources.\n","properties":{"apiVersion":{"type":"string","description":"(Required String) The API Version of the schema version of the Flink Artifact Pool, for example, `fa/v2`.\n"},"artifactFile":{"type":"string","description":"The artifact file for Flink Artifact. Can be a relative or absolute path. Must have a `.jar` or `.zip` extension. This can be relative or absolute path\n","willReplaceOnChanges":true},"class":{"type":"string","description":"Java class or alias for the Flink Artifact as provided by developer.\n","deprecationMessage":"The \"class\" attribute has been deprecated and will be removed in the next major version of the provider (3.0.0). Refer to the Upgrade Guide at https://registry.terraform.io/providers/confluentinc/confluent/latest/docs/guides/version-3-upgrade for more details. The guide will be published once version 3.0.0 is released.","willReplaceOnChanges":true},"cloud":{"type":"string","description":"The cloud service provider that runs the Flink Artifact. Accepted values are: `AWS`, `AZURE`.\n","willReplaceOnChanges":true},"contentFormat":{"type":"string","description":"Archive format of the Flink Artifact. Accepted values are: `JAR`, `ZIP`. Should match the file extension of your artifact file.\n"},"description":{"type":"string","description":"(Optional String) Description of the Flink Artifact.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The unique name of the Flink Artifact per cloud, region, environment scope.\n","willReplaceOnChanges":true},"documentationLink":{"type":"string","description":"(Optional String) Documentation link of the Flink Artifact.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/FlinkArtifactEnvironment:FlinkArtifactEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"kind":{"type":"string","description":"(Required String) The kind of the Flink Artifact Pool, for example, `FlinkArtifact`.\n"},"region":{"type":"string","description":"The cloud service provider region that hosts the Flink Artifact.\n","willReplaceOnChanges":true},"runtimeLanguage":{"type":"string","description":"(Optional String) Runtime language of the Flink Artifact as `Python` or `Java`. Defaults to `Java`.\n","willReplaceOnChanges":true},"versions":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/FlinkArtifactVersion:FlinkArtifactVersion"},"description":"List of versions for this Flink Artifact."}},"type":"object"}},"confluentcloud:index/flinkComputePool:FlinkComputePool":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.FlinkComputePool`\" pulumi-lang-dotnet=\"`confluentcloud.FlinkComputePool`\" pulumi-lang-go=\"`FlinkComputePool`\" pulumi-lang-python=\"`FlinkComputePool`\" pulumi-lang-yaml=\"`confluentcloud.FlinkComputePool`\" pulumi-lang-java=\"`confluentcloud.FlinkComputePool`\"\u003e`confluentcloud.FlinkComputePool`\u003c/span\u003e provides a Flink Compute Pool resource that enables creating, editing, and deleting Flink Compute Pool on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Flink Compute Pool deletion. This setting rejects plans that would destroy or recreate the Flink Compute Pool, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst main = new confluentcloud.FlinkComputePool(\"main\", {\n    displayName: \"standard_compute_pool\",\n    cloud: \"AWS\",\n    region: \"us-east-1\",\n    maxCfu: 5,\n    environment: {\n        id: development.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\nmain = confluentcloud.FlinkComputePool(\"main\",\n    display_name=\"standard_compute_pool\",\n    cloud=\"AWS\",\n    region=\"us-east-1\",\n    max_cfu=5,\n    environment={\n        \"id\": development.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var main = new ConfluentCloud.FlinkComputePool(\"main\", new()\n    {\n        DisplayName = \"standard_compute_pool\",\n        Cloud = \"AWS\",\n        Region = \"us-east-1\",\n        MaxCfu = 5,\n        Environment = new ConfluentCloud.Inputs.FlinkComputePoolEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewFlinkComputePool(ctx, \"main\", \u0026confluentcloud.FlinkComputePoolArgs{\n\t\t\tDisplayName: pulumi.String(\"standard_compute_pool\"),\n\t\t\tCloud:       pulumi.String(\"AWS\"),\n\t\t\tRegion:      pulumi.String(\"us-east-1\"),\n\t\t\tMaxCfu:      pulumi.Int(5),\n\t\t\tEnvironment: \u0026confluentcloud.FlinkComputePoolEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.FlinkComputePool;\nimport com.pulumi.confluentcloud.FlinkComputePoolArgs;\nimport com.pulumi.confluentcloud.inputs.FlinkComputePoolEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var main = new FlinkComputePool(\"main\", FlinkComputePoolArgs.builder()\n            .displayName(\"standard_compute_pool\")\n            .cloud(\"AWS\")\n            .region(\"us-east-1\")\n            .maxCfu(5)\n            .environment(FlinkComputePoolEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  main:\n    type: confluentcloud:FlinkComputePool\n    properties:\n      displayName: standard_compute_pool\n      cloud: AWS\n      region: us-east-1\n      maxCfu: 5\n      environment:\n        id: ${development.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Flink Compute Pool.\n\nYou can import a Flink Compute Pool by using Environment ID and Flink Compute Pool ID, in the format `\u003cEnvironment ID\u003e/\u003cFlink Compute Pool ID\u003e`. The following example shows how to import a Flink Compute Pool:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/flinkComputePool:FlinkComputePool main env-abc123/lfcp-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"apiVersion":{"type":"string","description":"(Required String) The API Version of the schema version of the Flink Compute Pool, for example, `fcpm/v2`.\n"},"cloud":{"type":"string","description":"The cloud service provider that runs the Flink Compute Pool.\n"},"displayName":{"type":"string","description":"The name of the Flink Compute Pool.\n"},"environment":{"$ref":"#/types/confluentcloud:index/FlinkComputePoolEnvironment:FlinkComputePoolEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"kind":{"type":"string","description":"(Required String) The kind of the Flink Compute Pool, for example, `ComputePool`.\n"},"maxCfu":{"type":"integer","description":"Maximum number of Confluent Flink Units (CFUs) that the Flink compute pool should auto-scale to. The accepted values are: \u003cspan pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\"\u003e`5`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`20`\" pulumi-lang-dotnet=\"`20`\" pulumi-lang-go=\"`20`\" pulumi-lang-python=\"`20`\" pulumi-lang-yaml=\"`20`\" pulumi-lang-java=\"`20`\"\u003e`20`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`30`\" pulumi-lang-dotnet=\"`30`\" pulumi-lang-go=\"`30`\" pulumi-lang-python=\"`30`\" pulumi-lang-yaml=\"`30`\" pulumi-lang-java=\"`30`\"\u003e`30`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`40`\" pulumi-lang-dotnet=\"`40`\" pulumi-lang-go=\"`40`\" pulumi-lang-python=\"`40`\" pulumi-lang-yaml=\"`40`\" pulumi-lang-java=\"`40`\"\u003e`40`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`50`\" pulumi-lang-dotnet=\"`50`\" pulumi-lang-go=\"`50`\" pulumi-lang-python=\"`50`\" pulumi-lang-yaml=\"`50`\" pulumi-lang-java=\"`50`\"\u003e`50`\u003c/span\u003e.\n"},"region":{"type":"string","description":"The cloud service provider region that hosts the Flink Compute Pool.\n"},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Flink Compute Pool.\n"}},"required":["apiVersion","cloud","displayName","environment","kind","maxCfu","region","resourceName"],"inputProperties":{"cloud":{"type":"string","description":"The cloud service provider that runs the Flink Compute Pool.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Flink Compute Pool.\n"},"environment":{"$ref":"#/types/confluentcloud:index/FlinkComputePoolEnvironment:FlinkComputePoolEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"maxCfu":{"type":"integer","description":"Maximum number of Confluent Flink Units (CFUs) that the Flink compute pool should auto-scale to. The accepted values are: \u003cspan pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\"\u003e`5`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`20`\" pulumi-lang-dotnet=\"`20`\" pulumi-lang-go=\"`20`\" pulumi-lang-python=\"`20`\" pulumi-lang-yaml=\"`20`\" pulumi-lang-java=\"`20`\"\u003e`20`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`30`\" pulumi-lang-dotnet=\"`30`\" pulumi-lang-go=\"`30`\" pulumi-lang-python=\"`30`\" pulumi-lang-yaml=\"`30`\" pulumi-lang-java=\"`30`\"\u003e`30`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`40`\" pulumi-lang-dotnet=\"`40`\" pulumi-lang-go=\"`40`\" pulumi-lang-python=\"`40`\" pulumi-lang-yaml=\"`40`\" pulumi-lang-java=\"`40`\"\u003e`40`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`50`\" pulumi-lang-dotnet=\"`50`\" pulumi-lang-go=\"`50`\" pulumi-lang-python=\"`50`\" pulumi-lang-yaml=\"`50`\" pulumi-lang-java=\"`50`\"\u003e`50`\u003c/span\u003e.\n"},"region":{"type":"string","description":"The cloud service provider region that hosts the Flink Compute Pool.\n","willReplaceOnChanges":true}},"requiredInputs":["cloud","displayName","environment","region"],"stateInputs":{"description":"Input properties used for looking up and filtering FlinkComputePool resources.\n","properties":{"apiVersion":{"type":"string","description":"(Required String) The API Version of the schema version of the Flink Compute Pool, for example, `fcpm/v2`.\n"},"cloud":{"type":"string","description":"The cloud service provider that runs the Flink Compute Pool.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Flink Compute Pool.\n"},"environment":{"$ref":"#/types/confluentcloud:index/FlinkComputePoolEnvironment:FlinkComputePoolEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"kind":{"type":"string","description":"(Required String) The kind of the Flink Compute Pool, for example, `ComputePool`.\n"},"maxCfu":{"type":"integer","description":"Maximum number of Confluent Flink Units (CFUs) that the Flink compute pool should auto-scale to. The accepted values are: \u003cspan pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\"\u003e`5`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`20`\" pulumi-lang-dotnet=\"`20`\" pulumi-lang-go=\"`20`\" pulumi-lang-python=\"`20`\" pulumi-lang-yaml=\"`20`\" pulumi-lang-java=\"`20`\"\u003e`20`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`30`\" pulumi-lang-dotnet=\"`30`\" pulumi-lang-go=\"`30`\" pulumi-lang-python=\"`30`\" pulumi-lang-yaml=\"`30`\" pulumi-lang-java=\"`30`\"\u003e`30`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`40`\" pulumi-lang-dotnet=\"`40`\" pulumi-lang-go=\"`40`\" pulumi-lang-python=\"`40`\" pulumi-lang-yaml=\"`40`\" pulumi-lang-java=\"`40`\"\u003e`40`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`50`\" pulumi-lang-dotnet=\"`50`\" pulumi-lang-go=\"`50`\" pulumi-lang-python=\"`50`\" pulumi-lang-yaml=\"`50`\" pulumi-lang-java=\"`50`\"\u003e`50`\u003c/span\u003e.\n"},"region":{"type":"string","description":"The cloud service provider region that hosts the Flink Compute Pool.\n","willReplaceOnChanges":true},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Flink Compute Pool.\n"}},"type":"object"}},"confluentcloud:index/flinkConnection:FlinkConnection":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.FlinkConnection`\" pulumi-lang-dotnet=\"`confluentcloud.FlinkConnection`\" pulumi-lang-go=\"`FlinkConnection`\" pulumi-lang-python=\"`FlinkConnection`\" pulumi-lang-yaml=\"`confluentcloud.FlinkConnection`\" pulumi-lang-java=\"`confluentcloud.FlinkConnection`\"\u003e`confluentcloud.FlinkConnection`\u003c/span\u003e provides a Flink Connection resource that enables creating, editing, and deleting Flink Connection on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Flink Connection deletion. This setting rejects plans that would destroy or recreate the Flink Connection, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Option #1: Manage multiple Flink Compute Pools in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst connection1 = new confluentcloud.FlinkConnection(\"connection1\", {\n    organization: {\n        id: main.id,\n    },\n    environment: {\n        id: staging.id,\n    },\n    computePool: {\n        id: example.id,\n    },\n    principal: {\n        id: app_manager_flink.id,\n    },\n    restEndpoint: mainConfluentFlinkRegion.restEndpoint,\n    credentials: {\n        key: env_admin_flink_api_key.id,\n        secret: env_admin_flink_api_key.secret,\n    },\n    displayName: \"connection1\",\n    type: \"OPENAI\",\n    endpoint: \"https://api.openai.com/v1/chat/completions\",\n    apiKey: \"API_Key_value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nconnection1 = confluentcloud.FlinkConnection(\"connection1\",\n    organization={\n        \"id\": main[\"id\"],\n    },\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    compute_pool={\n        \"id\": example[\"id\"],\n    },\n    principal={\n        \"id\": app_manager_flink[\"id\"],\n    },\n    rest_endpoint=main_confluent_flink_region[\"restEndpoint\"],\n    credentials={\n        \"key\": env_admin_flink_api_key[\"id\"],\n        \"secret\": env_admin_flink_api_key[\"secret\"],\n    },\n    display_name=\"connection1\",\n    type=\"OPENAI\",\n    endpoint=\"https://api.openai.com/v1/chat/completions\",\n    api_key=\"API_Key_value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var connection1 = new ConfluentCloud.FlinkConnection(\"connection1\", new()\n    {\n        Organization = new ConfluentCloud.Inputs.FlinkConnectionOrganizationArgs\n        {\n            Id = main.Id,\n        },\n        Environment = new ConfluentCloud.Inputs.FlinkConnectionEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        ComputePool = new ConfluentCloud.Inputs.FlinkConnectionComputePoolArgs\n        {\n            Id = example.Id,\n        },\n        Principal = new ConfluentCloud.Inputs.FlinkConnectionPrincipalArgs\n        {\n            Id = app_manager_flink.Id,\n        },\n        RestEndpoint = mainConfluentFlinkRegion.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.FlinkConnectionCredentialsArgs\n        {\n            Key = env_admin_flink_api_key.Id,\n            Secret = env_admin_flink_api_key.Secret,\n        },\n        DisplayName = \"connection1\",\n        Type = \"OPENAI\",\n        Endpoint = \"https://api.openai.com/v1/chat/completions\",\n        ApiKey = \"API_Key_value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewFlinkConnection(ctx, \"connection1\", \u0026confluentcloud.FlinkConnectionArgs{\n\t\t\tOrganization: \u0026confluentcloud.FlinkConnectionOrganizationArgs{\n\t\t\t\tId: pulumi.Any(main.Id),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.FlinkConnectionEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tComputePool: \u0026confluentcloud.FlinkConnectionComputePoolArgs{\n\t\t\t\tId: pulumi.Any(example.Id),\n\t\t\t},\n\t\t\tPrincipal: \u0026confluentcloud.FlinkConnectionPrincipalArgs{\n\t\t\t\tId: pulumi.Any(app_manager_flink.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(mainConfluentFlinkRegion.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.FlinkConnectionCredentialsArgs{\n\t\t\t\tKey:    pulumi.Any(env_admin_flink_api_key.Id),\n\t\t\t\tSecret: pulumi.Any(env_admin_flink_api_key.Secret),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"connection1\"),\n\t\t\tType:        pulumi.String(\"OPENAI\"),\n\t\t\tEndpoint:    pulumi.String(\"https://api.openai.com/v1/chat/completions\"),\n\t\t\tApiKey:      pulumi.String(\"API_Key_value\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.FlinkConnection;\nimport com.pulumi.confluentcloud.FlinkConnectionArgs;\nimport com.pulumi.confluentcloud.inputs.FlinkConnectionOrganizationArgs;\nimport com.pulumi.confluentcloud.inputs.FlinkConnectionEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.FlinkConnectionComputePoolArgs;\nimport com.pulumi.confluentcloud.inputs.FlinkConnectionPrincipalArgs;\nimport com.pulumi.confluentcloud.inputs.FlinkConnectionCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var connection1 = new FlinkConnection(\"connection1\", FlinkConnectionArgs.builder()\n            .organization(FlinkConnectionOrganizationArgs.builder()\n                .id(main.id())\n                .build())\n            .environment(FlinkConnectionEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .computePool(FlinkConnectionComputePoolArgs.builder()\n                .id(example.id())\n                .build())\n            .principal(FlinkConnectionPrincipalArgs.builder()\n                .id(app_manager_flink.id())\n                .build())\n            .restEndpoint(mainConfluentFlinkRegion.restEndpoint())\n            .credentials(FlinkConnectionCredentialsArgs.builder()\n                .key(env_admin_flink_api_key.id())\n                .secret(env_admin_flink_api_key.secret())\n                .build())\n            .displayName(\"connection1\")\n            .type(\"OPENAI\")\n            .endpoint(\"https://api.openai.com/v1/chat/completions\")\n            .apiKey(\"API_Key_value\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  connection1:\n    type: confluentcloud:FlinkConnection\n    properties:\n      organization:\n        id: ${main.id}\n      environment:\n        id: ${staging.id}\n      computePool:\n        id: ${example.id}\n      principal:\n        id: ${[\"app-manager-flink\"].id}\n      restEndpoint: ${mainConfluentFlinkRegion.restEndpoint}\n      credentials:\n        key: ${[\"env-admin-flink-api-key\"].id}\n        secret: ${[\"env-admin-flink-api-key\"].secret}\n      displayName: connection1\n      type: OPENAI\n      endpoint: https://api.openai.com/v1/chat/completions\n      apiKey: API_Key_value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Flink Compute Pool in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.FlinkConnection(\"example\", {\n    displayName: \"connection1\",\n    type: \"OPENAI\",\n    endpoint: \"https://api.openai.com/v1/chat/completions\",\n    apiKey: \"API_Key_value\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.FlinkConnection(\"example\",\n    display_name=\"connection1\",\n    type=\"OPENAI\",\n    endpoint=\"https://api.openai.com/v1/chat/completions\",\n    api_key=\"API_Key_value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.FlinkConnection(\"example\", new()\n    {\n        DisplayName = \"connection1\",\n        Type = \"OPENAI\",\n        Endpoint = \"https://api.openai.com/v1/chat/completions\",\n        ApiKey = \"API_Key_value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewFlinkConnection(ctx, \"example\", \u0026confluentcloud.FlinkConnectionArgs{\n\t\t\tDisplayName: pulumi.String(\"connection1\"),\n\t\t\tType:        pulumi.String(\"OPENAI\"),\n\t\t\tEndpoint:    pulumi.String(\"https://api.openai.com/v1/chat/completions\"),\n\t\t\tApiKey:      pulumi.String(\"API_Key_value\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.FlinkConnection;\nimport com.pulumi.confluentcloud.FlinkConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new FlinkConnection(\"example\", FlinkConnectionArgs.builder()\n            .displayName(\"connection1\")\n            .type(\"OPENAI\")\n            .endpoint(\"https://api.openai.com/v1/chat/completions\")\n            .apiKey(\"API_Key_value\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:FlinkConnection\n    properties:\n      displayName: connection1\n      type: OPENAI\n      endpoint: https://api.openai.com/v1/chat/completions\n      apiKey: API_Key_value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe following arguments are supported:\n\n- \u003cspan pulumi-lang-nodejs=\"`organization`\" pulumi-lang-dotnet=\"`Organization`\" pulumi-lang-go=\"`organization`\" pulumi-lang-python=\"`organization`\" pulumi-lang-yaml=\"`organization`\" pulumi-lang-java=\"`organization`\"\u003e`organization`\u003c/span\u003e (Optional Configuration Block) supports the following:\n    - \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e - (Required String) The ID of the Organization, for example, `1111aaaa-11aa-11aa-11aa-111111aaaaaa`.\n- \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e (Optional Configuration Block) supports the following:\n    - \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e - (Required String) The ID of the Environment, for example, `env-abc123`.\n- \u003cspan pulumi-lang-nodejs=\"`computePool`\" pulumi-lang-dotnet=\"`ComputePool`\" pulumi-lang-go=\"`computePool`\" pulumi-lang-python=\"`compute_pool`\" pulumi-lang-yaml=\"`computePool`\" pulumi-lang-java=\"`computePool`\"\u003e`compute_pool`\u003c/span\u003e - (Optional Configuration Block) supports the following:\n    - \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e - (Required String) The ID of the Flink Compute Pool, for example, `lfcp-abc123`.\n- \u003cspan pulumi-lang-nodejs=\"`principal`\" pulumi-lang-dotnet=\"`Principal`\" pulumi-lang-go=\"`principal`\" pulumi-lang-python=\"`principal`\" pulumi-lang-yaml=\"`principal`\" pulumi-lang-java=\"`principal`\"\u003e`principal`\u003c/span\u003e - (Optional Configuration Block) supports the following:\n    - \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e - (Required String) The ID of the Principal the Flink Connection runs as, for example, `sa-abc123`.\n- \u003cspan pulumi-lang-nodejs=\"`restEndpoint`\" pulumi-lang-dotnet=\"`RestEndpoint`\" pulumi-lang-go=\"`restEndpoint`\" pulumi-lang-python=\"`rest_endpoint`\" pulumi-lang-yaml=\"`restEndpoint`\" pulumi-lang-java=\"`restEndpoint`\"\u003e`rest_endpoint`\u003c/span\u003e - (Optional String) The REST endpoint of the Flink region, for example, `https://flink.us-east-1.aws.confluent.cloud`.\n- \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e (Optional Configuration Block) supports the following:\n    - \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e - (Required String) The Flink API Key.\n    - \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e - (Required String, Sensitive) The Flink API Secret.\n\n\u003e **Note:** A Flink API key consists of a key and a secret. Flink API keys are required to interact with Flink Connections in Confluent Cloud. Each Flink API key is valid for one specific Flink Region.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Flink API key, create a new Flink API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Flink API key, run `pulumi up -target=\"confluent_flink_connection.example\"`, and remove the old Flink API key. Alternatively, in case the old Flink API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_flink_connection.example\" -out=rotate-flink-api-key` and `pulumi up rotate-flink-api-key` instead.\n\n- \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e - (Required String) The name of the Flink Connection.\n- \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e - (Required String) The type of the Flink Connection. The accepted values are: `OPENAI`, `AZUREML`, `AZUREOPENAI`, `BEDROCK`, `SAGEMAKER`, `GOOGLEAI`, `VERTEXAI`, `MONGODB`, `PINECONE`, `ELASTIC` and `COUCHBASE`.\n- \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e - (Required String) The endpoint of the Flink Connection, for example, `https://api.openai.com/v1/chat/completions`\n- \u003cspan pulumi-lang-nodejs=\"`apiKey`\" pulumi-lang-dotnet=\"`ApiKey`\" pulumi-lang-go=\"`apiKey`\" pulumi-lang-python=\"`api_key`\" pulumi-lang-yaml=\"`apiKey`\" pulumi-lang-java=\"`apiKey`\"\u003e`api_key`\u003c/span\u003e - (Optional String) The api key for the connection type. This is valid and required for types `OPENAI`, `AZUREML`, `AZUREOPENAI`, `GOOGLEAI`, `ELASTIC` and `PINECONE`.\n- \u003cspan pulumi-lang-nodejs=\"`awsAccessKey`\" pulumi-lang-dotnet=\"`AwsAccessKey`\" pulumi-lang-go=\"`awsAccessKey`\" pulumi-lang-python=\"`aws_access_key`\" pulumi-lang-yaml=\"`awsAccessKey`\" pulumi-lang-java=\"`awsAccessKey`\"\u003e`aws_access_key`\u003c/span\u003e - (Optional String) The AWS access key for the connection type. This is valid and required for types `BEDROCK` and `SAGEMAKER`.\n- \u003cspan pulumi-lang-nodejs=\"`awsSecretKey`\" pulumi-lang-dotnet=\"`AwsSecretKey`\" pulumi-lang-go=\"`awsSecretKey`\" pulumi-lang-python=\"`aws_secret_key`\" pulumi-lang-yaml=\"`awsSecretKey`\" pulumi-lang-java=\"`awsSecretKey`\"\u003e`aws_secret_key`\u003c/span\u003e - (Optional String) The AWS secret key for the connection type. This is valid and required for types `BEDROCK` and `SAGEMAKER`.\n- \u003cspan pulumi-lang-nodejs=\"`awsSessionToken`\" pulumi-lang-dotnet=\"`AwsSessionToken`\" pulumi-lang-go=\"`awsSessionToken`\" pulumi-lang-python=\"`aws_session_token`\" pulumi-lang-yaml=\"`awsSessionToken`\" pulumi-lang-java=\"`awsSessionToken`\"\u003e`aws_session_token`\u003c/span\u003e - (Optional String) The AWS session key for the connection type. This is valid and required for types `BEDROCK` and `SAGEMAKER`.\n- \u003cspan pulumi-lang-nodejs=\"`serviceKey`\" pulumi-lang-dotnet=\"`ServiceKey`\" pulumi-lang-go=\"`serviceKey`\" pulumi-lang-python=\"`service_key`\" pulumi-lang-yaml=\"`serviceKey`\" pulumi-lang-java=\"`serviceKey`\"\u003e`service_key`\u003c/span\u003e - (Optional String) The service key for the connection type. This is valid and required for type `VERTEXAI`.\n- \u003cspan pulumi-lang-nodejs=\"`username`\" pulumi-lang-dotnet=\"`Username`\" pulumi-lang-go=\"`username`\" pulumi-lang-python=\"`username`\" pulumi-lang-yaml=\"`username`\" pulumi-lang-java=\"`username`\"\u003e`username`\u003c/span\u003e - (Optional String) The username for the connection type. This is valid and required for types `MONGODB` and `COUCHBASE`.\n- \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e - (Optional String) The password  for the connection type. This is valid and required for types `MONGODB` and `COUCHBASE`.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.FlinkConnection`\" pulumi-lang-dotnet=\"`confluentcloud.FlinkConnection`\" pulumi-lang-go=\"`FlinkConnection`\" pulumi-lang-python=\"`FlinkConnection`\" pulumi-lang-yaml=\"`confluentcloud.FlinkConnection`\" pulumi-lang-java=\"`confluentcloud.FlinkConnection`\"\u003e`confluentcloud.FlinkConnection`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n\n# Attributes Reference\n\nIn addition to the preceding arguments, the following attributes are exported:\n\n- \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e - (Required String) The ID of the Flink connection, in the format `\u003cOrganization ID\u003e/\u003cEnvironment ID\u003e/\u003cFlink Connection name\u003e`, for example, `org-xyz123/env-abc123/connection1`.\n- \u003cspan pulumi-lang-nodejs=\"`apiVersion`\" pulumi-lang-dotnet=\"`ApiVersion`\" pulumi-lang-go=\"`apiVersion`\" pulumi-lang-python=\"`api_version`\" pulumi-lang-yaml=\"`apiVersion`\" pulumi-lang-java=\"`apiVersion`\"\u003e`api_version`\u003c/span\u003e - (Required String) The API Version of the schema version of the Flink Connection, for example, `sql/v1`.\n- \u003cspan pulumi-lang-nodejs=\"`kind`\" pulumi-lang-dotnet=\"`Kind`\" pulumi-lang-go=\"`kind`\" pulumi-lang-python=\"`kind`\" pulumi-lang-yaml=\"`kind`\" pulumi-lang-java=\"`kind`\"\u003e`kind`\u003c/span\u003e - (Required String) The kind of the Flink Connection, for example, `Connection`.\n\n## Import\n\nYou can import a Flink connection by using the Flink Connection name, for example:\n\nOption #1: Manage multiple Flink Compute Pools in the same Pulumi Stack\n\n```sh\n$ export IMPORT_CONFLUENT_ORGANIZATION_ID=\"\u003corganization_id\u003e\"\n$ export IMPORT_CONFLUENT_ENVIRONMENT_ID=\"\u003cenvironment_id\u003e\"\n$ export IMPORT_FLINK_COMPUTE_POOL_ID=\"\u003cflink_compute_pool_id\u003e\"\n$ export IMPORT_FLINK_API_KEY=\"\u003cflink_api_key\u003e\"\n$ export IMPORT_FLINK_API_SECRET=\"\u003cflink_api_secret\u003e\"\n$ export IMPORT_FLINK_REST_ENDPOINT=\"\u003cflink_rest_endpoint\u003e\"\n$ export IMPORT_FLINK_PRINCIPAL_ID=\"\u003cflink_principal\u003e\"\n$ export API_KEY=\"\u003cAPI_KEY\u003e\"\n$ pulumi import confluentcloud:index/flinkConnection:FlinkConnection example org-xyz123/env-abc123/connection1\n```\n\nOption #2: Manage a single Flink Compute Pool in the same Pulumi Stack\n\n```sh\n$ export API_KEY=\"\u003cAPI_KEY\u003e\"\n$ pulumi import confluentcloud:index/flinkConnection:FlinkConnection example org-xyz123/env-abc123/connection1\n```\n\n\u003e **Note:** The example above is for `type = OPENAI`, so we exported `API_KEY`. Export the required field for each type as mentioned above. The fields that can be exported are: `API_KEY`, `AWS_SECRET_ACCESS_KEY_CONNECTION`, `AWS_ACCESS_KEY_ID_CONNECTION`, `AWS_SESSION_TOKEN_CONNECTION`, `SERVICE_KEY`, `USERNAME`, `PASSWORD`. \n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"apiKey":{"type":"string","description":"API key for the type."},"apiVersion":{"type":"string","description":"The schema version of this representation of a resource."},"awsAccessKey":{"type":"string","description":"Access key for the type."},"awsSecretKey":{"type":"string","description":"Secret key for the type."},"awsSessionToken":{"type":"string","description":"Session token for the type."},"computePool":{"$ref":"#/types/confluentcloud:index/FlinkConnectionComputePool:FlinkConnectionComputePool"},"credentials":{"$ref":"#/types/confluentcloud:index/FlinkConnectionCredentials:FlinkConnectionCredentials","description":"The Cluster API Credentials.","secret":true},"displayName":{"type":"string","description":"The unique name of the Flink Connection per organization, environment scope."},"endpoint":{"type":"string","description":"The endpoint of the flink connection."},"environment":{"$ref":"#/types/confluentcloud:index/FlinkConnectionEnvironment:FlinkConnectionEnvironment"},"kind":{"type":"string","description":"The object this REST resource represents."},"organization":{"$ref":"#/types/confluentcloud:index/FlinkConnectionOrganization:FlinkConnectionOrganization"},"password":{"type":"string","description":"Password for the type."},"principal":{"$ref":"#/types/confluentcloud:index/FlinkConnectionPrincipal:FlinkConnectionPrincipal"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Flink Connection cluster, for example, `https://flink.us-east-1.aws.confluent.cloud/sql/v1/organizations/1111aaaa-11aa-11aa-11aa-111111aaaaaa/environments/env-abc123`)."},"serviceKey":{"type":"string","description":"Service Key for the type."},"type":{"type":"string","description":"The type of the flink connection."},"username":{"type":"string","description":"Username for the type."}},"required":["apiVersion","computePool","displayName","endpoint","environment","kind","organization","principal","type"],"inputProperties":{"apiKey":{"type":"string","description":"API key for the type."},"awsAccessKey":{"type":"string","description":"Access key for the type."},"awsSecretKey":{"type":"string","description":"Secret key for the type."},"awsSessionToken":{"type":"string","description":"Session token for the type."},"computePool":{"$ref":"#/types/confluentcloud:index/FlinkConnectionComputePool:FlinkConnectionComputePool"},"credentials":{"$ref":"#/types/confluentcloud:index/FlinkConnectionCredentials:FlinkConnectionCredentials","description":"The Cluster API Credentials.","secret":true},"displayName":{"type":"string","description":"The unique name of the Flink Connection per organization, environment scope."},"endpoint":{"type":"string","description":"The endpoint of the flink connection."},"environment":{"$ref":"#/types/confluentcloud:index/FlinkConnectionEnvironment:FlinkConnectionEnvironment"},"organization":{"$ref":"#/types/confluentcloud:index/FlinkConnectionOrganization:FlinkConnectionOrganization"},"password":{"type":"string","description":"Password for the type."},"principal":{"$ref":"#/types/confluentcloud:index/FlinkConnectionPrincipal:FlinkConnectionPrincipal"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Flink Connection cluster, for example, `https://flink.us-east-1.aws.confluent.cloud/sql/v1/organizations/1111aaaa-11aa-11aa-11aa-111111aaaaaa/environments/env-abc123`).","willReplaceOnChanges":true},"serviceKey":{"type":"string","description":"Service Key for the type."},"type":{"type":"string","description":"The type of the flink connection."},"username":{"type":"string","description":"Username for the type."}},"requiredInputs":["displayName","endpoint","type"],"stateInputs":{"description":"Input properties used for looking up and filtering FlinkConnection resources.\n","properties":{"apiKey":{"type":"string","description":"API key for the type."},"apiVersion":{"type":"string","description":"The schema version of this representation of a resource."},"awsAccessKey":{"type":"string","description":"Access key for the type."},"awsSecretKey":{"type":"string","description":"Secret key for the type."},"awsSessionToken":{"type":"string","description":"Session token for the type."},"computePool":{"$ref":"#/types/confluentcloud:index/FlinkConnectionComputePool:FlinkConnectionComputePool"},"credentials":{"$ref":"#/types/confluentcloud:index/FlinkConnectionCredentials:FlinkConnectionCredentials","description":"The Cluster API Credentials.","secret":true},"displayName":{"type":"string","description":"The unique name of the Flink Connection per organization, environment scope."},"endpoint":{"type":"string","description":"The endpoint of the flink connection."},"environment":{"$ref":"#/types/confluentcloud:index/FlinkConnectionEnvironment:FlinkConnectionEnvironment"},"kind":{"type":"string","description":"The object this REST resource represents."},"organization":{"$ref":"#/types/confluentcloud:index/FlinkConnectionOrganization:FlinkConnectionOrganization"},"password":{"type":"string","description":"Password for the type."},"principal":{"$ref":"#/types/confluentcloud:index/FlinkConnectionPrincipal:FlinkConnectionPrincipal"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Flink Connection cluster, for example, `https://flink.us-east-1.aws.confluent.cloud/sql/v1/organizations/1111aaaa-11aa-11aa-11aa-111111aaaaaa/environments/env-abc123`).","willReplaceOnChanges":true},"serviceKey":{"type":"string","description":"Service Key for the type."},"type":{"type":"string","description":"The type of the flink connection."},"username":{"type":"string","description":"Username for the type."}},"type":"object"}},"confluentcloud:index/flinkStatement:FlinkStatement":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental statement deletion. This setting rejects plans that would destroy or recreate the statement, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Option #1: Manage multiple Flink Compute Pools in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst randomIntTable = new confluentcloud.FlinkStatement(\"random_int_table\", {\n    organization: {\n        id: main.id,\n    },\n    environment: {\n        id: staging.id,\n    },\n    computePool: {\n        id: example.id,\n    },\n    principal: {\n        id: app_manager_flink.id,\n    },\n    statement: \"CREATE TABLE random_int_table(ts TIMESTAMP_LTZ(3), random_value INT);\",\n    properties: {\n        \"sql.current-catalog\": exampleConfluentEnvironment.displayName,\n        \"sql.current-database\": exampleConfluentKafkaCluster.displayName,\n    },\n    restEndpoint: mainConfluentFlinkRegion.restEndpoint,\n    credentials: {\n        key: env_admin_flink_api_key.id,\n        secret: env_admin_flink_api_key.secret,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nrandom_int_table = confluentcloud.FlinkStatement(\"random_int_table\",\n    organization={\n        \"id\": main[\"id\"],\n    },\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    compute_pool={\n        \"id\": example[\"id\"],\n    },\n    principal={\n        \"id\": app_manager_flink[\"id\"],\n    },\n    statement=\"CREATE TABLE random_int_table(ts TIMESTAMP_LTZ(3), random_value INT);\",\n    properties={\n        \"sql.current-catalog\": example_confluent_environment[\"displayName\"],\n        \"sql.current-database\": example_confluent_kafka_cluster[\"displayName\"],\n    },\n    rest_endpoint=main_confluent_flink_region[\"restEndpoint\"],\n    credentials={\n        \"key\": env_admin_flink_api_key[\"id\"],\n        \"secret\": env_admin_flink_api_key[\"secret\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var randomIntTable = new ConfluentCloud.FlinkStatement(\"random_int_table\", new()\n    {\n        Organization = new ConfluentCloud.Inputs.FlinkStatementOrganizationArgs\n        {\n            Id = main.Id,\n        },\n        Environment = new ConfluentCloud.Inputs.FlinkStatementEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        ComputePool = new ConfluentCloud.Inputs.FlinkStatementComputePoolArgs\n        {\n            Id = example.Id,\n        },\n        Principal = new ConfluentCloud.Inputs.FlinkStatementPrincipalArgs\n        {\n            Id = app_manager_flink.Id,\n        },\n        Statement = \"CREATE TABLE random_int_table(ts TIMESTAMP_LTZ(3), random_value INT);\",\n        Properties = \n        {\n            { \"sql.current-catalog\", exampleConfluentEnvironment.DisplayName },\n            { \"sql.current-database\", exampleConfluentKafkaCluster.DisplayName },\n        },\n        RestEndpoint = mainConfluentFlinkRegion.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.FlinkStatementCredentialsArgs\n        {\n            Key = env_admin_flink_api_key.Id,\n            Secret = env_admin_flink_api_key.Secret,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewFlinkStatement(ctx, \"random_int_table\", \u0026confluentcloud.FlinkStatementArgs{\n\t\t\tOrganization: \u0026confluentcloud.FlinkStatementOrganizationArgs{\n\t\t\t\tId: pulumi.Any(main.Id),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.FlinkStatementEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tComputePool: \u0026confluentcloud.FlinkStatementComputePoolArgs{\n\t\t\t\tId: pulumi.Any(example.Id),\n\t\t\t},\n\t\t\tPrincipal: \u0026confluentcloud.FlinkStatementPrincipalArgs{\n\t\t\t\tId: pulumi.Any(app_manager_flink.Id),\n\t\t\t},\n\t\t\tStatement: pulumi.String(\"CREATE TABLE random_int_table(ts TIMESTAMP_LTZ(3), random_value INT);\"),\n\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\"sql.current-catalog\":  pulumi.Any(exampleConfluentEnvironment.DisplayName),\n\t\t\t\t\"sql.current-database\": pulumi.Any(exampleConfluentKafkaCluster.DisplayName),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(mainConfluentFlinkRegion.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.FlinkStatementCredentialsArgs{\n\t\t\t\tKey:    pulumi.Any(env_admin_flink_api_key.Id),\n\t\t\t\tSecret: pulumi.Any(env_admin_flink_api_key.Secret),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.FlinkStatement;\nimport com.pulumi.confluentcloud.FlinkStatementArgs;\nimport com.pulumi.confluentcloud.inputs.FlinkStatementOrganizationArgs;\nimport com.pulumi.confluentcloud.inputs.FlinkStatementEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.FlinkStatementComputePoolArgs;\nimport com.pulumi.confluentcloud.inputs.FlinkStatementPrincipalArgs;\nimport com.pulumi.confluentcloud.inputs.FlinkStatementCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var randomIntTable = new FlinkStatement(\"randomIntTable\", FlinkStatementArgs.builder()\n            .organization(FlinkStatementOrganizationArgs.builder()\n                .id(main.id())\n                .build())\n            .environment(FlinkStatementEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .computePool(FlinkStatementComputePoolArgs.builder()\n                .id(example.id())\n                .build())\n            .principal(FlinkStatementPrincipalArgs.builder()\n                .id(app_manager_flink.id())\n                .build())\n            .statement(\"CREATE TABLE random_int_table(ts TIMESTAMP_LTZ(3), random_value INT);\")\n            .properties(Map.ofEntries(\n                Map.entry(\"sql.current-catalog\", exampleConfluentEnvironment.displayName()),\n                Map.entry(\"sql.current-database\", exampleConfluentKafkaCluster.displayName())\n            ))\n            .restEndpoint(mainConfluentFlinkRegion.restEndpoint())\n            .credentials(FlinkStatementCredentialsArgs.builder()\n                .key(env_admin_flink_api_key.id())\n                .secret(env_admin_flink_api_key.secret())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  randomIntTable:\n    type: confluentcloud:FlinkStatement\n    name: random_int_table\n    properties:\n      organization:\n        id: ${main.id}\n      environment:\n        id: ${staging.id}\n      computePool:\n        id: ${example.id}\n      principal:\n        id: ${[\"app-manager-flink\"].id}\n      statement: CREATE TABLE random_int_table(ts TIMESTAMP_LTZ(3), random_value INT);\n      properties:\n        sql.current-catalog: ${exampleConfluentEnvironment.displayName}\n        sql.current-database: ${exampleConfluentKafkaCluster.displayName}\n      restEndpoint: ${mainConfluentFlinkRegion.restEndpoint}\n      credentials:\n        key: ${[\"env-admin-flink-api-key\"].id}\n        secret: ${[\"env-admin-flink-api-key\"].secret}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Flink Compute Pool in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.FlinkStatement(\"example\", {\n    statement: \"CREATE TABLE random_int_table(ts TIMESTAMP_LTZ(3), random_value INT);\",\n    properties: {\n        \"sql.current-catalog\": confluentEnvironmentDisplayName,\n        \"sql.current-database\": confluentKafkaClusterDisplayName,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.FlinkStatement(\"example\",\n    statement=\"CREATE TABLE random_int_table(ts TIMESTAMP_LTZ(3), random_value INT);\",\n    properties={\n        \"sql.current-catalog\": confluent_environment_display_name,\n        \"sql.current-database\": confluent_kafka_cluster_display_name,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.FlinkStatement(\"example\", new()\n    {\n        Statement = \"CREATE TABLE random_int_table(ts TIMESTAMP_LTZ(3), random_value INT);\",\n        Properties = \n        {\n            { \"sql.current-catalog\", confluentEnvironmentDisplayName },\n            { \"sql.current-database\", confluentKafkaClusterDisplayName },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewFlinkStatement(ctx, \"example\", \u0026confluentcloud.FlinkStatementArgs{\n\t\t\tStatement: pulumi.String(\"CREATE TABLE random_int_table(ts TIMESTAMP_LTZ(3), random_value INT);\"),\n\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\"sql.current-catalog\":  pulumi.Any(confluentEnvironmentDisplayName),\n\t\t\t\t\"sql.current-database\": pulumi.Any(confluentKafkaClusterDisplayName),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.FlinkStatement;\nimport com.pulumi.confluentcloud.FlinkStatementArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new FlinkStatement(\"example\", FlinkStatementArgs.builder()\n            .statement(\"CREATE TABLE random_int_table(ts TIMESTAMP_LTZ(3), random_value INT);\")\n            .properties(Map.ofEntries(\n                Map.entry(\"sql.current-catalog\", confluentEnvironmentDisplayName),\n                Map.entry(\"sql.current-database\", confluentKafkaClusterDisplayName)\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:FlinkStatement\n    properties:\n      statement: CREATE TABLE random_int_table(ts TIMESTAMP_LTZ(3), random_value INT);\n      properties:\n        sql.current-catalog: ${confluentEnvironmentDisplayName}\n        sql.current-database: ${confluentKafkaClusterDisplayName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nExample of \u003cspan pulumi-lang-nodejs=\"`confluentcloud.FlinkStatement`\" pulumi-lang-dotnet=\"`confluentcloud.FlinkStatement`\" pulumi-lang-go=\"`FlinkStatement`\" pulumi-lang-python=\"`FlinkStatement`\" pulumi-lang-yaml=\"`confluentcloud.FlinkStatement`\" pulumi-lang-java=\"`confluentcloud.FlinkStatement`\"\u003e`confluentcloud.FlinkStatement`\u003c/span\u003e that creates a model:\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.FlinkStatement(\"example\", {\n    statement: \"CREATE MODEL `vector_encoding` INPUT (input STRING) OUTPUT (vector ARRAY\u003cFLOAT\u003e) WITH( 'TASK' = 'classification','PROVIDER' = 'OPENAI','OPENAI.ENDPOINT' = 'https://api.openai.com/v1/embeddings','OPENAI.API_KEY' = '{{sessionconfig/sql.secrets.openaikey}}');\",\n    properties: {\n        \"sql.current-catalog\": confluentEnvironmentDisplayName,\n        \"sql.current-database\": confluentKafkaClusterDisplayName,\n    },\n    propertiesSensitive: {\n        \"sql.secrets.openaikey\": \"***REDACTED***\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.FlinkStatement(\"example\",\n    statement=\"CREATE MODEL `vector_encoding` INPUT (input STRING) OUTPUT (vector ARRAY\u003cFLOAT\u003e) WITH( 'TASK' = 'classification','PROVIDER' = 'OPENAI','OPENAI.ENDPOINT' = 'https://api.openai.com/v1/embeddings','OPENAI.API_KEY' = '{{sessionconfig/sql.secrets.openaikey}}');\",\n    properties={\n        \"sql.current-catalog\": confluent_environment_display_name,\n        \"sql.current-database\": confluent_kafka_cluster_display_name,\n    },\n    properties_sensitive={\n        \"sql.secrets.openaikey\": \"***REDACTED***\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.FlinkStatement(\"example\", new()\n    {\n        Statement = \"CREATE MODEL `vector_encoding` INPUT (input STRING) OUTPUT (vector ARRAY\u003cFLOAT\u003e) WITH( 'TASK' = 'classification','PROVIDER' = 'OPENAI','OPENAI.ENDPOINT' = 'https://api.openai.com/v1/embeddings','OPENAI.API_KEY' = '{{sessionconfig/sql.secrets.openaikey}}');\",\n        Properties = \n        {\n            { \"sql.current-catalog\", confluentEnvironmentDisplayName },\n            { \"sql.current-database\", confluentKafkaClusterDisplayName },\n        },\n        PropertiesSensitive = \n        {\n            { \"sql.secrets.openaikey\", \"***REDACTED***\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewFlinkStatement(ctx, \"example\", \u0026confluentcloud.FlinkStatementArgs{\n\t\t\tStatement: pulumi.String(\"CREATE MODEL `vector_encoding` INPUT (input STRING) OUTPUT (vector ARRAY\u003cFLOAT\u003e) WITH( 'TASK' = 'classification','PROVIDER' = 'OPENAI','OPENAI.ENDPOINT' = 'https://api.openai.com/v1/embeddings','OPENAI.API_KEY' = '{{sessionconfig/sql.secrets.openaikey}}');\"),\n\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\"sql.current-catalog\":  pulumi.Any(confluentEnvironmentDisplayName),\n\t\t\t\t\"sql.current-database\": pulumi.Any(confluentKafkaClusterDisplayName),\n\t\t\t},\n\t\t\tPropertiesSensitive: pulumi.StringMap{\n\t\t\t\t\"sql.secrets.openaikey\": pulumi.String(\"***REDACTED***\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.FlinkStatement;\nimport com.pulumi.confluentcloud.FlinkStatementArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new FlinkStatement(\"example\", FlinkStatementArgs.builder()\n            .statement(\"CREATE MODEL `vector_encoding` INPUT (input STRING) OUTPUT (vector ARRAY\u003cFLOAT\u003e) WITH( 'TASK' = 'classification','PROVIDER' = 'OPENAI','OPENAI.ENDPOINT' = 'https://api.openai.com/v1/embeddings','OPENAI.API_KEY' = '{{sessionconfig/sql.secrets.openaikey}}');\")\n            .properties(Map.ofEntries(\n                Map.entry(\"sql.current-catalog\", confluentEnvironmentDisplayName),\n                Map.entry(\"sql.current-database\", confluentKafkaClusterDisplayName)\n            ))\n            .propertiesSensitive(Map.of(\"sql.secrets.openaikey\", \"***REDACTED***\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:FlinkStatement\n    properties:\n      statement: CREATE MODEL `vector_encoding` INPUT (input STRING) OUTPUT (vector ARRAY\u003cFLOAT\u003e) WITH( 'TASK' = 'classification','PROVIDER' = 'OPENAI','OPENAI.ENDPOINT' = 'https://api.openai.com/v1/embeddings','OPENAI.API_KEY' = '{{sessionconfig/sql.secrets.openaikey}}');\n      properties:\n        sql.current-catalog: ${confluentEnvironmentDisplayName}\n        sql.current-database: ${confluentKafkaClusterDisplayName}\n      propertiesSensitive:\n        sql.secrets.openaikey: '***REDACTED***'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end example might help to get started with [Flink Statements](https://docs.confluent.io/cloud/current/flink/get-started/overview.html):\n  * flink-quickstart\n  * flink-carry-over-offset-between-statements\n\n## Import\n\nYou can import a Flink statement by using the Flink Statement name, for example:\n\nOption #1: Manage multiple Flink Compute Pools in the same Pulumi Stack\n\n```sh\n$ export IMPORT_CONFLUENT_ORGANIZATION_ID=\"\u003corganization_id\u003e\"\n$ export IMPORT_CONFLUENT_ENVIRONMENT_ID=\"\u003cenvironment_id\u003e\"\n$ export IMPORT_FLINK_COMPUTE_POOL_ID=\"\u003cflink_compute_pool_id\u003e\"\n$ export IMPORT_FLINK_API_KEY=\"\u003cflink_api_key\u003e\"\n$ export IMPORT_FLINK_API_SECRET=\"\u003cflink_api_secret\u003e\"\n$ export IMPORT_FLINK_REST_ENDPOINT=\"\u003cflink_rest_endpoint\u003e\"\n$ export IMPORT_FLINK_PRINCIPAL_ID=\"\u003cflink_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/flinkStatement:FlinkStatement example cfeab4fe-b62c-49bd-9e99-51cc98c77a67\n```\n\nOption #2: Manage a single Flink Compute Pool in the same Pulumi Stack\n\n```sh\n$ pulumi import confluentcloud:index/flinkStatement:FlinkStatement example cfeab4fe-b62c-49bd-9e99-51cc98c77a67\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"computePool":{"$ref":"#/types/confluentcloud:index/FlinkStatementComputePool:FlinkStatementComputePool"},"credentials":{"$ref":"#/types/confluentcloud:index/FlinkStatementCredentials:FlinkStatementCredentials","description":"The Cluster API Credentials.","secret":true},"environment":{"$ref":"#/types/confluentcloud:index/FlinkStatementEnvironment:FlinkStatementEnvironment"},"latestOffsets":{"type":"object","additionalProperties":{"type":"string"},"description":"(Optional String) The last Kafka offsets that a statement has processed. Represented by a mapping from Kafka topic to a string representation of partitions mapped to offsets. For example,\n```bash\n\"latest_offsets\": {\n\"topic-1\": \"partition:0,offset:100;partition:1,offset:200\",\n\"topic-2\": \"partition:0,offset:50\"\n}\n```\n"},"latestOffsetsTimestamp":{"type":"string","description":"(Optional String) The date and time at which the Kafka topic offsets were added to the statement status. It is represented in RFC3339 format and is in UTC. For example, `2023-03-31T00:00:00-00:00`.\n"},"organization":{"$ref":"#/types/confluentcloud:index/FlinkStatementOrganization:FlinkStatementOrganization"},"principal":{"$ref":"#/types/confluentcloud:index/FlinkStatementPrincipal:FlinkStatementPrincipal"},"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom topic settings to set:\n"},"propertiesSensitive":{"type":"object","additionalProperties":{"type":"string"},"description":"Block for sensitive statement properties:\n","secret":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Flink region. For example, for public networking: `https://flink.us-east-1.aws.confluent.cloud`. In the case of private networking, the endpoint might look like `https://flink.pr1jy6.us-east-2.aws.confluent.cloud`. You can construct it using either:\n- `data.confluent_flink_region.main.private_rest_endpoint`, or\n- `https://flink${data.confluent_network.main.endpoint_suffix}`\n"},"statement":{"type":"string","description":"The raw SQL text statement, for example, `SELECT CURRENT_TIMESTAMP;`.\n"},"statementName":{"type":"string","description":"The ID of the Flink Statement, for example, `cfeab4fe-b62c-49bd-9e99-51cc98c77a67`.\n"},"stopped":{"type":"boolean","description":"The boolean flag is used to indicate the statement's running status and to control whether the Flink Statement should be stopped or resumed. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Update it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to stop the statement. Subsequently update it to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e to resume the statement.\n\n!\u003e **Note:** To stop a running statement, no other argument can be updated except \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e.\n\n!\u003e **Note:** When resuming a stopped statement, you can update `principal.id` and/or `compute_pool.id` in addition to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e attribute. This enables the statement to run under a different principal (with the appropriate role assignment) or a different Flink compute pool (as long as it is in the same Flink region as the original).\n\n!\u003e **Note:** Currently, only 3 Flink statements support the resume feature, namely: `CREATE TABLE AS`, `INSERT INTO`, and `EXECUTE STATEMENT SET`.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.FlinkStatement`\" pulumi-lang-dotnet=\"`confluentcloud.FlinkStatement`\" pulumi-lang-go=\"`FlinkStatement`\" pulumi-lang-python=\"`FlinkStatement`\" pulumi-lang-yaml=\"`confluentcloud.FlinkStatement`\" pulumi-lang-java=\"`confluentcloud.FlinkStatement`\"\u003e`confluentcloud.FlinkStatement`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"}},"required":["computePool","environment","latestOffsets","latestOffsetsTimestamp","organization","principal","properties","propertiesSensitive","statement","statementName","stopped"],"inputProperties":{"computePool":{"$ref":"#/types/confluentcloud:index/FlinkStatementComputePool:FlinkStatementComputePool"},"credentials":{"$ref":"#/types/confluentcloud:index/FlinkStatementCredentials:FlinkStatementCredentials","description":"The Cluster API Credentials.","secret":true},"environment":{"$ref":"#/types/confluentcloud:index/FlinkStatementEnvironment:FlinkStatementEnvironment"},"organization":{"$ref":"#/types/confluentcloud:index/FlinkStatementOrganization:FlinkStatementOrganization"},"principal":{"$ref":"#/types/confluentcloud:index/FlinkStatementPrincipal:FlinkStatementPrincipal"},"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom topic settings to set:\n"},"propertiesSensitive":{"type":"object","additionalProperties":{"type":"string"},"description":"Block for sensitive statement properties:\n","secret":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Flink region. For example, for public networking: `https://flink.us-east-1.aws.confluent.cloud`. In the case of private networking, the endpoint might look like `https://flink.pr1jy6.us-east-2.aws.confluent.cloud`. You can construct it using either:\n- `data.confluent_flink_region.main.private_rest_endpoint`, or\n- `https://flink${data.confluent_network.main.endpoint_suffix}`\n","willReplaceOnChanges":true},"statement":{"type":"string","description":"The raw SQL text statement, for example, `SELECT CURRENT_TIMESTAMP;`.\n","willReplaceOnChanges":true},"statementName":{"type":"string","description":"The ID of the Flink Statement, for example, `cfeab4fe-b62c-49bd-9e99-51cc98c77a67`.\n"},"stopped":{"type":"boolean","description":"The boolean flag is used to indicate the statement's running status and to control whether the Flink Statement should be stopped or resumed. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Update it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to stop the statement. Subsequently update it to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e to resume the statement.\n\n!\u003e **Note:** To stop a running statement, no other argument can be updated except \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e.\n\n!\u003e **Note:** When resuming a stopped statement, you can update `principal.id` and/or `compute_pool.id` in addition to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e attribute. This enables the statement to run under a different principal (with the appropriate role assignment) or a different Flink compute pool (as long as it is in the same Flink region as the original).\n\n!\u003e **Note:** Currently, only 3 Flink statements support the resume feature, namely: `CREATE TABLE AS`, `INSERT INTO`, and `EXECUTE STATEMENT SET`.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.FlinkStatement`\" pulumi-lang-dotnet=\"`confluentcloud.FlinkStatement`\" pulumi-lang-go=\"`FlinkStatement`\" pulumi-lang-python=\"`FlinkStatement`\" pulumi-lang-yaml=\"`confluentcloud.FlinkStatement`\" pulumi-lang-java=\"`confluentcloud.FlinkStatement`\"\u003e`confluentcloud.FlinkStatement`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"}},"requiredInputs":["statement"],"stateInputs":{"description":"Input properties used for looking up and filtering FlinkStatement resources.\n","properties":{"computePool":{"$ref":"#/types/confluentcloud:index/FlinkStatementComputePool:FlinkStatementComputePool"},"credentials":{"$ref":"#/types/confluentcloud:index/FlinkStatementCredentials:FlinkStatementCredentials","description":"The Cluster API Credentials.","secret":true},"environment":{"$ref":"#/types/confluentcloud:index/FlinkStatementEnvironment:FlinkStatementEnvironment"},"latestOffsets":{"type":"object","additionalProperties":{"type":"string"},"description":"(Optional String) The last Kafka offsets that a statement has processed. Represented by a mapping from Kafka topic to a string representation of partitions mapped to offsets. For example,\n```bash\n\"latest_offsets\": {\n\"topic-1\": \"partition:0,offset:100;partition:1,offset:200\",\n\"topic-2\": \"partition:0,offset:50\"\n}\n```\n"},"latestOffsetsTimestamp":{"type":"string","description":"(Optional String) The date and time at which the Kafka topic offsets were added to the statement status. It is represented in RFC3339 format and is in UTC. For example, `2023-03-31T00:00:00-00:00`.\n"},"organization":{"$ref":"#/types/confluentcloud:index/FlinkStatementOrganization:FlinkStatementOrganization"},"principal":{"$ref":"#/types/confluentcloud:index/FlinkStatementPrincipal:FlinkStatementPrincipal"},"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom topic settings to set:\n"},"propertiesSensitive":{"type":"object","additionalProperties":{"type":"string"},"description":"Block for sensitive statement properties:\n","secret":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Flink region. For example, for public networking: `https://flink.us-east-1.aws.confluent.cloud`. In the case of private networking, the endpoint might look like `https://flink.pr1jy6.us-east-2.aws.confluent.cloud`. You can construct it using either:\n- `data.confluent_flink_region.main.private_rest_endpoint`, or\n- `https://flink${data.confluent_network.main.endpoint_suffix}`\n","willReplaceOnChanges":true},"statement":{"type":"string","description":"The raw SQL text statement, for example, `SELECT CURRENT_TIMESTAMP;`.\n","willReplaceOnChanges":true},"statementName":{"type":"string","description":"The ID of the Flink Statement, for example, `cfeab4fe-b62c-49bd-9e99-51cc98c77a67`.\n"},"stopped":{"type":"boolean","description":"The boolean flag is used to indicate the statement's running status and to control whether the Flink Statement should be stopped or resumed. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Update it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to stop the statement. Subsequently update it to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e to resume the statement.\n\n!\u003e **Note:** To stop a running statement, no other argument can be updated except \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e.\n\n!\u003e **Note:** When resuming a stopped statement, you can update `principal.id` and/or `compute_pool.id` in addition to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e attribute. This enables the statement to run under a different principal (with the appropriate role assignment) or a different Flink compute pool (as long as it is in the same Flink region as the original).\n\n!\u003e **Note:** Currently, only 3 Flink statements support the resume feature, namely: `CREATE TABLE AS`, `INSERT INTO`, and `EXECUTE STATEMENT SET`.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.FlinkStatement`\" pulumi-lang-dotnet=\"`confluentcloud.FlinkStatement`\" pulumi-lang-go=\"`FlinkStatement`\" pulumi-lang-python=\"`FlinkStatement`\" pulumi-lang-yaml=\"`confluentcloud.FlinkStatement`\" pulumi-lang-java=\"`confluentcloud.FlinkStatement`\"\u003e`confluentcloud.FlinkStatement`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"}},"type":"object"}},"confluentcloud:index/gateway:Gateway":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Gateway`\" pulumi-lang-dotnet=\"`confluentcloud.Gateway`\" pulumi-lang-go=\"`Gateway`\" pulumi-lang-python=\"`Gateway`\" pulumi-lang-yaml=\"`confluentcloud.Gateway`\" pulumi-lang-java=\"`confluentcloud.Gateway`\"\u003e`confluentcloud.Gateway`\u003c/span\u003e provides a Gateway resource that enables creating, editing, and deleting Gateways on Confluent Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst main = new confluentcloud.Gateway(\"main\", {\n    displayName: \"my_egress_gateway\",\n    environment: {\n        id: development.id,\n    },\n    awsEgressPrivateLinkGateway: {\n        region: \"us-west-2\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\nmain = confluentcloud.Gateway(\"main\",\n    display_name=\"my_egress_gateway\",\n    environment={\n        \"id\": development.id,\n    },\n    aws_egress_private_link_gateway={\n        \"region\": \"us-west-2\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var main = new ConfluentCloud.Gateway(\"main\", new()\n    {\n        DisplayName = \"my_egress_gateway\",\n        Environment = new ConfluentCloud.Inputs.GatewayEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        AwsEgressPrivateLinkGateway = new ConfluentCloud.Inputs.GatewayAwsEgressPrivateLinkGatewayArgs\n        {\n            Region = \"us-west-2\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewGateway(ctx, \"main\", \u0026confluentcloud.GatewayArgs{\n\t\t\tDisplayName: pulumi.String(\"my_egress_gateway\"),\n\t\t\tEnvironment: \u0026confluentcloud.GatewayEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tAwsEgressPrivateLinkGateway: \u0026confluentcloud.GatewayAwsEgressPrivateLinkGatewayArgs{\n\t\t\t\tRegion: pulumi.String(\"us-west-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Gateway;\nimport com.pulumi.confluentcloud.GatewayArgs;\nimport com.pulumi.confluentcloud.inputs.GatewayEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.GatewayAwsEgressPrivateLinkGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var main = new Gateway(\"main\", GatewayArgs.builder()\n            .displayName(\"my_egress_gateway\")\n            .environment(GatewayEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .awsEgressPrivateLinkGateway(GatewayAwsEgressPrivateLinkGatewayArgs.builder()\n                .region(\"us-west-2\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  main:\n    type: confluentcloud:Gateway\n    properties:\n      displayName: my_egress_gateway\n      environment:\n        id: ${development.id}\n      awsEgressPrivateLinkGateway:\n        region: us-west-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Gateway`\" pulumi-lang-dotnet=\"`confluentcloud.Gateway`\" pulumi-lang-go=\"`Gateway`\" pulumi-lang-python=\"`Gateway`\" pulumi-lang-yaml=\"`confluentcloud.Gateway`\" pulumi-lang-java=\"`confluentcloud.Gateway`\"\u003e`confluentcloud.Gateway`\u003c/span\u003e resource:\n  * enterprise-pni-aws-kafka-rbac: _Enterprise_ Kafka cluster on AWS that is accessible via Confluent Private Network Interface (PNI) with authorization using RBAC\n  * freight-aws-kafka-rbac: _Freight_ Kafka cluster on AWS that is accessible via Confluent Private Network Interface (PNI) with authorization using RBAC\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Gateway.\n\nYou can import a Gateway by using Environment ID and Gateway ID, in the format `\u003cEnvironment ID\u003e/\u003cGateway ID\u003e`. The following example shows how to import a Gateway:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/gateway:Gateway main env-abc123/gw-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"awsEgressPrivateLinkGateway":{"$ref":"#/types/confluentcloud:index/GatewayAwsEgressPrivateLinkGateway:GatewayAwsEgressPrivateLinkGateway","description":"(Optional Configuration Block) supports the following:\n"},"awsIngressPrivateLinkGateway":{"$ref":"#/types/confluentcloud:index/GatewayAwsIngressPrivateLinkGateway:GatewayAwsIngressPrivateLinkGateway","description":"(Optional Configuration Block) supports the following:\n"},"awsPrivateNetworkInterfaceGateway":{"$ref":"#/types/confluentcloud:index/GatewayAwsPrivateNetworkInterfaceGateway:GatewayAwsPrivateNetworkInterfaceGateway","description":"(Optional Configuration Block) supports the following:\n"},"azureEgressPrivateLinkGateway":{"$ref":"#/types/confluentcloud:index/GatewayAzureEgressPrivateLinkGateway:GatewayAzureEgressPrivateLinkGateway","description":"(Optional Configuration Block) supports the following:\n"},"displayName":{"type":"string","description":"The name of the Gateway.\n"},"environment":{"$ref":"#/types/confluentcloud:index/GatewayEnvironment:GatewayEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."}},"required":["awsEgressPrivateLinkGateway","awsIngressPrivateLinkGateway","awsPrivateNetworkInterfaceGateway","azureEgressPrivateLinkGateway","displayName","environment"],"inputProperties":{"awsEgressPrivateLinkGateway":{"$ref":"#/types/confluentcloud:index/GatewayAwsEgressPrivateLinkGateway:GatewayAwsEgressPrivateLinkGateway","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"awsIngressPrivateLinkGateway":{"$ref":"#/types/confluentcloud:index/GatewayAwsIngressPrivateLinkGateway:GatewayAwsIngressPrivateLinkGateway","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"awsPrivateNetworkInterfaceGateway":{"$ref":"#/types/confluentcloud:index/GatewayAwsPrivateNetworkInterfaceGateway:GatewayAwsPrivateNetworkInterfaceGateway","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"azureEgressPrivateLinkGateway":{"$ref":"#/types/confluentcloud:index/GatewayAzureEgressPrivateLinkGateway:GatewayAzureEgressPrivateLinkGateway","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Gateway.\n"},"environment":{"$ref":"#/types/confluentcloud:index/GatewayEnvironment:GatewayEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true}},"requiredInputs":["displayName","environment"],"stateInputs":{"description":"Input properties used for looking up and filtering Gateway resources.\n","properties":{"awsEgressPrivateLinkGateway":{"$ref":"#/types/confluentcloud:index/GatewayAwsEgressPrivateLinkGateway:GatewayAwsEgressPrivateLinkGateway","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"awsIngressPrivateLinkGateway":{"$ref":"#/types/confluentcloud:index/GatewayAwsIngressPrivateLinkGateway:GatewayAwsIngressPrivateLinkGateway","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"awsPrivateNetworkInterfaceGateway":{"$ref":"#/types/confluentcloud:index/GatewayAwsPrivateNetworkInterfaceGateway:GatewayAwsPrivateNetworkInterfaceGateway","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"azureEgressPrivateLinkGateway":{"$ref":"#/types/confluentcloud:index/GatewayAzureEgressPrivateLinkGateway:GatewayAzureEgressPrivateLinkGateway","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Gateway.\n"},"environment":{"$ref":"#/types/confluentcloud:index/GatewayEnvironment:GatewayEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/groupMapping:GroupMapping":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.GroupMapping`\" pulumi-lang-dotnet=\"`confluentcloud.GroupMapping`\" pulumi-lang-go=\"`GroupMapping`\" pulumi-lang-python=\"`GroupMapping`\" pulumi-lang-yaml=\"`confluentcloud.GroupMapping`\" pulumi-lang-java=\"`confluentcloud.GroupMapping`\"\u003e`confluentcloud.GroupMapping`\u003c/span\u003e provides a Group Mapping resource that enables creating, editing, and deleting group mappings on Confluent Cloud.\n\n\u003e **Note:** See [Group Mapping in Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/authenticate/sso/group-mapping/overview.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst application_developers = new confluentcloud.GroupMapping(\"application-developers\", {\n    displayName: \"Application Developers\",\n    description: \"Admin access to production environment for Engineering\",\n    filter: \"\\\"engineering\\\" in groups\",\n});\nconst envadmin = new confluentcloud.RoleBinding(\"envadmin\", {\n    principal: pulumi.interpolate`User:${application_developers.id}`,\n    roleName: \"EnvironmentAdmin\",\n    crnPattern: prod.resourceName,\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\napplication_developers = confluentcloud.GroupMapping(\"application-developers\",\n    display_name=\"Application Developers\",\n    description=\"Admin access to production environment for Engineering\",\n    filter=\"\\\"engineering\\\" in groups\")\nenvadmin = confluentcloud.RoleBinding(\"envadmin\",\n    principal=application_developers.id.apply(lambda id: f\"User:{id}\"),\n    role_name=\"EnvironmentAdmin\",\n    crn_pattern=prod[\"resourceName\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var application_developers = new ConfluentCloud.GroupMapping(\"application-developers\", new()\n    {\n        DisplayName = \"Application Developers\",\n        Description = \"Admin access to production environment for Engineering\",\n        Filter = \"\\\"engineering\\\" in groups\",\n    });\n\n    var envadmin = new ConfluentCloud.RoleBinding(\"envadmin\", new()\n    {\n        Principal = application_developers.Id.Apply(id =\u003e $\"User:{id}\"),\n        RoleName = \"EnvironmentAdmin\",\n        CrnPattern = prod.ResourceName,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapplication_developers, err := confluentcloud.NewGroupMapping(ctx, \"application-developers\", \u0026confluentcloud.GroupMappingArgs{\n\t\t\tDisplayName: pulumi.String(\"Application Developers\"),\n\t\t\tDescription: pulumi.String(\"Admin access to production environment for Engineering\"),\n\t\t\tFilter:      pulumi.String(\"\\\"engineering\\\" in groups\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"envadmin\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal: application_developers.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"User:%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tRoleName:   pulumi.String(\"EnvironmentAdmin\"),\n\t\t\tCrnPattern: pulumi.Any(prod.ResourceName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.GroupMapping;\nimport com.pulumi.confluentcloud.GroupMappingArgs;\nimport com.pulumi.confluentcloud.RoleBinding;\nimport com.pulumi.confluentcloud.RoleBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var application_developers = new GroupMapping(\"application-developers\", GroupMappingArgs.builder()\n            .displayName(\"Application Developers\")\n            .description(\"Admin access to production environment for Engineering\")\n            .filter(\"\\\"engineering\\\" in groups\")\n            .build());\n\n        var envadmin = new RoleBinding(\"envadmin\", RoleBindingArgs.builder()\n            .principal(application_developers.id().applyValue(_id -\u003e String.format(\"User:%s\", _id)))\n            .roleName(\"EnvironmentAdmin\")\n            .crnPattern(prod.resourceName())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  application-developers:\n    type: confluentcloud:GroupMapping\n    properties:\n      displayName: Application Developers\n      description: Admin access to production environment for Engineering\n      filter: '\"engineering\" in groups'\n  envadmin:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${[\"application-developers\"].id}\n      roleName: EnvironmentAdmin\n      crnPattern: ${prod.resourceName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Group Mapping.\n\nYou can import a Group Mapping by using Group Mapping ID, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/groupMapping:GroupMapping application-developers group-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"description":{"type":"string","description":"A description explaining the purpose and use of the group mapping.\n"},"displayName":{"type":"string","description":"The name of the Group Mapping.\n"},"filter":{"type":"string","description":"A single group identifier or a condition based on [supported CEL operators](https://docs.confluent.io/cloud/current/access-management/authenticate/sso/group-mapping/overview.html#supported-cel-operators-for-group-mapping) that defines which groups are included.\n"}},"required":["displayName","filter"],"inputProperties":{"description":{"type":"string","description":"A description explaining the purpose and use of the group mapping.\n"},"displayName":{"type":"string","description":"The name of the Group Mapping.\n"},"filter":{"type":"string","description":"A single group identifier or a condition based on [supported CEL operators](https://docs.confluent.io/cloud/current/access-management/authenticate/sso/group-mapping/overview.html#supported-cel-operators-for-group-mapping) that defines which groups are included.\n"}},"requiredInputs":["displayName","filter"],"stateInputs":{"description":"Input properties used for looking up and filtering GroupMapping resources.\n","properties":{"description":{"type":"string","description":"A description explaining the purpose and use of the group mapping.\n"},"displayName":{"type":"string","description":"The name of the Group Mapping.\n"},"filter":{"type":"string","description":"A single group identifier or a condition based on [supported CEL operators](https://docs.confluent.io/cloud/current/access-management/authenticate/sso/group-mapping/overview.html#supported-cel-operators-for-group-mapping) that defines which groups are included.\n"}},"type":"object"}},"confluentcloud:index/identityPool:IdentityPool":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.IdentityPool`\" pulumi-lang-dotnet=\"`confluentcloud.IdentityPool`\" pulumi-lang-go=\"`IdentityPool`\" pulumi-lang-python=\"`IdentityPool`\" pulumi-lang-yaml=\"`confluentcloud.IdentityPool`\" pulumi-lang-java=\"`confluentcloud.IdentityPool`\"\u003e`confluentcloud.IdentityPool`\u003c/span\u003e provides an Identity Pool resource that enables creating, editing, and deleting identity pools on Confluent Cloud.\n\n## Example Usage\n\n### Example Identity Pool to be used with Azure AD\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst azure = new confluentcloud.IdentityProvider(\"azure\", {\n    displayName: \"My OIDC Provider: Azure AD\",\n    description: \"My description\",\n    issuer: \"https://login.microsoftonline.com/{tenant_id}/v2.0\",\n    jwksUri: \"https://login.microsoftonline.com/common/discovery/v2.0/keys\",\n});\nconst example = new confluentcloud.IdentityPool(\"example\", {\n    identityProvider: {\n        id: azure.id,\n    },\n    displayName: \"My Identity Pool\",\n    description: \"Prod Access to Kafka clusters to Release Engineering\",\n    identityClaim: \"claims.sub\",\n    filter: \"claims.aud==\\\"confluent\\\" \u0026\u0026 claims.group!=\\\"invalid_group\\\"\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nazure = confluentcloud.IdentityProvider(\"azure\",\n    display_name=\"My OIDC Provider: Azure AD\",\n    description=\"My description\",\n    issuer=\"https://login.microsoftonline.com/{tenant_id}/v2.0\",\n    jwks_uri=\"https://login.microsoftonline.com/common/discovery/v2.0/keys\")\nexample = confluentcloud.IdentityPool(\"example\",\n    identity_provider={\n        \"id\": azure.id,\n    },\n    display_name=\"My Identity Pool\",\n    description=\"Prod Access to Kafka clusters to Release Engineering\",\n    identity_claim=\"claims.sub\",\n    filter=\"claims.aud==\\\"confluent\\\" \u0026\u0026 claims.group!=\\\"invalid_group\\\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var azure = new ConfluentCloud.IdentityProvider(\"azure\", new()\n    {\n        DisplayName = \"My OIDC Provider: Azure AD\",\n        Description = \"My description\",\n        Issuer = \"https://login.microsoftonline.com/{tenant_id}/v2.0\",\n        JwksUri = \"https://login.microsoftonline.com/common/discovery/v2.0/keys\",\n    });\n\n    var example = new ConfluentCloud.IdentityPool(\"example\", new()\n    {\n        IdentityProvider = new ConfluentCloud.Inputs.IdentityPoolIdentityProviderArgs\n        {\n            Id = azure.Id,\n        },\n        DisplayName = \"My Identity Pool\",\n        Description = \"Prod Access to Kafka clusters to Release Engineering\",\n        IdentityClaim = \"claims.sub\",\n        Filter = \"claims.aud==\\\"confluent\\\" \u0026\u0026 claims.group!=\\\"invalid_group\\\"\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tazure, err := confluentcloud.NewIdentityProvider(ctx, \"azure\", \u0026confluentcloud.IdentityProviderArgs{\n\t\t\tDisplayName: pulumi.String(\"My OIDC Provider: Azure AD\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tIssuer:      pulumi.String(\"https://login.microsoftonline.com/{tenant_id}/v2.0\"),\n\t\t\tJwksUri:     pulumi.String(\"https://login.microsoftonline.com/common/discovery/v2.0/keys\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewIdentityPool(ctx, \"example\", \u0026confluentcloud.IdentityPoolArgs{\n\t\t\tIdentityProvider: \u0026confluentcloud.IdentityPoolIdentityProviderArgs{\n\t\t\t\tId: azure.ID(),\n\t\t\t},\n\t\t\tDisplayName:   pulumi.String(\"My Identity Pool\"),\n\t\t\tDescription:   pulumi.String(\"Prod Access to Kafka clusters to Release Engineering\"),\n\t\t\tIdentityClaim: pulumi.String(\"claims.sub\"),\n\t\t\tFilter:        pulumi.String(\"claims.aud==\\\"confluent\\\" \u0026\u0026 claims.group!=\\\"invalid_group\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.IdentityProvider;\nimport com.pulumi.confluentcloud.IdentityProviderArgs;\nimport com.pulumi.confluentcloud.IdentityPool;\nimport com.pulumi.confluentcloud.IdentityPoolArgs;\nimport com.pulumi.confluentcloud.inputs.IdentityPoolIdentityProviderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var azure = new IdentityProvider(\"azure\", IdentityProviderArgs.builder()\n            .displayName(\"My OIDC Provider: Azure AD\")\n            .description(\"My description\")\n            .issuer(\"https://login.microsoftonline.com/{tenant_id}/v2.0\")\n            .jwksUri(\"https://login.microsoftonline.com/common/discovery/v2.0/keys\")\n            .build());\n\n        var example = new IdentityPool(\"example\", IdentityPoolArgs.builder()\n            .identityProvider(IdentityPoolIdentityProviderArgs.builder()\n                .id(azure.id())\n                .build())\n            .displayName(\"My Identity Pool\")\n            .description(\"Prod Access to Kafka clusters to Release Engineering\")\n            .identityClaim(\"claims.sub\")\n            .filter(\"claims.aud==\\\"confluent\\\" \u0026\u0026 claims.group!=\\\"invalid_group\\\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  azure:\n    type: confluentcloud:IdentityProvider\n    properties:\n      displayName: 'My OIDC Provider: Azure AD'\n      description: My description\n      issuer: https://login.microsoftonline.com/{tenant_id}/v2.0\n      jwksUri: https://login.microsoftonline.com/common/discovery/v2.0/keys\n  example:\n    type: confluentcloud:IdentityPool\n    properties:\n      identityProvider:\n        id: ${azure.id}\n      displayName: My Identity Pool\n      description: Prod Access to Kafka clusters to Release Engineering\n      identityClaim: claims.sub\n      filter: claims.aud==\"confluent\" \u0026\u0026 claims.group!=\"invalid_group\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Identity Pool to be used with Okta\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst okta = new confluentcloud.IdentityProvider(\"okta\", {\n    displayName: \"My OIDC Provider: Okta\",\n    description: \"My description\",\n    issuer: \"https://mycompany.okta.com/oauth2/default\",\n    jwksUri: \"https://mycompany.okta.com/oauth2/default/v1/keys\",\n});\nconst example = new confluentcloud.IdentityPool(\"example\", {\n    identityProvider: {\n        id: okta.id,\n    },\n    displayName: \"My Identity Pool\",\n    description: \"Prod Access to Kafka clusters to Release Engineering\",\n    identityClaim: \"claims.sub\",\n    filter: \"claims.aud==\\\"confluent\\\" \u0026\u0026 claims.group!=\\\"invalid_group\\\"\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nokta = confluentcloud.IdentityProvider(\"okta\",\n    display_name=\"My OIDC Provider: Okta\",\n    description=\"My description\",\n    issuer=\"https://mycompany.okta.com/oauth2/default\",\n    jwks_uri=\"https://mycompany.okta.com/oauth2/default/v1/keys\")\nexample = confluentcloud.IdentityPool(\"example\",\n    identity_provider={\n        \"id\": okta.id,\n    },\n    display_name=\"My Identity Pool\",\n    description=\"Prod Access to Kafka clusters to Release Engineering\",\n    identity_claim=\"claims.sub\",\n    filter=\"claims.aud==\\\"confluent\\\" \u0026\u0026 claims.group!=\\\"invalid_group\\\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var okta = new ConfluentCloud.IdentityProvider(\"okta\", new()\n    {\n        DisplayName = \"My OIDC Provider: Okta\",\n        Description = \"My description\",\n        Issuer = \"https://mycompany.okta.com/oauth2/default\",\n        JwksUri = \"https://mycompany.okta.com/oauth2/default/v1/keys\",\n    });\n\n    var example = new ConfluentCloud.IdentityPool(\"example\", new()\n    {\n        IdentityProvider = new ConfluentCloud.Inputs.IdentityPoolIdentityProviderArgs\n        {\n            Id = okta.Id,\n        },\n        DisplayName = \"My Identity Pool\",\n        Description = \"Prod Access to Kafka clusters to Release Engineering\",\n        IdentityClaim = \"claims.sub\",\n        Filter = \"claims.aud==\\\"confluent\\\" \u0026\u0026 claims.group!=\\\"invalid_group\\\"\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tokta, err := confluentcloud.NewIdentityProvider(ctx, \"okta\", \u0026confluentcloud.IdentityProviderArgs{\n\t\t\tDisplayName: pulumi.String(\"My OIDC Provider: Okta\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tIssuer:      pulumi.String(\"https://mycompany.okta.com/oauth2/default\"),\n\t\t\tJwksUri:     pulumi.String(\"https://mycompany.okta.com/oauth2/default/v1/keys\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewIdentityPool(ctx, \"example\", \u0026confluentcloud.IdentityPoolArgs{\n\t\t\tIdentityProvider: \u0026confluentcloud.IdentityPoolIdentityProviderArgs{\n\t\t\t\tId: okta.ID(),\n\t\t\t},\n\t\t\tDisplayName:   pulumi.String(\"My Identity Pool\"),\n\t\t\tDescription:   pulumi.String(\"Prod Access to Kafka clusters to Release Engineering\"),\n\t\t\tIdentityClaim: pulumi.String(\"claims.sub\"),\n\t\t\tFilter:        pulumi.String(\"claims.aud==\\\"confluent\\\" \u0026\u0026 claims.group!=\\\"invalid_group\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.IdentityProvider;\nimport com.pulumi.confluentcloud.IdentityProviderArgs;\nimport com.pulumi.confluentcloud.IdentityPool;\nimport com.pulumi.confluentcloud.IdentityPoolArgs;\nimport com.pulumi.confluentcloud.inputs.IdentityPoolIdentityProviderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var okta = new IdentityProvider(\"okta\", IdentityProviderArgs.builder()\n            .displayName(\"My OIDC Provider: Okta\")\n            .description(\"My description\")\n            .issuer(\"https://mycompany.okta.com/oauth2/default\")\n            .jwksUri(\"https://mycompany.okta.com/oauth2/default/v1/keys\")\n            .build());\n\n        var example = new IdentityPool(\"example\", IdentityPoolArgs.builder()\n            .identityProvider(IdentityPoolIdentityProviderArgs.builder()\n                .id(okta.id())\n                .build())\n            .displayName(\"My Identity Pool\")\n            .description(\"Prod Access to Kafka clusters to Release Engineering\")\n            .identityClaim(\"claims.sub\")\n            .filter(\"claims.aud==\\\"confluent\\\" \u0026\u0026 claims.group!=\\\"invalid_group\\\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  okta:\n    type: confluentcloud:IdentityProvider\n    properties:\n      displayName: 'My OIDC Provider: Okta'\n      description: My description\n      issuer: https://mycompany.okta.com/oauth2/default\n      jwksUri: https://mycompany.okta.com/oauth2/default/v1/keys\n  example:\n    type: confluentcloud:IdentityPool\n    properties:\n      identityProvider:\n        id: ${okta.id}\n      displayName: My Identity Pool\n      description: Prod Access to Kafka clusters to Release Engineering\n      identityClaim: claims.sub\n      filter: claims.aud==\"confluent\" \u0026\u0026 claims.group!=\"invalid_group\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## External Documentation\n\n* [Use identity pools with your OAuth provider](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/identity-pools.html).\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing an Identity Pool.\n\nYou can import an Identity Pool by using Identity Provider ID and Identity Pool ID, in the format `\u003cIdentity Provider ID\u003e/\u003cIdentity Pool ID\u003e`. The following example shows how to import an Identity Pool:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/identityPool:IdentityPool example op-abc123/pool-xyz456\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"description":{"type":"string","description":"A description for the Identity Pool.\n"},"displayName":{"type":"string","description":"A human-readable name for the Identity Pool.\n"},"filter":{"type":"string","description":"A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/identity-pools.html#supported-common-expression-language-cel-filters) that specifies which identities can authenticate using your identity pool (see [Set identity pool filters](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/identity-pools.html#set-identity-pool-filters) for more details).\n"},"identityClaim":{"type":"string","description":"The JSON Web Token (JWT) claim to extract the authenticating identity to Confluent resources from (see [Registered Claim Names](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1) for more details). This appears in the audit log records, showing, for example, that \"identity Z used identity pool X to access topic A\".\n"},"identityProvider":{"$ref":"#/types/confluentcloud:index/IdentityPoolIdentityProvider:IdentityPoolIdentityProvider","description":"Identity Provider objects represent external OAuth/OpenID Connect providers within Confluent Cloud."}},"required":["description","displayName","filter","identityClaim","identityProvider"],"inputProperties":{"description":{"type":"string","description":"A description for the Identity Pool.\n"},"displayName":{"type":"string","description":"A human-readable name for the Identity Pool.\n"},"filter":{"type":"string","description":"A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/identity-pools.html#supported-common-expression-language-cel-filters) that specifies which identities can authenticate using your identity pool (see [Set identity pool filters](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/identity-pools.html#set-identity-pool-filters) for more details).\n"},"identityClaim":{"type":"string","description":"The JSON Web Token (JWT) claim to extract the authenticating identity to Confluent resources from (see [Registered Claim Names](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1) for more details). This appears in the audit log records, showing, for example, that \"identity Z used identity pool X to access topic A\".\n"},"identityProvider":{"$ref":"#/types/confluentcloud:index/IdentityPoolIdentityProvider:IdentityPoolIdentityProvider","description":"Identity Provider objects represent external OAuth/OpenID Connect providers within Confluent Cloud.","willReplaceOnChanges":true}},"requiredInputs":["description","displayName","filter","identityClaim","identityProvider"],"stateInputs":{"description":"Input properties used for looking up and filtering IdentityPool resources.\n","properties":{"description":{"type":"string","description":"A description for the Identity Pool.\n"},"displayName":{"type":"string","description":"A human-readable name for the Identity Pool.\n"},"filter":{"type":"string","description":"A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/identity-pools.html#supported-common-expression-language-cel-filters) that specifies which identities can authenticate using your identity pool (see [Set identity pool filters](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/identity-pools.html#set-identity-pool-filters) for more details).\n"},"identityClaim":{"type":"string","description":"The JSON Web Token (JWT) claim to extract the authenticating identity to Confluent resources from (see [Registered Claim Names](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1) for more details). This appears in the audit log records, showing, for example, that \"identity Z used identity pool X to access topic A\".\n"},"identityProvider":{"$ref":"#/types/confluentcloud:index/IdentityPoolIdentityProvider:IdentityPoolIdentityProvider","description":"Identity Provider objects represent external OAuth/OpenID Connect providers within Confluent Cloud.","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/identityProvider:IdentityProvider":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.IdentityProvider`\" pulumi-lang-dotnet=\"`confluentcloud.IdentityProvider`\" pulumi-lang-go=\"`IdentityProvider`\" pulumi-lang-python=\"`IdentityProvider`\" pulumi-lang-yaml=\"`confluentcloud.IdentityProvider`\" pulumi-lang-java=\"`confluentcloud.IdentityProvider`\"\u003e`confluentcloud.IdentityProvider`\u003c/span\u003e provides an Identity Provider resource that enables creating, editing, and deleting identity providers on Confluent Cloud.\n\n## Example Usage\n\n### Example Identity Provider: Azure AD\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst azure = new confluentcloud.IdentityProvider(\"azure\", {\n    displayName: \"My OIDC Provider: Azure AD\",\n    description: \"My description\",\n    issuer: \"https://login.microsoftonline.com/{tenant_id}/v2.0\",\n    jwksUri: \"https://login.microsoftonline.com/common/discovery/v2.0/keys\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nazure = confluentcloud.IdentityProvider(\"azure\",\n    display_name=\"My OIDC Provider: Azure AD\",\n    description=\"My description\",\n    issuer=\"https://login.microsoftonline.com/{tenant_id}/v2.0\",\n    jwks_uri=\"https://login.microsoftonline.com/common/discovery/v2.0/keys\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var azure = new ConfluentCloud.IdentityProvider(\"azure\", new()\n    {\n        DisplayName = \"My OIDC Provider: Azure AD\",\n        Description = \"My description\",\n        Issuer = \"https://login.microsoftonline.com/{tenant_id}/v2.0\",\n        JwksUri = \"https://login.microsoftonline.com/common/discovery/v2.0/keys\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewIdentityProvider(ctx, \"azure\", \u0026confluentcloud.IdentityProviderArgs{\n\t\t\tDisplayName: pulumi.String(\"My OIDC Provider: Azure AD\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tIssuer:      pulumi.String(\"https://login.microsoftonline.com/{tenant_id}/v2.0\"),\n\t\t\tJwksUri:     pulumi.String(\"https://login.microsoftonline.com/common/discovery/v2.0/keys\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.IdentityProvider;\nimport com.pulumi.confluentcloud.IdentityProviderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var azure = new IdentityProvider(\"azure\", IdentityProviderArgs.builder()\n            .displayName(\"My OIDC Provider: Azure AD\")\n            .description(\"My description\")\n            .issuer(\"https://login.microsoftonline.com/{tenant_id}/v2.0\")\n            .jwksUri(\"https://login.microsoftonline.com/common/discovery/v2.0/keys\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  azure:\n    type: confluentcloud:IdentityProvider\n    properties:\n      displayName: 'My OIDC Provider: Azure AD'\n      description: My description\n      issuer: https://login.microsoftonline.com/{tenant_id}/v2.0\n      jwksUri: https://login.microsoftonline.com/common/discovery/v2.0/keys\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Identity Provider: Okta\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst okta = new confluentcloud.IdentityProvider(\"okta\", {\n    displayName: \"My OIDC Provider: Okta\",\n    description: \"My description\",\n    issuer: \"https://mycompany.okta.com/oauth2/default\",\n    jwksUri: \"https://mycompany.okta.com/oauth2/default/v1/keys\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nokta = confluentcloud.IdentityProvider(\"okta\",\n    display_name=\"My OIDC Provider: Okta\",\n    description=\"My description\",\n    issuer=\"https://mycompany.okta.com/oauth2/default\",\n    jwks_uri=\"https://mycompany.okta.com/oauth2/default/v1/keys\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var okta = new ConfluentCloud.IdentityProvider(\"okta\", new()\n    {\n        DisplayName = \"My OIDC Provider: Okta\",\n        Description = \"My description\",\n        Issuer = \"https://mycompany.okta.com/oauth2/default\",\n        JwksUri = \"https://mycompany.okta.com/oauth2/default/v1/keys\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewIdentityProvider(ctx, \"okta\", \u0026confluentcloud.IdentityProviderArgs{\n\t\t\tDisplayName: pulumi.String(\"My OIDC Provider: Okta\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tIssuer:      pulumi.String(\"https://mycompany.okta.com/oauth2/default\"),\n\t\t\tJwksUri:     pulumi.String(\"https://mycompany.okta.com/oauth2/default/v1/keys\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.IdentityProvider;\nimport com.pulumi.confluentcloud.IdentityProviderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var okta = new IdentityProvider(\"okta\", IdentityProviderArgs.builder()\n            .displayName(\"My OIDC Provider: Okta\")\n            .description(\"My description\")\n            .issuer(\"https://mycompany.okta.com/oauth2/default\")\n            .jwksUri(\"https://mycompany.okta.com/oauth2/default/v1/keys\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  okta:\n    type: confluentcloud:IdentityProvider\n    properties:\n      displayName: 'My OIDC Provider: Okta'\n      description: My description\n      issuer: https://mycompany.okta.com/oauth2/default\n      jwksUri: https://mycompany.okta.com/oauth2/default/v1/keys\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## External Documentation\n\n* [Authenticating with OAuth](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/overview.html).\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing an Identity Provider.\n\nYou can import an Identity Provider by using Identity Provider ID, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/identityProvider:IdentityProvider example op-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"description":{"type":"string","description":"A description for the Identity Provider.\n"},"displayName":{"type":"string","description":"A human-readable name for the Identity Provider.\n"},"identityClaim":{"type":"string","description":"The JSON Web Token (JWT) claim to extract the authenticating identity to Confluent resources from [Registered Claim Names](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1). This appears in audit log records.\n\n\u003e **Note:** When using Azure AD identity provider, 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**.\n\n\u003e **Note:** If the client specifies mapping to one identity pool ID, the identity claim configured with that pool will be used instead.\n"},"issuer":{"type":"string","description":"A publicly reachable issuer URI for the Identity Provider. The unique issuer URI string represents the entity for issuing tokens.\n"},"jwksUri":{"type":"string","description":"A publicly reachable JSON Web Key Set (JWKS) URI for the Identity Provider. A JSON Web Key Set (JWKS) provides a set of keys containing the public keys used to verify any JSON Web Token (JWT) issued by your OAuth 2.0 identity provider.\n"}},"required":["description","displayName","identityClaim","issuer","jwksUri"],"inputProperties":{"description":{"type":"string","description":"A description for the Identity Provider.\n"},"displayName":{"type":"string","description":"A human-readable name for the Identity Provider.\n"},"identityClaim":{"type":"string","description":"The JSON Web Token (JWT) claim to extract the authenticating identity to Confluent resources from [Registered Claim Names](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1). This appears in audit log records.\n\n\u003e **Note:** When using Azure AD identity provider, 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**.\n\n\u003e **Note:** If the client specifies mapping to one identity pool ID, the identity claim configured with that pool will be used instead.\n"},"issuer":{"type":"string","description":"A publicly reachable issuer URI for the Identity Provider. The unique issuer URI string represents the entity for issuing tokens.\n"},"jwksUri":{"type":"string","description":"A publicly reachable JSON Web Key Set (JWKS) URI for the Identity Provider. A JSON Web Key Set (JWKS) provides a set of keys containing the public keys used to verify any JSON Web Token (JWT) issued by your OAuth 2.0 identity provider.\n"}},"requiredInputs":["description","displayName","issuer","jwksUri"],"stateInputs":{"description":"Input properties used for looking up and filtering IdentityProvider resources.\n","properties":{"description":{"type":"string","description":"A description for the Identity Provider.\n"},"displayName":{"type":"string","description":"A human-readable name for the Identity Provider.\n"},"identityClaim":{"type":"string","description":"The JSON Web Token (JWT) claim to extract the authenticating identity to Confluent resources from [Registered Claim Names](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1). This appears in audit log records.\n\n\u003e **Note:** When using Azure AD identity provider, 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**.\n\n\u003e **Note:** If the client specifies mapping to one identity pool ID, the identity claim configured with that pool will be used instead.\n"},"issuer":{"type":"string","description":"A publicly reachable issuer URI for the Identity Provider. The unique issuer URI string represents the entity for issuing tokens.\n"},"jwksUri":{"type":"string","description":"A publicly reachable JSON Web Key Set (JWKS) URI for the Identity Provider. A JSON Web Key Set (JWKS) provides a set of keys containing the public keys used to verify any JSON Web Token (JWT) issued by your OAuth 2.0 identity provider.\n"}},"type":"object"}},"confluentcloud:index/invitation:Invitation":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Invitation`\" pulumi-lang-dotnet=\"`confluentcloud.Invitation`\" pulumi-lang-go=\"`Invitation`\" pulumi-lang-python=\"`Invitation`\" pulumi-lang-yaml=\"`confluentcloud.Invitation`\" pulumi-lang-java=\"`confluentcloud.Invitation`\"\u003e`confluentcloud.Invitation`\u003c/span\u003e provides an invitation resource that enables creating, reading, and deleting invitation on Confluent Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = new confluentcloud.Invitation(\"main\", {email: \"\"});\nconst main2 = new confluentcloud.Invitation(\"main2\", {\n    email: \"\",\n    authType: \"AUTH_TYPE_LOCAL\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.Invitation(\"main\", email=\"\")\nmain2 = confluentcloud.Invitation(\"main2\",\n    email=\"\",\n    auth_type=\"AUTH_TYPE_LOCAL\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new ConfluentCloud.Invitation(\"main\", new()\n    {\n        Email = \"\",\n    });\n\n    var main2 = new ConfluentCloud.Invitation(\"main2\", new()\n    {\n        Email = \"\",\n        AuthType = \"AUTH_TYPE_LOCAL\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewInvitation(ctx, \"main\", \u0026confluentcloud.InvitationArgs{\n\t\t\tEmail: pulumi.String(\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewInvitation(ctx, \"main2\", \u0026confluentcloud.InvitationArgs{\n\t\t\tEmail:    pulumi.String(\"\"),\n\t\t\tAuthType: pulumi.String(\"AUTH_TYPE_LOCAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Invitation;\nimport com.pulumi.confluentcloud.InvitationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new Invitation(\"main\", InvitationArgs.builder()\n            .email(\"\")\n            .build());\n\n        var main2 = new Invitation(\"main2\", InvitationArgs.builder()\n            .email(\"\")\n            .authType(\"AUTH_TYPE_LOCAL\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: confluentcloud:Invitation\n    properties:\n      email: \"\"\n  main2:\n    type: confluentcloud:Invitation\n    properties:\n      email: \"\"\n      authType: AUTH_TYPE_LOCAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing an Invitation.\n\nYou can import an Invitation by using Invitation ID, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/invitation:Invitation main i-gxxn1\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"acceptedAt":{"type":"string","description":"(Optional String) The timestamp that the invitation was accepted.\n"},"allowDeletion":{"type":"boolean","description":"Boolean attribute that determines whether accepted invitations can be deleted from the Terraform state file. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. See issue #263 for more context.\n"},"authType":{"type":"string","description":"Accepted values are: `AUTH_TYPE_LOCAL` and `AUTH_TYPE_SSO`. The user/invitee's authentication type. Note that only the [`OrganizationAdmin role`](https://docs.confluent.io/cloud/current/access-management/access-control/cloud-rbac.html#organizationadmin) can invite `AUTH_TYPE_LOCAL` users to SSO organizations. The user's\u003cspan pulumi-lang-nodejs=\" authType \" pulumi-lang-dotnet=\" AuthType \" pulumi-lang-go=\" authType \" pulumi-lang-python=\" auth_type \" pulumi-lang-yaml=\" authType \" pulumi-lang-java=\" authType \"\u003e auth_type \u003c/span\u003eis set as `AUTH_TYPE_SSO` by default if the organization has SSO enabled. Otherwise, the user's\u003cspan pulumi-lang-nodejs=\" authType \" pulumi-lang-dotnet=\" AuthType \" pulumi-lang-go=\" authType \" pulumi-lang-python=\" auth_type \" pulumi-lang-yaml=\" authType \" pulumi-lang-java=\" authType \"\u003e auth_type \u003c/span\u003eis `AUTH_TYPE_LOCAL` by default.\n"},"creators":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/InvitationCreator:InvitationCreator"},"description":"(Required Configuration Block) supports the following:\n"},"email":{"type":"string","description":"The user/invitee's email address.\n"},"expiresAt":{"type":"string","description":"(Optional String) The timestamp that the invitation will expire.\n"},"status":{"type":"string","description":"(Optional String) The status of invitations. Accepted values are: `INVITE_STATUS_SENT`,`INVITE_STATUS_STAGED`,`INVITE_STATUS_ACCEPTED`,`INVITE_STATUS_EXPIRED`, and `INVITE_STATUS_DEACTIVATED`.\n"},"users":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/InvitationUser:InvitationUser"},"description":"(Required Configuration Block) supports the following:\n"}},"required":["acceptedAt","authType","creators","email","expiresAt","status","users"],"inputProperties":{"allowDeletion":{"type":"boolean","description":"Boolean attribute that determines whether accepted invitations can be deleted from the Terraform state file. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. See issue #263 for more context.\n"},"authType":{"type":"string","description":"Accepted values are: `AUTH_TYPE_LOCAL` and `AUTH_TYPE_SSO`. The user/invitee's authentication type. Note that only the [`OrganizationAdmin role`](https://docs.confluent.io/cloud/current/access-management/access-control/cloud-rbac.html#organizationadmin) can invite `AUTH_TYPE_LOCAL` users to SSO organizations. The user's\u003cspan pulumi-lang-nodejs=\" authType \" pulumi-lang-dotnet=\" AuthType \" pulumi-lang-go=\" authType \" pulumi-lang-python=\" auth_type \" pulumi-lang-yaml=\" authType \" pulumi-lang-java=\" authType \"\u003e auth_type \u003c/span\u003eis set as `AUTH_TYPE_SSO` by default if the organization has SSO enabled. Otherwise, the user's\u003cspan pulumi-lang-nodejs=\" authType \" pulumi-lang-dotnet=\" AuthType \" pulumi-lang-go=\" authType \" pulumi-lang-python=\" auth_type \" pulumi-lang-yaml=\" authType \" pulumi-lang-java=\" authType \"\u003e auth_type \u003c/span\u003eis `AUTH_TYPE_LOCAL` by default.\n"},"email":{"type":"string","description":"The user/invitee's email address.\n","willReplaceOnChanges":true}},"requiredInputs":["email"],"stateInputs":{"description":"Input properties used for looking up and filtering Invitation resources.\n","properties":{"acceptedAt":{"type":"string","description":"(Optional String) The timestamp that the invitation was accepted.\n"},"allowDeletion":{"type":"boolean","description":"Boolean attribute that determines whether accepted invitations can be deleted from the Terraform state file. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. See issue #263 for more context.\n"},"authType":{"type":"string","description":"Accepted values are: `AUTH_TYPE_LOCAL` and `AUTH_TYPE_SSO`. The user/invitee's authentication type. Note that only the [`OrganizationAdmin role`](https://docs.confluent.io/cloud/current/access-management/access-control/cloud-rbac.html#organizationadmin) can invite `AUTH_TYPE_LOCAL` users to SSO organizations. The user's\u003cspan pulumi-lang-nodejs=\" authType \" pulumi-lang-dotnet=\" AuthType \" pulumi-lang-go=\" authType \" pulumi-lang-python=\" auth_type \" pulumi-lang-yaml=\" authType \" pulumi-lang-java=\" authType \"\u003e auth_type \u003c/span\u003eis set as `AUTH_TYPE_SSO` by default if the organization has SSO enabled. Otherwise, the user's\u003cspan pulumi-lang-nodejs=\" authType \" pulumi-lang-dotnet=\" AuthType \" pulumi-lang-go=\" authType \" pulumi-lang-python=\" auth_type \" pulumi-lang-yaml=\" authType \" pulumi-lang-java=\" authType \"\u003e auth_type \u003c/span\u003eis `AUTH_TYPE_LOCAL` by default.\n"},"creators":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/InvitationCreator:InvitationCreator"},"description":"(Required Configuration Block) supports the following:\n"},"email":{"type":"string","description":"The user/invitee's email address.\n","willReplaceOnChanges":true},"expiresAt":{"type":"string","description":"(Optional String) The timestamp that the invitation will expire.\n"},"status":{"type":"string","description":"(Optional String) The status of invitations. Accepted values are: `INVITE_STATUS_SENT`,`INVITE_STATUS_STAGED`,`INVITE_STATUS_ACCEPTED`,`INVITE_STATUS_EXPIRED`, and `INVITE_STATUS_DEACTIVATED`.\n"},"users":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/InvitationUser:InvitationUser"},"description":"(Required Configuration Block) supports the following:\n"}},"type":"object"}},"confluentcloud:index/ipFilter:IpFilter":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.IpFilter`\" pulumi-lang-dotnet=\"`confluentcloud.IpFilter`\" pulumi-lang-go=\"`IpFilter`\" pulumi-lang-python=\"`IpFilter`\" pulumi-lang-yaml=\"`confluentcloud.IpFilter`\" pulumi-lang-java=\"`confluentcloud.IpFilter`\"\u003e`confluentcloud.IpFilter`\u003c/span\u003e provides an IP Filter resource that enables creating, editing, and deleting IP Filters on Confluent Cloud.\n\n\u003e **Note:** See [IP Filtering on Confluent Cloud](https://docs.confluent.io/cloud/current/security/access-control/ip-filtering/overview.html) for more details about the IP Filtering feature, its prerequisites, and its limitations.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst management_filter = new confluentcloud.IpFilter(\"management-filter\", {\n    filterName: \"Management API Rules\",\n    resourceGroup: \"management\",\n    ipGroups: [example.id],\n});\nconst multiple_filter = new confluentcloud.IpFilter(\"multiple-filter\", {\n    filterName: \"Management, Schema, Flink API Rules\",\n    resourceGroup: \"multiple\",\n    operationGroups: [\n        \"MANAGEMENT\",\n        \"SCHEMA\",\n        \"FLINK\",\n    ],\n    ipGroups: [example.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmanagement_filter = confluentcloud.IpFilter(\"management-filter\",\n    filter_name=\"Management API Rules\",\n    resource_group=\"management\",\n    ip_groups=[example[\"id\"]])\nmultiple_filter = confluentcloud.IpFilter(\"multiple-filter\",\n    filter_name=\"Management, Schema, Flink API Rules\",\n    resource_group=\"multiple\",\n    operation_groups=[\n        \"MANAGEMENT\",\n        \"SCHEMA\",\n        \"FLINK\",\n    ],\n    ip_groups=[example[\"id\"]])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var management_filter = new ConfluentCloud.IpFilter(\"management-filter\", new()\n    {\n        FilterName = \"Management API Rules\",\n        ResourceGroup = \"management\",\n        IpGroups = new[]\n        {\n            example.Id,\n        },\n    });\n\n    var multiple_filter = new ConfluentCloud.IpFilter(\"multiple-filter\", new()\n    {\n        FilterName = \"Management, Schema, Flink API Rules\",\n        ResourceGroup = \"multiple\",\n        OperationGroups = new[]\n        {\n            \"MANAGEMENT\",\n            \"SCHEMA\",\n            \"FLINK\",\n        },\n        IpGroups = new[]\n        {\n            example.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewIpFilter(ctx, \"management-filter\", \u0026confluentcloud.IpFilterArgs{\n\t\t\tFilterName:    pulumi.String(\"Management API Rules\"),\n\t\t\tResourceGroup: pulumi.String(\"management\"),\n\t\t\tIpGroups: pulumi.StringArray{\n\t\t\t\texample.Id,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewIpFilter(ctx, \"multiple-filter\", \u0026confluentcloud.IpFilterArgs{\n\t\t\tFilterName:    pulumi.String(\"Management, Schema, Flink API Rules\"),\n\t\t\tResourceGroup: pulumi.String(\"multiple\"),\n\t\t\tOperationGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"MANAGEMENT\"),\n\t\t\t\tpulumi.String(\"SCHEMA\"),\n\t\t\t\tpulumi.String(\"FLINK\"),\n\t\t\t},\n\t\t\tIpGroups: pulumi.StringArray{\n\t\t\t\texample.Id,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.IpFilter;\nimport com.pulumi.confluentcloud.IpFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var management_filter = new IpFilter(\"management-filter\", IpFilterArgs.builder()\n            .filterName(\"Management API Rules\")\n            .resourceGroup(\"management\")\n            .ipGroups(example.id())\n            .build());\n\n        var multiple_filter = new IpFilter(\"multiple-filter\", IpFilterArgs.builder()\n            .filterName(\"Management, Schema, Flink API Rules\")\n            .resourceGroup(\"multiple\")\n            .operationGroups(            \n                \"MANAGEMENT\",\n                \"SCHEMA\",\n                \"FLINK\")\n            .ipGroups(example.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  management-filter:\n    type: confluentcloud:IpFilter\n    properties:\n      filterName: Management API Rules\n      resourceGroup: management\n      ipGroups:\n        - ${example.id}\n  multiple-filter:\n    type: confluentcloud:IpFilter\n    properties:\n      filterName: Management, Schema, Flink API Rules\n      resourceGroup: multiple\n      operationGroups:\n        - MANAGEMENT\n        - SCHEMA\n        - FLINK\n      ipGroups:\n        - ${example.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing an IP Filter.\n\nYou can import an IP Filter by using IP Filter ID, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/ipFilter:IpFilter example ipf-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"filterName":{"type":"string","description":"A human-readable name for an IP Filter. Can contain any unicode letter or number, the ASCII space character, or any of the following special characters: `[`, `]`, `|`, `\u0026`, `+`, `-`, `_`, `/`, `.`, `,`.\n"},"ipGroups":{"type":"array","items":{"type":"string"},"description":"A list of IP Groups.\n"},"operationGroups":{"type":"array","items":{"type":"string"},"description":"Scope of resources covered by this IP Filter. Resource group must be set to 'multiple' in order to use this property. During update operations, note that the operation groups passed in will replace the list of existing operation groups (passing in an empty list will remove all operation groups) from the filter (in line with the behavior for \u003cspan pulumi-lang-nodejs=\"`ipGroups`\" pulumi-lang-dotnet=\"`IpGroups`\" pulumi-lang-go=\"`ipGroups`\" pulumi-lang-python=\"`ip_groups`\" pulumi-lang-yaml=\"`ipGroups`\" pulumi-lang-java=\"`ipGroups`\"\u003e`ip_groups`\u003c/span\u003e attribute).\n"},"resourceGroup":{"type":"string","description":"Scope of resources covered by this IP Filter. Available resource groups include `\"management\"` and `\"multiple\"`.\n"},"resourceScope":{"type":"string","description":"A CRN that specifies the scope of the IP Filter, specifically the organization or environment. Without specifying this property, the IP Filter would apply to the whole organization. For example, `\"crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa\"` or `data.confluent_organization.resource_name`.\n"}},"required":["filterName","ipGroups","operationGroups","resourceGroup","resourceScope"],"inputProperties":{"filterName":{"type":"string","description":"A human-readable name for an IP Filter. Can contain any unicode letter or number, the ASCII space character, or any of the following special characters: `[`, `]`, `|`, `\u0026`, `+`, `-`, `_`, `/`, `.`, `,`.\n"},"ipGroups":{"type":"array","items":{"type":"string"},"description":"A list of IP Groups.\n"},"operationGroups":{"type":"array","items":{"type":"string"},"description":"Scope of resources covered by this IP Filter. Resource group must be set to 'multiple' in order to use this property. During update operations, note that the operation groups passed in will replace the list of existing operation groups (passing in an empty list will remove all operation groups) from the filter (in line with the behavior for \u003cspan pulumi-lang-nodejs=\"`ipGroups`\" pulumi-lang-dotnet=\"`IpGroups`\" pulumi-lang-go=\"`ipGroups`\" pulumi-lang-python=\"`ip_groups`\" pulumi-lang-yaml=\"`ipGroups`\" pulumi-lang-java=\"`ipGroups`\"\u003e`ip_groups`\u003c/span\u003e attribute).\n"},"resourceGroup":{"type":"string","description":"Scope of resources covered by this IP Filter. Available resource groups include `\"management\"` and `\"multiple\"`.\n"},"resourceScope":{"type":"string","description":"A CRN that specifies the scope of the IP Filter, specifically the organization or environment. Without specifying this property, the IP Filter would apply to the whole organization. For example, `\"crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa\"` or `data.confluent_organization.resource_name`.\n"}},"requiredInputs":["filterName","ipGroups","resourceGroup"],"stateInputs":{"description":"Input properties used for looking up and filtering IpFilter resources.\n","properties":{"filterName":{"type":"string","description":"A human-readable name for an IP Filter. Can contain any unicode letter or number, the ASCII space character, or any of the following special characters: `[`, `]`, `|`, `\u0026`, `+`, `-`, `_`, `/`, `.`, `,`.\n"},"ipGroups":{"type":"array","items":{"type":"string"},"description":"A list of IP Groups.\n"},"operationGroups":{"type":"array","items":{"type":"string"},"description":"Scope of resources covered by this IP Filter. Resource group must be set to 'multiple' in order to use this property. During update operations, note that the operation groups passed in will replace the list of existing operation groups (passing in an empty list will remove all operation groups) from the filter (in line with the behavior for \u003cspan pulumi-lang-nodejs=\"`ipGroups`\" pulumi-lang-dotnet=\"`IpGroups`\" pulumi-lang-go=\"`ipGroups`\" pulumi-lang-python=\"`ip_groups`\" pulumi-lang-yaml=\"`ipGroups`\" pulumi-lang-java=\"`ipGroups`\"\u003e`ip_groups`\u003c/span\u003e attribute).\n"},"resourceGroup":{"type":"string","description":"Scope of resources covered by this IP Filter. Available resource groups include `\"management\"` and `\"multiple\"`.\n"},"resourceScope":{"type":"string","description":"A CRN that specifies the scope of the IP Filter, specifically the organization or environment. Without specifying this property, the IP Filter would apply to the whole organization. For example, `\"crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa\"` or `data.confluent_organization.resource_name`.\n"}},"type":"object"}},"confluentcloud:index/ipGroup:IpGroup":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.IpGroup`\" pulumi-lang-dotnet=\"`confluentcloud.IpGroup`\" pulumi-lang-go=\"`IpGroup`\" pulumi-lang-python=\"`IpGroup`\" pulumi-lang-yaml=\"`confluentcloud.IpGroup`\" pulumi-lang-java=\"`confluentcloud.IpGroup`\"\u003e`confluentcloud.IpGroup`\u003c/span\u003e provides an IP Group resource that enables creating, editing, and deleting IP Groups on Confluent Cloud.\n\n\u003e **Note:** See [IP Filtering on Confluent Cloud](https://docs.confluent.io/cloud/current/security/access-control/ip-filtering/overview.html) for more details about the IP Filtering feature, its prerequisites, and its limitations.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.IpGroup(\"example\", {\n    groupName: \"CorpNet\",\n    cidrBlocks: [\n        \"192.168.0.0/24\",\n        \"192.168.7.0/24\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.IpGroup(\"example\",\n    group_name=\"CorpNet\",\n    cidr_blocks=[\n        \"192.168.0.0/24\",\n        \"192.168.7.0/24\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.IpGroup(\"example\", new()\n    {\n        GroupName = \"CorpNet\",\n        CidrBlocks = new[]\n        {\n            \"192.168.0.0/24\",\n            \"192.168.7.0/24\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewIpGroup(ctx, \"example\", \u0026confluentcloud.IpGroupArgs{\n\t\t\tGroupName: pulumi.String(\"CorpNet\"),\n\t\t\tCidrBlocks: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.0.0/24\"),\n\t\t\t\tpulumi.String(\"192.168.7.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.IpGroup;\nimport com.pulumi.confluentcloud.IpGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new IpGroup(\"example\", IpGroupArgs.builder()\n            .groupName(\"CorpNet\")\n            .cidrBlocks(            \n                \"192.168.0.0/24\",\n                \"192.168.7.0/24\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:IpGroup\n    properties:\n      groupName: CorpNet\n      cidrBlocks:\n        - 192.168.0.0/24\n        - 192.168.7.0/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing an IP Group.\n\nYou can import an IP Group by using IP Group ID, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/ipGroup:IpGroup example ipg-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"cidrBlocks":{"type":"array","items":{"type":"string"},"description":"A list of CIDRs.\n"},"groupName":{"type":"string","description":"A human-readable name for an IP Group. Can contain any unicode letter or number, the ASCII space character, or any of the following special characters: `[`, `]`, `|`, `\u0026`, `+`, `-`, `_`, `/`, `.`, `,`.\n"}},"required":["cidrBlocks","groupName"],"inputProperties":{"cidrBlocks":{"type":"array","items":{"type":"string"},"description":"A list of CIDRs.\n"},"groupName":{"type":"string","description":"A human-readable name for an IP Group. Can contain any unicode letter or number, the ASCII space character, or any of the following special characters: `[`, `]`, `|`, `\u0026`, `+`, `-`, `_`, `/`, `.`, `,`.\n"}},"requiredInputs":["cidrBlocks","groupName"],"stateInputs":{"description":"Input properties used for looking up and filtering IpGroup resources.\n","properties":{"cidrBlocks":{"type":"array","items":{"type":"string"},"description":"A list of CIDRs.\n"},"groupName":{"type":"string","description":"A human-readable name for an IP Group. Can contain any unicode letter or number, the ASCII space character, or any of the following special characters: `[`, `]`, `|`, `\u0026`, `+`, `-`, `_`, `/`, `.`, `,`.\n"}},"type":"object"}},"confluentcloud:index/kafkaAcl:KafkaAcl":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaAcl`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaAcl`\" pulumi-lang-go=\"`KafkaAcl`\" pulumi-lang-python=\"`KafkaAcl`\" pulumi-lang-yaml=\"`confluentcloud.KafkaAcl`\" pulumi-lang-java=\"`confluentcloud.KafkaAcl`\"\u003e`confluentcloud.KafkaAcl`\u003c/span\u003e provides a Kafka ACL resource that enables creating and deleting Kafka ACLs on Confluent Cloud.\n\n## Example Usage\n\n### Option #1: Manage multiple Kafka clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst describe_basic_cluster = new confluentcloud.KafkaAcl(\"describe-basic-cluster\", {\n    kafkaCluster: {\n        id: basic_cluster.id,\n    },\n    resourceType: \"CLUSTER\",\n    resourceName: \"kafka-cluster\",\n    patternType: \"LITERAL\",\n    principal: \"User:sa-xyz123\",\n    host: \"*\",\n    operation: \"DESCRIBE\",\n    permission: \"ALLOW\",\n    restEndpoint: basic_cluster.restEndpoint,\n    credentials: {\n        key: app_manager_kafka_api_key.id,\n        secret: app_manager_kafka_api_key.secret,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndescribe_basic_cluster = confluentcloud.KafkaAcl(\"describe-basic-cluster\",\n    kafka_cluster={\n        \"id\": basic_cluster[\"id\"],\n    },\n    resource_type=\"CLUSTER\",\n    resource_name_=\"kafka-cluster\",\n    pattern_type=\"LITERAL\",\n    principal=\"User:sa-xyz123\",\n    host=\"*\",\n    operation=\"DESCRIBE\",\n    permission=\"ALLOW\",\n    rest_endpoint=basic_cluster[\"restEndpoint\"],\n    credentials={\n        \"key\": app_manager_kafka_api_key[\"id\"],\n        \"secret\": app_manager_kafka_api_key[\"secret\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var describe_basic_cluster = new ConfluentCloud.KafkaAcl(\"describe-basic-cluster\", new()\n    {\n        KafkaCluster = new ConfluentCloud.Inputs.KafkaAclKafkaClusterArgs\n        {\n            Id = basic_cluster.Id,\n        },\n        ResourceType = \"CLUSTER\",\n        ResourceName = \"kafka-cluster\",\n        PatternType = \"LITERAL\",\n        Principal = \"User:sa-xyz123\",\n        Host = \"*\",\n        Operation = \"DESCRIBE\",\n        Permission = \"ALLOW\",\n        RestEndpoint = basic_cluster.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.KafkaAclCredentialsArgs\n        {\n            Key = app_manager_kafka_api_key.Id,\n            Secret = app_manager_kafka_api_key.Secret,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewKafkaAcl(ctx, \"describe-basic-cluster\", \u0026confluentcloud.KafkaAclArgs{\n\t\t\tKafkaCluster: \u0026confluentcloud.KafkaAclKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(basic_cluster.Id),\n\t\t\t},\n\t\t\tResourceType: pulumi.String(\"CLUSTER\"),\n\t\t\tResourceName: pulumi.String(\"kafka-cluster\"),\n\t\t\tPatternType:  pulumi.String(\"LITERAL\"),\n\t\t\tPrincipal:    pulumi.String(\"User:sa-xyz123\"),\n\t\t\tHost:         pulumi.String(\"*\"),\n\t\t\tOperation:    pulumi.String(\"DESCRIBE\"),\n\t\t\tPermission:   pulumi.String(\"ALLOW\"),\n\t\t\tRestEndpoint: pulumi.Any(basic_cluster.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.KafkaAclCredentialsArgs{\n\t\t\t\tKey:    pulumi.Any(app_manager_kafka_api_key.Id),\n\t\t\t\tSecret: pulumi.Any(app_manager_kafka_api_key.Secret),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.KafkaAcl;\nimport com.pulumi.confluentcloud.KafkaAclArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaAclKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaAclCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var describe_basic_cluster = new KafkaAcl(\"describe-basic-cluster\", KafkaAclArgs.builder()\n            .kafkaCluster(KafkaAclKafkaClusterArgs.builder()\n                .id(basic_cluster.id())\n                .build())\n            .resourceType(\"CLUSTER\")\n            .resourceName(\"kafka-cluster\")\n            .patternType(\"LITERAL\")\n            .principal(\"User:sa-xyz123\")\n            .host(\"*\")\n            .operation(\"DESCRIBE\")\n            .permission(\"ALLOW\")\n            .restEndpoint(basic_cluster.restEndpoint())\n            .credentials(KafkaAclCredentialsArgs.builder()\n                .key(app_manager_kafka_api_key.id())\n                .secret(app_manager_kafka_api_key.secret())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  describe-basic-cluster:\n    type: confluentcloud:KafkaAcl\n    properties:\n      kafkaCluster:\n        id: ${[\"basic-cluster\"].id}\n      resourceType: CLUSTER\n      resourceName: kafka-cluster\n      patternType: LITERAL\n      principal: User:sa-xyz123\n      host: '*'\n      operation: DESCRIBE\n      permission: ALLOW\n      restEndpoint: ${[\"basic-cluster\"].restEndpoint}\n      credentials:\n        key: ${[\"app-manager-kafka-api-key\"].id}\n        secret: ${[\"app-manager-kafka-api-key\"].secret}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Kafka cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst describe_basic_cluster = new confluentcloud.KafkaAcl(\"describe-basic-cluster\", {\n    resourceType: \"CLUSTER\",\n    resourceName: \"kafka-cluster\",\n    patternType: \"LITERAL\",\n    principal: \"User:sa-xyz123\",\n    host: \"*\",\n    operation: \"DESCRIBE\",\n    permission: \"ALLOW\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndescribe_basic_cluster = confluentcloud.KafkaAcl(\"describe-basic-cluster\",\n    resource_type=\"CLUSTER\",\n    resource_name_=\"kafka-cluster\",\n    pattern_type=\"LITERAL\",\n    principal=\"User:sa-xyz123\",\n    host=\"*\",\n    operation=\"DESCRIBE\",\n    permission=\"ALLOW\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var describe_basic_cluster = new ConfluentCloud.KafkaAcl(\"describe-basic-cluster\", new()\n    {\n        ResourceType = \"CLUSTER\",\n        ResourceName = \"kafka-cluster\",\n        PatternType = \"LITERAL\",\n        Principal = \"User:sa-xyz123\",\n        Host = \"*\",\n        Operation = \"DESCRIBE\",\n        Permission = \"ALLOW\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewKafkaAcl(ctx, \"describe-basic-cluster\", \u0026confluentcloud.KafkaAclArgs{\n\t\t\tResourceType: pulumi.String(\"CLUSTER\"),\n\t\t\tResourceName: pulumi.String(\"kafka-cluster\"),\n\t\t\tPatternType:  pulumi.String(\"LITERAL\"),\n\t\t\tPrincipal:    pulumi.String(\"User:sa-xyz123\"),\n\t\t\tHost:         pulumi.String(\"*\"),\n\t\t\tOperation:    pulumi.String(\"DESCRIBE\"),\n\t\t\tPermission:   pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.KafkaAcl;\nimport com.pulumi.confluentcloud.KafkaAclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var describe_basic_cluster = new KafkaAcl(\"describe-basic-cluster\", KafkaAclArgs.builder()\n            .resourceType(\"CLUSTER\")\n            .resourceName(\"kafka-cluster\")\n            .patternType(\"LITERAL\")\n            .principal(\"User:sa-xyz123\")\n            .host(\"*\")\n            .operation(\"DESCRIBE\")\n            .permission(\"ALLOW\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  describe-basic-cluster:\n    type: confluentcloud:KafkaAcl\n    properties:\n      resourceType: CLUSTER\n      resourceName: kafka-cluster\n      patternType: LITERAL\n      principal: User:sa-xyz123\n      host: '*'\n      operation: DESCRIBE\n      permission: ALLOW\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaAcl`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaAcl`\" pulumi-lang-go=\"`KafkaAcl`\" pulumi-lang-python=\"`KafkaAcl`\" pulumi-lang-yaml=\"`confluentcloud.KafkaAcl`\" pulumi-lang-java=\"`confluentcloud.KafkaAcl`\"\u003e`confluentcloud.KafkaAcl`\u003c/span\u003e resource:\n  * basic-kafka-acls: _Basic_ Kafka cluster with authorization using ACLs\n  * basic-kafka-acls-with-alias: _Basic_ Kafka cluster with authorization using ACLs\n  * standard-kafka-acls: _Standard_ Kafka cluster with authorization using ACLs\n  * dedicated-public-kafka-acls: _Dedicated_ Kafka cluster that is accessible over the public internet with authorization using ACLs\n  * dedicated-privatelink-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-privatelink-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using RBAC\n  * dedicated-vnet-peering-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-transit-gateway-attachment-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using ACLs\n  * dedicated-transit-gateway-attachment-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using RBAC\n  * enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n\n## Other Example Usages\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\n// https://github.com/confluentinc/terraform-provider-confluent/issues/241\nconst app_producer_write_on_topic = new confluentcloud.KafkaAcl(\"app-producer-write-on-topic\", {\n    resourceType: \"TOPIC\",\n    resourceName: orders.topicName,\n    patternType: \"LITERAL\",\n    principal: `User:${_this.id}`,\n    host: \"*\",\n    operation: \"WRITE\",\n    permission: \"ALLOW\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\n# https://github.com/confluentinc/terraform-provider-confluent/issues/241\napp_producer_write_on_topic = confluentcloud.KafkaAcl(\"app-producer-write-on-topic\",\n    resource_type=\"TOPIC\",\n    resource_name_=orders[\"topicName\"],\n    pattern_type=\"LITERAL\",\n    principal=f\"User:{this['id']}\",\n    host=\"*\",\n    operation=\"WRITE\",\n    permission=\"ALLOW\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // https://github.com/confluentinc/terraform-provider-confluent/issues/241\n    var app_producer_write_on_topic = new ConfluentCloud.KafkaAcl(\"app-producer-write-on-topic\", new()\n    {\n        ResourceType = \"TOPIC\",\n        ResourceName = orders.TopicName,\n        PatternType = \"LITERAL\",\n        Principal = $\"User:{@this.Id}\",\n        Host = \"*\",\n        Operation = \"WRITE\",\n        Permission = \"ALLOW\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// https://github.com/confluentinc/terraform-provider-confluent/issues/241\n\t\t_, err := confluentcloud.NewKafkaAcl(ctx, \"app-producer-write-on-topic\", \u0026confluentcloud.KafkaAclArgs{\n\t\t\tResourceType: pulumi.String(\"TOPIC\"),\n\t\t\tResourceName: pulumi.Any(orders.TopicName),\n\t\t\tPatternType:  pulumi.String(\"LITERAL\"),\n\t\t\tPrincipal:    pulumi.Sprintf(\"User:%v\", this.Id),\n\t\t\tHost:         pulumi.String(\"*\"),\n\t\t\tOperation:    pulumi.String(\"WRITE\"),\n\t\t\tPermission:   pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.KafkaAcl;\nimport com.pulumi.confluentcloud.KafkaAclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // https://github.com/confluentinc/terraform-provider-confluent/issues/241\n        var app_producer_write_on_topic = new KafkaAcl(\"app-producer-write-on-topic\", KafkaAclArgs.builder()\n            .resourceType(\"TOPIC\")\n            .resourceName(orders.topicName())\n            .patternType(\"LITERAL\")\n            .principal(String.format(\"User:%s\", this_.id()))\n            .host(\"*\")\n            .operation(\"WRITE\")\n            .permission(\"ALLOW\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # https://github.com/confluentinc/terraform-provider-confluent/issues/241\n  app-producer-write-on-topic:\n    type: confluentcloud:KafkaAcl\n    properties:\n      resourceType: TOPIC\n      resourceName: ${orders.topicName}\n      patternType: LITERAL\n      principal: User:${this.id}\n      host: '*'\n      operation: WRITE\n      permission: ALLOW\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import Kafka ACLs by using the Kafka cluster ID and attributes of \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaAcl`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaAcl`\" pulumi-lang-go=\"`KafkaAcl`\" pulumi-lang-python=\"`KafkaAcl`\" pulumi-lang-yaml=\"`confluentcloud.KafkaAcl`\" pulumi-lang-java=\"`confluentcloud.KafkaAcl`\"\u003e`confluentcloud.KafkaAcl`\u003c/span\u003e resource in the format `\u003cKafka cluster ID\u003e/\u003cKafka ACL resource type\u003e#\u003cKafka ACL resource name\u003e#\u003cKafka ACL pattern type\u003e#\u003cKafka ACL principal\u003e#\u003cKafka ACL host\u003e#\u003cKafka ACL operation\u003e#\u003cKafka ACL permission\u003e`, for example:\n\nOption #1: Manage multiple Kafka clusters in the same Pulumi Stack\n\n```sh\n$ export IMPORT_KAFKA_API_KEY=\"\u003ckafka_api_key\u003e\"\n$ export IMPORT_KAFKA_API_SECRET=\"\u003ckafka_api_secret\u003e\"\n$ export IMPORT_KAFKA_REST_ENDPOINT=\"\u003ckafka_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/kafkaAcl:KafkaAcl describe-cluster \"lkc-12345/CLUSTER#kafka-cluster#LITERAL#User:sa-xyz123#*#DESCRIBE#ALLOW\"\n```\n\nOption #2: Manage a single Kafka cluster in the same Pulumi Stack\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/kafkaAcl:KafkaAcl describe-cluster \"lkc-12345/CLUSTER#kafka-cluster#LITERAL#User:sa-xyz123#*#DESCRIBE#ALLOW\"\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/KafkaAclCredentials:KafkaAclCredentials","description":"The Cluster API Credentials.","secret":true},"host":{"type":"string","description":"The host for the ACL. Should be set to `*` for Confluent Cloud.\n\n\u003e **Note:** A Kafka API key consists of a key and a secret. Kafka API keys are required to interact with Kafka clusters in Confluent Cloud. Each Kafka API key is valid for one specific Kafka cluster.\n\n\u003e **Note:** You must set the \u003cspan pulumi-lang-nodejs=\"`cloudApiKey`\" pulumi-lang-dotnet=\"`CloudApiKey`\" pulumi-lang-go=\"`cloudApiKey`\" pulumi-lang-python=\"`cloud_api_key`\" pulumi-lang-yaml=\"`cloudApiKey`\" pulumi-lang-java=\"`cloudApiKey`\"\u003e`cloud_api_key`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`cloudApiSecret`\" pulumi-lang-dotnet=\"`CloudApiSecret`\" pulumi-lang-go=\"`cloudApiSecret`\" pulumi-lang-python=\"`cloud_api_secret`\" pulumi-lang-yaml=\"`cloudApiSecret`\" pulumi-lang-java=\"`cloudApiSecret`\"\u003e`cloud_api_secret`\u003c/span\u003e provider arguments temporarily when you interact with the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaAcl`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaAcl`\" pulumi-lang-go=\"`KafkaAcl`\" pulumi-lang-python=\"`KafkaAcl`\" pulumi-lang-yaml=\"`confluentcloud.KafkaAcl`\" pulumi-lang-java=\"`confluentcloud.KafkaAcl`\"\u003e`confluentcloud.KafkaAcl`\u003c/span\u003e resource, because of some implementation details, otherwise you will see `Error: 401 Unauthorized` error.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Kafka API key, create a new Kafka API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Kafka API key, run `pulumi up -target=\"confluent_kafka_acl.describe-basic-cluster\"`, and remove the old Kafka API key. Alternatively, in case the old Kafka API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_kafka_acl.describe-basic-cluster\" -out=rotate-kafka-api-key` and `pulumi up rotate-kafka-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaAcl`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaAcl`\" pulumi-lang-go=\"`KafkaAcl`\" pulumi-lang-python=\"`KafkaAcl`\" pulumi-lang-yaml=\"`confluentcloud.KafkaAcl`\" pulumi-lang-java=\"`confluentcloud.KafkaAcl`\"\u003e`confluentcloud.KafkaAcl`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaAclKafkaCluster:KafkaAclKafkaCluster"},"operation":{"type":"string","description":"The operation type for the ACL. Accepted values are: `ALL`, `READ`, `WRITE`, `CREATE`, `DELETE`, `ALTER`, `DESCRIBE`, `CLUSTER_ACTION`, `DESCRIBE_CONFIGS`, `ALTER_CONFIGS`, and `IDEMPOTENT_WRITE`.  See [Authorization using ACLs](https://docs.confluent.io/platform/current/kafka/authorization.html#operations) to find mappings of `(resource_type, operation)` to one or more Kafka APIs or request types.\n"},"patternType":{"type":"string","description":"The pattern type for the ACL. Accepted values are: `LITERAL` and `PREFIXED`.\n"},"permission":{"type":"string","description":"The permission for the ACL. Accepted values are: `DENY` and `ALLOW`.\n"},"principal":{"type":"string","description":"The principal for the ACL.\n"},"resourceName":{"type":"string","description":"The resource name for the ACL. Must be `kafka-cluster` if \u003cspan pulumi-lang-nodejs=\"`resourceType`\" pulumi-lang-dotnet=\"`ResourceType`\" pulumi-lang-go=\"`resourceType`\" pulumi-lang-python=\"`resource_type`\" pulumi-lang-yaml=\"`resourceType`\" pulumi-lang-java=\"`resourceType`\"\u003e`resource_type`\u003c/span\u003e equals to `CLUSTER`.\n"},"resourceType":{"type":"string","description":"The type of the resource. Accepted values are: `TOPIC`, `GROUP`, `CLUSTER`, `TRANSACTIONAL_ID`, `DELEGATION_TOKEN`. See [Authorization using ACLs](https://docs.confluent.io/platform/current/kafka/authorization.html#operations) to find definitions of resource types and mappings of `(resource_type, operation)` to one or more Kafka APIs or request types.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`.\n"}},"required":["host","operation","patternType","permission","principal","resourceName","resourceType"],"inputProperties":{"credentials":{"$ref":"#/types/confluentcloud:index/KafkaAclCredentials:KafkaAclCredentials","description":"The Cluster API Credentials.","secret":true},"host":{"type":"string","description":"The host for the ACL. Should be set to `*` for Confluent Cloud.\n\n\u003e **Note:** A Kafka API key consists of a key and a secret. Kafka API keys are required to interact with Kafka clusters in Confluent Cloud. Each Kafka API key is valid for one specific Kafka cluster.\n\n\u003e **Note:** You must set the \u003cspan pulumi-lang-nodejs=\"`cloudApiKey`\" pulumi-lang-dotnet=\"`CloudApiKey`\" pulumi-lang-go=\"`cloudApiKey`\" pulumi-lang-python=\"`cloud_api_key`\" pulumi-lang-yaml=\"`cloudApiKey`\" pulumi-lang-java=\"`cloudApiKey`\"\u003e`cloud_api_key`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`cloudApiSecret`\" pulumi-lang-dotnet=\"`CloudApiSecret`\" pulumi-lang-go=\"`cloudApiSecret`\" pulumi-lang-python=\"`cloud_api_secret`\" pulumi-lang-yaml=\"`cloudApiSecret`\" pulumi-lang-java=\"`cloudApiSecret`\"\u003e`cloud_api_secret`\u003c/span\u003e provider arguments temporarily when you interact with the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaAcl`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaAcl`\" pulumi-lang-go=\"`KafkaAcl`\" pulumi-lang-python=\"`KafkaAcl`\" pulumi-lang-yaml=\"`confluentcloud.KafkaAcl`\" pulumi-lang-java=\"`confluentcloud.KafkaAcl`\"\u003e`confluentcloud.KafkaAcl`\u003c/span\u003e resource, because of some implementation details, otherwise you will see `Error: 401 Unauthorized` error.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Kafka API key, create a new Kafka API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Kafka API key, run `pulumi up -target=\"confluent_kafka_acl.describe-basic-cluster\"`, and remove the old Kafka API key. Alternatively, in case the old Kafka API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_kafka_acl.describe-basic-cluster\" -out=rotate-kafka-api-key` and `pulumi up rotate-kafka-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaAcl`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaAcl`\" pulumi-lang-go=\"`KafkaAcl`\" pulumi-lang-python=\"`KafkaAcl`\" pulumi-lang-yaml=\"`confluentcloud.KafkaAcl`\" pulumi-lang-java=\"`confluentcloud.KafkaAcl`\"\u003e`confluentcloud.KafkaAcl`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","willReplaceOnChanges":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaAclKafkaCluster:KafkaAclKafkaCluster","willReplaceOnChanges":true},"operation":{"type":"string","description":"The operation type for the ACL. Accepted values are: `ALL`, `READ`, `WRITE`, `CREATE`, `DELETE`, `ALTER`, `DESCRIBE`, `CLUSTER_ACTION`, `DESCRIBE_CONFIGS`, `ALTER_CONFIGS`, and `IDEMPOTENT_WRITE`.  See [Authorization using ACLs](https://docs.confluent.io/platform/current/kafka/authorization.html#operations) to find mappings of `(resource_type, operation)` to one or more Kafka APIs or request types.\n","willReplaceOnChanges":true},"patternType":{"type":"string","description":"The pattern type for the ACL. Accepted values are: `LITERAL` and `PREFIXED`.\n","willReplaceOnChanges":true},"permission":{"type":"string","description":"The permission for the ACL. Accepted values are: `DENY` and `ALLOW`.\n","willReplaceOnChanges":true},"principal":{"type":"string","description":"The principal for the ACL.\n","willReplaceOnChanges":true},"resourceName":{"type":"string","description":"The resource name for the ACL. Must be `kafka-cluster` if \u003cspan pulumi-lang-nodejs=\"`resourceType`\" pulumi-lang-dotnet=\"`ResourceType`\" pulumi-lang-go=\"`resourceType`\" pulumi-lang-python=\"`resource_type`\" pulumi-lang-yaml=\"`resourceType`\" pulumi-lang-java=\"`resourceType`\"\u003e`resource_type`\u003c/span\u003e equals to `CLUSTER`.\n","willReplaceOnChanges":true},"resourceType":{"type":"string","description":"The type of the resource. Accepted values are: `TOPIC`, `GROUP`, `CLUSTER`, `TRANSACTIONAL_ID`, `DELEGATION_TOKEN`. See [Authorization using ACLs](https://docs.confluent.io/platform/current/kafka/authorization.html#operations) to find definitions of resource types and mappings of `(resource_type, operation)` to one or more Kafka APIs or request types.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`.\n","willReplaceOnChanges":true}},"requiredInputs":["host","operation","patternType","permission","principal","resourceName","resourceType"],"stateInputs":{"description":"Input properties used for looking up and filtering KafkaAcl resources.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/KafkaAclCredentials:KafkaAclCredentials","description":"The Cluster API Credentials.","secret":true},"host":{"type":"string","description":"The host for the ACL. Should be set to `*` for Confluent Cloud.\n\n\u003e **Note:** A Kafka API key consists of a key and a secret. Kafka API keys are required to interact with Kafka clusters in Confluent Cloud. Each Kafka API key is valid for one specific Kafka cluster.\n\n\u003e **Note:** You must set the \u003cspan pulumi-lang-nodejs=\"`cloudApiKey`\" pulumi-lang-dotnet=\"`CloudApiKey`\" pulumi-lang-go=\"`cloudApiKey`\" pulumi-lang-python=\"`cloud_api_key`\" pulumi-lang-yaml=\"`cloudApiKey`\" pulumi-lang-java=\"`cloudApiKey`\"\u003e`cloud_api_key`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`cloudApiSecret`\" pulumi-lang-dotnet=\"`CloudApiSecret`\" pulumi-lang-go=\"`cloudApiSecret`\" pulumi-lang-python=\"`cloud_api_secret`\" pulumi-lang-yaml=\"`cloudApiSecret`\" pulumi-lang-java=\"`cloudApiSecret`\"\u003e`cloud_api_secret`\u003c/span\u003e provider arguments temporarily when you interact with the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaAcl`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaAcl`\" pulumi-lang-go=\"`KafkaAcl`\" pulumi-lang-python=\"`KafkaAcl`\" pulumi-lang-yaml=\"`confluentcloud.KafkaAcl`\" pulumi-lang-java=\"`confluentcloud.KafkaAcl`\"\u003e`confluentcloud.KafkaAcl`\u003c/span\u003e resource, because of some implementation details, otherwise you will see `Error: 401 Unauthorized` error.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Kafka API key, create a new Kafka API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Kafka API key, run `pulumi up -target=\"confluent_kafka_acl.describe-basic-cluster\"`, and remove the old Kafka API key. Alternatively, in case the old Kafka API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_kafka_acl.describe-basic-cluster\" -out=rotate-kafka-api-key` and `pulumi up rotate-kafka-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaAcl`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaAcl`\" pulumi-lang-go=\"`KafkaAcl`\" pulumi-lang-python=\"`KafkaAcl`\" pulumi-lang-yaml=\"`confluentcloud.KafkaAcl`\" pulumi-lang-java=\"`confluentcloud.KafkaAcl`\"\u003e`confluentcloud.KafkaAcl`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n","willReplaceOnChanges":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaAclKafkaCluster:KafkaAclKafkaCluster","willReplaceOnChanges":true},"operation":{"type":"string","description":"The operation type for the ACL. Accepted values are: `ALL`, `READ`, `WRITE`, `CREATE`, `DELETE`, `ALTER`, `DESCRIBE`, `CLUSTER_ACTION`, `DESCRIBE_CONFIGS`, `ALTER_CONFIGS`, and `IDEMPOTENT_WRITE`.  See [Authorization using ACLs](https://docs.confluent.io/platform/current/kafka/authorization.html#operations) to find mappings of `(resource_type, operation)` to one or more Kafka APIs or request types.\n","willReplaceOnChanges":true},"patternType":{"type":"string","description":"The pattern type for the ACL. Accepted values are: `LITERAL` and `PREFIXED`.\n","willReplaceOnChanges":true},"permission":{"type":"string","description":"The permission for the ACL. Accepted values are: `DENY` and `ALLOW`.\n","willReplaceOnChanges":true},"principal":{"type":"string","description":"The principal for the ACL.\n","willReplaceOnChanges":true},"resourceName":{"type":"string","description":"The resource name for the ACL. Must be `kafka-cluster` if \u003cspan pulumi-lang-nodejs=\"`resourceType`\" pulumi-lang-dotnet=\"`ResourceType`\" pulumi-lang-go=\"`resourceType`\" pulumi-lang-python=\"`resource_type`\" pulumi-lang-yaml=\"`resourceType`\" pulumi-lang-java=\"`resourceType`\"\u003e`resource_type`\u003c/span\u003e equals to `CLUSTER`.\n","willReplaceOnChanges":true},"resourceType":{"type":"string","description":"The type of the resource. Accepted values are: `TOPIC`, `GROUP`, `CLUSTER`, `TRANSACTIONAL_ID`, `DELEGATION_TOKEN`. See [Authorization using ACLs](https://docs.confluent.io/platform/current/kafka/authorization.html#operations) to find definitions of resource types and mappings of `(resource_type, operation)` to one or more Kafka APIs or request types.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`.\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/kafkaClientQuota:KafkaClientQuota":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaClientQuota`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaClientQuota`\" pulumi-lang-go=\"`KafkaClientQuota`\" pulumi-lang-python=\"`KafkaClientQuota`\" pulumi-lang-yaml=\"`confluentcloud.KafkaClientQuota`\" pulumi-lang-java=\"`confluentcloud.KafkaClientQuota`\"\u003e`confluentcloud.KafkaClientQuota`\u003c/span\u003e provides a Kafka Client Quota resource that enables creating, editing, and deleting Kafka Client Quotas on Confluent Cloud.\n\n\u003e **Note:** See [Control application usage with Client Quotas](https://docs.confluent.io/cloud/current/clusters/client-quotas.html#control-application-usage-with-client-quotas) for more details.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Kafka Client Quotas deletion. This setting rejects plans that would destroy or recreate the Kafka Client Quota, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.KafkaClientQuota(\"example\", {\n    displayName: \"test-quota\",\n    description: \"Test Quota\",\n    throughput: {\n        ingressByteRate: \"100\",\n        egressByteRate: \"200\",\n    },\n    principals: [\n        appManager.id,\n        appManager2.id,\n    ],\n    kafkaCluster: {\n        id: dedicated.id,\n    },\n    environment: {\n        id: development.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.KafkaClientQuota(\"example\",\n    display_name=\"test-quota\",\n    description=\"Test Quota\",\n    throughput={\n        \"ingress_byte_rate\": \"100\",\n        \"egress_byte_rate\": \"200\",\n    },\n    principals=[\n        app_manager[\"id\"],\n        app_manager2[\"id\"],\n    ],\n    kafka_cluster={\n        \"id\": dedicated[\"id\"],\n    },\n    environment={\n        \"id\": development[\"id\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.KafkaClientQuota(\"example\", new()\n    {\n        DisplayName = \"test-quota\",\n        Description = \"Test Quota\",\n        Throughput = new ConfluentCloud.Inputs.KafkaClientQuotaThroughputArgs\n        {\n            IngressByteRate = \"100\",\n            EgressByteRate = \"200\",\n        },\n        Principals = new[]\n        {\n            appManager.Id,\n            appManager2.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.KafkaClientQuotaKafkaClusterArgs\n        {\n            Id = dedicated.Id,\n        },\n        Environment = new ConfluentCloud.Inputs.KafkaClientQuotaEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewKafkaClientQuota(ctx, \"example\", \u0026confluentcloud.KafkaClientQuotaArgs{\n\t\t\tDisplayName: pulumi.String(\"test-quota\"),\n\t\t\tDescription: pulumi.String(\"Test Quota\"),\n\t\t\tThroughput: \u0026confluentcloud.KafkaClientQuotaThroughputArgs{\n\t\t\t\tIngressByteRate: pulumi.String(\"100\"),\n\t\t\t\tEgressByteRate:  pulumi.String(\"200\"),\n\t\t\t},\n\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\tappManager.Id,\n\t\t\t\tappManager2.Id,\n\t\t\t},\n\t\t\tKafkaCluster: \u0026confluentcloud.KafkaClientQuotaKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(dedicated.Id),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClientQuotaEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(development.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.KafkaClientQuota;\nimport com.pulumi.confluentcloud.KafkaClientQuotaArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClientQuotaThroughputArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClientQuotaKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClientQuotaEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new KafkaClientQuota(\"example\", KafkaClientQuotaArgs.builder()\n            .displayName(\"test-quota\")\n            .description(\"Test Quota\")\n            .throughput(KafkaClientQuotaThroughputArgs.builder()\n                .ingressByteRate(\"100\")\n                .egressByteRate(\"200\")\n                .build())\n            .principals(            \n                appManager.id(),\n                appManager2.id())\n            .kafkaCluster(KafkaClientQuotaKafkaClusterArgs.builder()\n                .id(dedicated.id())\n                .build())\n            .environment(KafkaClientQuotaEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:KafkaClientQuota\n    properties:\n      displayName: test-quota\n      description: Test Quota\n      throughput:\n        ingressByteRate: '100'\n        egressByteRate: '200'\n      principals:\n        - ${appManager.id}\n        - ${appManager2.id}\n      kafkaCluster:\n        id: ${dedicated.id}\n      environment:\n        id: ${development.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Kafka Client Quota.\n\nYou can import a Kafka Client Quota by using Kafka Client Quota ID. The following example shows how to import a Kafka Client Quota ID:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/kafkaClientQuota:KafkaClientQuota example cq-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"description":{"type":"string","description":"The description of the Kafka Client Quota.\n"},"displayName":{"type":"string","description":"The name of the Kafka Client Quota.\n"},"environment":{"$ref":"#/types/confluentcloud:index/KafkaClientQuotaEnvironment:KafkaClientQuotaEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaClientQuotaKafkaCluster:KafkaClientQuotaKafkaCluster"},"principals":{"type":"array","items":{"type":"string"},"description":"The list of principals (i.e., service accounts or identity pools) to apply the Kafka Client Quota to. Use the special name, `\"\u003cdefault\u003e\"`, to represent the default quota for all users and service accounts.\n"},"throughput":{"$ref":"#/types/confluentcloud:index/KafkaClientQuotaThroughput:KafkaClientQuotaThroughput","description":"Block for representing a Kafka Quota."}},"required":["displayName","environment","kafkaCluster","principals","throughput"],"inputProperties":{"description":{"type":"string","description":"The description of the Kafka Client Quota.\n"},"displayName":{"type":"string","description":"The name of the Kafka Client Quota.\n"},"environment":{"$ref":"#/types/confluentcloud:index/KafkaClientQuotaEnvironment:KafkaClientQuotaEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaClientQuotaKafkaCluster:KafkaClientQuotaKafkaCluster","willReplaceOnChanges":true},"principals":{"type":"array","items":{"type":"string"},"description":"The list of principals (i.e., service accounts or identity pools) to apply the Kafka Client Quota to. Use the special name, `\"\u003cdefault\u003e\"`, to represent the default quota for all users and service accounts.\n"},"throughput":{"$ref":"#/types/confluentcloud:index/KafkaClientQuotaThroughput:KafkaClientQuotaThroughput","description":"Block for representing a Kafka Quota."}},"requiredInputs":["displayName","environment","kafkaCluster","principals","throughput"],"stateInputs":{"description":"Input properties used for looking up and filtering KafkaClientQuota resources.\n","properties":{"description":{"type":"string","description":"The description of the Kafka Client Quota.\n"},"displayName":{"type":"string","description":"The name of the Kafka Client Quota.\n"},"environment":{"$ref":"#/types/confluentcloud:index/KafkaClientQuotaEnvironment:KafkaClientQuotaEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaClientQuotaKafkaCluster:KafkaClientQuotaKafkaCluster","willReplaceOnChanges":true},"principals":{"type":"array","items":{"type":"string"},"description":"The list of principals (i.e., service accounts or identity pools) to apply the Kafka Client Quota to. Use the special name, `\"\u003cdefault\u003e\"`, to represent the default quota for all users and service accounts.\n"},"throughput":{"$ref":"#/types/confluentcloud:index/KafkaClientQuotaThroughput:KafkaClientQuotaThroughput","description":"Block for representing a Kafka Quota."}},"type":"object"}},"confluentcloud:index/kafkaCluster:KafkaCluster":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaCluster`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaCluster`\" pulumi-lang-go=\"`KafkaCluster`\" pulumi-lang-python=\"`KafkaCluster`\" pulumi-lang-yaml=\"`confluentcloud.KafkaCluster`\" pulumi-lang-java=\"`confluentcloud.KafkaCluster`\"\u003e`confluentcloud.KafkaCluster`\u003c/span\u003e provides a Kafka cluster resource that enables creating, editing, and deleting Kafka clusters on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental cluster deletion. This setting rejects plans that would destroy or recreate the cluster, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Example Kafka clusters on AWS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst basic = new confluentcloud.KafkaCluster(\"basic\", {\n    displayName: \"basic_kafka_cluster\",\n    availability: \"SINGLE_ZONE\",\n    cloud: \"AWS\",\n    region: \"us-east-2\",\n    basic: {},\n    environment: {\n        id: development.id,\n    },\n});\nconst standard = new confluentcloud.KafkaCluster(\"standard\", {\n    displayName: \"standard_kafka_cluster\",\n    availability: \"SINGLE_ZONE\",\n    cloud: \"AWS\",\n    region: \"us-east-2\",\n    standard: {},\n    environment: {\n        id: development.id,\n    },\n});\nconst enterprise = new confluentcloud.KafkaCluster(\"enterprise\", {\n    enterprises: [{}],\n    displayName: \"enterprise_kafka_cluster\",\n    availability: \"HIGH\",\n    cloud: \"AWS\",\n    region: \"us-east-2\",\n    environment: {\n        id: development.id,\n    },\n});\nconst dedicated = new confluentcloud.KafkaCluster(\"dedicated\", {\n    displayName: \"dedicated_kafka_cluster\",\n    availability: \"MULTI_ZONE\",\n    cloud: \"AWS\",\n    region: \"us-east-2\",\n    dedicated: {\n        cku: 2,\n    },\n    environment: {\n        id: development.id,\n    },\n});\nconst freight = new confluentcloud.KafkaCluster(\"freight\", {\n    freights: [{}],\n    displayName: \"freight_kafka_cluster\",\n    availability: \"HIGH\",\n    cloud: \"AWS\",\n    region: \"us-east-1\",\n    environment: {\n        id: staging.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\nbasic = confluentcloud.KafkaCluster(\"basic\",\n    display_name=\"basic_kafka_cluster\",\n    availability=\"SINGLE_ZONE\",\n    cloud=\"AWS\",\n    region=\"us-east-2\",\n    basic={},\n    environment={\n        \"id\": development.id,\n    })\nstandard = confluentcloud.KafkaCluster(\"standard\",\n    display_name=\"standard_kafka_cluster\",\n    availability=\"SINGLE_ZONE\",\n    cloud=\"AWS\",\n    region=\"us-east-2\",\n    standard={},\n    environment={\n        \"id\": development.id,\n    })\nenterprise = confluentcloud.KafkaCluster(\"enterprise\",\n    enterprises=[{}],\n    display_name=\"enterprise_kafka_cluster\",\n    availability=\"HIGH\",\n    cloud=\"AWS\",\n    region=\"us-east-2\",\n    environment={\n        \"id\": development.id,\n    })\ndedicated = confluentcloud.KafkaCluster(\"dedicated\",\n    display_name=\"dedicated_kafka_cluster\",\n    availability=\"MULTI_ZONE\",\n    cloud=\"AWS\",\n    region=\"us-east-2\",\n    dedicated={\n        \"cku\": 2,\n    },\n    environment={\n        \"id\": development.id,\n    })\nfreight = confluentcloud.KafkaCluster(\"freight\",\n    freights=[{}],\n    display_name=\"freight_kafka_cluster\",\n    availability=\"HIGH\",\n    cloud=\"AWS\",\n    region=\"us-east-1\",\n    environment={\n        \"id\": staging[\"id\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var basic = new ConfluentCloud.KafkaCluster(\"basic\", new()\n    {\n        DisplayName = \"basic_kafka_cluster\",\n        Availability = \"SINGLE_ZONE\",\n        Cloud = \"AWS\",\n        Region = \"us-east-2\",\n        Basic = null,\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var standard = new ConfluentCloud.KafkaCluster(\"standard\", new()\n    {\n        DisplayName = \"standard_kafka_cluster\",\n        Availability = \"SINGLE_ZONE\",\n        Cloud = \"AWS\",\n        Region = \"us-east-2\",\n        Standard = null,\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var enterprise = new ConfluentCloud.KafkaCluster(\"enterprise\", new()\n    {\n        Enterprises = new[]\n        {\n            null,\n        },\n        DisplayName = \"enterprise_kafka_cluster\",\n        Availability = \"HIGH\",\n        Cloud = \"AWS\",\n        Region = \"us-east-2\",\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var dedicated = new ConfluentCloud.KafkaCluster(\"dedicated\", new()\n    {\n        DisplayName = \"dedicated_kafka_cluster\",\n        Availability = \"MULTI_ZONE\",\n        Cloud = \"AWS\",\n        Region = \"us-east-2\",\n        Dedicated = new ConfluentCloud.Inputs.KafkaClusterDedicatedArgs\n        {\n            Cku = 2,\n        },\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var freight = new ConfluentCloud.KafkaCluster(\"freight\", new()\n    {\n        Freights = new[]\n        {\n            null,\n        },\n        DisplayName = \"freight_kafka_cluster\",\n        Availability = \"HIGH\",\n        Cloud = \"AWS\",\n        Region = \"us-east-1\",\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaCluster(ctx, \"basic\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tDisplayName:  pulumi.String(\"basic_kafka_cluster\"),\n\t\t\tAvailability: pulumi.String(\"SINGLE_ZONE\"),\n\t\t\tCloud:        pulumi.String(\"AWS\"),\n\t\t\tRegion:       pulumi.String(\"us-east-2\"),\n\t\t\tBasic:        \u0026confluentcloud.KafkaClusterBasicArgs{},\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaCluster(ctx, \"standard\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tDisplayName:  pulumi.String(\"standard_kafka_cluster\"),\n\t\t\tAvailability: pulumi.String(\"SINGLE_ZONE\"),\n\t\t\tCloud:        pulumi.String(\"AWS\"),\n\t\t\tRegion:       pulumi.String(\"us-east-2\"),\n\t\t\tStandard:     \u0026confluentcloud.KafkaClusterStandardArgs{},\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaCluster(ctx, \"enterprise\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tEnterprises: confluentcloud.KafkaClusterEnterpriseArray{\n\t\t\t\t\u0026confluentcloud.KafkaClusterEnterpriseArgs{},\n\t\t\t},\n\t\t\tDisplayName:  pulumi.String(\"enterprise_kafka_cluster\"),\n\t\t\tAvailability: pulumi.String(\"HIGH\"),\n\t\t\tCloud:        pulumi.String(\"AWS\"),\n\t\t\tRegion:       pulumi.String(\"us-east-2\"),\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaCluster(ctx, \"dedicated\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tDisplayName:  pulumi.String(\"dedicated_kafka_cluster\"),\n\t\t\tAvailability: pulumi.String(\"MULTI_ZONE\"),\n\t\t\tCloud:        pulumi.String(\"AWS\"),\n\t\t\tRegion:       pulumi.String(\"us-east-2\"),\n\t\t\tDedicated: \u0026confluentcloud.KafkaClusterDedicatedArgs{\n\t\t\t\tCku: pulumi.Int(2),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaCluster(ctx, \"freight\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tFreights: confluentcloud.KafkaClusterFreightArray{\n\t\t\t\t\u0026confluentcloud.KafkaClusterFreightArgs{},\n\t\t\t},\n\t\t\tDisplayName:  pulumi.String(\"freight_kafka_cluster\"),\n\t\t\tAvailability: pulumi.String(\"HIGH\"),\n\t\t\tCloud:        pulumi.String(\"AWS\"),\n\t\t\tRegion:       pulumi.String(\"us-east-1\"),\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.KafkaCluster;\nimport com.pulumi.confluentcloud.KafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterBasicArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterStandardArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterEnterpriseArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterDedicatedArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterFreightArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var basic = new KafkaCluster(\"basic\", KafkaClusterArgs.builder()\n            .displayName(\"basic_kafka_cluster\")\n            .availability(\"SINGLE_ZONE\")\n            .cloud(\"AWS\")\n            .region(\"us-east-2\")\n            .basic(KafkaClusterBasicArgs.builder()\n                .build())\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var standard = new KafkaCluster(\"standard\", KafkaClusterArgs.builder()\n            .displayName(\"standard_kafka_cluster\")\n            .availability(\"SINGLE_ZONE\")\n            .cloud(\"AWS\")\n            .region(\"us-east-2\")\n            .standard(KafkaClusterStandardArgs.builder()\n                .build())\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var enterprise = new KafkaCluster(\"enterprise\", KafkaClusterArgs.builder()\n            .enterprises(KafkaClusterEnterpriseArgs.builder()\n                .build())\n            .displayName(\"enterprise_kafka_cluster\")\n            .availability(\"HIGH\")\n            .cloud(\"AWS\")\n            .region(\"us-east-2\")\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var dedicated = new KafkaCluster(\"dedicated\", KafkaClusterArgs.builder()\n            .displayName(\"dedicated_kafka_cluster\")\n            .availability(\"MULTI_ZONE\")\n            .cloud(\"AWS\")\n            .region(\"us-east-2\")\n            .dedicated(KafkaClusterDedicatedArgs.builder()\n                .cku(2)\n                .build())\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var freight = new KafkaCluster(\"freight\", KafkaClusterArgs.builder()\n            .freights(KafkaClusterFreightArgs.builder()\n                .build())\n            .displayName(\"freight_kafka_cluster\")\n            .availability(\"HIGH\")\n            .cloud(\"AWS\")\n            .region(\"us-east-1\")\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  basic:\n    type: confluentcloud:KafkaCluster\n    properties:\n      displayName: basic_kafka_cluster\n      availability: SINGLE_ZONE\n      cloud: AWS\n      region: us-east-2\n      basic: {}\n      environment:\n        id: ${development.id}\n  standard:\n    type: confluentcloud:KafkaCluster\n    properties:\n      displayName: standard_kafka_cluster\n      availability: SINGLE_ZONE\n      cloud: AWS\n      region: us-east-2\n      standard: {}\n      environment:\n        id: ${development.id}\n  enterprise:\n    type: confluentcloud:KafkaCluster\n    properties:\n      enterprises:\n        - {}\n      displayName: enterprise_kafka_cluster\n      availability: HIGH\n      cloud: AWS\n      region: us-east-2\n      environment:\n        id: ${development.id}\n  dedicated:\n    type: confluentcloud:KafkaCluster\n    properties:\n      displayName: dedicated_kafka_cluster\n      availability: MULTI_ZONE\n      cloud: AWS\n      region: us-east-2\n      dedicated:\n        cku: 2\n      environment:\n        id: ${development.id}\n  freight:\n    type: confluentcloud:KafkaCluster\n    properties:\n      freights:\n        - {}\n      displayName: freight_kafka_cluster\n      availability: HIGH\n      cloud: AWS\n      region: us-east-1\n      environment:\n        id: ${staging.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Kafka clusters on Azure\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst basic = new confluentcloud.KafkaCluster(\"basic\", {\n    displayName: \"basic_kafka_cluster\",\n    availability: \"SINGLE_ZONE\",\n    cloud: \"AZURE\",\n    region: \"centralus\",\n    basic: {},\n    environment: {\n        id: development.id,\n    },\n});\nconst standard = new confluentcloud.KafkaCluster(\"standard\", {\n    displayName: \"standard_kafka_cluster\",\n    availability: \"SINGLE_ZONE\",\n    cloud: \"AZURE\",\n    region: \"centralus\",\n    standard: {},\n    environment: {\n        id: development.id,\n    },\n});\nconst enterprise = new confluentcloud.KafkaCluster(\"enterprise\", {\n    enterprises: [{}],\n    displayName: \"enterprise_kafka_cluster\",\n    availability: \"HIGH\",\n    cloud: \"AZURE\",\n    region: \"centralus\",\n    environment: {\n        id: development.id,\n    },\n});\nconst dedicated = new confluentcloud.KafkaCluster(\"dedicated\", {\n    displayName: \"dedicated_kafka_cluster\",\n    availability: \"MULTI_ZONE\",\n    cloud: \"AZURE\",\n    region: \"centralus\",\n    dedicated: {\n        cku: 2,\n    },\n    environment: {\n        id: development.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\nbasic = confluentcloud.KafkaCluster(\"basic\",\n    display_name=\"basic_kafka_cluster\",\n    availability=\"SINGLE_ZONE\",\n    cloud=\"AZURE\",\n    region=\"centralus\",\n    basic={},\n    environment={\n        \"id\": development.id,\n    })\nstandard = confluentcloud.KafkaCluster(\"standard\",\n    display_name=\"standard_kafka_cluster\",\n    availability=\"SINGLE_ZONE\",\n    cloud=\"AZURE\",\n    region=\"centralus\",\n    standard={},\n    environment={\n        \"id\": development.id,\n    })\nenterprise = confluentcloud.KafkaCluster(\"enterprise\",\n    enterprises=[{}],\n    display_name=\"enterprise_kafka_cluster\",\n    availability=\"HIGH\",\n    cloud=\"AZURE\",\n    region=\"centralus\",\n    environment={\n        \"id\": development.id,\n    })\ndedicated = confluentcloud.KafkaCluster(\"dedicated\",\n    display_name=\"dedicated_kafka_cluster\",\n    availability=\"MULTI_ZONE\",\n    cloud=\"AZURE\",\n    region=\"centralus\",\n    dedicated={\n        \"cku\": 2,\n    },\n    environment={\n        \"id\": development.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var basic = new ConfluentCloud.KafkaCluster(\"basic\", new()\n    {\n        DisplayName = \"basic_kafka_cluster\",\n        Availability = \"SINGLE_ZONE\",\n        Cloud = \"AZURE\",\n        Region = \"centralus\",\n        Basic = null,\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var standard = new ConfluentCloud.KafkaCluster(\"standard\", new()\n    {\n        DisplayName = \"standard_kafka_cluster\",\n        Availability = \"SINGLE_ZONE\",\n        Cloud = \"AZURE\",\n        Region = \"centralus\",\n        Standard = null,\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var enterprise = new ConfluentCloud.KafkaCluster(\"enterprise\", new()\n    {\n        Enterprises = new[]\n        {\n            null,\n        },\n        DisplayName = \"enterprise_kafka_cluster\",\n        Availability = \"HIGH\",\n        Cloud = \"AZURE\",\n        Region = \"centralus\",\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var dedicated = new ConfluentCloud.KafkaCluster(\"dedicated\", new()\n    {\n        DisplayName = \"dedicated_kafka_cluster\",\n        Availability = \"MULTI_ZONE\",\n        Cloud = \"AZURE\",\n        Region = \"centralus\",\n        Dedicated = new ConfluentCloud.Inputs.KafkaClusterDedicatedArgs\n        {\n            Cku = 2,\n        },\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaCluster(ctx, \"basic\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tDisplayName:  pulumi.String(\"basic_kafka_cluster\"),\n\t\t\tAvailability: pulumi.String(\"SINGLE_ZONE\"),\n\t\t\tCloud:        pulumi.String(\"AZURE\"),\n\t\t\tRegion:       pulumi.String(\"centralus\"),\n\t\t\tBasic:        \u0026confluentcloud.KafkaClusterBasicArgs{},\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaCluster(ctx, \"standard\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tDisplayName:  pulumi.String(\"standard_kafka_cluster\"),\n\t\t\tAvailability: pulumi.String(\"SINGLE_ZONE\"),\n\t\t\tCloud:        pulumi.String(\"AZURE\"),\n\t\t\tRegion:       pulumi.String(\"centralus\"),\n\t\t\tStandard:     \u0026confluentcloud.KafkaClusterStandardArgs{},\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaCluster(ctx, \"enterprise\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tEnterprises: confluentcloud.KafkaClusterEnterpriseArray{\n\t\t\t\t\u0026confluentcloud.KafkaClusterEnterpriseArgs{},\n\t\t\t},\n\t\t\tDisplayName:  pulumi.String(\"enterprise_kafka_cluster\"),\n\t\t\tAvailability: pulumi.String(\"HIGH\"),\n\t\t\tCloud:        pulumi.String(\"AZURE\"),\n\t\t\tRegion:       pulumi.String(\"centralus\"),\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaCluster(ctx, \"dedicated\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tDisplayName:  pulumi.String(\"dedicated_kafka_cluster\"),\n\t\t\tAvailability: pulumi.String(\"MULTI_ZONE\"),\n\t\t\tCloud:        pulumi.String(\"AZURE\"),\n\t\t\tRegion:       pulumi.String(\"centralus\"),\n\t\t\tDedicated: \u0026confluentcloud.KafkaClusterDedicatedArgs{\n\t\t\t\tCku: pulumi.Int(2),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.KafkaCluster;\nimport com.pulumi.confluentcloud.KafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterBasicArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterStandardArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterEnterpriseArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterDedicatedArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var basic = new KafkaCluster(\"basic\", KafkaClusterArgs.builder()\n            .displayName(\"basic_kafka_cluster\")\n            .availability(\"SINGLE_ZONE\")\n            .cloud(\"AZURE\")\n            .region(\"centralus\")\n            .basic(KafkaClusterBasicArgs.builder()\n                .build())\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var standard = new KafkaCluster(\"standard\", KafkaClusterArgs.builder()\n            .displayName(\"standard_kafka_cluster\")\n            .availability(\"SINGLE_ZONE\")\n            .cloud(\"AZURE\")\n            .region(\"centralus\")\n            .standard(KafkaClusterStandardArgs.builder()\n                .build())\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var enterprise = new KafkaCluster(\"enterprise\", KafkaClusterArgs.builder()\n            .enterprises(KafkaClusterEnterpriseArgs.builder()\n                .build())\n            .displayName(\"enterprise_kafka_cluster\")\n            .availability(\"HIGH\")\n            .cloud(\"AZURE\")\n            .region(\"centralus\")\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var dedicated = new KafkaCluster(\"dedicated\", KafkaClusterArgs.builder()\n            .displayName(\"dedicated_kafka_cluster\")\n            .availability(\"MULTI_ZONE\")\n            .cloud(\"AZURE\")\n            .region(\"centralus\")\n            .dedicated(KafkaClusterDedicatedArgs.builder()\n                .cku(2)\n                .build())\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  basic:\n    type: confluentcloud:KafkaCluster\n    properties:\n      displayName: basic_kafka_cluster\n      availability: SINGLE_ZONE\n      cloud: AZURE\n      region: centralus\n      basic: {}\n      environment:\n        id: ${development.id}\n  standard:\n    type: confluentcloud:KafkaCluster\n    properties:\n      displayName: standard_kafka_cluster\n      availability: SINGLE_ZONE\n      cloud: AZURE\n      region: centralus\n      standard: {}\n      environment:\n        id: ${development.id}\n  enterprise:\n    type: confluentcloud:KafkaCluster\n    properties:\n      enterprises:\n        - {}\n      displayName: enterprise_kafka_cluster\n      availability: HIGH\n      cloud: AZURE\n      region: centralus\n      environment:\n        id: ${development.id}\n  dedicated:\n    type: confluentcloud:KafkaCluster\n    properties:\n      displayName: dedicated_kafka_cluster\n      availability: MULTI_ZONE\n      cloud: AZURE\n      region: centralus\n      dedicated:\n        cku: 2\n      environment:\n        id: ${development.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Kafka clusters on GCP\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst basic = new confluentcloud.KafkaCluster(\"basic\", {\n    displayName: \"basic_kafka_cluster\",\n    availability: \"SINGLE_ZONE\",\n    cloud: \"GCP\",\n    region: \"us-central1\",\n    basic: {},\n    environment: {\n        id: development.id,\n    },\n});\nconst standard = new confluentcloud.KafkaCluster(\"standard\", {\n    displayName: \"standard_kafka_cluster\",\n    availability: \"SINGLE_ZONE\",\n    cloud: \"GCP\",\n    region: \"us-central1\",\n    standard: {},\n    environment: {\n        id: development.id,\n    },\n});\nconst dedicated = new confluentcloud.KafkaCluster(\"dedicated\", {\n    displayName: \"dedicated_kafka_cluster\",\n    availability: \"MULTI_ZONE\",\n    cloud: \"GCP\",\n    region: \"us-central1\",\n    dedicated: {\n        cku: 2,\n    },\n    environment: {\n        id: development.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\nbasic = confluentcloud.KafkaCluster(\"basic\",\n    display_name=\"basic_kafka_cluster\",\n    availability=\"SINGLE_ZONE\",\n    cloud=\"GCP\",\n    region=\"us-central1\",\n    basic={},\n    environment={\n        \"id\": development.id,\n    })\nstandard = confluentcloud.KafkaCluster(\"standard\",\n    display_name=\"standard_kafka_cluster\",\n    availability=\"SINGLE_ZONE\",\n    cloud=\"GCP\",\n    region=\"us-central1\",\n    standard={},\n    environment={\n        \"id\": development.id,\n    })\ndedicated = confluentcloud.KafkaCluster(\"dedicated\",\n    display_name=\"dedicated_kafka_cluster\",\n    availability=\"MULTI_ZONE\",\n    cloud=\"GCP\",\n    region=\"us-central1\",\n    dedicated={\n        \"cku\": 2,\n    },\n    environment={\n        \"id\": development.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var basic = new ConfluentCloud.KafkaCluster(\"basic\", new()\n    {\n        DisplayName = \"basic_kafka_cluster\",\n        Availability = \"SINGLE_ZONE\",\n        Cloud = \"GCP\",\n        Region = \"us-central1\",\n        Basic = null,\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var standard = new ConfluentCloud.KafkaCluster(\"standard\", new()\n    {\n        DisplayName = \"standard_kafka_cluster\",\n        Availability = \"SINGLE_ZONE\",\n        Cloud = \"GCP\",\n        Region = \"us-central1\",\n        Standard = null,\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var dedicated = new ConfluentCloud.KafkaCluster(\"dedicated\", new()\n    {\n        DisplayName = \"dedicated_kafka_cluster\",\n        Availability = \"MULTI_ZONE\",\n        Cloud = \"GCP\",\n        Region = \"us-central1\",\n        Dedicated = new ConfluentCloud.Inputs.KafkaClusterDedicatedArgs\n        {\n            Cku = 2,\n        },\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaCluster(ctx, \"basic\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tDisplayName:  pulumi.String(\"basic_kafka_cluster\"),\n\t\t\tAvailability: pulumi.String(\"SINGLE_ZONE\"),\n\t\t\tCloud:        pulumi.String(\"GCP\"),\n\t\t\tRegion:       pulumi.String(\"us-central1\"),\n\t\t\tBasic:        \u0026confluentcloud.KafkaClusterBasicArgs{},\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaCluster(ctx, \"standard\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tDisplayName:  pulumi.String(\"standard_kafka_cluster\"),\n\t\t\tAvailability: pulumi.String(\"SINGLE_ZONE\"),\n\t\t\tCloud:        pulumi.String(\"GCP\"),\n\t\t\tRegion:       pulumi.String(\"us-central1\"),\n\t\t\tStandard:     \u0026confluentcloud.KafkaClusterStandardArgs{},\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaCluster(ctx, \"dedicated\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tDisplayName:  pulumi.String(\"dedicated_kafka_cluster\"),\n\t\t\tAvailability: pulumi.String(\"MULTI_ZONE\"),\n\t\t\tCloud:        pulumi.String(\"GCP\"),\n\t\t\tRegion:       pulumi.String(\"us-central1\"),\n\t\t\tDedicated: \u0026confluentcloud.KafkaClusterDedicatedArgs{\n\t\t\t\tCku: pulumi.Int(2),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.KafkaCluster;\nimport com.pulumi.confluentcloud.KafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterBasicArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterStandardArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterDedicatedArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var basic = new KafkaCluster(\"basic\", KafkaClusterArgs.builder()\n            .displayName(\"basic_kafka_cluster\")\n            .availability(\"SINGLE_ZONE\")\n            .cloud(\"GCP\")\n            .region(\"us-central1\")\n            .basic(KafkaClusterBasicArgs.builder()\n                .build())\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var standard = new KafkaCluster(\"standard\", KafkaClusterArgs.builder()\n            .displayName(\"standard_kafka_cluster\")\n            .availability(\"SINGLE_ZONE\")\n            .cloud(\"GCP\")\n            .region(\"us-central1\")\n            .standard(KafkaClusterStandardArgs.builder()\n                .build())\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var dedicated = new KafkaCluster(\"dedicated\", KafkaClusterArgs.builder()\n            .displayName(\"dedicated_kafka_cluster\")\n            .availability(\"MULTI_ZONE\")\n            .cloud(\"GCP\")\n            .region(\"us-central1\")\n            .dedicated(KafkaClusterDedicatedArgs.builder()\n                .cku(2)\n                .build())\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  basic:\n    type: confluentcloud:KafkaCluster\n    properties:\n      displayName: basic_kafka_cluster\n      availability: SINGLE_ZONE\n      cloud: GCP\n      region: us-central1\n      basic: {}\n      environment:\n        id: ${development.id}\n  standard:\n    type: confluentcloud:KafkaCluster\n    properties:\n      displayName: standard_kafka_cluster\n      availability: SINGLE_ZONE\n      cloud: GCP\n      region: us-central1\n      standard: {}\n      environment:\n        id: ${development.id}\n  dedicated:\n    type: confluentcloud:KafkaCluster\n    properties:\n      displayName: dedicated_kafka_cluster\n      availability: MULTI_ZONE\n      cloud: GCP\n      region: us-central1\n      dedicated:\n        cku: 2\n      environment:\n        id: ${development.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaCluster`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaCluster`\" pulumi-lang-go=\"`KafkaCluster`\" pulumi-lang-python=\"`KafkaCluster`\" pulumi-lang-yaml=\"`confluentcloud.KafkaCluster`\" pulumi-lang-java=\"`confluentcloud.KafkaCluster`\"\u003e`confluentcloud.KafkaCluster`\u003c/span\u003e resource:\n  * basic-kafka-acls: _Basic_ Kafka cluster with authorization using ACLs\n  * basic-kafka-acls-with-alias: _Basic_ Kafka cluster with authorization using ACLs\n  * standard-kafka-acls: _Standard_ Kafka cluster with authorization using ACLs\n  * standard-kafka-rbac: _Standard_ Kafka cluster with authorization using RBAC\n  * dedicated-public-kafka-acls: _Dedicated_ Kafka cluster that is accessible over the public internet with authorization using ACLs\n  * dedicated-public-kafka-rbac: _Dedicated_ Kafka cluster that is accessible over the public internet with authorization using RBAC\n  * dedicated-privatelink-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-privatelink-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using RBAC\n  * dedicated-vnet-peering-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vnet-peering-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-transit-gateway-attachment-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using ACLs\n  * dedicated-transit-gateway-attachment-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using RBAC\n  * enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n  * enterprise-privatelinkattachment-azure-kafka-acls: _Enterprise_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n  * enterprise-pni-aws-kafka-rbac: _Enterprise_ Kafka cluster on AWS that is accessible via Confluent Private Network Interface (PNI) with authorization using RBAC\n  * freight-aws-kafka-rbac: _Freight_ Kafka cluster on AWS that is accessible via Confluent Private Network Interface (PNI) with authorization using RBAC\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Kafka cluster.\n\nYou can import a Kafka cluster by using Environment ID and Kafka cluster ID, in the format `\u003cEnvironment ID\u003e/\u003cKafka cluster ID\u003e`, e.g.\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/kafkaCluster:KafkaCluster my_kafka env-abc123/lkc-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"apiVersion":{"type":"string","description":"(Required String) An API Version of the schema version of the Kafka cluster, for example, `cmk/v2`.\n"},"availability":{"type":"string","description":"The availability zone configuration of the Kafka cluster. Accepted values are: `SINGLE_ZONE`, `MULTI_ZONE`, `LOW`, and `HIGH`.\n"},"basic":{"$ref":"#/types/confluentcloud:index/KafkaClusterBasic:KafkaClusterBasic","description":"The configuration of the Basic Kafka cluster.\n"},"bootstrapEndpoint":{"type":"string","description":"(Required String) The bootstrap endpoint used by Kafka clients to connect to the cluster (for example, `lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:9092`).\n"},"byokKey":{"$ref":"#/types/confluentcloud:index/KafkaClusterByokKey:KafkaClusterByokKey"},"cloud":{"type":"string","description":"The cloud service provider that runs the Kafka cluster. Accepted values are: `AWS`, `AZURE`, and `GCP`.\n"},"dedicated":{"$ref":"#/types/confluentcloud:index/KafkaClusterDedicated:KafkaClusterDedicated","description":"(Optional Configuration Block) The configuration of the Dedicated Kafka cluster. It supports the following:\n"},"displayName":{"type":"string","description":"The name of the Kafka cluster.\n"},"endpoints":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/KafkaClusterEndpoint:KafkaClusterEndpoint"},"description":"(Optional List) The list of endpoints for connecting to the Kafka cluster. These endpoints provide different network access methods or regions for connecting to the cluster:\n"},"enterprises":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/KafkaClusterEnterprise:KafkaClusterEnterprise"},"description":"The configuration of the Enterprise Kafka cluster.\n"},"environment":{"$ref":"#/types/confluentcloud:index/KafkaClusterEnvironment:KafkaClusterEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"freights":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/KafkaClusterFreight:KafkaClusterFreight"},"description":"The configuration of the Freight Kafka cluster.\n"},"kind":{"type":"string","description":"(Required String) A kind of the Kafka cluster, for example, `Cluster`.\n"},"network":{"$ref":"#/types/confluentcloud:index/KafkaClusterNetwork:KafkaClusterNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts."},"rbacCrn":{"type":"string","description":"(Required String) The Confluent Resource Name (CRN) of the Kafka cluster, for example, `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123/cloud-cluster=lkc-abc123`. Some resources, like topics, require appending the Kafka cluster ID for creating role bindings, for example, `/kafka=lkc-123abc`. For more information, see\u003cspan pulumi-lang-nodejs=\" confluentcloud.RoleBinding \" pulumi-lang-dotnet=\" confluentcloud.RoleBinding \" pulumi-lang-go=\" RoleBinding \" pulumi-lang-python=\" RoleBinding \" pulumi-lang-yaml=\" confluentcloud.RoleBinding \" pulumi-lang-java=\" confluentcloud.RoleBinding \"\u003e confluentcloud.RoleBinding \u003c/span\u003eResource.\n"},"region":{"type":"string","description":"The cloud service provider region where the Kafka cluster is running, for example, `us-west-2`. See [Cloud Providers and Regions](https://docs.confluent.io/cloud/current/clusters/regions.html#cloud-providers-and-regions) for a full list of options for AWS, Azure, and GCP.\n"},"restEndpoint":{"type":"string","description":"(Required String) The REST endpoint of the Kafka cluster (for example, `https://lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:443`).\n"},"standard":{"$ref":"#/types/confluentcloud:index/KafkaClusterStandard:KafkaClusterStandard","description":"The configuration of the Standard Kafka cluster.\n"}},"required":["apiVersion","availability","bootstrapEndpoint","byokKey","cloud","displayName","endpoints","environment","kind","network","rbacCrn","region","restEndpoint"],"inputProperties":{"availability":{"type":"string","description":"The availability zone configuration of the Kafka cluster. Accepted values are: `SINGLE_ZONE`, `MULTI_ZONE`, `LOW`, and `HIGH`.\n","willReplaceOnChanges":true},"basic":{"$ref":"#/types/confluentcloud:index/KafkaClusterBasic:KafkaClusterBasic","description":"The configuration of the Basic Kafka cluster.\n"},"byokKey":{"$ref":"#/types/confluentcloud:index/KafkaClusterByokKey:KafkaClusterByokKey"},"cloud":{"type":"string","description":"The cloud service provider that runs the Kafka cluster. Accepted values are: `AWS`, `AZURE`, and `GCP`.\n","willReplaceOnChanges":true},"dedicated":{"$ref":"#/types/confluentcloud:index/KafkaClusterDedicated:KafkaClusterDedicated","description":"(Optional Configuration Block) The configuration of the Dedicated Kafka cluster. It supports the following:\n"},"displayName":{"type":"string","description":"The name of the Kafka cluster.\n"},"enterprises":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/KafkaClusterEnterprise:KafkaClusterEnterprise"},"description":"The configuration of the Enterprise Kafka cluster.\n"},"environment":{"$ref":"#/types/confluentcloud:index/KafkaClusterEnvironment:KafkaClusterEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"freights":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/KafkaClusterFreight:KafkaClusterFreight"},"description":"The configuration of the Freight Kafka cluster.\n"},"network":{"$ref":"#/types/confluentcloud:index/KafkaClusterNetwork:KafkaClusterNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts."},"region":{"type":"string","description":"The cloud service provider region where the Kafka cluster is running, for example, `us-west-2`. See [Cloud Providers and Regions](https://docs.confluent.io/cloud/current/clusters/regions.html#cloud-providers-and-regions) for a full list of options for AWS, Azure, and GCP.\n","willReplaceOnChanges":true},"standard":{"$ref":"#/types/confluentcloud:index/KafkaClusterStandard:KafkaClusterStandard","description":"The configuration of the Standard Kafka cluster.\n"}},"requiredInputs":["availability","cloud","environment","region"],"stateInputs":{"description":"Input properties used for looking up and filtering KafkaCluster resources.\n","properties":{"apiVersion":{"type":"string","description":"(Required String) An API Version of the schema version of the Kafka cluster, for example, `cmk/v2`.\n"},"availability":{"type":"string","description":"The availability zone configuration of the Kafka cluster. Accepted values are: `SINGLE_ZONE`, `MULTI_ZONE`, `LOW`, and `HIGH`.\n","willReplaceOnChanges":true},"basic":{"$ref":"#/types/confluentcloud:index/KafkaClusterBasic:KafkaClusterBasic","description":"The configuration of the Basic Kafka cluster.\n"},"bootstrapEndpoint":{"type":"string","description":"(Required String) The bootstrap endpoint used by Kafka clients to connect to the cluster (for example, `lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:9092`).\n"},"byokKey":{"$ref":"#/types/confluentcloud:index/KafkaClusterByokKey:KafkaClusterByokKey"},"cloud":{"type":"string","description":"The cloud service provider that runs the Kafka cluster. Accepted values are: `AWS`, `AZURE`, and `GCP`.\n","willReplaceOnChanges":true},"dedicated":{"$ref":"#/types/confluentcloud:index/KafkaClusterDedicated:KafkaClusterDedicated","description":"(Optional Configuration Block) The configuration of the Dedicated Kafka cluster. It supports the following:\n"},"displayName":{"type":"string","description":"The name of the Kafka cluster.\n"},"endpoints":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/KafkaClusterEndpoint:KafkaClusterEndpoint"},"description":"(Optional List) The list of endpoints for connecting to the Kafka cluster. These endpoints provide different network access methods or regions for connecting to the cluster:\n"},"enterprises":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/KafkaClusterEnterprise:KafkaClusterEnterprise"},"description":"The configuration of the Enterprise Kafka cluster.\n"},"environment":{"$ref":"#/types/confluentcloud:index/KafkaClusterEnvironment:KafkaClusterEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"freights":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/KafkaClusterFreight:KafkaClusterFreight"},"description":"The configuration of the Freight Kafka cluster.\n"},"kind":{"type":"string","description":"(Required String) A kind of the Kafka cluster, for example, `Cluster`.\n"},"network":{"$ref":"#/types/confluentcloud:index/KafkaClusterNetwork:KafkaClusterNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts."},"rbacCrn":{"type":"string","description":"(Required String) The Confluent Resource Name (CRN) of the Kafka cluster, for example, `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123/cloud-cluster=lkc-abc123`. Some resources, like topics, require appending the Kafka cluster ID for creating role bindings, for example, `/kafka=lkc-123abc`. For more information, see\u003cspan pulumi-lang-nodejs=\" confluentcloud.RoleBinding \" pulumi-lang-dotnet=\" confluentcloud.RoleBinding \" pulumi-lang-go=\" RoleBinding \" pulumi-lang-python=\" RoleBinding \" pulumi-lang-yaml=\" confluentcloud.RoleBinding \" pulumi-lang-java=\" confluentcloud.RoleBinding \"\u003e confluentcloud.RoleBinding \u003c/span\u003eResource.\n"},"region":{"type":"string","description":"The cloud service provider region where the Kafka cluster is running, for example, `us-west-2`. See [Cloud Providers and Regions](https://docs.confluent.io/cloud/current/clusters/regions.html#cloud-providers-and-regions) for a full list of options for AWS, Azure, and GCP.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"(Required String) The REST endpoint of the Kafka cluster (for example, `https://lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:443`).\n"},"standard":{"$ref":"#/types/confluentcloud:index/KafkaClusterStandard:KafkaClusterStandard","description":"The configuration of the Standard Kafka cluster.\n"}},"type":"object"}},"confluentcloud:index/kafkaClusterConfig:KafkaClusterConfig":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaClusterConfig`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaClusterConfig`\" pulumi-lang-go=\"`KafkaClusterConfig`\" pulumi-lang-python=\"`KafkaClusterConfig`\" pulumi-lang-yaml=\"`confluentcloud.KafkaClusterConfig`\" pulumi-lang-java=\"`confluentcloud.KafkaClusterConfig`\"\u003e`confluentcloud.KafkaClusterConfig`\u003c/span\u003e provides a Kafka cluster config resource that enables updating configs on a Dedicated Kafka cluster on Confluent Cloud.\n\n## Example Usage\n\n### Option #1: Manage multiple Kafka clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst orders = new confluentcloud.KafkaClusterConfig(\"orders\", {\n    kafkaCluster: {\n        id: dedicated.id,\n    },\n    restEndpoint: dedicated.restEndpoint,\n    config: {\n        \"auto.create.topics.enable\": \"true\",\n        \"log.retention.ms\": \"604800123\",\n    },\n    credentials: {\n        key: app_manager_kafka_api_key.id,\n        secret: app_manager_kafka_api_key.secret,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\norders = confluentcloud.KafkaClusterConfig(\"orders\",\n    kafka_cluster={\n        \"id\": dedicated[\"id\"],\n    },\n    rest_endpoint=dedicated[\"restEndpoint\"],\n    config={\n        \"auto.create.topics.enable\": \"true\",\n        \"log.retention.ms\": \"604800123\",\n    },\n    credentials={\n        \"key\": app_manager_kafka_api_key[\"id\"],\n        \"secret\": app_manager_kafka_api_key[\"secret\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var orders = new ConfluentCloud.KafkaClusterConfig(\"orders\", new()\n    {\n        KafkaCluster = new ConfluentCloud.Inputs.KafkaClusterConfigKafkaClusterArgs\n        {\n            Id = dedicated.Id,\n        },\n        RestEndpoint = dedicated.RestEndpoint,\n        Config = \n        {\n            { \"auto.create.topics.enable\", \"true\" },\n            { \"log.retention.ms\", \"604800123\" },\n        },\n        Credentials = new ConfluentCloud.Inputs.KafkaClusterConfigCredentialsArgs\n        {\n            Key = app_manager_kafka_api_key.Id,\n            Secret = app_manager_kafka_api_key.Secret,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewKafkaClusterConfig(ctx, \"orders\", \u0026confluentcloud.KafkaClusterConfigArgs{\n\t\t\tKafkaCluster: \u0026confluentcloud.KafkaClusterConfigKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(dedicated.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(dedicated.RestEndpoint),\n\t\t\tConfig: pulumi.StringMap{\n\t\t\t\t\"auto.create.topics.enable\": pulumi.String(\"true\"),\n\t\t\t\t\"log.retention.ms\":          pulumi.String(\"604800123\"),\n\t\t\t},\n\t\t\tCredentials: \u0026confluentcloud.KafkaClusterConfigCredentialsArgs{\n\t\t\t\tKey:    pulumi.Any(app_manager_kafka_api_key.Id),\n\t\t\t\tSecret: pulumi.Any(app_manager_kafka_api_key.Secret),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.KafkaClusterConfig;\nimport com.pulumi.confluentcloud.KafkaClusterConfigArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterConfigKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterConfigCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var orders = new KafkaClusterConfig(\"orders\", KafkaClusterConfigArgs.builder()\n            .kafkaCluster(KafkaClusterConfigKafkaClusterArgs.builder()\n                .id(dedicated.id())\n                .build())\n            .restEndpoint(dedicated.restEndpoint())\n            .config(Map.ofEntries(\n                Map.entry(\"auto.create.topics.enable\", \"true\"),\n                Map.entry(\"log.retention.ms\", \"604800123\")\n            ))\n            .credentials(KafkaClusterConfigCredentialsArgs.builder()\n                .key(app_manager_kafka_api_key.id())\n                .secret(app_manager_kafka_api_key.secret())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  orders:\n    type: confluentcloud:KafkaClusterConfig\n    properties:\n      kafkaCluster:\n        id: ${dedicated.id}\n      restEndpoint: ${dedicated.restEndpoint}\n      config:\n        auto.create.topics.enable: 'true'\n        log.retention.ms: '604800123'\n      credentials:\n        key: ${[\"app-manager-kafka-api-key\"].id}\n        secret: ${[\"app-manager-kafka-api-key\"].secret}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Kafka cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst orders = new confluentcloud.KafkaClusterConfig(\"orders\", {config: {\n    \"auto.create.topics.enable\": \"true\",\n    \"log.retention.ms\": \"604800123\",\n}});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\norders = confluentcloud.KafkaClusterConfig(\"orders\", config={\n    \"auto.create.topics.enable\": \"true\",\n    \"log.retention.ms\": \"604800123\",\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var orders = new ConfluentCloud.KafkaClusterConfig(\"orders\", new()\n    {\n        Config = \n        {\n            { \"auto.create.topics.enable\", \"true\" },\n            { \"log.retention.ms\", \"604800123\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewKafkaClusterConfig(ctx, \"orders\", \u0026confluentcloud.KafkaClusterConfigArgs{\n\t\t\tConfig: pulumi.StringMap{\n\t\t\t\t\"auto.create.topics.enable\": pulumi.String(\"true\"),\n\t\t\t\t\"log.retention.ms\":          pulumi.String(\"604800123\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.KafkaClusterConfig;\nimport com.pulumi.confluentcloud.KafkaClusterConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var orders = new KafkaClusterConfig(\"orders\", KafkaClusterConfigArgs.builder()\n            .config(Map.ofEntries(\n                Map.entry(\"auto.create.topics.enable\", \"true\"),\n                Map.entry(\"log.retention.ms\", \"604800123\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  orders:\n    type: confluentcloud:KafkaClusterConfig\n    properties:\n      config:\n        auto.create.topics.enable: 'true'\n        log.retention.ms: '604800123'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import a Kafka cluster config by using the Kafka cluster ID, for example:\n\nOption #1: Manage multiple Kafka clusters in the same Pulumi Stack\n\n```sh\n$ export IMPORT_KAFKA_API_KEY=\"\u003ckafka_api_key\u003e\"\n$ export IMPORT_KAFKA_API_SECRET=\"\u003ckafka_api_secret\u003e\"\n$ export IMPORT_KAFKA_REST_ENDPOINT=\"\u003ckafka_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/kafkaClusterConfig:KafkaClusterConfig test lkc-abc123\n```\n\nOption #2: Manage a single Kafka cluster in the same Pulumi Stack\n\n```sh\n$ pulumi import confluentcloud:index/kafkaClusterConfig:KafkaClusterConfig test lkc-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"config":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom cluster settings to set:\n"},"credentials":{"$ref":"#/types/confluentcloud:index/KafkaClusterConfigCredentials:KafkaClusterConfigCredentials","description":"The Cluster API Credentials.","secret":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaClusterConfigKafkaCluster:KafkaClusterConfigKafkaCluster"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Dedicated Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n"}},"required":["config"],"inputProperties":{"config":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom cluster settings to set:\n"},"credentials":{"$ref":"#/types/confluentcloud:index/KafkaClusterConfigCredentials:KafkaClusterConfigCredentials","description":"The Cluster API Credentials.","secret":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaClusterConfigKafkaCluster:KafkaClusterConfigKafkaCluster","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Dedicated Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true}},"requiredInputs":["config"],"stateInputs":{"description":"Input properties used for looking up and filtering KafkaClusterConfig resources.\n","properties":{"config":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom cluster settings to set:\n"},"credentials":{"$ref":"#/types/confluentcloud:index/KafkaClusterConfigCredentials:KafkaClusterConfigCredentials","description":"The Cluster API Credentials.","secret":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaClusterConfigKafkaCluster:KafkaClusterConfigKafkaCluster","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Dedicated Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/kafkaMirrorTopic:KafkaMirrorTopic":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-go=\"`KafkaMirrorTopic`\" pulumi-lang-python=\"`KafkaMirrorTopic`\" pulumi-lang-yaml=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-java=\"`confluentcloud.KafkaMirrorTopic`\"\u003e`confluentcloud.KafkaMirrorTopic`\u003c/span\u003e provides a Kafka Mirror Topic resource that enables creating and deleting Kafka Mirror Topics on a Kafka cluster on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental mirror topic deletion. This setting rejects plans that would destroy or recreate the mirror topic. Read more about it in the Terraform docs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.KafkaMirrorTopic(\"example\", {\n    sourceKafkaTopic: {\n        topicName: \"orders\",\n    },\n    clusterLink: {\n        linkName: source_outbound.linkName,\n    },\n    kafkaCluster: {\n        id: destination.id,\n        restEndpoint: destination.restEndpoint,\n        credentials: {\n            key: app_manager_destination_cluster_api_key.id,\n            secret: app_manager_destination_cluster_api_key.secret,\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.KafkaMirrorTopic(\"example\",\n    source_kafka_topic={\n        \"topic_name\": \"orders\",\n    },\n    cluster_link={\n        \"link_name\": source_outbound[\"linkName\"],\n    },\n    kafka_cluster={\n        \"id\": destination[\"id\"],\n        \"rest_endpoint\": destination[\"restEndpoint\"],\n        \"credentials\": {\n            \"key\": app_manager_destination_cluster_api_key[\"id\"],\n            \"secret\": app_manager_destination_cluster_api_key[\"secret\"],\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.KafkaMirrorTopic(\"example\", new()\n    {\n        SourceKafkaTopic = new ConfluentCloud.Inputs.KafkaMirrorTopicSourceKafkaTopicArgs\n        {\n            TopicName = \"orders\",\n        },\n        ClusterLink = new ConfluentCloud.Inputs.KafkaMirrorTopicClusterLinkArgs\n        {\n            LinkName = source_outbound.LinkName,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.KafkaMirrorTopicKafkaClusterArgs\n        {\n            Id = destination.Id,\n            RestEndpoint = destination.RestEndpoint,\n            Credentials = new ConfluentCloud.Inputs.KafkaMirrorTopicKafkaClusterCredentialsArgs\n            {\n                Key = app_manager_destination_cluster_api_key.Id,\n                Secret = app_manager_destination_cluster_api_key.Secret,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewKafkaMirrorTopic(ctx, \"example\", \u0026confluentcloud.KafkaMirrorTopicArgs{\n\t\t\tSourceKafkaTopic: \u0026confluentcloud.KafkaMirrorTopicSourceKafkaTopicArgs{\n\t\t\t\tTopicName: pulumi.String(\"orders\"),\n\t\t\t},\n\t\t\tClusterLink: \u0026confluentcloud.KafkaMirrorTopicClusterLinkArgs{\n\t\t\t\tLinkName: pulumi.Any(source_outbound.LinkName),\n\t\t\t},\n\t\t\tKafkaCluster: \u0026confluentcloud.KafkaMirrorTopicKafkaClusterArgs{\n\t\t\t\tId:           pulumi.Any(destination.Id),\n\t\t\t\tRestEndpoint: pulumi.Any(destination.RestEndpoint),\n\t\t\t\tCredentials: \u0026confluentcloud.KafkaMirrorTopicKafkaClusterCredentialsArgs{\n\t\t\t\t\tKey:    pulumi.Any(app_manager_destination_cluster_api_key.Id),\n\t\t\t\t\tSecret: pulumi.Any(app_manager_destination_cluster_api_key.Secret),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.KafkaMirrorTopic;\nimport com.pulumi.confluentcloud.KafkaMirrorTopicArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaMirrorTopicSourceKafkaTopicArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaMirrorTopicClusterLinkArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaMirrorTopicKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaMirrorTopicKafkaClusterCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new KafkaMirrorTopic(\"example\", KafkaMirrorTopicArgs.builder()\n            .sourceKafkaTopic(KafkaMirrorTopicSourceKafkaTopicArgs.builder()\n                .topicName(\"orders\")\n                .build())\n            .clusterLink(KafkaMirrorTopicClusterLinkArgs.builder()\n                .linkName(source_outbound.linkName())\n                .build())\n            .kafkaCluster(KafkaMirrorTopicKafkaClusterArgs.builder()\n                .id(destination.id())\n                .restEndpoint(destination.restEndpoint())\n                .credentials(KafkaMirrorTopicKafkaClusterCredentialsArgs.builder()\n                    .key(app_manager_destination_cluster_api_key.id())\n                    .secret(app_manager_destination_cluster_api_key.secret())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:KafkaMirrorTopic\n    properties:\n      sourceKafkaTopic:\n        topicName: orders\n      clusterLink:\n        linkName: ${[\"source-outbound\"].linkName}\n      kafkaCluster:\n        id: ${destination.id}\n        restEndpoint: ${destination.restEndpoint}\n        credentials:\n          key: ${[\"app-manager-destination-cluster-api-key\"].id}\n          secret: ${[\"app-manager-destination-cluster-api-key\"].secret}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-go=\"`KafkaMirrorTopic`\" pulumi-lang-python=\"`KafkaMirrorTopic`\" pulumi-lang-yaml=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-java=\"`confluentcloud.KafkaMirrorTopic`\"\u003e`confluentcloud.KafkaMirrorTopic`\u003c/span\u003e resource:\n  * destination-initiated-cluster-link-rbac: An example of setting up a _destination_ initiated cluster link with a mirror topic\n  * source-initiated-cluster-link-rbac: An example of setting up a _source_ initiated cluster link with a mirror topic\n\nSee [Mirror Topics on Confluent Cloud](https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/mirror-topics-cc.html) to learn more about Mirror Topics on Confluent Cloud.\n\n## Import\n\n\u003e **Note:** `IMPORT_KAFKA_API_KEY` (`kafka_cluster.credentials.key`), `IMPORT_KAFKA_API_SECRET` (`kafka_cluster.credentials.secret`), and `IMPORT_KAFKA_REST_ENDPOINT` (`kafka_cluster.rest_endpoint`) environment variables must be set before importing a Kafka mirror topic.\n\nYou can import a Kafka mirror topic by using the Kafka cluster ID, cluster link name, and Kafka topic name in the format `\u003cKafka cluster ID\u003e/\u003cCluster link name\u003e/\u003cKafka topic name\u003e`, for example:\n\n```sh\n$ export IMPORT_KAFKA_API_KEY=\"\u003ckafka_api_key\u003e\"\n$ export IMPORT_KAFKA_API_SECRET=\"\u003ckafka_api_secret\u003e\"\n$ export IMPORT_KAFKA_REST_ENDPOINT=\"\u003ckafka_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/kafkaMirrorTopic:KafkaMirrorTopic my_mirror_topic lkc-abc123/my-cluster-link/orders-123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"clusterLink":{"$ref":"#/types/confluentcloud:index/KafkaMirrorTopicClusterLink:KafkaMirrorTopicClusterLink"},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaMirrorTopicKafkaCluster:KafkaMirrorTopicKafkaCluster"},"mirrorTopicName":{"type":"string","description":"The name of the mirror topic. Only required when there is a prefix configured on the cluster link. For example, when `\u003cprefix\u003e` is configured for the cluster link, the mirror topic name has to be of the format `\u003cprefix\u003e\u003csource_topic_name\u003e`.\n"},"sourceKafkaTopic":{"$ref":"#/types/confluentcloud:index/KafkaMirrorTopicSourceKafkaTopic:KafkaMirrorTopicSourceKafkaTopic"},"status":{"type":"string","description":"The status of the mirror topic. The supported values are `\"ACTIVE\"`, `\"PAUSED\"`, `\"PROMOTED\"`, `\"FAILED_OVER\"`. Pausing (`\"ACTIVE\" \u003e \"PAUSED\"`), resuming (`\"PAUSED\" \u003e \"ACTIVE\"`), promoting, and failing over a mirror topic is supported via an update operation. Defaults to `\"ACTIVE\"`.\n\n\u003e **Note:** A Kafka API key consists of a key and a secret. Kafka API keys are required to interact with Kafka clusters in Confluent Cloud. Each Kafka API key is valid for one specific Kafka cluster.\n\n\u003e **Note:** To rotate a Kafka API key, create a new Kafka API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Kafka API key, run `pulumi up -target=\"confluent_kafka_mirror_topic.example\"`, and remove the old Kafka API key. Alternatively, in case the old Kafka API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_kafka_mirror_topic.example\" -out=rotate-kafka-api-key` and `pulumi up rotate-kafka-api-key` instead.\n\n\u003e **Note:** Setting or updating mirror topic settings is currently not supported.\n\n\u003e **Note:** For more information on the topic settings, see [Cluster Linking configurations](https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/mirror-topics-cc.html#configurations).\n\n!\u003e **Warning:** Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-go=\"`KafkaMirrorTopic`\" pulumi-lang-python=\"`KafkaMirrorTopic`\" pulumi-lang-yaml=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-java=\"`confluentcloud.KafkaMirrorTopic`\"\u003e`confluentcloud.KafkaMirrorTopic`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n\n!\u003e **Warning:** When promoting or failing over a mirror topic, don't destroy a mirror topic. Instead, import a Kafka topic, and then save have both resource definitions in Terraform configuration or run `terraform state rm confluent_kafka_mirror_topic.example` command to delete a mirror topic from Terraform state.\n"}},"required":["clusterLink","kafkaCluster","mirrorTopicName","sourceKafkaTopic","status"],"inputProperties":{"clusterLink":{"$ref":"#/types/confluentcloud:index/KafkaMirrorTopicClusterLink:KafkaMirrorTopicClusterLink","willReplaceOnChanges":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaMirrorTopicKafkaCluster:KafkaMirrorTopicKafkaCluster"},"mirrorTopicName":{"type":"string","description":"The name of the mirror topic. Only required when there is a prefix configured on the cluster link. For example, when `\u003cprefix\u003e` is configured for the cluster link, the mirror topic name has to be of the format `\u003cprefix\u003e\u003csource_topic_name\u003e`.\n","willReplaceOnChanges":true},"sourceKafkaTopic":{"$ref":"#/types/confluentcloud:index/KafkaMirrorTopicSourceKafkaTopic:KafkaMirrorTopicSourceKafkaTopic","willReplaceOnChanges":true},"status":{"type":"string","description":"The status of the mirror topic. The supported values are `\"ACTIVE\"`, `\"PAUSED\"`, `\"PROMOTED\"`, `\"FAILED_OVER\"`. Pausing (`\"ACTIVE\" \u003e \"PAUSED\"`), resuming (`\"PAUSED\" \u003e \"ACTIVE\"`), promoting, and failing over a mirror topic is supported via an update operation. Defaults to `\"ACTIVE\"`.\n\n\u003e **Note:** A Kafka API key consists of a key and a secret. Kafka API keys are required to interact with Kafka clusters in Confluent Cloud. Each Kafka API key is valid for one specific Kafka cluster.\n\n\u003e **Note:** To rotate a Kafka API key, create a new Kafka API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Kafka API key, run `pulumi up -target=\"confluent_kafka_mirror_topic.example\"`, and remove the old Kafka API key. Alternatively, in case the old Kafka API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_kafka_mirror_topic.example\" -out=rotate-kafka-api-key` and `pulumi up rotate-kafka-api-key` instead.\n\n\u003e **Note:** Setting or updating mirror topic settings is currently not supported.\n\n\u003e **Note:** For more information on the topic settings, see [Cluster Linking configurations](https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/mirror-topics-cc.html#configurations).\n\n!\u003e **Warning:** Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-go=\"`KafkaMirrorTopic`\" pulumi-lang-python=\"`KafkaMirrorTopic`\" pulumi-lang-yaml=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-java=\"`confluentcloud.KafkaMirrorTopic`\"\u003e`confluentcloud.KafkaMirrorTopic`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n\n!\u003e **Warning:** When promoting or failing over a mirror topic, don't destroy a mirror topic. Instead, import a Kafka topic, and then save have both resource definitions in Terraform configuration or run `terraform state rm confluent_kafka_mirror_topic.example` command to delete a mirror topic from Terraform state.\n"}},"requiredInputs":["clusterLink","kafkaCluster","sourceKafkaTopic"],"stateInputs":{"description":"Input properties used for looking up and filtering KafkaMirrorTopic resources.\n","properties":{"clusterLink":{"$ref":"#/types/confluentcloud:index/KafkaMirrorTopicClusterLink:KafkaMirrorTopicClusterLink","willReplaceOnChanges":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaMirrorTopicKafkaCluster:KafkaMirrorTopicKafkaCluster"},"mirrorTopicName":{"type":"string","description":"The name of the mirror topic. Only required when there is a prefix configured on the cluster link. For example, when `\u003cprefix\u003e` is configured for the cluster link, the mirror topic name has to be of the format `\u003cprefix\u003e\u003csource_topic_name\u003e`.\n","willReplaceOnChanges":true},"sourceKafkaTopic":{"$ref":"#/types/confluentcloud:index/KafkaMirrorTopicSourceKafkaTopic:KafkaMirrorTopicSourceKafkaTopic","willReplaceOnChanges":true},"status":{"type":"string","description":"The status of the mirror topic. The supported values are `\"ACTIVE\"`, `\"PAUSED\"`, `\"PROMOTED\"`, `\"FAILED_OVER\"`. Pausing (`\"ACTIVE\" \u003e \"PAUSED\"`), resuming (`\"PAUSED\" \u003e \"ACTIVE\"`), promoting, and failing over a mirror topic is supported via an update operation. Defaults to `\"ACTIVE\"`.\n\n\u003e **Note:** A Kafka API key consists of a key and a secret. Kafka API keys are required to interact with Kafka clusters in Confluent Cloud. Each Kafka API key is valid for one specific Kafka cluster.\n\n\u003e **Note:** To rotate a Kafka API key, create a new Kafka API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Kafka API key, run `pulumi up -target=\"confluent_kafka_mirror_topic.example\"`, and remove the old Kafka API key. Alternatively, in case the old Kafka API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_kafka_mirror_topic.example\" -out=rotate-kafka-api-key` and `pulumi up rotate-kafka-api-key` instead.\n\n\u003e **Note:** Setting or updating mirror topic settings is currently not supported.\n\n\u003e **Note:** For more information on the topic settings, see [Cluster Linking configurations](https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/mirror-topics-cc.html#configurations).\n\n!\u003e **Warning:** Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-go=\"`KafkaMirrorTopic`\" pulumi-lang-python=\"`KafkaMirrorTopic`\" pulumi-lang-yaml=\"`confluentcloud.KafkaMirrorTopic`\" pulumi-lang-java=\"`confluentcloud.KafkaMirrorTopic`\"\u003e`confluentcloud.KafkaMirrorTopic`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n\n!\u003e **Warning:** When promoting or failing over a mirror topic, don't destroy a mirror topic. Instead, import a Kafka topic, and then save have both resource definitions in Terraform configuration or run `terraform state rm confluent_kafka_mirror_topic.example` command to delete a mirror topic from Terraform state.\n"}},"type":"object"}},"confluentcloud:index/kafkaTopic:KafkaTopic":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaTopic`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaTopic`\" pulumi-lang-go=\"`KafkaTopic`\" pulumi-lang-python=\"`KafkaTopic`\" pulumi-lang-yaml=\"`confluentcloud.KafkaTopic`\" pulumi-lang-java=\"`confluentcloud.KafkaTopic`\"\u003e`confluentcloud.KafkaTopic`\u003c/span\u003e provides a Kafka Topic resource that enables creating and deleting Kafka Topics on a Kafka cluster on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental topic deletion. This setting rejects plans that would destroy or recreate the topic, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Option #1: Manage multiple Kafka clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst orders = new confluentcloud.KafkaTopic(\"orders\", {\n    kafkaCluster: {\n        id: basic_cluster.id,\n    },\n    topicName: \"orders\",\n    restEndpoint: basic_cluster.restEndpoint,\n    credentials: {\n        key: app_manager_kafka_api_key.id,\n        secret: app_manager_kafka_api_key.secret,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\norders = confluentcloud.KafkaTopic(\"orders\",\n    kafka_cluster={\n        \"id\": basic_cluster[\"id\"],\n    },\n    topic_name=\"orders\",\n    rest_endpoint=basic_cluster[\"restEndpoint\"],\n    credentials={\n        \"key\": app_manager_kafka_api_key[\"id\"],\n        \"secret\": app_manager_kafka_api_key[\"secret\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var orders = new ConfluentCloud.KafkaTopic(\"orders\", new()\n    {\n        KafkaCluster = new ConfluentCloud.Inputs.KafkaTopicKafkaClusterArgs\n        {\n            Id = basic_cluster.Id,\n        },\n        TopicName = \"orders\",\n        RestEndpoint = basic_cluster.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.KafkaTopicCredentialsArgs\n        {\n            Key = app_manager_kafka_api_key.Id,\n            Secret = app_manager_kafka_api_key.Secret,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewKafkaTopic(ctx, \"orders\", \u0026confluentcloud.KafkaTopicArgs{\n\t\t\tKafkaCluster: \u0026confluentcloud.KafkaTopicKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(basic_cluster.Id),\n\t\t\t},\n\t\t\tTopicName:    pulumi.String(\"orders\"),\n\t\t\tRestEndpoint: pulumi.Any(basic_cluster.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.KafkaTopicCredentialsArgs{\n\t\t\t\tKey:    pulumi.Any(app_manager_kafka_api_key.Id),\n\t\t\t\tSecret: pulumi.Any(app_manager_kafka_api_key.Secret),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.KafkaTopic;\nimport com.pulumi.confluentcloud.KafkaTopicArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaTopicKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaTopicCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var orders = new KafkaTopic(\"orders\", KafkaTopicArgs.builder()\n            .kafkaCluster(KafkaTopicKafkaClusterArgs.builder()\n                .id(basic_cluster.id())\n                .build())\n            .topicName(\"orders\")\n            .restEndpoint(basic_cluster.restEndpoint())\n            .credentials(KafkaTopicCredentialsArgs.builder()\n                .key(app_manager_kafka_api_key.id())\n                .secret(app_manager_kafka_api_key.secret())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  orders:\n    type: confluentcloud:KafkaTopic\n    properties:\n      kafkaCluster:\n        id: ${[\"basic-cluster\"].id}\n      topicName: orders\n      restEndpoint: ${[\"basic-cluster\"].restEndpoint}\n      credentials:\n        key: ${[\"app-manager-kafka-api-key\"].id}\n        secret: ${[\"app-manager-kafka-api-key\"].secret}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Kafka cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst orders = new confluentcloud.KafkaTopic(\"orders\", {topicName: \"orders\"});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\norders = confluentcloud.KafkaTopic(\"orders\", topic_name=\"orders\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var orders = new ConfluentCloud.KafkaTopic(\"orders\", new()\n    {\n        TopicName = \"orders\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewKafkaTopic(ctx, \"orders\", \u0026confluentcloud.KafkaTopicArgs{\n\t\t\tTopicName: pulumi.String(\"orders\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.KafkaTopic;\nimport com.pulumi.confluentcloud.KafkaTopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var orders = new KafkaTopic(\"orders\", KafkaTopicArgs.builder()\n            .topicName(\"orders\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  orders:\n    type: confluentcloud:KafkaTopic\n    properties:\n      topicName: orders\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaTopic`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaTopic`\" pulumi-lang-go=\"`KafkaTopic`\" pulumi-lang-python=\"`KafkaTopic`\" pulumi-lang-yaml=\"`confluentcloud.KafkaTopic`\" pulumi-lang-java=\"`confluentcloud.KafkaTopic`\"\u003e`confluentcloud.KafkaTopic`\u003c/span\u003e resource:\n  * basic-kafka-acls: _Basic_ Kafka cluster with authorization using ACLs\n  * basic-kafka-acls-with-alias: _Basic_ Kafka cluster with authorization using ACLs\n  * standard-kafka-acls: _Standard_ Kafka cluster with authorization using ACLs\n  * standard-kafka-rbac: _Standard_ Kafka cluster with authorization using RBAC\n  * dedicated-public-kafka-acls: _Dedicated_ Kafka cluster that is accessible over the public internet with authorization using ACLs\n  * dedicated-public-kafka-rbac: _Dedicated_ Kafka cluster that is accessible over the public internet with authorization using RBAC\n  * dedicated-privatelink-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-privatelink-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using RBAC\n  * dedicated-vnet-peering-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vnet-peering-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-transit-gateway-attachment-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using ACLs\n  * dedicated-transit-gateway-attachment-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using RBAC\n  * enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n\n## Import\n\nYou can import a Kafka topic by using the Kafka cluster ID and Kafka topic name in the format `\u003cKafka cluster ID\u003e/\u003cKafka topic name\u003e`, for example:\n\nOption #1: Manage multiple Kafka clusters in the same Pulumi Stack\n\n```sh\n$ export IMPORT_KAFKA_API_KEY=\"\u003ckafka_api_key\u003e\"\n$ export IMPORT_KAFKA_API_SECRET=\"\u003ckafka_api_secret\u003e\"\n$ export IMPORT_KAFKA_REST_ENDPOINT=\"\u003ckafka_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/kafkaTopic:KafkaTopic my_topic lkc-abc123/orders-123\n```\n\nOption #2: Manage a single Kafka cluster in the same Pulumi Stack\n\n```sh\n$ pulumi import confluentcloud:index/kafkaTopic:KafkaTopic my_topic lkc-abc123/orders-123\n```\n\n\u003e **Note:** When importing a Kafka topic that was created by using the Confluent Cloud Console, you must list all the default topic settings under the \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\"\u003e`config`\u003c/span\u003e block. Your Terraform configuration will look like this:\n```sh\nresource \"confluent_kafka_topic\" \"orders\" {\n  kafka_cluster {\n    id = confluent_kafka_cluster.basic-cluster.id\n  }\n  topic_name         = \"orders\"\n  partitions_count   = 4\n  rest_endpoint      = confluent_kafka_cluster.basic-cluster.rest_endpoint\n  # https://docs.confluent.io/cloud/current/client-apps/topics/manage.html#ak-topic-configurations-for-all-ccloud-cluster-types\n  config = {\n    \"cleanup.policy\"                      = \"delete\"\n    \"delete.retention.ms\"                 = \"86400000\"\n    \"max.compaction.lag.ms\"               = \"9223372036854775807\"\n    \"max.message.bytes\"                   = \"2097164\"\n    \"message.timestamp.after.max.ms\"      = \"9223372036854775807\"\n    \"message.timestamp.before.max.ms\"     = \"9223372036854775807\"      \n    \"message.timestamp.difference.max.ms\" = \"9223372036854775807\"\n    \"message.timestamp.type\"              = \"CreateTime\"\n    \"min.compaction.lag.ms\"               = \"0\"\n    \"min.insync.replicas\"                 = \"2\"\n    \"retention.bytes\"                     = \"-1\"\n    \"retention.ms\"                        = \"604800000\"\n    \"segment.bytes\"                       = \"104857600\"\n    \"segment.ms\"                          = \"604800000\"\n  }\n  credentials {\n    key    = confluent_api_key.app-manager-kafka-api-key.id\n    secret = confluent_api_key.app-manager-kafka-api-key.secret\n  }\n}\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"config":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom topic settings to set:\n"},"credentials":{"$ref":"#/types/confluentcloud:index/KafkaTopicCredentials:KafkaTopicCredentials","description":"The Cluster API Credentials.","secret":true},"httpEndpoint":{"type":"string","deprecationMessage":"This property has been deprecated. Please use \"restEndpoint\" instead."},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaTopicKafkaCluster:KafkaTopicKafkaCluster"},"partitionsCount":{"type":"integer","description":"The number of partitions to create in the topic. Defaults to \u003cspan pulumi-lang-nodejs=\"`6`\" pulumi-lang-dotnet=\"`6`\" pulumi-lang-go=\"`6`\" pulumi-lang-python=\"`6`\" pulumi-lang-yaml=\"`6`\" pulumi-lang-java=\"`6`\"\u003e`6`\u003c/span\u003e.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"topicName":{"type":"string","description":"The name of the topic, for example, `orders-1`. The topic name can be up to 249 characters in length, and can include the following characters: a-z, A-Z, 0-9, . (dot), _ (underscore), and - (dash). As a best practice, we recommend against using any personally identifiable information (PII) when naming your topic.\n"}},"required":["config","httpEndpoint","topicName"],"inputProperties":{"config":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom topic settings to set:\n"},"credentials":{"$ref":"#/types/confluentcloud:index/KafkaTopicCredentials:KafkaTopicCredentials","description":"The Cluster API Credentials.","secret":true},"httpEndpoint":{"type":"string","deprecationMessage":"This property has been deprecated. Please use \"restEndpoint\" instead."},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaTopicKafkaCluster:KafkaTopicKafkaCluster","willReplaceOnChanges":true},"partitionsCount":{"type":"integer","description":"The number of partitions to create in the topic. Defaults to \u003cspan pulumi-lang-nodejs=\"`6`\" pulumi-lang-dotnet=\"`6`\" pulumi-lang-go=\"`6`\" pulumi-lang-python=\"`6`\" pulumi-lang-yaml=\"`6`\" pulumi-lang-java=\"`6`\"\u003e`6`\u003c/span\u003e.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"topicName":{"type":"string","description":"The name of the topic, for example, `orders-1`. The topic name can be up to 249 characters in length, and can include the following characters: a-z, A-Z, 0-9, . (dot), _ (underscore), and - (dash). As a best practice, we recommend against using any personally identifiable information (PII) when naming your topic.\n","willReplaceOnChanges":true}},"requiredInputs":["topicName"],"stateInputs":{"description":"Input properties used for looking up and filtering KafkaTopic resources.\n","properties":{"config":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom topic settings to set:\n"},"credentials":{"$ref":"#/types/confluentcloud:index/KafkaTopicCredentials:KafkaTopicCredentials","description":"The Cluster API Credentials.","secret":true},"httpEndpoint":{"type":"string","deprecationMessage":"This property has been deprecated. Please use \"restEndpoint\" instead."},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KafkaTopicKafkaCluster:KafkaTopicKafkaCluster","willReplaceOnChanges":true},"partitionsCount":{"type":"integer","description":"The number of partitions to create in the topic. Defaults to \u003cspan pulumi-lang-nodejs=\"`6`\" pulumi-lang-dotnet=\"`6`\" pulumi-lang-go=\"`6`\" pulumi-lang-python=\"`6`\" pulumi-lang-yaml=\"`6`\" pulumi-lang-java=\"`6`\"\u003e`6`\u003c/span\u003e.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"topicName":{"type":"string","description":"The name of the topic, for example, `orders-1`. The topic name can be up to 249 characters in length, and can include the following characters: a-z, A-Z, 0-9, . (dot), _ (underscore), and - (dash). As a best practice, we recommend against using any personally identifiable information (PII) when naming your topic.\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/ksqlCluster:KsqlCluster":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n!\u003e **Warning:**  It is strongly recommended that you provision a `data.confluent_schema_registry_cluster` resource before you provision a \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KsqlCluster`\" pulumi-lang-dotnet=\"`confluentcloud.KsqlCluster`\" pulumi-lang-go=\"`KsqlCluster`\" pulumi-lang-python=\"`KsqlCluster`\" pulumi-lang-yaml=\"`confluentcloud.KsqlCluster`\" pulumi-lang-java=\"`confluentcloud.KsqlCluster`\"\u003e`confluentcloud.KsqlCluster`\u003c/span\u003e resource in a given environment. If you're provisioning the `data.confluent_schema_registry_cluster` and the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KsqlCluster`\" pulumi-lang-dotnet=\"`confluentcloud.KsqlCluster`\" pulumi-lang-go=\"`KsqlCluster`\" pulumi-lang-python=\"`KsqlCluster`\" pulumi-lang-yaml=\"`confluentcloud.KsqlCluster`\" pulumi-lang-java=\"`confluentcloud.KsqlCluster`\"\u003e`confluentcloud.KsqlCluster`\u003c/span\u003e resource in the same pulumi up command, reference the `data.confluent_schema_registry_cluster` from the \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`depends_on`\u003c/span\u003e argument inside the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KsqlCluster`\" pulumi-lang-dotnet=\"`confluentcloud.KsqlCluster`\" pulumi-lang-go=\"`KsqlCluster`\" pulumi-lang-python=\"`KsqlCluster`\" pulumi-lang-yaml=\"`confluentcloud.KsqlCluster`\" pulumi-lang-java=\"`confluentcloud.KsqlCluster`\"\u003e`confluentcloud.KsqlCluster`\u003c/span\u003e resource. This ensures that the `data.confluent_schema_registry_cluster` resource is created before the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KsqlCluster`\" pulumi-lang-dotnet=\"`confluentcloud.KsqlCluster`\" pulumi-lang-go=\"`KsqlCluster`\" pulumi-lang-python=\"`KsqlCluster`\" pulumi-lang-yaml=\"`confluentcloud.KsqlCluster`\" pulumi-lang-java=\"`confluentcloud.KsqlCluster`\"\u003e`confluentcloud.KsqlCluster`\u003c/span\u003e resource. If you provision a \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KsqlCluster`\" pulumi-lang-dotnet=\"`confluentcloud.KsqlCluster`\" pulumi-lang-go=\"`KsqlCluster`\" pulumi-lang-python=\"`KsqlCluster`\" pulumi-lang-yaml=\"`confluentcloud.KsqlCluster`\" pulumi-lang-java=\"`confluentcloud.KsqlCluster`\"\u003e`confluentcloud.KsqlCluster`\u003c/span\u003e resource without a `data.confluent_schema_registry_cluster` resource, and later, you want to add a `data.confluent_schema_registry_cluster` resource, you must destroy and re-create your \u003cspan pulumi-lang-nodejs=\"`confluentcloud.KsqlCluster`\" pulumi-lang-dotnet=\"`confluentcloud.KsqlCluster`\" pulumi-lang-go=\"`KsqlCluster`\" pulumi-lang-python=\"`KsqlCluster`\" pulumi-lang-yaml=\"`confluentcloud.KsqlCluster`\" pulumi-lang-java=\"`confluentcloud.KsqlCluster`\"\u003e`confluentcloud.KsqlCluster`\u003c/span\u003e resource after provisioning a `data.confluent_schema_registry_cluster` resource.\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.KsqlCluster`\" pulumi-lang-dotnet=\"`confluentcloud.KsqlCluster`\" pulumi-lang-go=\"`KsqlCluster`\" pulumi-lang-python=\"`KsqlCluster`\" pulumi-lang-yaml=\"`confluentcloud.KsqlCluster`\" pulumi-lang-java=\"`confluentcloud.KsqlCluster`\"\u003e`confluentcloud.KsqlCluster`\u003c/span\u003e provides a ksqlDB cluster resource that enables creating, editing, and deleting ksqlDB clusters on Confluent Cloud.\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a ksqlDB cluster.\n\nYou can import a ksqlDB cluster by using Environment ID and ksqlDB cluster ID, in the format `\u003cEnvironment ID\u003e/\u003cksqlDB cluster ID\u003e`, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/ksqlCluster:KsqlCluster example env-abc123/lksqlc-abc123\n```\n\n!\u003e **Warning:**  Do not forget to delete the terminal's command history afterward for security purposes.\n\n","properties":{"apiVersion":{"type":"string","description":"(Required String) An API Version of the schema version of the ksqlDB cluster, for example, `ksqldbcm/v2`.\n"},"credentialIdentity":{"$ref":"#/types/confluentcloud:index/KsqlClusterCredentialIdentity:KsqlClusterCredentialIdentity"},"csu":{"type":"integer","description":"The number of Confluent Streaming Units (CSUs) for the ksqlDB cluster.\n"},"displayName":{"type":"string","description":"The name of the ksqlDB cluster.\n"},"environment":{"$ref":"#/types/confluentcloud:index/KsqlClusterEnvironment:KsqlClusterEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KsqlClusterKafkaCluster:KsqlClusterKafkaCluster"},"kind":{"type":"string","description":"(Required String) A kind of the ksqlDB cluster, for example, `Cluster`.\n"},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the ksqlDB cluster.\n"},"restEndpoint":{"type":"string","description":"(Required String) The API endpoint of the ksqlDB cluster, for example, `https://pksqlc-00000.us-central1.gcp.glb.confluent.cloud`.\n"},"storage":{"type":"integer","description":"(Required Integer) The amount of storage (in GB) provisioned to the ksqlDB cluster.\n"},"topicPrefix":{"type":"string","description":"(Required String) Topic name prefix used by this ksqlDB cluster. Used to assign ACLs for this ksqlDB cluster to use, for example, `pksqlc-00000`.\n"},"useDetailedProcessingLog":{"type":"boolean","description":"Controls whether the row data should be included in the processing log topic. Set it to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if you don't want to emit sensitive information to the processing log. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"}},"required":["apiVersion","credentialIdentity","csu","displayName","environment","kafkaCluster","kind","resourceName","restEndpoint","storage","topicPrefix"],"inputProperties":{"credentialIdentity":{"$ref":"#/types/confluentcloud:index/KsqlClusterCredentialIdentity:KsqlClusterCredentialIdentity","willReplaceOnChanges":true},"csu":{"type":"integer","description":"The number of Confluent Streaming Units (CSUs) for the ksqlDB cluster.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the ksqlDB cluster.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/KsqlClusterEnvironment:KsqlClusterEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KsqlClusterKafkaCluster:KsqlClusterKafkaCluster","willReplaceOnChanges":true},"useDetailedProcessingLog":{"type":"boolean","description":"Controls whether the row data should be included in the processing log topic. Set it to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if you don't want to emit sensitive information to the processing log. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n","willReplaceOnChanges":true}},"requiredInputs":["credentialIdentity","csu","displayName","environment","kafkaCluster"],"stateInputs":{"description":"Input properties used for looking up and filtering KsqlCluster resources.\n","properties":{"apiVersion":{"type":"string","description":"(Required String) An API Version of the schema version of the ksqlDB cluster, for example, `ksqldbcm/v2`.\n"},"credentialIdentity":{"$ref":"#/types/confluentcloud:index/KsqlClusterCredentialIdentity:KsqlClusterCredentialIdentity","willReplaceOnChanges":true},"csu":{"type":"integer","description":"The number of Confluent Streaming Units (CSUs) for the ksqlDB cluster.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the ksqlDB cluster.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/KsqlClusterEnvironment:KsqlClusterEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/KsqlClusterKafkaCluster:KsqlClusterKafkaCluster","willReplaceOnChanges":true},"kind":{"type":"string","description":"(Required String) A kind of the ksqlDB cluster, for example, `Cluster`.\n"},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the ksqlDB cluster.\n"},"restEndpoint":{"type":"string","description":"(Required String) The API endpoint of the ksqlDB cluster, for example, `https://pksqlc-00000.us-central1.gcp.glb.confluent.cloud`.\n"},"storage":{"type":"integer","description":"(Required Integer) The amount of storage (in GB) provisioned to the ksqlDB cluster.\n"},"topicPrefix":{"type":"string","description":"(Required String) Topic name prefix used by this ksqlDB cluster. Used to assign ACLs for this ksqlDB cluster to use, for example, `pksqlc-00000`.\n"},"useDetailedProcessingLog":{"type":"boolean","description":"Controls whether the row data should be included in the processing log topic. Set it to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if you don't want to emit sensitive information to the processing log. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/network:Network":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Network`\" pulumi-lang-dotnet=\"`confluentcloud.Network`\" pulumi-lang-go=\"`Network`\" pulumi-lang-python=\"`Network`\" pulumi-lang-yaml=\"`confluentcloud.Network`\" pulumi-lang-java=\"`confluentcloud.Network`\"\u003e`confluentcloud.Network`\u003c/span\u003e provides a Network resource that enables creating, editing, and deleting Networks on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental network deletion. This setting rejects plans that would destroy or recreate the network, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Example Network that supports Private Link Connections\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst aws_private_link = new confluentcloud.Network(\"aws-private-link\", {\n    displayName: \"AWS Private Link Network\",\n    cloud: \"AWS\",\n    region: \"us-east-1\",\n    connectionTypes: [\"PRIVATELINK\"],\n    zones: [\n        \"use1-az1\",\n        \"use1-az2\",\n        \"use1-az6\",\n    ],\n    environment: {\n        id: development.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\naws_private_link = confluentcloud.Network(\"aws-private-link\",\n    display_name=\"AWS Private Link Network\",\n    cloud=\"AWS\",\n    region=\"us-east-1\",\n    connection_types=[\"PRIVATELINK\"],\n    zones=[\n        \"use1-az1\",\n        \"use1-az2\",\n        \"use1-az6\",\n    ],\n    environment={\n        \"id\": development.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var aws_private_link = new ConfluentCloud.Network(\"aws-private-link\", new()\n    {\n        DisplayName = \"AWS Private Link Network\",\n        Cloud = \"AWS\",\n        Region = \"us-east-1\",\n        ConnectionTypes = new[]\n        {\n            \"PRIVATELINK\",\n        },\n        Zones = new[]\n        {\n            \"use1-az1\",\n            \"use1-az2\",\n            \"use1-az6\",\n        },\n        Environment = new ConfluentCloud.Inputs.NetworkEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewNetwork(ctx, \"aws-private-link\", \u0026confluentcloud.NetworkArgs{\n\t\t\tDisplayName: pulumi.String(\"AWS Private Link Network\"),\n\t\t\tCloud:       pulumi.String(\"AWS\"),\n\t\t\tRegion:      pulumi.String(\"us-east-1\"),\n\t\t\tConnectionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"PRIVATELINK\"),\n\t\t\t},\n\t\t\tZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"use1-az1\"),\n\t\t\t\tpulumi.String(\"use1-az2\"),\n\t\t\t\tpulumi.String(\"use1-az6\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.NetworkEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Network;\nimport com.pulumi.confluentcloud.NetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var aws_private_link = new Network(\"aws-private-link\", NetworkArgs.builder()\n            .displayName(\"AWS Private Link Network\")\n            .cloud(\"AWS\")\n            .region(\"us-east-1\")\n            .connectionTypes(\"PRIVATELINK\")\n            .zones(            \n                \"use1-az1\",\n                \"use1-az2\",\n                \"use1-az6\")\n            .environment(NetworkEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  aws-private-link:\n    type: confluentcloud:Network\n    properties:\n      displayName: AWS Private Link Network\n      cloud: AWS\n      region: us-east-1\n      connectionTypes:\n        - PRIVATELINK\n      zones:\n        - use1-az1\n        - use1-az2\n        - use1-az6\n      environment:\n        id: ${development.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Network that supports Peering Connections\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst azure_peering = new confluentcloud.Network(\"azure-peering\", {\n    displayName: \"Azure Peering Network\",\n    cloud: \"AZURE\",\n    region: \"eastus2\",\n    cidr: \"10.10.0.0/16\",\n    connectionTypes: [\"PEERING\"],\n    environment: {\n        id: development.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\nazure_peering = confluentcloud.Network(\"azure-peering\",\n    display_name=\"Azure Peering Network\",\n    cloud=\"AZURE\",\n    region=\"eastus2\",\n    cidr=\"10.10.0.0/16\",\n    connection_types=[\"PEERING\"],\n    environment={\n        \"id\": development.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var azure_peering = new ConfluentCloud.Network(\"azure-peering\", new()\n    {\n        DisplayName = \"Azure Peering Network\",\n        Cloud = \"AZURE\",\n        Region = \"eastus2\",\n        Cidr = \"10.10.0.0/16\",\n        ConnectionTypes = new[]\n        {\n            \"PEERING\",\n        },\n        Environment = new ConfluentCloud.Inputs.NetworkEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewNetwork(ctx, \"azure-peering\", \u0026confluentcloud.NetworkArgs{\n\t\t\tDisplayName: pulumi.String(\"Azure Peering Network\"),\n\t\t\tCloud:       pulumi.String(\"AZURE\"),\n\t\t\tRegion:      pulumi.String(\"eastus2\"),\n\t\t\tCidr:        pulumi.String(\"10.10.0.0/16\"),\n\t\t\tConnectionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"PEERING\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.NetworkEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Network;\nimport com.pulumi.confluentcloud.NetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var azure_peering = new Network(\"azure-peering\", NetworkArgs.builder()\n            .displayName(\"Azure Peering Network\")\n            .cloud(\"AZURE\")\n            .region(\"eastus2\")\n            .cidr(\"10.10.0.0/16\")\n            .connectionTypes(\"PEERING\")\n            .environment(NetworkEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  azure-peering:\n    type: confluentcloud:Network\n    properties:\n      displayName: Azure Peering Network\n      cloud: AZURE\n      region: eastus2\n      cidr: 10.10.0.0/16\n      connectionTypes:\n        - PEERING\n      environment:\n        id: ${development.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Network that supports Private Service Connect Connections\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst gcp_private_service_connect = new confluentcloud.Network(\"gcp-private-service-connect\", {\n    displayName: \"GCP Private Service Connect Network\",\n    cloud: \"GCP\",\n    region: \"us-central1\",\n    connectionTypes: [\"PRIVATELINK\"],\n    zones: [\n        \"us-central1-a\",\n        \"us-central1-b\",\n        \"us-central1-c\",\n    ],\n    environment: {\n        id: development.id,\n    },\n    dnsConfig: {\n        resolution: \"PRIVATE\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\ngcp_private_service_connect = confluentcloud.Network(\"gcp-private-service-connect\",\n    display_name=\"GCP Private Service Connect Network\",\n    cloud=\"GCP\",\n    region=\"us-central1\",\n    connection_types=[\"PRIVATELINK\"],\n    zones=[\n        \"us-central1-a\",\n        \"us-central1-b\",\n        \"us-central1-c\",\n    ],\n    environment={\n        \"id\": development.id,\n    },\n    dns_config={\n        \"resolution\": \"PRIVATE\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var gcp_private_service_connect = new ConfluentCloud.Network(\"gcp-private-service-connect\", new()\n    {\n        DisplayName = \"GCP Private Service Connect Network\",\n        Cloud = \"GCP\",\n        Region = \"us-central1\",\n        ConnectionTypes = new[]\n        {\n            \"PRIVATELINK\",\n        },\n        Zones = new[]\n        {\n            \"us-central1-a\",\n            \"us-central1-b\",\n            \"us-central1-c\",\n        },\n        Environment = new ConfluentCloud.Inputs.NetworkEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        DnsConfig = new ConfluentCloud.Inputs.NetworkDnsConfigArgs\n        {\n            Resolution = \"PRIVATE\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewNetwork(ctx, \"gcp-private-service-connect\", \u0026confluentcloud.NetworkArgs{\n\t\t\tDisplayName: pulumi.String(\"GCP Private Service Connect Network\"),\n\t\t\tCloud:       pulumi.String(\"GCP\"),\n\t\t\tRegion:      pulumi.String(\"us-central1\"),\n\t\t\tConnectionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"PRIVATELINK\"),\n\t\t\t},\n\t\t\tZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t\tpulumi.String(\"us-central1-b\"),\n\t\t\t\tpulumi.String(\"us-central1-c\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.NetworkEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tDnsConfig: \u0026confluentcloud.NetworkDnsConfigArgs{\n\t\t\t\tResolution: pulumi.String(\"PRIVATE\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Network;\nimport com.pulumi.confluentcloud.NetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkDnsConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var gcp_private_service_connect = new Network(\"gcp-private-service-connect\", NetworkArgs.builder()\n            .displayName(\"GCP Private Service Connect Network\")\n            .cloud(\"GCP\")\n            .region(\"us-central1\")\n            .connectionTypes(\"PRIVATELINK\")\n            .zones(            \n                \"us-central1-a\",\n                \"us-central1-b\",\n                \"us-central1-c\")\n            .environment(NetworkEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .dnsConfig(NetworkDnsConfigArgs.builder()\n                .resolution(\"PRIVATE\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  gcp-private-service-connect:\n    type: confluentcloud:Network\n    properties:\n      displayName: GCP Private Service Connect Network\n      cloud: GCP\n      region: us-central1\n      connectionTypes:\n        - PRIVATELINK\n      zones:\n        - us-central1-a\n        - us-central1-b\n        - us-central1-c\n      environment:\n        id: ${development.id}\n      dnsConfig:\n        resolution: PRIVATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Network that supports Transit Gateway Endpoints\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst aws_transit_gateway_attachment = new confluentcloud.Network(\"aws-transit-gateway-attachment\", {\n    displayName: \"AWS Transit Gateway Attachment Network\",\n    cloud: \"AWS\",\n    region: \"us-east-1\",\n    cidr: \"10.10.0.0/16\",\n    connectionTypes: [\"TRANSITGATEWAY\"],\n    environment: {\n        id: development.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\naws_transit_gateway_attachment = confluentcloud.Network(\"aws-transit-gateway-attachment\",\n    display_name=\"AWS Transit Gateway Attachment Network\",\n    cloud=\"AWS\",\n    region=\"us-east-1\",\n    cidr=\"10.10.0.0/16\",\n    connection_types=[\"TRANSITGATEWAY\"],\n    environment={\n        \"id\": development.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var aws_transit_gateway_attachment = new ConfluentCloud.Network(\"aws-transit-gateway-attachment\", new()\n    {\n        DisplayName = \"AWS Transit Gateway Attachment Network\",\n        Cloud = \"AWS\",\n        Region = \"us-east-1\",\n        Cidr = \"10.10.0.0/16\",\n        ConnectionTypes = new[]\n        {\n            \"TRANSITGATEWAY\",\n        },\n        Environment = new ConfluentCloud.Inputs.NetworkEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewNetwork(ctx, \"aws-transit-gateway-attachment\", \u0026confluentcloud.NetworkArgs{\n\t\t\tDisplayName: pulumi.String(\"AWS Transit Gateway Attachment Network\"),\n\t\t\tCloud:       pulumi.String(\"AWS\"),\n\t\t\tRegion:      pulumi.String(\"us-east-1\"),\n\t\t\tCidr:        pulumi.String(\"10.10.0.0/16\"),\n\t\t\tConnectionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"TRANSITGATEWAY\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.NetworkEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Network;\nimport com.pulumi.confluentcloud.NetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var aws_transit_gateway_attachment = new Network(\"aws-transit-gateway-attachment\", NetworkArgs.builder()\n            .displayName(\"AWS Transit Gateway Attachment Network\")\n            .cloud(\"AWS\")\n            .region(\"us-east-1\")\n            .cidr(\"10.10.0.0/16\")\n            .connectionTypes(\"TRANSITGATEWAY\")\n            .environment(NetworkEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  aws-transit-gateway-attachment:\n    type: confluentcloud:Network\n    properties:\n      displayName: AWS Transit Gateway Attachment Network\n      cloud: AWS\n      region: us-east-1\n      cidr: 10.10.0.0/16\n      connectionTypes:\n        - TRANSITGATEWAY\n      environment:\n        id: ${development.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Network`\" pulumi-lang-dotnet=\"`confluentcloud.Network`\" pulumi-lang-go=\"`Network`\" pulumi-lang-python=\"`Network`\" pulumi-lang-yaml=\"`confluentcloud.Network`\" pulumi-lang-java=\"`confluentcloud.Network`\"\u003e`confluentcloud.Network`\u003c/span\u003e resource:\n  * dedicated-privatelink-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-privatelink-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using RBAC\n  * dedicated-vnet-peering-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vnet-peering-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-transit-gateway-attachment-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using ACLs\n  * dedicated-transit-gateway-attachment-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using RBAC\n  * enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Network.\n\nYou can import a Network by using Environment ID and Network ID, in the format `\u003cEnvironment ID\u003e/\u003cNetwork ID\u003e`. The following example shows how to import a Network:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/network:Network my_network env-abc123/n-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"aws":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkAw:NetworkAw"},"description":"(Optional Configuration Block) The AWS-specific network details if available. It supports the following:\n"},"azures":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkAzure:NetworkAzure"},"description":"(Optional Configuration Block) The Azure-specific network details if available. It supports the following:\n"},"cidr":{"type":"string","description":"The IPv4 CIDR block to be used for the network. Must be `/16`. Required for VPC peering and AWS TransitGateway.\n"},"cloud":{"type":"string","description":"The cloud service provider in which the network exists. Accepted values are: `AWS`, `AZURE`, and `GCP`.\n"},"connectionTypes":{"type":"array","items":{"type":"string"},"description":"The list of connection types that may be used with the network. Accepted connection types are: `PEERING`, `TRANSITGATEWAY`, and `PRIVATELINK`.\n"},"displayName":{"type":"string","description":"The name of the Network.\n"},"dnsConfig":{"$ref":"#/types/confluentcloud:index/NetworkDnsConfig:NetworkDnsConfig","description":"Network DNS config. It applies only to the PRIVATELINK network connection type."},"dnsDomain":{"type":"string","description":"(Optional String) The root DNS domain for the network, for example, `pr123a.us-east-2.aws.confluent.cloud` if applicable. Present on Networks that support Private Link.\n"},"endpointSuffix":{"type":"string","description":"(Optional String) The endpoint suffix for the network, if applicable. It can take various forms (for example, `.pr1jy6.us-east-2.aws.confluent.cloud` or `-pr1jy6.us-east-2.aws.confluent.cloud`). Full service endpoints can be constructed by appending the service identifier to the beginning of the endpoint suffix. \n- The Flink REST API endpoint can be constructed by adding \u003cspan pulumi-lang-nodejs=\"`flink`\" pulumi-lang-dotnet=\"`Flink`\" pulumi-lang-go=\"`flink`\" pulumi-lang-python=\"`flink`\" pulumi-lang-yaml=\"`flink`\" pulumi-lang-java=\"`flink`\"\u003e`flink`\u003c/span\u003e — that is, `https://flink` + \u003cspan pulumi-lang-nodejs=\"`endpointSuffix`\" pulumi-lang-dotnet=\"`EndpointSuffix`\" pulumi-lang-go=\"`endpointSuffix`\" pulumi-lang-python=\"`endpoint_suffix`\" pulumi-lang-yaml=\"`endpointSuffix`\" pulumi-lang-java=\"`endpointSuffix`\"\u003e`endpoint_suffix`\u003c/span\u003e; namely, `https://flink.pr1jy6.us-east-2.aws.confluent.cloud` or `https://flink${data.confluent_network.main.endpoint_suffix}`\n- The Schema Registry REST API endpoint can be constructed by adding the Schema Registry Cluster ID — that is, `https://lsrc-abc123` + \u003cspan pulumi-lang-nodejs=\"`endpointSuffix`\" pulumi-lang-dotnet=\"`EndpointSuffix`\" pulumi-lang-go=\"`endpointSuffix`\" pulumi-lang-python=\"`endpoint_suffix`\" pulumi-lang-yaml=\"`endpointSuffix`\" pulumi-lang-java=\"`endpointSuffix`\"\u003e`endpoint_suffix`\u003c/span\u003e; namely, `https://lsrc-abc123.pr1jy6.us-east-2.aws.confluent.cloud` or `https://${data.confluent_schema_registry_cluster.example.id}${data.confluent_network.main.endpoint_suffix}`.\n"},"environment":{"$ref":"#/types/confluentcloud:index/NetworkEnvironment:NetworkEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"gateways":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkGateway:NetworkGateway"},"description":"(Optional Configuration Block) supports the following:\n"},"gcps":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkGcp:NetworkGcp"},"description":"(Optional Configuration Block) The GCP-specific network details if available. It supports the following:\n"},"region":{"type":"string","description":"The cloud provider region where the network exists.\n"},"reservedCidr":{"type":"string","description":"The reserved IPv4 CIDR block to be used for the network. Must be `/24`. If not specified, Confluent Cloud Network uses `172.20.255.0/24`.\n"},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Network.\n"},"zonalSubdomains":{"type":"object","additionalProperties":{"type":"string"},"description":"(Optional Map) The DNS subdomain for each zone. Present on networks that support Private Link. Keys are zone names, for example, `use2-az1` and values are DNS domains, for example, `use2-az1.pr123a.us-east-2.aws.confluent.cloud`.\n"},"zoneInfos":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkZoneInfo:NetworkZoneInfo"},"description":"Each item represents information related to a single zone."},"zones":{"type":"array","items":{"type":"string"},"description":"The 3 availability zones for this network. They can optionally be specified for AWS networks\nused with PrivateLink, for GCP networks used with Private Service Connect, and for AWS and GCP\nnetworks used with Peering. Otherwise, they are automatically chosen by Confluent Cloud.\nOn AWS, zones are AWS [AZ IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html), for example, `use1-az3`.\nOn GCP, zones are GCP [zones](https://cloud.google.com/compute/docs/regions-zones), for example, `us-central1-c`.\nOn Azure, zones are Confluent-chosen names (for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e) since Azure does not have universal zone identifiers.\n"}},"required":["aws","azures","cidr","cloud","connectionTypes","displayName","dnsConfig","dnsDomain","endpointSuffix","environment","gateways","gcps","region","reservedCidr","resourceName","zonalSubdomains","zoneInfos","zones"],"inputProperties":{"aws":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkAw:NetworkAw"},"description":"(Optional Configuration Block) The AWS-specific network details if available. It supports the following:\n"},"azures":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkAzure:NetworkAzure"},"description":"(Optional Configuration Block) The Azure-specific network details if available. It supports the following:\n"},"cidr":{"type":"string","description":"The IPv4 CIDR block to be used for the network. Must be `/16`. Required for VPC peering and AWS TransitGateway.\n","willReplaceOnChanges":true},"cloud":{"type":"string","description":"The cloud service provider in which the network exists. Accepted values are: `AWS`, `AZURE`, and `GCP`.\n","willReplaceOnChanges":true},"connectionTypes":{"type":"array","items":{"type":"string"},"description":"The list of connection types that may be used with the network. Accepted connection types are: `PEERING`, `TRANSITGATEWAY`, and `PRIVATELINK`.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Network.\n"},"dnsConfig":{"$ref":"#/types/confluentcloud:index/NetworkDnsConfig:NetworkDnsConfig","description":"Network DNS config. It applies only to the PRIVATELINK network connection type."},"environment":{"$ref":"#/types/confluentcloud:index/NetworkEnvironment:NetworkEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gcps":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkGcp:NetworkGcp"},"description":"(Optional Configuration Block) The GCP-specific network details if available. It supports the following:\n"},"region":{"type":"string","description":"The cloud provider region where the network exists.\n","willReplaceOnChanges":true},"reservedCidr":{"type":"string","description":"The reserved IPv4 CIDR block to be used for the network. Must be `/24`. If not specified, Confluent Cloud Network uses `172.20.255.0/24`.\n","willReplaceOnChanges":true},"zoneInfos":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkZoneInfo:NetworkZoneInfo"},"description":"Each item represents information related to a single zone.","willReplaceOnChanges":true},"zones":{"type":"array","items":{"type":"string"},"description":"The 3 availability zones for this network. They can optionally be specified for AWS networks\nused with PrivateLink, for GCP networks used with Private Service Connect, and for AWS and GCP\nnetworks used with Peering. Otherwise, they are automatically chosen by Confluent Cloud.\nOn AWS, zones are AWS [AZ IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html), for example, `use1-az3`.\nOn GCP, zones are GCP [zones](https://cloud.google.com/compute/docs/regions-zones), for example, `us-central1-c`.\nOn Azure, zones are Confluent-chosen names (for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e) since Azure does not have universal zone identifiers.\n","willReplaceOnChanges":true}},"requiredInputs":["cloud","connectionTypes","environment","region"],"stateInputs":{"description":"Input properties used for looking up and filtering Network resources.\n","properties":{"aws":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkAw:NetworkAw"},"description":"(Optional Configuration Block) The AWS-specific network details if available. It supports the following:\n"},"azures":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkAzure:NetworkAzure"},"description":"(Optional Configuration Block) The Azure-specific network details if available. It supports the following:\n"},"cidr":{"type":"string","description":"The IPv4 CIDR block to be used for the network. Must be `/16`. Required for VPC peering and AWS TransitGateway.\n","willReplaceOnChanges":true},"cloud":{"type":"string","description":"The cloud service provider in which the network exists. Accepted values are: `AWS`, `AZURE`, and `GCP`.\n","willReplaceOnChanges":true},"connectionTypes":{"type":"array","items":{"type":"string"},"description":"The list of connection types that may be used with the network. Accepted connection types are: `PEERING`, `TRANSITGATEWAY`, and `PRIVATELINK`.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Network.\n"},"dnsConfig":{"$ref":"#/types/confluentcloud:index/NetworkDnsConfig:NetworkDnsConfig","description":"Network DNS config. It applies only to the PRIVATELINK network connection type."},"dnsDomain":{"type":"string","description":"(Optional String) The root DNS domain for the network, for example, `pr123a.us-east-2.aws.confluent.cloud` if applicable. Present on Networks that support Private Link.\n"},"endpointSuffix":{"type":"string","description":"(Optional String) The endpoint suffix for the network, if applicable. It can take various forms (for example, `.pr1jy6.us-east-2.aws.confluent.cloud` or `-pr1jy6.us-east-2.aws.confluent.cloud`). Full service endpoints can be constructed by appending the service identifier to the beginning of the endpoint suffix. \n- The Flink REST API endpoint can be constructed by adding \u003cspan pulumi-lang-nodejs=\"`flink`\" pulumi-lang-dotnet=\"`Flink`\" pulumi-lang-go=\"`flink`\" pulumi-lang-python=\"`flink`\" pulumi-lang-yaml=\"`flink`\" pulumi-lang-java=\"`flink`\"\u003e`flink`\u003c/span\u003e — that is, `https://flink` + \u003cspan pulumi-lang-nodejs=\"`endpointSuffix`\" pulumi-lang-dotnet=\"`EndpointSuffix`\" pulumi-lang-go=\"`endpointSuffix`\" pulumi-lang-python=\"`endpoint_suffix`\" pulumi-lang-yaml=\"`endpointSuffix`\" pulumi-lang-java=\"`endpointSuffix`\"\u003e`endpoint_suffix`\u003c/span\u003e; namely, `https://flink.pr1jy6.us-east-2.aws.confluent.cloud` or `https://flink${data.confluent_network.main.endpoint_suffix}`\n- The Schema Registry REST API endpoint can be constructed by adding the Schema Registry Cluster ID — that is, `https://lsrc-abc123` + \u003cspan pulumi-lang-nodejs=\"`endpointSuffix`\" pulumi-lang-dotnet=\"`EndpointSuffix`\" pulumi-lang-go=\"`endpointSuffix`\" pulumi-lang-python=\"`endpoint_suffix`\" pulumi-lang-yaml=\"`endpointSuffix`\" pulumi-lang-java=\"`endpointSuffix`\"\u003e`endpoint_suffix`\u003c/span\u003e; namely, `https://lsrc-abc123.pr1jy6.us-east-2.aws.confluent.cloud` or `https://${data.confluent_schema_registry_cluster.example.id}${data.confluent_network.main.endpoint_suffix}`.\n"},"environment":{"$ref":"#/types/confluentcloud:index/NetworkEnvironment:NetworkEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gateways":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkGateway:NetworkGateway"},"description":"(Optional Configuration Block) supports the following:\n"},"gcps":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkGcp:NetworkGcp"},"description":"(Optional Configuration Block) The GCP-specific network details if available. It supports the following:\n"},"region":{"type":"string","description":"The cloud provider region where the network exists.\n","willReplaceOnChanges":true},"reservedCidr":{"type":"string","description":"The reserved IPv4 CIDR block to be used for the network. Must be `/24`. If not specified, Confluent Cloud Network uses `172.20.255.0/24`.\n","willReplaceOnChanges":true},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Network.\n"},"zonalSubdomains":{"type":"object","additionalProperties":{"type":"string"},"description":"(Optional Map) The DNS subdomain for each zone. Present on networks that support Private Link. Keys are zone names, for example, `use2-az1` and values are DNS domains, for example, `use2-az1.pr123a.us-east-2.aws.confluent.cloud`.\n"},"zoneInfos":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/NetworkZoneInfo:NetworkZoneInfo"},"description":"Each item represents information related to a single zone.","willReplaceOnChanges":true},"zones":{"type":"array","items":{"type":"string"},"description":"The 3 availability zones for this network. They can optionally be specified for AWS networks\nused with PrivateLink, for GCP networks used with Private Service Connect, and for AWS and GCP\nnetworks used with Peering. Otherwise, they are automatically chosen by Confluent Cloud.\nOn AWS, zones are AWS [AZ IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html), for example, `use1-az3`.\nOn GCP, zones are GCP [zones](https://cloud.google.com/compute/docs/regions-zones), for example, `us-central1-c`.\nOn Azure, zones are Confluent-chosen names (for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e) since Azure does not have universal zone identifiers.\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/networkLinkEndpoint:NetworkLinkEndpoint":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.NetworkLinkEndpoint`\" pulumi-lang-dotnet=\"`confluentcloud.NetworkLinkEndpoint`\" pulumi-lang-go=\"`NetworkLinkEndpoint`\" pulumi-lang-python=\"`NetworkLinkEndpoint`\" pulumi-lang-yaml=\"`confluentcloud.NetworkLinkEndpoint`\" pulumi-lang-java=\"`confluentcloud.NetworkLinkEndpoint`\"\u003e`confluentcloud.NetworkLinkEndpoint`\u003c/span\u003e provides a Network Link Endpoint resource that enables creating, editing, and deleting Network Link Endpoints on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Network Link Endpoint deletion. This setting rejects plans that would destroy or recreate the Network Link Endpoint, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst nle = new confluentcloud.NetworkLinkEndpoint(\"nle\", {\n    displayName: \"nle1\",\n    description: \"TEST-NLE1\",\n    environment: {\n        id: \"env-xyz456\",\n    },\n    network: {\n        id: \"n-abc123\",\n    },\n    networkLinkService: {\n        id: \"nls-g3e1ox\",\n    },\n});\nexport const networkLinkEndpoint = nle;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nnle = confluentcloud.NetworkLinkEndpoint(\"nle\",\n    display_name=\"nle1\",\n    description=\"TEST-NLE1\",\n    environment={\n        \"id\": \"env-xyz456\",\n    },\n    network={\n        \"id\": \"n-abc123\",\n    },\n    network_link_service={\n        \"id\": \"nls-g3e1ox\",\n    })\npulumi.export(\"networkLinkEndpoint\", nle)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var nle = new ConfluentCloud.NetworkLinkEndpoint(\"nle\", new()\n    {\n        DisplayName = \"nle1\",\n        Description = \"TEST-NLE1\",\n        Environment = new ConfluentCloud.Inputs.NetworkLinkEndpointEnvironmentArgs\n        {\n            Id = \"env-xyz456\",\n        },\n        Network = new ConfluentCloud.Inputs.NetworkLinkEndpointNetworkArgs\n        {\n            Id = \"n-abc123\",\n        },\n        NetworkLinkService = new ConfluentCloud.Inputs.NetworkLinkEndpointNetworkLinkServiceArgs\n        {\n            Id = \"nls-g3e1ox\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"networkLinkEndpoint\"] = nle,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnle, err := confluentcloud.NewNetworkLinkEndpoint(ctx, \"nle\", \u0026confluentcloud.NetworkLinkEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"nle1\"),\n\t\t\tDescription: pulumi.String(\"TEST-NLE1\"),\n\t\t\tEnvironment: \u0026confluentcloud.NetworkLinkEndpointEnvironmentArgs{\n\t\t\t\tId: pulumi.String(\"env-xyz456\"),\n\t\t\t},\n\t\t\tNetwork: \u0026confluentcloud.NetworkLinkEndpointNetworkArgs{\n\t\t\t\tId: pulumi.String(\"n-abc123\"),\n\t\t\t},\n\t\t\tNetworkLinkService: \u0026confluentcloud.NetworkLinkEndpointNetworkLinkServiceArgs{\n\t\t\t\tId: pulumi.String(\"nls-g3e1ox\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"networkLinkEndpoint\", nle)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.NetworkLinkEndpoint;\nimport com.pulumi.confluentcloud.NetworkLinkEndpointArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkLinkEndpointEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkLinkEndpointNetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkLinkEndpointNetworkLinkServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var nle = new NetworkLinkEndpoint(\"nle\", NetworkLinkEndpointArgs.builder()\n            .displayName(\"nle1\")\n            .description(\"TEST-NLE1\")\n            .environment(NetworkLinkEndpointEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .network(NetworkLinkEndpointNetworkArgs.builder()\n                .id(\"n-abc123\")\n                .build())\n            .networkLinkService(NetworkLinkEndpointNetworkLinkServiceArgs.builder()\n                .id(\"nls-g3e1ox\")\n                .build())\n            .build());\n\n        ctx.export(\"networkLinkEndpoint\", nle);\n    }\n}\n```\n```yaml\nresources:\n  nle:\n    type: confluentcloud:NetworkLinkEndpoint\n    properties:\n      displayName: nle1\n      description: TEST-NLE1\n      environment:\n        id: env-xyz456\n      network:\n        id: n-abc123\n      networkLinkService:\n        id: nls-g3e1ox\noutputs:\n  networkLinkEndpoint: ${nle}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.NetworkLinkEndpoint`\" pulumi-lang-dotnet=\"`confluentcloud.NetworkLinkEndpoint`\" pulumi-lang-go=\"`NetworkLinkEndpoint`\" pulumi-lang-python=\"`NetworkLinkEndpoint`\" pulumi-lang-yaml=\"`confluentcloud.NetworkLinkEndpoint`\" pulumi-lang-java=\"`confluentcloud.NetworkLinkEndpoint`\"\u003e`confluentcloud.NetworkLinkEndpoint`\u003c/span\u003e resource:\n* `cluster-link-over-aws-private-link-networks`: Cluster link over two dedicated clusters in separate AWS PrivateLink networks\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Network Link Endpoint.\n\nYou can import a Network Link Endpoint by using Environment ID and Network Link Endpoint ID, in the format `\u003cEnvironment ID\u003e/\u003cNetwork Link Endpoint ID\u003e`. The following example shows how to import a Network Link Endpoint:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/networkLinkEndpoint:NetworkLinkEndpoint my_nle env-abc123/nle-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"description":{"type":"string","description":"The description of the Network Link Endpoint.\n"},"displayName":{"type":"string","description":"The name of the Network Link Endpoint.\n"},"environment":{"$ref":"#/types/confluentcloud:index/NetworkLinkEndpointEnvironment:NetworkLinkEndpointEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"network":{"$ref":"#/types/confluentcloud:index/NetworkLinkEndpointNetwork:NetworkLinkEndpointNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts."},"networkLinkService":{"$ref":"#/types/confluentcloud:index/NetworkLinkEndpointNetworkLinkService:NetworkLinkEndpointNetworkLinkService"},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Network Link Endpoint.\n"}},"required":["description","displayName","environment","network","networkLinkService","resourceName"],"inputProperties":{"description":{"type":"string","description":"The description of the Network Link Endpoint.\n"},"displayName":{"type":"string","description":"The name of the Network Link Endpoint.\n"},"environment":{"$ref":"#/types/confluentcloud:index/NetworkLinkEndpointEnvironment:NetworkLinkEndpointEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"network":{"$ref":"#/types/confluentcloud:index/NetworkLinkEndpointNetwork:NetworkLinkEndpointNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts.","willReplaceOnChanges":true},"networkLinkService":{"$ref":"#/types/confluentcloud:index/NetworkLinkEndpointNetworkLinkService:NetworkLinkEndpointNetworkLinkService","willReplaceOnChanges":true}},"requiredInputs":["environment","network","networkLinkService"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkLinkEndpoint resources.\n","properties":{"description":{"type":"string","description":"The description of the Network Link Endpoint.\n"},"displayName":{"type":"string","description":"The name of the Network Link Endpoint.\n"},"environment":{"$ref":"#/types/confluentcloud:index/NetworkLinkEndpointEnvironment:NetworkLinkEndpointEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"network":{"$ref":"#/types/confluentcloud:index/NetworkLinkEndpointNetwork:NetworkLinkEndpointNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts.","willReplaceOnChanges":true},"networkLinkService":{"$ref":"#/types/confluentcloud:index/NetworkLinkEndpointNetworkLinkService:NetworkLinkEndpointNetworkLinkService","willReplaceOnChanges":true},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Network Link Endpoint.\n"}},"type":"object"}},"confluentcloud:index/networkLinkService:NetworkLinkService":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.NetworkLinkService`\" pulumi-lang-dotnet=\"`confluentcloud.NetworkLinkService`\" pulumi-lang-go=\"`NetworkLinkService`\" pulumi-lang-python=\"`NetworkLinkService`\" pulumi-lang-yaml=\"`confluentcloud.NetworkLinkService`\" pulumi-lang-java=\"`confluentcloud.NetworkLinkService`\"\u003e`confluentcloud.NetworkLinkService`\u003c/span\u003e provides a Network Link Service resource that enables creating, editing, and deleting Network Link Services on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Network Link Service deletion. This setting rejects plans that would destroy or recreate the Network Link Service, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Example Network Link Service on AWS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst aws_private_link = new confluentcloud.Network(\"aws-private-link\", {\n    displayName: \"AWS Private Link Network\",\n    cloud: \"AWS\",\n    region: \"us-east-1\",\n    connectionTypes: [\"PRIVATELINK\"],\n    zones: [\n        \"use1-az1\",\n        \"use1-az2\",\n        \"use1-az6\",\n    ],\n    environment: {\n        id: development.id,\n    },\n});\nconst awsNls = new confluentcloud.NetworkLinkService(\"aws_nls\", {\n    displayName: \"AWS Private Link network link service\",\n    environment: {\n        id: development.id,\n    },\n    network: {\n        id: aws_private_link.id,\n    },\n    description: \"Test NL service\",\n    accept: {\n        environments: [\n            \"env-5678\",\n            \"env-0923\",\n        ],\n        networks: [\"n-1234\"],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\naws_private_link = confluentcloud.Network(\"aws-private-link\",\n    display_name=\"AWS Private Link Network\",\n    cloud=\"AWS\",\n    region=\"us-east-1\",\n    connection_types=[\"PRIVATELINK\"],\n    zones=[\n        \"use1-az1\",\n        \"use1-az2\",\n        \"use1-az6\",\n    ],\n    environment={\n        \"id\": development.id,\n    })\naws_nls = confluentcloud.NetworkLinkService(\"aws_nls\",\n    display_name=\"AWS Private Link network link service\",\n    environment={\n        \"id\": development.id,\n    },\n    network={\n        \"id\": aws_private_link.id,\n    },\n    description=\"Test NL service\",\n    accept={\n        \"environments\": [\n            \"env-5678\",\n            \"env-0923\",\n        ],\n        \"networks\": [\"n-1234\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var aws_private_link = new ConfluentCloud.Network(\"aws-private-link\", new()\n    {\n        DisplayName = \"AWS Private Link Network\",\n        Cloud = \"AWS\",\n        Region = \"us-east-1\",\n        ConnectionTypes = new[]\n        {\n            \"PRIVATELINK\",\n        },\n        Zones = new[]\n        {\n            \"use1-az1\",\n            \"use1-az2\",\n            \"use1-az6\",\n        },\n        Environment = new ConfluentCloud.Inputs.NetworkEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var awsNls = new ConfluentCloud.NetworkLinkService(\"aws_nls\", new()\n    {\n        DisplayName = \"AWS Private Link network link service\",\n        Environment = new ConfluentCloud.Inputs.NetworkLinkServiceEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Network = new ConfluentCloud.Inputs.NetworkLinkServiceNetworkArgs\n        {\n            Id = aws_private_link.Id,\n        },\n        Description = \"Test NL service\",\n        Accept = new ConfluentCloud.Inputs.NetworkLinkServiceAcceptArgs\n        {\n            Environments = new[]\n            {\n                \"env-5678\",\n                \"env-0923\",\n            },\n            Networks = new[]\n            {\n                \"n-1234\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taws_private_link, err := confluentcloud.NewNetwork(ctx, \"aws-private-link\", \u0026confluentcloud.NetworkArgs{\n\t\t\tDisplayName: pulumi.String(\"AWS Private Link Network\"),\n\t\t\tCloud:       pulumi.String(\"AWS\"),\n\t\t\tRegion:      pulumi.String(\"us-east-1\"),\n\t\t\tConnectionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"PRIVATELINK\"),\n\t\t\t},\n\t\t\tZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"use1-az1\"),\n\t\t\t\tpulumi.String(\"use1-az2\"),\n\t\t\t\tpulumi.String(\"use1-az6\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.NetworkEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewNetworkLinkService(ctx, \"aws_nls\", \u0026confluentcloud.NetworkLinkServiceArgs{\n\t\t\tDisplayName: pulumi.String(\"AWS Private Link network link service\"),\n\t\t\tEnvironment: \u0026confluentcloud.NetworkLinkServiceEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tNetwork: \u0026confluentcloud.NetworkLinkServiceNetworkArgs{\n\t\t\t\tId: aws_private_link.ID(),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"Test NL service\"),\n\t\t\tAccept: \u0026confluentcloud.NetworkLinkServiceAcceptArgs{\n\t\t\t\tEnvironments: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"env-5678\"),\n\t\t\t\t\tpulumi.String(\"env-0923\"),\n\t\t\t\t},\n\t\t\t\tNetworks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"n-1234\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Network;\nimport com.pulumi.confluentcloud.NetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkEnvironmentArgs;\nimport com.pulumi.confluentcloud.NetworkLinkService;\nimport com.pulumi.confluentcloud.NetworkLinkServiceArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkLinkServiceEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkLinkServiceNetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkLinkServiceAcceptArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var aws_private_link = new Network(\"aws-private-link\", NetworkArgs.builder()\n            .displayName(\"AWS Private Link Network\")\n            .cloud(\"AWS\")\n            .region(\"us-east-1\")\n            .connectionTypes(\"PRIVATELINK\")\n            .zones(            \n                \"use1-az1\",\n                \"use1-az2\",\n                \"use1-az6\")\n            .environment(NetworkEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var awsNls = new NetworkLinkService(\"awsNls\", NetworkLinkServiceArgs.builder()\n            .displayName(\"AWS Private Link network link service\")\n            .environment(NetworkLinkServiceEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .network(NetworkLinkServiceNetworkArgs.builder()\n                .id(aws_private_link.id())\n                .build())\n            .description(\"Test NL service\")\n            .accept(NetworkLinkServiceAcceptArgs.builder()\n                .environments(                \n                    \"env-5678\",\n                    \"env-0923\")\n                .networks(\"n-1234\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  aws-private-link:\n    type: confluentcloud:Network\n    properties:\n      displayName: AWS Private Link Network\n      cloud: AWS\n      region: us-east-1\n      connectionTypes:\n        - PRIVATELINK\n      zones:\n        - use1-az1\n        - use1-az2\n        - use1-az6\n      environment:\n        id: ${development.id}\n  awsNls:\n    type: confluentcloud:NetworkLinkService\n    name: aws_nls\n    properties:\n      displayName: AWS Private Link network link service\n      environment:\n        id: ${development.id}\n      network:\n        id: ${[\"aws-private-link\"].id}\n      description: Test NL service\n      accept:\n        environments:\n          - env-5678\n          - env-0923\n        networks:\n          - n-1234\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.NetworkLinkService`\" pulumi-lang-dotnet=\"`confluentcloud.NetworkLinkService`\" pulumi-lang-go=\"`NetworkLinkService`\" pulumi-lang-python=\"`NetworkLinkService`\" pulumi-lang-yaml=\"`confluentcloud.NetworkLinkService`\" pulumi-lang-java=\"`confluentcloud.NetworkLinkService`\"\u003e`confluentcloud.NetworkLinkService`\u003c/span\u003e resource:\n* `cluster-link-over-aws-private-link-networks`: Cluster link over two dedicated clusters in separate AWS PrivateLink networks\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Network Link Service.\n\nYou can import a Network Link Service by using Environment ID and Network Link Service ID, in the format `\u003cEnvironment ID\u003e/\u003cNetwork Link Service ID\u003e`. The following example shows how to import a Network Link Service:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/networkLinkService:NetworkLinkService my_nls env-abc123/nls-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"accept":{"$ref":"#/types/confluentcloud:index/NetworkLinkServiceAccept:NetworkLinkServiceAccept"},"description":{"type":"string","description":"The description of the Network Link Service.\n"},"displayName":{"type":"string","description":"The name of the Network Link Service.\n"},"environment":{"$ref":"#/types/confluentcloud:index/NetworkLinkServiceEnvironment:NetworkLinkServiceEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"network":{"$ref":"#/types/confluentcloud:index/NetworkLinkServiceNetwork:NetworkLinkServiceNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts."},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Network Link Service.\n"}},"required":["accept","description","displayName","environment","network","resourceName"],"inputProperties":{"accept":{"$ref":"#/types/confluentcloud:index/NetworkLinkServiceAccept:NetworkLinkServiceAccept"},"description":{"type":"string","description":"The description of the Network Link Service.\n"},"displayName":{"type":"string","description":"The name of the Network Link Service.\n"},"environment":{"$ref":"#/types/confluentcloud:index/NetworkLinkServiceEnvironment:NetworkLinkServiceEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"network":{"$ref":"#/types/confluentcloud:index/NetworkLinkServiceNetwork:NetworkLinkServiceNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts.","willReplaceOnChanges":true}},"requiredInputs":["environment","network"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkLinkService resources.\n","properties":{"accept":{"$ref":"#/types/confluentcloud:index/NetworkLinkServiceAccept:NetworkLinkServiceAccept"},"description":{"type":"string","description":"The description of the Network Link Service.\n"},"displayName":{"type":"string","description":"The name of the Network Link Service.\n"},"environment":{"$ref":"#/types/confluentcloud:index/NetworkLinkServiceEnvironment:NetworkLinkServiceEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"network":{"$ref":"#/types/confluentcloud:index/NetworkLinkServiceNetwork:NetworkLinkServiceNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts.","willReplaceOnChanges":true},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Network Link Service.\n"}},"type":"object"}},"confluentcloud:index/peering:Peering":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Peering`\" pulumi-lang-dotnet=\"`confluentcloud.Peering`\" pulumi-lang-go=\"`Peering`\" pulumi-lang-python=\"`Peering`\" pulumi-lang-yaml=\"`confluentcloud.Peering`\" pulumi-lang-java=\"`confluentcloud.Peering`\"\u003e`confluentcloud.Peering`\u003c/span\u003e provides a Peering resource that enables creating, editing, and deleting Peerings on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Peering deletion. This setting rejects plans that would destroy or recreate the Peering, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Example Peering on AWS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst aws_peering = new confluentcloud.Network(\"aws-peering\", {\n    displayName: \"AWS Peering Network\",\n    cloud: \"AWS\",\n    region: \"us-east-2\",\n    cidr: \"10.10.0.0/16\",\n    connectionTypes: [\"PEERING\"],\n    environment: {\n        id: development.id,\n    },\n});\nconst aws = new confluentcloud.Peering(\"aws\", {\n    displayName: \"AWS Peering\",\n    aws: {\n        account: \"012345678901\",\n        vpc: \"vpc-abcdef0123456789a\",\n        routes: [\"172.31.0.0/16\"],\n        customerRegion: \"us-east-2\",\n    },\n    environment: {\n        id: development.id,\n    },\n    network: {\n        id: aws_peering.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\naws_peering = confluentcloud.Network(\"aws-peering\",\n    display_name=\"AWS Peering Network\",\n    cloud=\"AWS\",\n    region=\"us-east-2\",\n    cidr=\"10.10.0.0/16\",\n    connection_types=[\"PEERING\"],\n    environment={\n        \"id\": development.id,\n    })\naws = confluentcloud.Peering(\"aws\",\n    display_name=\"AWS Peering\",\n    aws={\n        \"account\": \"012345678901\",\n        \"vpc\": \"vpc-abcdef0123456789a\",\n        \"routes\": [\"172.31.0.0/16\"],\n        \"customer_region\": \"us-east-2\",\n    },\n    environment={\n        \"id\": development.id,\n    },\n    network={\n        \"id\": aws_peering.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var aws_peering = new ConfluentCloud.Network(\"aws-peering\", new()\n    {\n        DisplayName = \"AWS Peering Network\",\n        Cloud = \"AWS\",\n        Region = \"us-east-2\",\n        Cidr = \"10.10.0.0/16\",\n        ConnectionTypes = new[]\n        {\n            \"PEERING\",\n        },\n        Environment = new ConfluentCloud.Inputs.NetworkEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var aws = new ConfluentCloud.Peering(\"aws\", new()\n    {\n        DisplayName = \"AWS Peering\",\n        Aws = new ConfluentCloud.Inputs.PeeringAwsArgs\n        {\n            Account = \"012345678901\",\n            Vpc = \"vpc-abcdef0123456789a\",\n            Routes = new[]\n            {\n                \"172.31.0.0/16\",\n            },\n            CustomerRegion = \"us-east-2\",\n        },\n        Environment = new ConfluentCloud.Inputs.PeeringEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Network = new ConfluentCloud.Inputs.PeeringNetworkArgs\n        {\n            Id = aws_peering.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taws_peering, err := confluentcloud.NewNetwork(ctx, \"aws-peering\", \u0026confluentcloud.NetworkArgs{\n\t\t\tDisplayName: pulumi.String(\"AWS Peering Network\"),\n\t\t\tCloud:       pulumi.String(\"AWS\"),\n\t\t\tRegion:      pulumi.String(\"us-east-2\"),\n\t\t\tCidr:        pulumi.String(\"10.10.0.0/16\"),\n\t\t\tConnectionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"PEERING\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.NetworkEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewPeering(ctx, \"aws\", \u0026confluentcloud.PeeringArgs{\n\t\t\tDisplayName: pulumi.String(\"AWS Peering\"),\n\t\t\tAws: \u0026confluentcloud.PeeringAwsArgs{\n\t\t\t\tAccount: pulumi.String(\"012345678901\"),\n\t\t\t\tVpc:     pulumi.String(\"vpc-abcdef0123456789a\"),\n\t\t\t\tRoutes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"172.31.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tCustomerRegion: pulumi.String(\"us-east-2\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.PeeringEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tNetwork: \u0026confluentcloud.PeeringNetworkArgs{\n\t\t\t\tId: aws_peering.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Network;\nimport com.pulumi.confluentcloud.NetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkEnvironmentArgs;\nimport com.pulumi.confluentcloud.Peering;\nimport com.pulumi.confluentcloud.PeeringArgs;\nimport com.pulumi.confluentcloud.inputs.PeeringAwsArgs;\nimport com.pulumi.confluentcloud.inputs.PeeringEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.PeeringNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var aws_peering = new Network(\"aws-peering\", NetworkArgs.builder()\n            .displayName(\"AWS Peering Network\")\n            .cloud(\"AWS\")\n            .region(\"us-east-2\")\n            .cidr(\"10.10.0.0/16\")\n            .connectionTypes(\"PEERING\")\n            .environment(NetworkEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var aws = new Peering(\"aws\", PeeringArgs.builder()\n            .displayName(\"AWS Peering\")\n            .aws(PeeringAwsArgs.builder()\n                .account(\"012345678901\")\n                .vpc(\"vpc-abcdef0123456789a\")\n                .routes(\"172.31.0.0/16\")\n                .customerRegion(\"us-east-2\")\n                .build())\n            .environment(PeeringEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .network(PeeringNetworkArgs.builder()\n                .id(aws_peering.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  aws-peering:\n    type: confluentcloud:Network\n    properties:\n      displayName: AWS Peering Network\n      cloud: AWS\n      region: us-east-2\n      cidr: 10.10.0.0/16\n      connectionTypes:\n        - PEERING\n      environment:\n        id: ${development.id}\n  aws:\n    type: confluentcloud:Peering\n    properties:\n      displayName: AWS Peering\n      aws:\n        account: '012345678901'\n        vpc: vpc-abcdef0123456789a\n        routes:\n          - 172.31.0.0/16\n        customerRegion: us-east-2\n      environment:\n        id: ${development.id}\n      network:\n        id: ${[\"aws-peering\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Peering on Azure\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst azure_peering = new confluentcloud.Network(\"azure-peering\", {\n    displayName: \"Azure Peering Network\",\n    cloud: \"AZURE\",\n    region: \"centralus\",\n    cidr: \"10.10.0.0/16\",\n    connectionTypes: [\"PEERING\"],\n    environment: {\n        id: development.id,\n    },\n});\nconst azure = new confluentcloud.Peering(\"azure\", {\n    displayName: \"Azure Peering\",\n    azure: {\n        tenant: \"1111tttt-1111-1111-1111-111111tttttt\",\n        vnet: \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet\",\n        customerRegion: \"centralus\",\n    },\n    environment: {\n        id: development.id,\n    },\n    network: {\n        id: azure_peering.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\nazure_peering = confluentcloud.Network(\"azure-peering\",\n    display_name=\"Azure Peering Network\",\n    cloud=\"AZURE\",\n    region=\"centralus\",\n    cidr=\"10.10.0.0/16\",\n    connection_types=[\"PEERING\"],\n    environment={\n        \"id\": development.id,\n    })\nazure = confluentcloud.Peering(\"azure\",\n    display_name=\"Azure Peering\",\n    azure={\n        \"tenant\": \"1111tttt-1111-1111-1111-111111tttttt\",\n        \"vnet\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet\",\n        \"customer_region\": \"centralus\",\n    },\n    environment={\n        \"id\": development.id,\n    },\n    network={\n        \"id\": azure_peering.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var azure_peering = new ConfluentCloud.Network(\"azure-peering\", new()\n    {\n        DisplayName = \"Azure Peering Network\",\n        Cloud = \"AZURE\",\n        Region = \"centralus\",\n        Cidr = \"10.10.0.0/16\",\n        ConnectionTypes = new[]\n        {\n            \"PEERING\",\n        },\n        Environment = new ConfluentCloud.Inputs.NetworkEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var azure = new ConfluentCloud.Peering(\"azure\", new()\n    {\n        DisplayName = \"Azure Peering\",\n        Azure = new ConfluentCloud.Inputs.PeeringAzureArgs\n        {\n            Tenant = \"1111tttt-1111-1111-1111-111111tttttt\",\n            Vnet = \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet\",\n            CustomerRegion = \"centralus\",\n        },\n        Environment = new ConfluentCloud.Inputs.PeeringEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Network = new ConfluentCloud.Inputs.PeeringNetworkArgs\n        {\n            Id = azure_peering.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tazure_peering, err := confluentcloud.NewNetwork(ctx, \"azure-peering\", \u0026confluentcloud.NetworkArgs{\n\t\t\tDisplayName: pulumi.String(\"Azure Peering Network\"),\n\t\t\tCloud:       pulumi.String(\"AZURE\"),\n\t\t\tRegion:      pulumi.String(\"centralus\"),\n\t\t\tCidr:        pulumi.String(\"10.10.0.0/16\"),\n\t\t\tConnectionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"PEERING\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.NetworkEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewPeering(ctx, \"azure\", \u0026confluentcloud.PeeringArgs{\n\t\t\tDisplayName: pulumi.String(\"Azure Peering\"),\n\t\t\tAzure: \u0026confluentcloud.PeeringAzureArgs{\n\t\t\t\tTenant:         pulumi.String(\"1111tttt-1111-1111-1111-111111tttttt\"),\n\t\t\t\tVnet:           pulumi.String(\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet\"),\n\t\t\t\tCustomerRegion: pulumi.String(\"centralus\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.PeeringEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tNetwork: \u0026confluentcloud.PeeringNetworkArgs{\n\t\t\t\tId: azure_peering.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Network;\nimport com.pulumi.confluentcloud.NetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkEnvironmentArgs;\nimport com.pulumi.confluentcloud.Peering;\nimport com.pulumi.confluentcloud.PeeringArgs;\nimport com.pulumi.confluentcloud.inputs.PeeringAzureArgs;\nimport com.pulumi.confluentcloud.inputs.PeeringEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.PeeringNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var azure_peering = new Network(\"azure-peering\", NetworkArgs.builder()\n            .displayName(\"Azure Peering Network\")\n            .cloud(\"AZURE\")\n            .region(\"centralus\")\n            .cidr(\"10.10.0.0/16\")\n            .connectionTypes(\"PEERING\")\n            .environment(NetworkEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var azure = new Peering(\"azure\", PeeringArgs.builder()\n            .displayName(\"Azure Peering\")\n            .azure(PeeringAzureArgs.builder()\n                .tenant(\"1111tttt-1111-1111-1111-111111tttttt\")\n                .vnet(\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet\")\n                .customerRegion(\"centralus\")\n                .build())\n            .environment(PeeringEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .network(PeeringNetworkArgs.builder()\n                .id(azure_peering.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  azure-peering:\n    type: confluentcloud:Network\n    properties:\n      displayName: Azure Peering Network\n      cloud: AZURE\n      region: centralus\n      cidr: 10.10.0.0/16\n      connectionTypes:\n        - PEERING\n      environment:\n        id: ${development.id}\n  azure:\n    type: confluentcloud:Peering\n    properties:\n      displayName: Azure Peering\n      azure:\n        tenant: 1111tttt-1111-1111-1111-111111tttttt\n        vnet: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet\n        customerRegion: centralus\n      environment:\n        id: ${development.id}\n      network:\n        id: ${[\"azure-peering\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Peering on GCP\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst gcp_peering = new confluentcloud.Network(\"gcp-peering\", {\n    displayName: \"GCP Peering Network\",\n    cloud: \"GCP\",\n    region: \"us-west4\",\n    cidr: \"10.10.0.0/16\",\n    connectionTypes: [\"PEERING\"],\n    environment: {\n        id: development.id,\n    },\n});\nconst gcp = new confluentcloud.Peering(\"gcp\", {\n    displayName: \"GCP Peering\",\n    gcp: {\n        project: \"temp-gear-123456\",\n        vpcNetwork: \"customer-test-vpc-network\",\n    },\n    environment: {\n        id: development.id,\n    },\n    network: {\n        id: gcp_peering.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\ngcp_peering = confluentcloud.Network(\"gcp-peering\",\n    display_name=\"GCP Peering Network\",\n    cloud=\"GCP\",\n    region=\"us-west4\",\n    cidr=\"10.10.0.0/16\",\n    connection_types=[\"PEERING\"],\n    environment={\n        \"id\": development.id,\n    })\ngcp = confluentcloud.Peering(\"gcp\",\n    display_name=\"GCP Peering\",\n    gcp={\n        \"project\": \"temp-gear-123456\",\n        \"vpc_network\": \"customer-test-vpc-network\",\n    },\n    environment={\n        \"id\": development.id,\n    },\n    network={\n        \"id\": gcp_peering.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var gcp_peering = new ConfluentCloud.Network(\"gcp-peering\", new()\n    {\n        DisplayName = \"GCP Peering Network\",\n        Cloud = \"GCP\",\n        Region = \"us-west4\",\n        Cidr = \"10.10.0.0/16\",\n        ConnectionTypes = new[]\n        {\n            \"PEERING\",\n        },\n        Environment = new ConfluentCloud.Inputs.NetworkEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var gcp = new ConfluentCloud.Peering(\"gcp\", new()\n    {\n        DisplayName = \"GCP Peering\",\n        Gcp = new ConfluentCloud.Inputs.PeeringGcpArgs\n        {\n            Project = \"temp-gear-123456\",\n            VpcNetwork = \"customer-test-vpc-network\",\n        },\n        Environment = new ConfluentCloud.Inputs.PeeringEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Network = new ConfluentCloud.Inputs.PeeringNetworkArgs\n        {\n            Id = gcp_peering.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcp_peering, err := confluentcloud.NewNetwork(ctx, \"gcp-peering\", \u0026confluentcloud.NetworkArgs{\n\t\t\tDisplayName: pulumi.String(\"GCP Peering Network\"),\n\t\t\tCloud:       pulumi.String(\"GCP\"),\n\t\t\tRegion:      pulumi.String(\"us-west4\"),\n\t\t\tCidr:        pulumi.String(\"10.10.0.0/16\"),\n\t\t\tConnectionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"PEERING\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.NetworkEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewPeering(ctx, \"gcp\", \u0026confluentcloud.PeeringArgs{\n\t\t\tDisplayName: pulumi.String(\"GCP Peering\"),\n\t\t\tGcp: \u0026confluentcloud.PeeringGcpArgs{\n\t\t\t\tProject:    pulumi.String(\"temp-gear-123456\"),\n\t\t\t\tVpcNetwork: pulumi.String(\"customer-test-vpc-network\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.PeeringEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tNetwork: \u0026confluentcloud.PeeringNetworkArgs{\n\t\t\t\tId: gcp_peering.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Network;\nimport com.pulumi.confluentcloud.NetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkEnvironmentArgs;\nimport com.pulumi.confluentcloud.Peering;\nimport com.pulumi.confluentcloud.PeeringArgs;\nimport com.pulumi.confluentcloud.inputs.PeeringGcpArgs;\nimport com.pulumi.confluentcloud.inputs.PeeringEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.PeeringNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var gcp_peering = new Network(\"gcp-peering\", NetworkArgs.builder()\n            .displayName(\"GCP Peering Network\")\n            .cloud(\"GCP\")\n            .region(\"us-west4\")\n            .cidr(\"10.10.0.0/16\")\n            .connectionTypes(\"PEERING\")\n            .environment(NetworkEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var gcp = new Peering(\"gcp\", PeeringArgs.builder()\n            .displayName(\"GCP Peering\")\n            .gcp(PeeringGcpArgs.builder()\n                .project(\"temp-gear-123456\")\n                .vpcNetwork(\"customer-test-vpc-network\")\n                .build())\n            .environment(PeeringEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .network(PeeringNetworkArgs.builder()\n                .id(gcp_peering.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  gcp-peering:\n    type: confluentcloud:Network\n    properties:\n      displayName: GCP Peering Network\n      cloud: GCP\n      region: us-west4\n      cidr: 10.10.0.0/16\n      connectionTypes:\n        - PEERING\n      environment:\n        id: ${development.id}\n  gcp:\n    type: confluentcloud:Peering\n    properties:\n      displayName: GCP Peering\n      gcp:\n        project: temp-gear-123456\n        vpcNetwork: customer-test-vpc-network\n      environment:\n        id: ${development.id}\n      network:\n        id: ${[\"gcp-peering\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Peering`\" pulumi-lang-dotnet=\"`confluentcloud.Peering`\" pulumi-lang-go=\"`Peering`\" pulumi-lang-python=\"`Peering`\" pulumi-lang-yaml=\"`confluentcloud.Peering`\" pulumi-lang-java=\"`confluentcloud.Peering`\"\u003e`confluentcloud.Peering`\u003c/span\u003e resource:\n  * dedicated-vnet-peering-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vnet-peering-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-transit-gateway-attachment-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using ACLs\n  * dedicated-transit-gateway-attachment-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using RBAC\n  * enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Peering.\n\nYou can import a Peering by using Environment ID and Peering ID, in the format `\u003cEnvironment ID\u003e/\u003cPeering ID\u003e`. The following example shows how to import a Peering:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/peering:Peering my_peer env-abc123/peer-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"aws":{"$ref":"#/types/confluentcloud:index/PeeringAws:PeeringAws"},"azure":{"$ref":"#/types/confluentcloud:index/PeeringAzure:PeeringAzure"},"displayName":{"type":"string","description":"The name of the Peering.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PeeringEnvironment:PeeringEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"gcp":{"$ref":"#/types/confluentcloud:index/PeeringGcp:PeeringGcp"},"network":{"$ref":"#/types/confluentcloud:index/PeeringNetwork:PeeringNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts."}},"required":["displayName","environment","network"],"inputProperties":{"aws":{"$ref":"#/types/confluentcloud:index/PeeringAws:PeeringAws","willReplaceOnChanges":true},"azure":{"$ref":"#/types/confluentcloud:index/PeeringAzure:PeeringAzure","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Peering.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PeeringEnvironment:PeeringEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gcp":{"$ref":"#/types/confluentcloud:index/PeeringGcp:PeeringGcp","willReplaceOnChanges":true},"network":{"$ref":"#/types/confluentcloud:index/PeeringNetwork:PeeringNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts.","willReplaceOnChanges":true}},"requiredInputs":["environment","network"],"stateInputs":{"description":"Input properties used for looking up and filtering Peering resources.\n","properties":{"aws":{"$ref":"#/types/confluentcloud:index/PeeringAws:PeeringAws","willReplaceOnChanges":true},"azure":{"$ref":"#/types/confluentcloud:index/PeeringAzure:PeeringAzure","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Peering.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PeeringEnvironment:PeeringEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gcp":{"$ref":"#/types/confluentcloud:index/PeeringGcp:PeeringGcp","willReplaceOnChanges":true},"network":{"$ref":"#/types/confluentcloud:index/PeeringNetwork:PeeringNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts.","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/plugin:Plugin":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Plugin`\" pulumi-lang-dotnet=\"`confluentcloud.Plugin`\" pulumi-lang-go=\"`Plugin`\" pulumi-lang-python=\"`Plugin`\" pulumi-lang-yaml=\"`confluentcloud.Plugin`\" pulumi-lang-java=\"`confluentcloud.Plugin`\"\u003e`confluentcloud.Plugin`\u003c/span\u003e provides a Plugin resource for custom connectors with versioning support that enables creating, editing, and deleting Plugins on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Plugin deletion. This setting rejects plans that would destroy or recreate the Plugin, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst source = new confluentcloud.Plugin(\"source\", {\n    displayName: \"Plugin-1\",\n    description: \"Custom connect plugin for versioning.\",\n    cloud: \"AWS\",\n    environment: {\n        id: \"env-devc0k7oxp\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nsource = confluentcloud.Plugin(\"source\",\n    display_name=\"Plugin-1\",\n    description=\"Custom connect plugin for versioning.\",\n    cloud=\"AWS\",\n    environment={\n        \"id\": \"env-devc0k7oxp\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var source = new ConfluentCloud.Plugin(\"source\", new()\n    {\n        DisplayName = \"Plugin-1\",\n        Description = \"Custom connect plugin for versioning.\",\n        Cloud = \"AWS\",\n        Environment = new ConfluentCloud.Inputs.PluginEnvironmentArgs\n        {\n            Id = \"env-devc0k7oxp\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewPlugin(ctx, \"source\", \u0026confluentcloud.PluginArgs{\n\t\t\tDisplayName: pulumi.String(\"Plugin-1\"),\n\t\t\tDescription: pulumi.String(\"Custom connect plugin for versioning.\"),\n\t\t\tCloud:       pulumi.String(\"AWS\"),\n\t\t\tEnvironment: \u0026confluentcloud.PluginEnvironmentArgs{\n\t\t\t\tId: pulumi.String(\"env-devc0k7oxp\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Plugin;\nimport com.pulumi.confluentcloud.PluginArgs;\nimport com.pulumi.confluentcloud.inputs.PluginEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var source = new Plugin(\"source\", PluginArgs.builder()\n            .displayName(\"Plugin-1\")\n            .description(\"Custom connect plugin for versioning.\")\n            .cloud(\"AWS\")\n            .environment(PluginEnvironmentArgs.builder()\n                .id(\"env-devc0k7oxp\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  source:\n    type: confluentcloud:Plugin\n    properties:\n      displayName: Plugin-1\n      description: Custom connect plugin for versioning.\n      cloud: AWS\n      environment:\n        id: env-devc0k7oxp\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Plugin.\n\nYou can import a Custom Connector Plugin by using a Plugin ID, in the format `\u003cEnvironment ID/Custom Connector Plugin ID\u003e`. The following example shows how to import a Plugin:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/plugin:Plugin main env-123/ccpm-abc123xyz\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"apiVersion":{"type":"string","description":"(Required String) The API Version of the schema version of the plugin, for example, `ccpm/v1`.\n"},"cloud":{"type":"string","description":"Cloud provider where the Custom Connector Plugin archive is uploaded. Accepted values are: `AWS`, `AZURE`, `GCP`.\n"},"description":{"type":"string","description":"The description of the Plugin.\n"},"displayName":{"type":"string","description":"The name of the Plugin.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PluginEnvironment:PluginEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"kind":{"type":"string","description":"(Required String) The kind of the Plugin, for example, `CustomConnectPlugin`.\n"},"runtimeLanguage":{"type":"string","description":"(Optional String) Runtime language of the plugin.\n"}},"required":["apiVersion","cloud","displayName","environment","kind","runtimeLanguage"],"inputProperties":{"cloud":{"type":"string","description":"Cloud provider where the Custom Connector Plugin archive is uploaded. Accepted values are: `AWS`, `AZURE`, `GCP`.\n"},"description":{"type":"string","description":"The description of the Plugin.\n"},"displayName":{"type":"string","description":"The name of the Plugin.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PluginEnvironment:PluginEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"runtimeLanguage":{"type":"string","description":"(Optional String) Runtime language of the plugin.\n"}},"requiredInputs":["cloud","displayName","environment"],"stateInputs":{"description":"Input properties used for looking up and filtering Plugin resources.\n","properties":{"apiVersion":{"type":"string","description":"(Required String) The API Version of the schema version of the plugin, for example, `ccpm/v1`.\n"},"cloud":{"type":"string","description":"Cloud provider where the Custom Connector Plugin archive is uploaded. Accepted values are: `AWS`, `AZURE`, `GCP`.\n"},"description":{"type":"string","description":"The description of the Plugin.\n"},"displayName":{"type":"string","description":"The name of the Plugin.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PluginEnvironment:PluginEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"kind":{"type":"string","description":"(Required String) The kind of the Plugin, for example, `CustomConnectPlugin`.\n"},"runtimeLanguage":{"type":"string","description":"(Optional String) Runtime language of the plugin.\n"}},"type":"object"}},"confluentcloud:index/privateLinkAccess:PrivateLinkAccess":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.PrivateLinkAccess`\" pulumi-lang-dotnet=\"`confluentcloud.PrivateLinkAccess`\" pulumi-lang-go=\"`PrivateLinkAccess`\" pulumi-lang-python=\"`PrivateLinkAccess`\" pulumi-lang-yaml=\"`confluentcloud.PrivateLinkAccess`\" pulumi-lang-java=\"`confluentcloud.PrivateLinkAccess`\"\u003e`confluentcloud.PrivateLinkAccess`\u003c/span\u003e provides a Private Link Access resource that enables creating and deleting access to PrivateLink endpoints by AWS account, Azure subscription, or GCP project ID.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Private Link Access deletion. This setting rejects plans that would destroy or recreate the Private Link Access, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Example Private Link Access on AWS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst aws_private_link = new confluentcloud.Network(\"aws-private-link\", {\n    displayName: \"AWS Private Link Network\",\n    cloud: \"AWS\",\n    region: \"us-east-1\",\n    connectionTypes: [\"PRIVATELINK\"],\n    zones: [\n        \"use1-az1\",\n        \"use1-az2\",\n        \"use1-az6\",\n    ],\n    environment: {\n        id: development.id,\n    },\n});\nconst aws = new confluentcloud.PrivateLinkAccess(\"aws\", {\n    displayName: \"AWS Private Link Access\",\n    aws: {\n        account: \"012345678901\",\n    },\n    environment: {\n        id: development.id,\n    },\n    network: {\n        id: aws_private_link.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\naws_private_link = confluentcloud.Network(\"aws-private-link\",\n    display_name=\"AWS Private Link Network\",\n    cloud=\"AWS\",\n    region=\"us-east-1\",\n    connection_types=[\"PRIVATELINK\"],\n    zones=[\n        \"use1-az1\",\n        \"use1-az2\",\n        \"use1-az6\",\n    ],\n    environment={\n        \"id\": development.id,\n    })\naws = confluentcloud.PrivateLinkAccess(\"aws\",\n    display_name=\"AWS Private Link Access\",\n    aws={\n        \"account\": \"012345678901\",\n    },\n    environment={\n        \"id\": development.id,\n    },\n    network={\n        \"id\": aws_private_link.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var aws_private_link = new ConfluentCloud.Network(\"aws-private-link\", new()\n    {\n        DisplayName = \"AWS Private Link Network\",\n        Cloud = \"AWS\",\n        Region = \"us-east-1\",\n        ConnectionTypes = new[]\n        {\n            \"PRIVATELINK\",\n        },\n        Zones = new[]\n        {\n            \"use1-az1\",\n            \"use1-az2\",\n            \"use1-az6\",\n        },\n        Environment = new ConfluentCloud.Inputs.NetworkEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var aws = new ConfluentCloud.PrivateLinkAccess(\"aws\", new()\n    {\n        DisplayName = \"AWS Private Link Access\",\n        Aws = new ConfluentCloud.Inputs.PrivateLinkAccessAwsArgs\n        {\n            Account = \"012345678901\",\n        },\n        Environment = new ConfluentCloud.Inputs.PrivateLinkAccessEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Network = new ConfluentCloud.Inputs.PrivateLinkAccessNetworkArgs\n        {\n            Id = aws_private_link.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taws_private_link, err := confluentcloud.NewNetwork(ctx, \"aws-private-link\", \u0026confluentcloud.NetworkArgs{\n\t\t\tDisplayName: pulumi.String(\"AWS Private Link Network\"),\n\t\t\tCloud:       pulumi.String(\"AWS\"),\n\t\t\tRegion:      pulumi.String(\"us-east-1\"),\n\t\t\tConnectionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"PRIVATELINK\"),\n\t\t\t},\n\t\t\tZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"use1-az1\"),\n\t\t\t\tpulumi.String(\"use1-az2\"),\n\t\t\t\tpulumi.String(\"use1-az6\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.NetworkEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewPrivateLinkAccess(ctx, \"aws\", \u0026confluentcloud.PrivateLinkAccessArgs{\n\t\t\tDisplayName: pulumi.String(\"AWS Private Link Access\"),\n\t\t\tAws: \u0026confluentcloud.PrivateLinkAccessAwsArgs{\n\t\t\t\tAccount: pulumi.String(\"012345678901\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.PrivateLinkAccessEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tNetwork: \u0026confluentcloud.PrivateLinkAccessNetworkArgs{\n\t\t\t\tId: aws_private_link.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Network;\nimport com.pulumi.confluentcloud.NetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkEnvironmentArgs;\nimport com.pulumi.confluentcloud.PrivateLinkAccess;\nimport com.pulumi.confluentcloud.PrivateLinkAccessArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAccessAwsArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAccessEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAccessNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var aws_private_link = new Network(\"aws-private-link\", NetworkArgs.builder()\n            .displayName(\"AWS Private Link Network\")\n            .cloud(\"AWS\")\n            .region(\"us-east-1\")\n            .connectionTypes(\"PRIVATELINK\")\n            .zones(            \n                \"use1-az1\",\n                \"use1-az2\",\n                \"use1-az6\")\n            .environment(NetworkEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var aws = new PrivateLinkAccess(\"aws\", PrivateLinkAccessArgs.builder()\n            .displayName(\"AWS Private Link Access\")\n            .aws(PrivateLinkAccessAwsArgs.builder()\n                .account(\"012345678901\")\n                .build())\n            .environment(PrivateLinkAccessEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .network(PrivateLinkAccessNetworkArgs.builder()\n                .id(aws_private_link.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  aws-private-link:\n    type: confluentcloud:Network\n    properties:\n      displayName: AWS Private Link Network\n      cloud: AWS\n      region: us-east-1\n      connectionTypes:\n        - PRIVATELINK\n      zones:\n        - use1-az1\n        - use1-az2\n        - use1-az6\n      environment:\n        id: ${development.id}\n  aws:\n    type: confluentcloud:PrivateLinkAccess\n    properties:\n      displayName: AWS Private Link Access\n      aws:\n        account: '012345678901'\n      environment:\n        id: ${development.id}\n      network:\n        id: ${[\"aws-private-link\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Private Link Access on Azure\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst azure_private_link = new confluentcloud.Network(\"azure-private-link\", {\n    displayName: \"Azure Private Link Network\",\n    cloud: \"AZURE\",\n    region: \"centralus\",\n    connectionTypes: [\"PRIVATELINK\"],\n    environment: {\n        id: development.id,\n    },\n});\nconst azure = new confluentcloud.PrivateLinkAccess(\"azure\", {\n    displayName: \"Azure Private Link Access\",\n    azure: {\n        subscription: \"1234abcd-12ab-34cd-1234-123456abcdef\",\n    },\n    environment: {\n        id: development.id,\n    },\n    network: {\n        id: azure_private_link.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\nazure_private_link = confluentcloud.Network(\"azure-private-link\",\n    display_name=\"Azure Private Link Network\",\n    cloud=\"AZURE\",\n    region=\"centralus\",\n    connection_types=[\"PRIVATELINK\"],\n    environment={\n        \"id\": development.id,\n    })\nazure = confluentcloud.PrivateLinkAccess(\"azure\",\n    display_name=\"Azure Private Link Access\",\n    azure={\n        \"subscription\": \"1234abcd-12ab-34cd-1234-123456abcdef\",\n    },\n    environment={\n        \"id\": development.id,\n    },\n    network={\n        \"id\": azure_private_link.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var azure_private_link = new ConfluentCloud.Network(\"azure-private-link\", new()\n    {\n        DisplayName = \"Azure Private Link Network\",\n        Cloud = \"AZURE\",\n        Region = \"centralus\",\n        ConnectionTypes = new[]\n        {\n            \"PRIVATELINK\",\n        },\n        Environment = new ConfluentCloud.Inputs.NetworkEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var azure = new ConfluentCloud.PrivateLinkAccess(\"azure\", new()\n    {\n        DisplayName = \"Azure Private Link Access\",\n        Azure = new ConfluentCloud.Inputs.PrivateLinkAccessAzureArgs\n        {\n            Subscription = \"1234abcd-12ab-34cd-1234-123456abcdef\",\n        },\n        Environment = new ConfluentCloud.Inputs.PrivateLinkAccessEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Network = new ConfluentCloud.Inputs.PrivateLinkAccessNetworkArgs\n        {\n            Id = azure_private_link.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tazure_private_link, err := confluentcloud.NewNetwork(ctx, \"azure-private-link\", \u0026confluentcloud.NetworkArgs{\n\t\t\tDisplayName: pulumi.String(\"Azure Private Link Network\"),\n\t\t\tCloud:       pulumi.String(\"AZURE\"),\n\t\t\tRegion:      pulumi.String(\"centralus\"),\n\t\t\tConnectionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"PRIVATELINK\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.NetworkEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewPrivateLinkAccess(ctx, \"azure\", \u0026confluentcloud.PrivateLinkAccessArgs{\n\t\t\tDisplayName: pulumi.String(\"Azure Private Link Access\"),\n\t\t\tAzure: \u0026confluentcloud.PrivateLinkAccessAzureArgs{\n\t\t\t\tSubscription: pulumi.String(\"1234abcd-12ab-34cd-1234-123456abcdef\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.PrivateLinkAccessEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tNetwork: \u0026confluentcloud.PrivateLinkAccessNetworkArgs{\n\t\t\t\tId: azure_private_link.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Network;\nimport com.pulumi.confluentcloud.NetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkEnvironmentArgs;\nimport com.pulumi.confluentcloud.PrivateLinkAccess;\nimport com.pulumi.confluentcloud.PrivateLinkAccessArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAccessAzureArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAccessEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAccessNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var azure_private_link = new Network(\"azure-private-link\", NetworkArgs.builder()\n            .displayName(\"Azure Private Link Network\")\n            .cloud(\"AZURE\")\n            .region(\"centralus\")\n            .connectionTypes(\"PRIVATELINK\")\n            .environment(NetworkEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var azure = new PrivateLinkAccess(\"azure\", PrivateLinkAccessArgs.builder()\n            .displayName(\"Azure Private Link Access\")\n            .azure(PrivateLinkAccessAzureArgs.builder()\n                .subscription(\"1234abcd-12ab-34cd-1234-123456abcdef\")\n                .build())\n            .environment(PrivateLinkAccessEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .network(PrivateLinkAccessNetworkArgs.builder()\n                .id(azure_private_link.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  azure-private-link:\n    type: confluentcloud:Network\n    properties:\n      displayName: Azure Private Link Network\n      cloud: AZURE\n      region: centralus\n      connectionTypes:\n        - PRIVATELINK\n      environment:\n        id: ${development.id}\n  azure:\n    type: confluentcloud:PrivateLinkAccess\n    properties:\n      displayName: Azure Private Link Access\n      azure:\n        subscription: 1234abcd-12ab-34cd-1234-123456abcdef\n      environment:\n        id: ${development.id}\n      network:\n        id: ${[\"azure-private-link\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example Private Service Connect on GCP\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst gcp_private_service_connect = new confluentcloud.Network(\"gcp-private-service-connect\", {\n    displayName: \"GCP Private Service Connect Network\",\n    cloud: \"GCP\",\n    region: \"us-central1\",\n    connectionTypes: [\"PRIVATELINK\"],\n    zones: [\n        \"us-central1-a\",\n        \"us-central1-b\",\n        \"us-central1-c\",\n    ],\n    environment: {\n        id: development.id,\n    },\n});\nconst gcp = new confluentcloud.PrivateLinkAccess(\"gcp\", {\n    displayName: \"GCP Private Service Connect\",\n    gcp: {\n        project: \"temp-gear-123456\",\n    },\n    environment: {\n        id: development.id,\n    },\n    network: {\n        id: gcp_private_service_connect.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\ngcp_private_service_connect = confluentcloud.Network(\"gcp-private-service-connect\",\n    display_name=\"GCP Private Service Connect Network\",\n    cloud=\"GCP\",\n    region=\"us-central1\",\n    connection_types=[\"PRIVATELINK\"],\n    zones=[\n        \"us-central1-a\",\n        \"us-central1-b\",\n        \"us-central1-c\",\n    ],\n    environment={\n        \"id\": development.id,\n    })\ngcp = confluentcloud.PrivateLinkAccess(\"gcp\",\n    display_name=\"GCP Private Service Connect\",\n    gcp={\n        \"project\": \"temp-gear-123456\",\n    },\n    environment={\n        \"id\": development.id,\n    },\n    network={\n        \"id\": gcp_private_service_connect.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var gcp_private_service_connect = new ConfluentCloud.Network(\"gcp-private-service-connect\", new()\n    {\n        DisplayName = \"GCP Private Service Connect Network\",\n        Cloud = \"GCP\",\n        Region = \"us-central1\",\n        ConnectionTypes = new[]\n        {\n            \"PRIVATELINK\",\n        },\n        Zones = new[]\n        {\n            \"us-central1-a\",\n            \"us-central1-b\",\n            \"us-central1-c\",\n        },\n        Environment = new ConfluentCloud.Inputs.NetworkEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var gcp = new ConfluentCloud.PrivateLinkAccess(\"gcp\", new()\n    {\n        DisplayName = \"GCP Private Service Connect\",\n        Gcp = new ConfluentCloud.Inputs.PrivateLinkAccessGcpArgs\n        {\n            Project = \"temp-gear-123456\",\n        },\n        Environment = new ConfluentCloud.Inputs.PrivateLinkAccessEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Network = new ConfluentCloud.Inputs.PrivateLinkAccessNetworkArgs\n        {\n            Id = gcp_private_service_connect.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcp_private_service_connect, err := confluentcloud.NewNetwork(ctx, \"gcp-private-service-connect\", \u0026confluentcloud.NetworkArgs{\n\t\t\tDisplayName: pulumi.String(\"GCP Private Service Connect Network\"),\n\t\t\tCloud:       pulumi.String(\"GCP\"),\n\t\t\tRegion:      pulumi.String(\"us-central1\"),\n\t\t\tConnectionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"PRIVATELINK\"),\n\t\t\t},\n\t\t\tZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t\tpulumi.String(\"us-central1-b\"),\n\t\t\t\tpulumi.String(\"us-central1-c\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.NetworkEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewPrivateLinkAccess(ctx, \"gcp\", \u0026confluentcloud.PrivateLinkAccessArgs{\n\t\t\tDisplayName: pulumi.String(\"GCP Private Service Connect\"),\n\t\t\tGcp: \u0026confluentcloud.PrivateLinkAccessGcpArgs{\n\t\t\t\tProject: pulumi.String(\"temp-gear-123456\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.PrivateLinkAccessEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tNetwork: \u0026confluentcloud.PrivateLinkAccessNetworkArgs{\n\t\t\t\tId: gcp_private_service_connect.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Network;\nimport com.pulumi.confluentcloud.NetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkEnvironmentArgs;\nimport com.pulumi.confluentcloud.PrivateLinkAccess;\nimport com.pulumi.confluentcloud.PrivateLinkAccessArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAccessGcpArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAccessEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAccessNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var gcp_private_service_connect = new Network(\"gcp-private-service-connect\", NetworkArgs.builder()\n            .displayName(\"GCP Private Service Connect Network\")\n            .cloud(\"GCP\")\n            .region(\"us-central1\")\n            .connectionTypes(\"PRIVATELINK\")\n            .zones(            \n                \"us-central1-a\",\n                \"us-central1-b\",\n                \"us-central1-c\")\n            .environment(NetworkEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var gcp = new PrivateLinkAccess(\"gcp\", PrivateLinkAccessArgs.builder()\n            .displayName(\"GCP Private Service Connect\")\n            .gcp(PrivateLinkAccessGcpArgs.builder()\n                .project(\"temp-gear-123456\")\n                .build())\n            .environment(PrivateLinkAccessEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .network(PrivateLinkAccessNetworkArgs.builder()\n                .id(gcp_private_service_connect.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  gcp-private-service-connect:\n    type: confluentcloud:Network\n    properties:\n      displayName: GCP Private Service Connect Network\n      cloud: GCP\n      region: us-central1\n      connectionTypes:\n        - PRIVATELINK\n      zones:\n        - us-central1-a\n        - us-central1-b\n        - us-central1-c\n      environment:\n        id: ${development.id}\n  gcp:\n    type: confluentcloud:PrivateLinkAccess\n    properties:\n      displayName: GCP Private Service Connect\n      gcp:\n        project: temp-gear-123456\n      environment:\n        id: ${development.id}\n      network:\n        id: ${[\"gcp-private-service-connect\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.PrivateLinkAccess`\" pulumi-lang-dotnet=\"`confluentcloud.PrivateLinkAccess`\" pulumi-lang-go=\"`PrivateLinkAccess`\" pulumi-lang-python=\"`PrivateLinkAccess`\" pulumi-lang-yaml=\"`confluentcloud.PrivateLinkAccess`\" pulumi-lang-java=\"`confluentcloud.PrivateLinkAccess`\"\u003e`confluentcloud.PrivateLinkAccess`\u003c/span\u003e resource:\n  * dedicated-privatelink-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-privatelink-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using RBAC\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Private Link Access.\n\nYou can import a Private Link Access by using Environment ID and Private Link Access ID, in the format `\u003cEnvironment ID\u003e/\u003cPrivate Link Access ID\u003e`. The following example shows how to import a Private Link Access:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/privateLinkAccess:PrivateLinkAccess my_pla env-abc123/pla-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"aws":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessAws:PrivateLinkAccessAws"},"azure":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessAzure:PrivateLinkAccessAzure"},"displayName":{"type":"string","description":"The name of the Private Link Access.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessEnvironment:PrivateLinkAccessEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"gcp":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessGcp:PrivateLinkAccessGcp"},"network":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessNetwork:PrivateLinkAccessNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts."}},"required":["displayName","environment","network"],"inputProperties":{"aws":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessAws:PrivateLinkAccessAws","willReplaceOnChanges":true},"azure":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessAzure:PrivateLinkAccessAzure","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Private Link Access.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessEnvironment:PrivateLinkAccessEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gcp":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessGcp:PrivateLinkAccessGcp","willReplaceOnChanges":true},"network":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessNetwork:PrivateLinkAccessNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts.","willReplaceOnChanges":true}},"requiredInputs":["environment","network"],"stateInputs":{"description":"Input properties used for looking up and filtering PrivateLinkAccess resources.\n","properties":{"aws":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessAws:PrivateLinkAccessAws","willReplaceOnChanges":true},"azure":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessAzure:PrivateLinkAccessAzure","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Private Link Access.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessEnvironment:PrivateLinkAccessEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gcp":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessGcp:PrivateLinkAccessGcp","willReplaceOnChanges":true},"network":{"$ref":"#/types/confluentcloud:index/PrivateLinkAccessNetwork:PrivateLinkAccessNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts.","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/privateLinkAttachment:PrivateLinkAttachment":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.PrivateLinkAttachment`\" pulumi-lang-dotnet=\"`confluentcloud.PrivateLinkAttachment`\" pulumi-lang-go=\"`PrivateLinkAttachment`\" pulumi-lang-python=\"`PrivateLinkAttachment`\" pulumi-lang-yaml=\"`confluentcloud.PrivateLinkAttachment`\" pulumi-lang-java=\"`confluentcloud.PrivateLinkAttachment`\"\u003e`confluentcloud.PrivateLinkAttachment`\u003c/span\u003e provides a Private Link Attachment resource that enables creating, editing, and deleting Private Link Attachments on Confluent Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = new confluentcloud.PrivateLinkAttachment(\"main\", {\n    cloud: \"AWS\",\n    region: \"us-west-2\",\n    displayName: \"staging-platt\",\n    environment: {\n        id: \"env-3732nw\",\n    },\n});\nexport const privateLinkAttachment = main;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.PrivateLinkAttachment(\"main\",\n    cloud=\"AWS\",\n    region=\"us-west-2\",\n    display_name=\"staging-platt\",\n    environment={\n        \"id\": \"env-3732nw\",\n    })\npulumi.export(\"privateLinkAttachment\", main)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new ConfluentCloud.PrivateLinkAttachment(\"main\", new()\n    {\n        Cloud = \"AWS\",\n        Region = \"us-west-2\",\n        DisplayName = \"staging-platt\",\n        Environment = new ConfluentCloud.Inputs.PrivateLinkAttachmentEnvironmentArgs\n        {\n            Id = \"env-3732nw\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"privateLinkAttachment\"] = main,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.NewPrivateLinkAttachment(ctx, \"main\", \u0026confluentcloud.PrivateLinkAttachmentArgs{\n\t\t\tCloud:       pulumi.String(\"AWS\"),\n\t\t\tRegion:      pulumi.String(\"us-west-2\"),\n\t\t\tDisplayName: pulumi.String(\"staging-platt\"),\n\t\t\tEnvironment: \u0026confluentcloud.PrivateLinkAttachmentEnvironmentArgs{\n\t\t\t\tId: pulumi.String(\"env-3732nw\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"privateLinkAttachment\", main)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.PrivateLinkAttachment;\nimport com.pulumi.confluentcloud.PrivateLinkAttachmentArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAttachmentEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new PrivateLinkAttachment(\"main\", PrivateLinkAttachmentArgs.builder()\n            .cloud(\"AWS\")\n            .region(\"us-west-2\")\n            .displayName(\"staging-platt\")\n            .environment(PrivateLinkAttachmentEnvironmentArgs.builder()\n                .id(\"env-3732nw\")\n                .build())\n            .build());\n\n        ctx.export(\"privateLinkAttachment\", main);\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: confluentcloud:PrivateLinkAttachment\n    properties:\n      cloud: AWS\n      region: us-west-2\n      displayName: staging-platt\n      environment:\n        id: env-3732nw\noutputs:\n  privateLinkAttachment: ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.PrivateLinkAttachment`\" pulumi-lang-dotnet=\"`confluentcloud.PrivateLinkAttachment`\" pulumi-lang-go=\"`PrivateLinkAttachment`\" pulumi-lang-python=\"`PrivateLinkAttachment`\" pulumi-lang-yaml=\"`confluentcloud.PrivateLinkAttachment`\" pulumi-lang-java=\"`confluentcloud.PrivateLinkAttachment`\"\u003e`confluentcloud.PrivateLinkAttachment`\u003c/span\u003e resource:\n* enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n* enterprise-privatelinkattachment-azure-kafka-acls: _Enterprise_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Private Link Attachment.\n\nYou can import a Private Link Attachment by using Environment ID and Private Link Attachment ID, in the format `\u003cEnvironment ID\u003e/\u003cPrivate Link Attachment ID\u003e`. The following example shows how to import a Private Link Attachment:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/privateLinkAttachment:PrivateLinkAttachment main env-abc123/platt-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"aws":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentAw:PrivateLinkAttachmentAw"},"description":"(Optional Configuration Block) supports the following:\n"},"azures":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentAzure:PrivateLinkAttachmentAzure"},"description":"(Optional Configuration Block) supports the following:\n"},"cloud":{"type":"string","description":"The cloud service provider that hosts the resources to access with the Private Link Attachment.\n"},"displayName":{"type":"string","description":"The name of the Private Link Attachment.\n"},"dnsDomain":{"type":"string","description":"(Required String) The root DNS domain for the Private Link Attachment, for example, `pr123a.us-east-2.aws.confluent.cloud`.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentEnvironment:PrivateLinkAttachmentEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"gcps":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentGcp:PrivateLinkAttachmentGcp"},"description":"(Optional Configuration Block) supports the following:\n"},"region":{"type":"string","description":"The cloud service provider region where the resources to be accessed using the Private Link Attachment are located.\n"},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Private Link Attachment, for example `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-75gxp2/private-link-attachment=platt-1q0ky0`.\n"}},"required":["aws","azures","cloud","displayName","dnsDomain","environment","gcps","region","resourceName"],"inputProperties":{"cloud":{"type":"string","description":"The cloud service provider that hosts the resources to access with the Private Link Attachment.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Private Link Attachment.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentEnvironment:PrivateLinkAttachmentEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"region":{"type":"string","description":"The cloud service provider region where the resources to be accessed using the Private Link Attachment are located.\n","willReplaceOnChanges":true}},"requiredInputs":["cloud","displayName","environment","region"],"stateInputs":{"description":"Input properties used for looking up and filtering PrivateLinkAttachment resources.\n","properties":{"aws":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentAw:PrivateLinkAttachmentAw"},"description":"(Optional Configuration Block) supports the following:\n"},"azures":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentAzure:PrivateLinkAttachmentAzure"},"description":"(Optional Configuration Block) supports the following:\n"},"cloud":{"type":"string","description":"The cloud service provider that hosts the resources to access with the Private Link Attachment.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Private Link Attachment.\n"},"dnsDomain":{"type":"string","description":"(Required String) The root DNS domain for the Private Link Attachment, for example, `pr123a.us-east-2.aws.confluent.cloud`.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentEnvironment:PrivateLinkAttachmentEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gcps":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentGcp:PrivateLinkAttachmentGcp"},"description":"(Optional Configuration Block) supports the following:\n"},"region":{"type":"string","description":"The cloud service provider region where the resources to be accessed using the Private Link Attachment are located.\n","willReplaceOnChanges":true},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Private Link Attachment, for example `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-75gxp2/private-link-attachment=platt-1q0ky0`.\n"}},"type":"object"}},"confluentcloud:index/privateLinkAttachmentConnection:PrivateLinkAttachmentConnection":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.PrivateLinkAttachmentConnection`\" pulumi-lang-dotnet=\"`confluentcloud.PrivateLinkAttachmentConnection`\" pulumi-lang-go=\"`PrivateLinkAttachmentConnection`\" pulumi-lang-python=\"`PrivateLinkAttachmentConnection`\" pulumi-lang-yaml=\"`confluentcloud.PrivateLinkAttachmentConnection`\" pulumi-lang-java=\"`confluentcloud.PrivateLinkAttachmentConnection`\"\u003e`confluentcloud.PrivateLinkAttachmentConnection`\u003c/span\u003e provides a Private Link Attachment Connection resource that enables creating, editing, and deleting Private Link Attachment Connections on Confluent Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst aws = new confluentcloud.PrivateLinkAttachmentConnection(\"aws\", {\n    displayName: \"my_endpoint\",\n    environment: {\n        id: \"env-8gv0v5\",\n    },\n    aws: {\n        vpcEndpointId: \"vpce-0ed4d51f5d6ef9b6d\",\n    },\n    privateLinkAttachment: {\n        id: \"platt-plyvyl\",\n    },\n});\nconst azure = new confluentcloud.PrivateLinkAttachmentConnection(\"azure\", {\n    displayName: \"prod-azure-central-us-az1-connection\",\n    environment: {\n        id: \"env-12345\",\n    },\n    azure: {\n        privateEndpointResourceId: \"/subscriptions/123aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/testvpc/providers/Microsoft.Network/privateEndpoints/pe-platt-abcdef-az1\",\n    },\n    privateLinkAttachment: {\n        id: \"platt-abcdef\",\n    },\n});\nconst gcp = new confluentcloud.PrivateLinkAttachmentConnection(\"gcp\", {\n    displayName: \"prod-gcp-uscentral1-connection\",\n    environment: {\n        id: \"env-12345\",\n    },\n    gcp: {\n        privateServiceConnectConnectionId: \"48796d35-191c-4de1-83e6-3824517eaa1d\",\n    },\n    privateLinkAttachment: {\n        id: \"platt-abcdef\",\n    },\n});\nexport const privateLinkAttachmentConnection = aws;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\naws = confluentcloud.PrivateLinkAttachmentConnection(\"aws\",\n    display_name=\"my_endpoint\",\n    environment={\n        \"id\": \"env-8gv0v5\",\n    },\n    aws={\n        \"vpc_endpoint_id\": \"vpce-0ed4d51f5d6ef9b6d\",\n    },\n    private_link_attachment={\n        \"id\": \"platt-plyvyl\",\n    })\nazure = confluentcloud.PrivateLinkAttachmentConnection(\"azure\",\n    display_name=\"prod-azure-central-us-az1-connection\",\n    environment={\n        \"id\": \"env-12345\",\n    },\n    azure={\n        \"private_endpoint_resource_id\": \"/subscriptions/123aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/testvpc/providers/Microsoft.Network/privateEndpoints/pe-platt-abcdef-az1\",\n    },\n    private_link_attachment={\n        \"id\": \"platt-abcdef\",\n    })\ngcp = confluentcloud.PrivateLinkAttachmentConnection(\"gcp\",\n    display_name=\"prod-gcp-uscentral1-connection\",\n    environment={\n        \"id\": \"env-12345\",\n    },\n    gcp={\n        \"private_service_connect_connection_id\": \"48796d35-191c-4de1-83e6-3824517eaa1d\",\n    },\n    private_link_attachment={\n        \"id\": \"platt-abcdef\",\n    })\npulumi.export(\"privateLinkAttachmentConnection\", aws)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var aws = new ConfluentCloud.PrivateLinkAttachmentConnection(\"aws\", new()\n    {\n        DisplayName = \"my_endpoint\",\n        Environment = new ConfluentCloud.Inputs.PrivateLinkAttachmentConnectionEnvironmentArgs\n        {\n            Id = \"env-8gv0v5\",\n        },\n        Aws = new ConfluentCloud.Inputs.PrivateLinkAttachmentConnectionAwsArgs\n        {\n            VpcEndpointId = \"vpce-0ed4d51f5d6ef9b6d\",\n        },\n        PrivateLinkAttachment = new ConfluentCloud.Inputs.PrivateLinkAttachmentConnectionPrivateLinkAttachmentArgs\n        {\n            Id = \"platt-plyvyl\",\n        },\n    });\n\n    var azure = new ConfluentCloud.PrivateLinkAttachmentConnection(\"azure\", new()\n    {\n        DisplayName = \"prod-azure-central-us-az1-connection\",\n        Environment = new ConfluentCloud.Inputs.PrivateLinkAttachmentConnectionEnvironmentArgs\n        {\n            Id = \"env-12345\",\n        },\n        Azure = new ConfluentCloud.Inputs.PrivateLinkAttachmentConnectionAzureArgs\n        {\n            PrivateEndpointResourceId = \"/subscriptions/123aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/testvpc/providers/Microsoft.Network/privateEndpoints/pe-platt-abcdef-az1\",\n        },\n        PrivateLinkAttachment = new ConfluentCloud.Inputs.PrivateLinkAttachmentConnectionPrivateLinkAttachmentArgs\n        {\n            Id = \"platt-abcdef\",\n        },\n    });\n\n    var gcp = new ConfluentCloud.PrivateLinkAttachmentConnection(\"gcp\", new()\n    {\n        DisplayName = \"prod-gcp-uscentral1-connection\",\n        Environment = new ConfluentCloud.Inputs.PrivateLinkAttachmentConnectionEnvironmentArgs\n        {\n            Id = \"env-12345\",\n        },\n        Gcp = new ConfluentCloud.Inputs.PrivateLinkAttachmentConnectionGcpArgs\n        {\n            PrivateServiceConnectConnectionId = \"48796d35-191c-4de1-83e6-3824517eaa1d\",\n        },\n        PrivateLinkAttachment = new ConfluentCloud.Inputs.PrivateLinkAttachmentConnectionPrivateLinkAttachmentArgs\n        {\n            Id = \"platt-abcdef\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"privateLinkAttachmentConnection\"] = aws,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taws, err := confluentcloud.NewPrivateLinkAttachmentConnection(ctx, \"aws\", \u0026confluentcloud.PrivateLinkAttachmentConnectionArgs{\n\t\t\tDisplayName: pulumi.String(\"my_endpoint\"),\n\t\t\tEnvironment: \u0026confluentcloud.PrivateLinkAttachmentConnectionEnvironmentArgs{\n\t\t\t\tId: pulumi.String(\"env-8gv0v5\"),\n\t\t\t},\n\t\t\tAws: \u0026confluentcloud.PrivateLinkAttachmentConnectionAwsArgs{\n\t\t\t\tVpcEndpointId: pulumi.String(\"vpce-0ed4d51f5d6ef9b6d\"),\n\t\t\t},\n\t\t\tPrivateLinkAttachment: \u0026confluentcloud.PrivateLinkAttachmentConnectionPrivateLinkAttachmentArgs{\n\t\t\t\tId: pulumi.String(\"platt-plyvyl\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewPrivateLinkAttachmentConnection(ctx, \"azure\", \u0026confluentcloud.PrivateLinkAttachmentConnectionArgs{\n\t\t\tDisplayName: pulumi.String(\"prod-azure-central-us-az1-connection\"),\n\t\t\tEnvironment: \u0026confluentcloud.PrivateLinkAttachmentConnectionEnvironmentArgs{\n\t\t\t\tId: pulumi.String(\"env-12345\"),\n\t\t\t},\n\t\t\tAzure: \u0026confluentcloud.PrivateLinkAttachmentConnectionAzureArgs{\n\t\t\t\tPrivateEndpointResourceId: pulumi.String(\"/subscriptions/123aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/testvpc/providers/Microsoft.Network/privateEndpoints/pe-platt-abcdef-az1\"),\n\t\t\t},\n\t\t\tPrivateLinkAttachment: \u0026confluentcloud.PrivateLinkAttachmentConnectionPrivateLinkAttachmentArgs{\n\t\t\t\tId: pulumi.String(\"platt-abcdef\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewPrivateLinkAttachmentConnection(ctx, \"gcp\", \u0026confluentcloud.PrivateLinkAttachmentConnectionArgs{\n\t\t\tDisplayName: pulumi.String(\"prod-gcp-uscentral1-connection\"),\n\t\t\tEnvironment: \u0026confluentcloud.PrivateLinkAttachmentConnectionEnvironmentArgs{\n\t\t\t\tId: pulumi.String(\"env-12345\"),\n\t\t\t},\n\t\t\tGcp: \u0026confluentcloud.PrivateLinkAttachmentConnectionGcpArgs{\n\t\t\t\tPrivateServiceConnectConnectionId: pulumi.String(\"48796d35-191c-4de1-83e6-3824517eaa1d\"),\n\t\t\t},\n\t\t\tPrivateLinkAttachment: \u0026confluentcloud.PrivateLinkAttachmentConnectionPrivateLinkAttachmentArgs{\n\t\t\t\tId: pulumi.String(\"platt-abcdef\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"privateLinkAttachmentConnection\", aws)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.PrivateLinkAttachmentConnection;\nimport com.pulumi.confluentcloud.PrivateLinkAttachmentConnectionArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAttachmentConnectionEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAttachmentConnectionAwsArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAttachmentConnectionPrivateLinkAttachmentArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAttachmentConnectionAzureArgs;\nimport com.pulumi.confluentcloud.inputs.PrivateLinkAttachmentConnectionGcpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var aws = new PrivateLinkAttachmentConnection(\"aws\", PrivateLinkAttachmentConnectionArgs.builder()\n            .displayName(\"my_endpoint\")\n            .environment(PrivateLinkAttachmentConnectionEnvironmentArgs.builder()\n                .id(\"env-8gv0v5\")\n                .build())\n            .aws(PrivateLinkAttachmentConnectionAwsArgs.builder()\n                .vpcEndpointId(\"vpce-0ed4d51f5d6ef9b6d\")\n                .build())\n            .privateLinkAttachment(PrivateLinkAttachmentConnectionPrivateLinkAttachmentArgs.builder()\n                .id(\"platt-plyvyl\")\n                .build())\n            .build());\n\n        var azure = new PrivateLinkAttachmentConnection(\"azure\", PrivateLinkAttachmentConnectionArgs.builder()\n            .displayName(\"prod-azure-central-us-az1-connection\")\n            .environment(PrivateLinkAttachmentConnectionEnvironmentArgs.builder()\n                .id(\"env-12345\")\n                .build())\n            .azure(PrivateLinkAttachmentConnectionAzureArgs.builder()\n                .privateEndpointResourceId(\"/subscriptions/123aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/testvpc/providers/Microsoft.Network/privateEndpoints/pe-platt-abcdef-az1\")\n                .build())\n            .privateLinkAttachment(PrivateLinkAttachmentConnectionPrivateLinkAttachmentArgs.builder()\n                .id(\"platt-abcdef\")\n                .build())\n            .build());\n\n        var gcp = new PrivateLinkAttachmentConnection(\"gcp\", PrivateLinkAttachmentConnectionArgs.builder()\n            .displayName(\"prod-gcp-uscentral1-connection\")\n            .environment(PrivateLinkAttachmentConnectionEnvironmentArgs.builder()\n                .id(\"env-12345\")\n                .build())\n            .gcp(PrivateLinkAttachmentConnectionGcpArgs.builder()\n                .privateServiceConnectConnectionId(\"48796d35-191c-4de1-83e6-3824517eaa1d\")\n                .build())\n            .privateLinkAttachment(PrivateLinkAttachmentConnectionPrivateLinkAttachmentArgs.builder()\n                .id(\"platt-abcdef\")\n                .build())\n            .build());\n\n        ctx.export(\"privateLinkAttachmentConnection\", aws);\n    }\n}\n```\n```yaml\nresources:\n  aws:\n    type: confluentcloud:PrivateLinkAttachmentConnection\n    properties:\n      displayName: my_endpoint\n      environment:\n        id: env-8gv0v5\n      aws:\n        vpcEndpointId: vpce-0ed4d51f5d6ef9b6d\n      privateLinkAttachment:\n        id: platt-plyvyl\n  azure:\n    type: confluentcloud:PrivateLinkAttachmentConnection\n    properties:\n      displayName: prod-azure-central-us-az1-connection\n      environment:\n        id: env-12345\n      azure:\n        privateEndpointResourceId: /subscriptions/123aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/testvpc/providers/Microsoft.Network/privateEndpoints/pe-platt-abcdef-az1\n      privateLinkAttachment:\n        id: platt-abcdef\n  gcp:\n    type: confluentcloud:PrivateLinkAttachmentConnection\n    properties:\n      displayName: prod-gcp-uscentral1-connection\n      environment:\n        id: env-12345\n      gcp:\n        privateServiceConnectConnectionId: 48796d35-191c-4de1-83e6-3824517eaa1d\n      privateLinkAttachment:\n        id: platt-abcdef\noutputs:\n  privateLinkAttachmentConnection: ${aws}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.PrivateLinkAttachmentConnection`\" pulumi-lang-dotnet=\"`confluentcloud.PrivateLinkAttachmentConnection`\" pulumi-lang-go=\"`PrivateLinkAttachmentConnection`\" pulumi-lang-python=\"`PrivateLinkAttachmentConnection`\" pulumi-lang-yaml=\"`confluentcloud.PrivateLinkAttachmentConnection`\" pulumi-lang-java=\"`confluentcloud.PrivateLinkAttachmentConnection`\"\u003e`confluentcloud.PrivateLinkAttachmentConnection`\u003c/span\u003e resource:\n* enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n* enterprise-privatelinkattachment-azure-kafka-acls: _Enterprise_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Private Link Attachment Connection.\n\nYou can import a Private Link Attachment Connection by using Environment ID and Private Link Attachment Connection ID, in the format `\u003cEnvironment ID\u003e/\u003cPrivate Link Attachment Connection ID\u003e`. The following example shows how to import a Private Link Attachment Connection:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/privateLinkAttachmentConnection:PrivateLinkAttachmentConnection main env-abc123/plattc-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"aws":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionAws:PrivateLinkAttachmentConnectionAws"},"azure":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionAzure:PrivateLinkAttachmentConnectionAzure"},"displayName":{"type":"string","description":"The name of the Private Link Attachment Connection.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionEnvironment:PrivateLinkAttachmentConnectionEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"gcp":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionGcp:PrivateLinkAttachmentConnectionGcp"},"privateLinkAttachment":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionPrivateLinkAttachment:PrivateLinkAttachmentConnectionPrivateLinkAttachment","description":"The\u003cspan pulumi-lang-nodejs=\" privateLinkAttachment \" pulumi-lang-dotnet=\" PrivateLinkAttachment \" pulumi-lang-go=\" privateLinkAttachment \" pulumi-lang-python=\" private_link_attachment \" pulumi-lang-yaml=\" privateLinkAttachment \" pulumi-lang-java=\" privateLinkAttachment \"\u003e private_link_attachment \u003c/span\u003eto which this belongs."},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Private Link Attachment Connection, for example `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-75gxp2/private-link-attachment=platt-1q0ky0/private-link-attachment-connection=plattc-77zq2w`.\n"}},"required":["displayName","environment","privateLinkAttachment","resourceName"],"inputProperties":{"aws":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionAws:PrivateLinkAttachmentConnectionAws","willReplaceOnChanges":true},"azure":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionAzure:PrivateLinkAttachmentConnectionAzure","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Private Link Attachment Connection.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionEnvironment:PrivateLinkAttachmentConnectionEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gcp":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionGcp:PrivateLinkAttachmentConnectionGcp","willReplaceOnChanges":true},"privateLinkAttachment":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionPrivateLinkAttachment:PrivateLinkAttachmentConnectionPrivateLinkAttachment","description":"The\u003cspan pulumi-lang-nodejs=\" privateLinkAttachment \" pulumi-lang-dotnet=\" PrivateLinkAttachment \" pulumi-lang-go=\" privateLinkAttachment \" pulumi-lang-python=\" private_link_attachment \" pulumi-lang-yaml=\" privateLinkAttachment \" pulumi-lang-java=\" privateLinkAttachment \"\u003e private_link_attachment \u003c/span\u003eto which this belongs.","willReplaceOnChanges":true}},"requiredInputs":["displayName","environment","privateLinkAttachment"],"stateInputs":{"description":"Input properties used for looking up and filtering PrivateLinkAttachmentConnection resources.\n","properties":{"aws":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionAws:PrivateLinkAttachmentConnectionAws","willReplaceOnChanges":true},"azure":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionAzure:PrivateLinkAttachmentConnectionAzure","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Private Link Attachment Connection.\n"},"environment":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionEnvironment:PrivateLinkAttachmentConnectionEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gcp":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionGcp:PrivateLinkAttachmentConnectionGcp","willReplaceOnChanges":true},"privateLinkAttachment":{"$ref":"#/types/confluentcloud:index/PrivateLinkAttachmentConnectionPrivateLinkAttachment:PrivateLinkAttachmentConnectionPrivateLinkAttachment","description":"The\u003cspan pulumi-lang-nodejs=\" privateLinkAttachment \" pulumi-lang-dotnet=\" PrivateLinkAttachment \" pulumi-lang-go=\" privateLinkAttachment \" pulumi-lang-python=\" private_link_attachment \" pulumi-lang-yaml=\" privateLinkAttachment \" pulumi-lang-java=\" privateLinkAttachment \"\u003e private_link_attachment \u003c/span\u003eto which this belongs.","willReplaceOnChanges":true},"resourceName":{"type":"string","description":"(Required String) The Confluent Resource Name of the Private Link Attachment Connection, for example `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-75gxp2/private-link-attachment=platt-1q0ky0/private-link-attachment-connection=plattc-77zq2w`.\n"}},"type":"object"}},"confluentcloud:index/providerIntegration:ProviderIntegration":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegration`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegration`\" pulumi-lang-go=\"`ProviderIntegration`\" pulumi-lang-python=\"`ProviderIntegration`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegration`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegration`\"\u003e`confluentcloud.ProviderIntegration`\u003c/span\u003e allows Confluent Cloud integration with a public Cloud Service Provider (CSP) that grants users to manage access to public CSP resources through Confluent resources.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Provider Integration deletion. This setting rejects plans that would destroy or recreate the Provider Integration, such as attempting to change un-editable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst staging = new confluentcloud.Environment(\"staging\", {\n    displayName: \"Staging\",\n    streamGovernance: {\n        \"package\": \"ESSENTIALS\",\n    },\n});\nconst main = new confluentcloud.ProviderIntegration(\"main\", {\n    environment: {\n        id: staging.id,\n    },\n    aws: {\n        customerRoleArn: customerRoleArn,\n    },\n    displayName: \"provider_integration_main\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nstaging = confluentcloud.Environment(\"staging\",\n    display_name=\"Staging\",\n    stream_governance={\n        \"package\": \"ESSENTIALS\",\n    })\nmain = confluentcloud.ProviderIntegration(\"main\",\n    environment={\n        \"id\": staging.id,\n    },\n    aws={\n        \"customer_role_arn\": customer_role_arn,\n    },\n    display_name=\"provider_integration_main\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var staging = new ConfluentCloud.Environment(\"staging\", new()\n    {\n        DisplayName = \"Staging\",\n        StreamGovernance = new ConfluentCloud.Inputs.EnvironmentStreamGovernanceArgs\n        {\n            Package = \"ESSENTIALS\",\n        },\n    });\n\n    var main = new ConfluentCloud.ProviderIntegration(\"main\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        Aws = new ConfluentCloud.Inputs.ProviderIntegrationAwsArgs\n        {\n            CustomerRoleArn = customerRoleArn,\n        },\n        DisplayName = \"provider_integration_main\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tstaging, err := confluentcloud.NewEnvironment(ctx, \"staging\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Staging\"),\n\t\t\tStreamGovernance: \u0026confluentcloud.EnvironmentStreamGovernanceArgs{\n\t\t\t\tPackage: pulumi.String(\"ESSENTIALS\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewProviderIntegration(ctx, \"main\", \u0026confluentcloud.ProviderIntegrationArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationEnvironmentArgs{\n\t\t\t\tId: staging.ID(),\n\t\t\t},\n\t\t\tAws: \u0026confluentcloud.ProviderIntegrationAwsArgs{\n\t\t\t\tCustomerRoleArn: pulumi.Any(customerRoleArn),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"provider_integration_main\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.EnvironmentStreamGovernanceArgs;\nimport com.pulumi.confluentcloud.ProviderIntegration;\nimport com.pulumi.confluentcloud.ProviderIntegrationArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAwsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var staging = new Environment(\"staging\", EnvironmentArgs.builder()\n            .displayName(\"Staging\")\n            .streamGovernance(EnvironmentStreamGovernanceArgs.builder()\n                .package_(\"ESSENTIALS\")\n                .build())\n            .build());\n\n        var main = new ProviderIntegration(\"main\", ProviderIntegrationArgs.builder()\n            .environment(ProviderIntegrationEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .aws(ProviderIntegrationAwsArgs.builder()\n                .customerRoleArn(customerRoleArn)\n                .build())\n            .displayName(\"provider_integration_main\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  staging:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Staging\n      streamGovernance:\n        package: ESSENTIALS\n  main:\n    type: confluentcloud:ProviderIntegration\n    properties:\n      environment:\n        id: ${staging.id}\n      aws:\n        customerRoleArn: ${customerRoleArn}\n      displayName: provider_integration_main\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegration`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegration`\" pulumi-lang-go=\"`ProviderIntegration`\" pulumi-lang-python=\"`ProviderIntegration`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegration`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegration`\"\u003e`confluentcloud.ProviderIntegration`\u003c/span\u003e resource:\n* s3-sink-connector-assume-role: Amazon S3 Sink Connector with IAM role-based authorization using a Provider Integration\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Provider Integration.\n\nYou can import a Provider Integration by using Environment ID and Provider Integration ID, in the format `\u003cEnvironment ID\u003e/\u003cProvider Integration ID\u003e`. The following example shows how to import a Provider Integration:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/providerIntegration:ProviderIntegration main env-abc123/cspi-4xg0q\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"aws":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationAws:ProviderIntegrationAws","description":"(Required Configuration Block) The AWS-specific Provider Integration config details. It supports the following:\n"},"displayName":{"type":"string","description":"The name of the Provider Integration.\n"},"environment":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationEnvironment:ProviderIntegrationEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"usages":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) List of resource CRNs where this provider integration is being used.\n"}},"required":["displayName","environment","usages"],"inputProperties":{"aws":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationAws:ProviderIntegrationAws","description":"(Required Configuration Block) The AWS-specific Provider Integration config details. It supports the following:\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Provider Integration.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationEnvironment:ProviderIntegrationEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true}},"requiredInputs":["displayName","environment"],"stateInputs":{"description":"Input properties used for looking up and filtering ProviderIntegration resources.\n","properties":{"aws":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationAws:ProviderIntegrationAws","description":"(Required Configuration Block) The AWS-specific Provider Integration config details. It supports the following:\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Provider Integration.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationEnvironment:ProviderIntegrationEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"usages":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) List of resource CRNs where this provider integration is being used.\n"}},"type":"object"}},"confluentcloud:index/providerIntegrationAuthorization:ProviderIntegrationAuthorization":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-go=\"`ProviderIntegrationAuthorization`\" pulumi-lang-python=\"`ProviderIntegrationAuthorization`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegrationAuthorization`\"\u003e`confluentcloud.ProviderIntegrationAuthorization`\u003c/span\u003e configures and validates a Cloud Service Provider (CSP) integration created by \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-go=\"`ProviderIntegrationSetup`\" pulumi-lang-python=\"`ProviderIntegrationSetup`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegrationSetup`\"\u003e`confluentcloud.ProviderIntegrationSetup`\u003c/span\u003e. This resource transitions the integration from DRAFT to CREATED status and validates the cloud provider setup.\n\n\u003e **Note:** This resource will show persistent warnings until the cloud provider setup is complete. For Azure, you must grant admin consent and create a service principal. For GCP, you must configure IAM permissions.\n\n## Example Usage\n\n### Azure Provider Integration Authorization\n\nYou have two options to complete the Azure setup after creating the authorization resource:\n\n### Option 1: Using Azure Terraform Provider (Recommended for Infrastructure as Code)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst azure = new confluentcloud.ProviderIntegrationSetup(\"azure\", {\n    environment: {\n        id: environmentId,\n    },\n    displayName: \"azure-integration\",\n    cloud: \"AZURE\",\n});\nconst azureProviderIntegrationAuthorization = new confluentcloud.ProviderIntegrationAuthorization(\"azure\", {\n    providerIntegrationId: azure.id,\n    environment: {\n        id: environmentId,\n    },\n    azure: {\n        customerAzureTenantId: azureTenantId,\n    },\n});\n// Automatically create the service principal using Azure Terraform Provider\nconst confluent = new azuread.index.ServicePrincipal(\"confluent\", {clientId: azureProviderIntegrationAuthorization.azure?.confluentMultiTenantAppId});\nexport const azureAppId = azureProviderIntegrationAuthorization.azure.apply(azure =\u003e azure?.confluentMultiTenantAppId);\nexport const servicePrincipalObjectId = confluent.objectId;\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\nimport pulumi_confluentcloud as confluentcloud\n\nazure = confluentcloud.ProviderIntegrationSetup(\"azure\",\n    environment={\n        \"id\": environment_id,\n    },\n    display_name=\"azure-integration\",\n    cloud=\"AZURE\")\nazure_provider_integration_authorization = confluentcloud.ProviderIntegrationAuthorization(\"azure\",\n    provider_integration_id=azure.id,\n    environment={\n        \"id\": environment_id,\n    },\n    azure={\n        \"customer_azure_tenant_id\": azure_tenant_id,\n    })\n# Automatically create the service principal using Azure Terraform Provider\nconfluent = azuread.index.ServicePrincipal(\"confluent\", client_id=azure_provider_integration_authorization.azure.confluent_multi_tenant_app_id)\npulumi.export(\"azureAppId\", azure_provider_integration_authorization.azure.confluent_multi_tenant_app_id)\npulumi.export(\"servicePrincipalObjectId\", confluent[\"objectId\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azuread = Pulumi.Azuread;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var azure = new ConfluentCloud.ProviderIntegrationSetup(\"azure\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationSetupEnvironmentArgs\n        {\n            Id = environmentId,\n        },\n        DisplayName = \"azure-integration\",\n        Cloud = \"AZURE\",\n    });\n\n    var azureProviderIntegrationAuthorization = new ConfluentCloud.ProviderIntegrationAuthorization(\"azure\", new()\n    {\n        ProviderIntegrationId = azure.Id,\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationAuthorizationEnvironmentArgs\n        {\n            Id = environmentId,\n        },\n        Azure = new ConfluentCloud.Inputs.ProviderIntegrationAuthorizationAzureArgs\n        {\n            CustomerAzureTenantId = azureTenantId,\n        },\n    });\n\n    // Automatically create the service principal using Azure Terraform Provider\n    var confluent = new Azuread.Index.ServicePrincipal(\"confluent\", new()\n    {\n        ClientId = azureProviderIntegrationAuthorization.Azure?.ConfluentMultiTenantAppId,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"azureAppId\"] = azureProviderIntegrationAuthorization.Azure.Apply(azure =\u003e azure?.ConfluentMultiTenantAppId),\n        [\"servicePrincipalObjectId\"] = confluent.ObjectId,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/go/azuread\"\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tazure, err := confluentcloud.NewProviderIntegrationSetup(ctx, \"azure\", \u0026confluentcloud.ProviderIntegrationSetupArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationSetupEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(environmentId),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"azure-integration\"),\n\t\t\tCloud:       pulumi.String(\"AZURE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tazureProviderIntegrationAuthorization, err := confluentcloud.NewProviderIntegrationAuthorization(ctx, \"azure\", \u0026confluentcloud.ProviderIntegrationAuthorizationArgs{\n\t\t\tProviderIntegrationId: azure.ID(),\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationAuthorizationEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(environmentId),\n\t\t\t},\n\t\t\tAzure: \u0026confluentcloud.ProviderIntegrationAuthorizationAzureArgs{\n\t\t\t\tCustomerAzureTenantId: pulumi.Any(azureTenantId),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Automatically create the service principal using Azure Terraform Provider\n\t\tconfluent, err := azuread.NewServicePrincipal(ctx, \"confluent\", \u0026azuread.ServicePrincipalArgs{\n\t\t\tClientId: azureProviderIntegrationAuthorization.Azure.ConfluentMultiTenantAppId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"azureAppId\", azureProviderIntegrationAuthorization.Azure.ApplyT(func(azure confluentcloud.ProviderIntegrationAuthorizationAzure) (*string, error) {\n\t\t\treturn \u0026azure.ConfluentMultiTenantAppId, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"servicePrincipalObjectId\", confluent.ObjectId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ProviderIntegrationSetup;\nimport com.pulumi.confluentcloud.ProviderIntegrationSetupArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationSetupEnvironmentArgs;\nimport com.pulumi.confluentcloud.ProviderIntegrationAuthorization;\nimport com.pulumi.confluentcloud.ProviderIntegrationAuthorizationArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAuthorizationEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAuthorizationAzureArgs;\nimport com.pulumi.azuread.ServicePrincipal;\nimport com.pulumi.azuread.ServicePrincipalArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var azure = new ProviderIntegrationSetup(\"azure\", ProviderIntegrationSetupArgs.builder()\n            .environment(ProviderIntegrationSetupEnvironmentArgs.builder()\n                .id(environmentId)\n                .build())\n            .displayName(\"azure-integration\")\n            .cloud(\"AZURE\")\n            .build());\n\n        var azureProviderIntegrationAuthorization = new ProviderIntegrationAuthorization(\"azureProviderIntegrationAuthorization\", ProviderIntegrationAuthorizationArgs.builder()\n            .providerIntegrationId(azure.id())\n            .environment(ProviderIntegrationAuthorizationEnvironmentArgs.builder()\n                .id(environmentId)\n                .build())\n            .azure(ProviderIntegrationAuthorizationAzureArgs.builder()\n                .customerAzureTenantId(azureTenantId)\n                .build())\n            .build());\n\n        // Automatically create the service principal using Azure Terraform Provider\n        var confluent = new ServicePrincipal(\"confluent\", ServicePrincipalArgs.builder()\n            .clientId(azureProviderIntegrationAuthorization.azure().confluentMultiTenantAppId())\n            .build());\n\n        ctx.export(\"azureAppId\", azureProviderIntegrationAuthorization.azure().applyValue(_azure -\u003e _azure.confluentMultiTenantAppId()));\n        ctx.export(\"servicePrincipalObjectId\", confluent.objectId());\n    }\n}\n```\n```yaml\nresources:\n  azure:\n    type: confluentcloud:ProviderIntegrationSetup\n    properties:\n      environment:\n        id: ${environmentId}\n      displayName: azure-integration\n      cloud: AZURE\n  azureProviderIntegrationAuthorization:\n    type: confluentcloud:ProviderIntegrationAuthorization\n    name: azure\n    properties:\n      providerIntegrationId: ${azure.id}\n      environment:\n        id: ${environmentId}\n      azure:\n        customerAzureTenantId: ${azureTenantId}\n  # Automatically create the service principal using Azure Terraform Provider\n  confluent:\n    type: azuread:ServicePrincipal\n    properties:\n      clientId: ${azureProviderIntegrationAuthorization.azure.confluentMultiTenantAppId}\noutputs:\n  # Output the setup information\n  azureAppId: ${azureProviderIntegrationAuthorization.azure.confluentMultiTenantAppId}\n  servicePrincipalObjectId: ${confluent.objectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option 2: Using Azure CLI Commands\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst azure = new confluentcloud.ProviderIntegrationSetup(\"azure\", {\n    environment: {\n        id: environmentId,\n    },\n    displayName: \"azure-integration\",\n    cloud: \"AZURE\",\n});\nconst azureProviderIntegrationAuthorization = new confluentcloud.ProviderIntegrationAuthorization(\"azure\", {\n    providerIntegrationId: azure.id,\n    environment: {\n        id: environmentId,\n    },\n    azure: {\n        customerAzureTenantId: azureTenantId,\n    },\n});\nexport const azureSetupCommand = azureProviderIntegrationAuthorization.azure.apply(azure =\u003e `az ad sp create --id ${azure?.confluentMultiTenantAppId}`);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nazure = confluentcloud.ProviderIntegrationSetup(\"azure\",\n    environment={\n        \"id\": environment_id,\n    },\n    display_name=\"azure-integration\",\n    cloud=\"AZURE\")\nazure_provider_integration_authorization = confluentcloud.ProviderIntegrationAuthorization(\"azure\",\n    provider_integration_id=azure.id,\n    environment={\n        \"id\": environment_id,\n    },\n    azure={\n        \"customer_azure_tenant_id\": azure_tenant_id,\n    })\npulumi.export(\"azureSetupCommand\", azure_provider_integration_authorization.azure.apply(lambda azure: f\"az ad sp create --id {azure.confluent_multi_tenant_app_id}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var azure = new ConfluentCloud.ProviderIntegrationSetup(\"azure\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationSetupEnvironmentArgs\n        {\n            Id = environmentId,\n        },\n        DisplayName = \"azure-integration\",\n        Cloud = \"AZURE\",\n    });\n\n    var azureProviderIntegrationAuthorization = new ConfluentCloud.ProviderIntegrationAuthorization(\"azure\", new()\n    {\n        ProviderIntegrationId = azure.Id,\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationAuthorizationEnvironmentArgs\n        {\n            Id = environmentId,\n        },\n        Azure = new ConfluentCloud.Inputs.ProviderIntegrationAuthorizationAzureArgs\n        {\n            CustomerAzureTenantId = azureTenantId,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"azureSetupCommand\"] = azureProviderIntegrationAuthorization.Azure.Apply(azure =\u003e $\"az ad sp create --id {azure?.ConfluentMultiTenantAppId}\"),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tazure, err := confluentcloud.NewProviderIntegrationSetup(ctx, \"azure\", \u0026confluentcloud.ProviderIntegrationSetupArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationSetupEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(environmentId),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"azure-integration\"),\n\t\t\tCloud:       pulumi.String(\"AZURE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tazureProviderIntegrationAuthorization, err := confluentcloud.NewProviderIntegrationAuthorization(ctx, \"azure\", \u0026confluentcloud.ProviderIntegrationAuthorizationArgs{\n\t\t\tProviderIntegrationId: azure.ID(),\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationAuthorizationEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(environmentId),\n\t\t\t},\n\t\t\tAzure: \u0026confluentcloud.ProviderIntegrationAuthorizationAzureArgs{\n\t\t\t\tCustomerAzureTenantId: pulumi.Any(azureTenantId),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"azureSetupCommand\", azureProviderIntegrationAuthorization.Azure.ApplyT(func(azure confluentcloud.ProviderIntegrationAuthorizationAzure) (string, error) {\n\t\t\treturn fmt.Sprintf(\"az ad sp create --id %v\", azure.ConfluentMultiTenantAppId), nil\n\t\t}).(pulumi.StringOutput))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ProviderIntegrationSetup;\nimport com.pulumi.confluentcloud.ProviderIntegrationSetupArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationSetupEnvironmentArgs;\nimport com.pulumi.confluentcloud.ProviderIntegrationAuthorization;\nimport com.pulumi.confluentcloud.ProviderIntegrationAuthorizationArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAuthorizationEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAuthorizationAzureArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var azure = new ProviderIntegrationSetup(\"azure\", ProviderIntegrationSetupArgs.builder()\n            .environment(ProviderIntegrationSetupEnvironmentArgs.builder()\n                .id(environmentId)\n                .build())\n            .displayName(\"azure-integration\")\n            .cloud(\"AZURE\")\n            .build());\n\n        var azureProviderIntegrationAuthorization = new ProviderIntegrationAuthorization(\"azureProviderIntegrationAuthorization\", ProviderIntegrationAuthorizationArgs.builder()\n            .providerIntegrationId(azure.id())\n            .environment(ProviderIntegrationAuthorizationEnvironmentArgs.builder()\n                .id(environmentId)\n                .build())\n            .azure(ProviderIntegrationAuthorizationAzureArgs.builder()\n                .customerAzureTenantId(azureTenantId)\n                .build())\n            .build());\n\n        ctx.export(\"azureSetupCommand\", azureProviderIntegrationAuthorization.azure().applyValue(_azure -\u003e String.format(\"az ad sp create --id %s\", _azure.confluentMultiTenantAppId())));\n    }\n}\n```\n```yaml\nresources:\n  azure:\n    type: confluentcloud:ProviderIntegrationSetup\n    properties:\n      environment:\n        id: ${environmentId}\n      displayName: azure-integration\n      cloud: AZURE\n  azureProviderIntegrationAuthorization:\n    type: confluentcloud:ProviderIntegrationAuthorization\n    name: azure\n    properties:\n      providerIntegrationId: ${azure.id}\n      environment:\n        id: ${environmentId}\n      azure:\n        customerAzureTenantId: ${azureTenantId}\noutputs:\n  # Output CLI commands for manual setup\n  azureSetupCommand: az ad sp create --id ${azureProviderIntegrationAuthorization.azure.confluentMultiTenantAppId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### GCP Provider Integration Authorization\n\nYou have two options to complete the GCP setup after creating the authorization resource:\n\n### Option 1: Using Google Terraform Provider (Recommended for Infrastructure as Code)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\nimport * as google from \"@pulumi/google\";\n\nconst gcp = new confluentcloud.ProviderIntegrationSetup(\"gcp\", {\n    environment: {\n        id: environmentId,\n    },\n    displayName: \"gcp-integration\",\n    cloud: \"GCP\",\n});\nconst gcpProviderIntegrationAuthorization = new confluentcloud.ProviderIntegrationAuthorization(\"gcp\", {\n    providerIntegrationId: gcp.id,\n    environment: {\n        id: environmentId,\n    },\n    gcp: {\n        customerGoogleServiceAccount: gcpServiceAccount,\n    },\n});\n// Grant IAM permissions using Google Terraform Provider\nconst confluentTokenCreator = new google.index.ProjectIamMember(\"confluent_token_creator\", {\n    project: gcpProjectId,\n    role: \"roles/iam.serviceAccountTokenCreator\",\n    member: `serviceAccount:${gcpProviderIntegrationAuthorization.gcp?.googleServiceAccount}`,\n    condition: [{\n        title: \"Confluent Cloud Access\",\n        description: \"Allow Confluent Cloud to impersonate the customer service account\",\n        expression: `request.auth.claims.sub == '${gcpProviderIntegrationAuthorization.gcp?.googleServiceAccount}'`,\n    }],\n});\nexport const confluentServiceAccount = gcpProviderIntegrationAuthorization.gcp.apply(gcp =\u003e gcp?.googleServiceAccount);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\nimport pulumi_google as google\n\ngcp = confluentcloud.ProviderIntegrationSetup(\"gcp\",\n    environment={\n        \"id\": environment_id,\n    },\n    display_name=\"gcp-integration\",\n    cloud=\"GCP\")\ngcp_provider_integration_authorization = confluentcloud.ProviderIntegrationAuthorization(\"gcp\",\n    provider_integration_id=gcp.id,\n    environment={\n        \"id\": environment_id,\n    },\n    gcp={\n        \"customer_google_service_account\": gcp_service_account,\n    })\n# Grant IAM permissions using Google Terraform Provider\nconfluent_token_creator = google.index.ProjectIamMember(\"confluent_token_creator\",\n    project=gcp_project_id,\n    role=roles/iam.serviceAccountTokenCreator,\n    member=fserviceAccount:{gcp_provider_integration_authorization.gcp.google_service_account},\n    condition=[{\n        title: Confluent Cloud Access,\n        description: Allow Confluent Cloud to impersonate the customer service account,\n        expression: frequest.auth.claims.sub == '{gcp_provider_integration_authorization.gcp.google_service_account}',\n    }])\npulumi.export(\"confluentServiceAccount\", gcp_provider_integration_authorization.gcp.google_service_account)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\nusing Google = Pulumi.Google;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var gcp = new ConfluentCloud.ProviderIntegrationSetup(\"gcp\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationSetupEnvironmentArgs\n        {\n            Id = environmentId,\n        },\n        DisplayName = \"gcp-integration\",\n        Cloud = \"GCP\",\n    });\n\n    var gcpProviderIntegrationAuthorization = new ConfluentCloud.ProviderIntegrationAuthorization(\"gcp\", new()\n    {\n        ProviderIntegrationId = gcp.Id,\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationAuthorizationEnvironmentArgs\n        {\n            Id = environmentId,\n        },\n        Gcp = new ConfluentCloud.Inputs.ProviderIntegrationAuthorizationGcpArgs\n        {\n            CustomerGoogleServiceAccount = gcpServiceAccount,\n        },\n    });\n\n    // Grant IAM permissions using Google Terraform Provider\n    var confluentTokenCreator = new Google.Index.ProjectIamMember(\"confluent_token_creator\", new()\n    {\n        Project = gcpProjectId,\n        Role = \"roles/iam.serviceAccountTokenCreator\",\n        Member = $\"serviceAccount:{gcpProviderIntegrationAuthorization.Gcp?.GoogleServiceAccount}\",\n        Condition = new[]\n        {\n            \n            {\n                { \"title\", \"Confluent Cloud Access\" },\n                { \"description\", \"Allow Confluent Cloud to impersonate the customer service account\" },\n                { \"expression\", $\"request.auth.claims.sub == '{gcpProviderIntegrationAuthorization.Gcp?.GoogleServiceAccount}'\" },\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"confluentServiceAccount\"] = gcpProviderIntegrationAuthorization.Gcp.Apply(gcp =\u003e gcp?.GoogleServiceAccount),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi-google/sdk/go/google\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgcp, err := confluentcloud.NewProviderIntegrationSetup(ctx, \"gcp\", \u0026confluentcloud.ProviderIntegrationSetupArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationSetupEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(environmentId),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"gcp-integration\"),\n\t\t\tCloud:       pulumi.String(\"GCP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcpProviderIntegrationAuthorization, err := confluentcloud.NewProviderIntegrationAuthorization(ctx, \"gcp\", \u0026confluentcloud.ProviderIntegrationAuthorizationArgs{\n\t\t\tProviderIntegrationId: gcp.ID(),\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationAuthorizationEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(environmentId),\n\t\t\t},\n\t\t\tGcp: \u0026confluentcloud.ProviderIntegrationAuthorizationGcpArgs{\n\t\t\t\tCustomerGoogleServiceAccount: pulumi.Any(gcpServiceAccount),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Grant IAM permissions using Google Terraform Provider\n\t\t_, err = google.NewProjectIamMember(ctx, \"confluent_token_creator\", \u0026google.ProjectIamMemberArgs{\n\t\t\tProject: gcpProjectId,\n\t\t\tRole:    \"roles/iam.serviceAccountTokenCreator\",\n\t\t\tMember:  pulumi.Sprintf(\"serviceAccount:%v\", gcpProviderIntegrationAuthorization.Gcp.GoogleServiceAccount),\n\t\t\tCondition: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"title\":       \"Confluent Cloud Access\",\n\t\t\t\t\t\"description\": \"Allow Confluent Cloud to impersonate the customer service account\",\n\t\t\t\t\t\"expression\":  pulumi.Sprintf(\"request.auth.claims.sub == '%v'\", gcpProviderIntegrationAuthorization.Gcp.GoogleServiceAccount),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"confluentServiceAccount\", gcpProviderIntegrationAuthorization.Gcp.ApplyT(func(gcp confluentcloud.ProviderIntegrationAuthorizationGcp) (*string, error) {\n\t\t\treturn \u0026gcp.GoogleServiceAccount, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ProviderIntegrationSetup;\nimport com.pulumi.confluentcloud.ProviderIntegrationSetupArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationSetupEnvironmentArgs;\nimport com.pulumi.confluentcloud.ProviderIntegrationAuthorization;\nimport com.pulumi.confluentcloud.ProviderIntegrationAuthorizationArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAuthorizationEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAuthorizationGcpArgs;\nimport com.pulumi.google.ProjectIamMember;\nimport com.pulumi.google.ProjectIamMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var gcp = new ProviderIntegrationSetup(\"gcp\", ProviderIntegrationSetupArgs.builder()\n            .environment(ProviderIntegrationSetupEnvironmentArgs.builder()\n                .id(environmentId)\n                .build())\n            .displayName(\"gcp-integration\")\n            .cloud(\"GCP\")\n            .build());\n\n        var gcpProviderIntegrationAuthorization = new ProviderIntegrationAuthorization(\"gcpProviderIntegrationAuthorization\", ProviderIntegrationAuthorizationArgs.builder()\n            .providerIntegrationId(gcp.id())\n            .environment(ProviderIntegrationAuthorizationEnvironmentArgs.builder()\n                .id(environmentId)\n                .build())\n            .gcp(ProviderIntegrationAuthorizationGcpArgs.builder()\n                .customerGoogleServiceAccount(gcpServiceAccount)\n                .build())\n            .build());\n\n        // Grant IAM permissions using Google Terraform Provider\n        var confluentTokenCreator = new ProjectIamMember(\"confluentTokenCreator\", ProjectIamMemberArgs.builder()\n            .project(gcpProjectId)\n            .role(\"roles/iam.serviceAccountTokenCreator\")\n            .member(String.format(\"serviceAccount:%s\", gcpProviderIntegrationAuthorization.gcp().googleServiceAccount()))\n            .condition(List.of(Map.ofEntries(\n                Map.entry(\"title\", \"Confluent Cloud Access\"),\n                Map.entry(\"description\", \"Allow Confluent Cloud to impersonate the customer service account\"),\n                Map.entry(\"expression\", String.format(\"request.auth.claims.sub == '%s'\", gcpProviderIntegrationAuthorization.gcp().googleServiceAccount()))\n            )))\n            .build());\n\n        ctx.export(\"confluentServiceAccount\", gcpProviderIntegrationAuthorization.gcp().applyValue(_gcp -\u003e _gcp.googleServiceAccount()));\n    }\n}\n```\n```yaml\nresources:\n  gcp:\n    type: confluentcloud:ProviderIntegrationSetup\n    properties:\n      environment:\n        id: ${environmentId}\n      displayName: gcp-integration\n      cloud: GCP\n  gcpProviderIntegrationAuthorization:\n    type: confluentcloud:ProviderIntegrationAuthorization\n    name: gcp\n    properties:\n      providerIntegrationId: ${gcp.id}\n      environment:\n        id: ${environmentId}\n      gcp:\n        customerGoogleServiceAccount: ${gcpServiceAccount}\n  # Grant IAM permissions using Google Terraform Provider\n  confluentTokenCreator:\n    type: google:ProjectIamMember\n    name: confluent_token_creator\n    properties:\n      project: ${gcpProjectId}\n      role: roles/iam.serviceAccountTokenCreator\n      member: serviceAccount:${gcpProviderIntegrationAuthorization.gcp.googleServiceAccount}\n      condition:\n        - title: Confluent Cloud Access\n          description: Allow Confluent Cloud to impersonate the customer service account\n          expression: request.auth.claims.sub == '${gcpProviderIntegrationAuthorization.gcp.googleServiceAccount}'\noutputs:\n  # Output the setup information\n  confluentServiceAccount: ${gcpProviderIntegrationAuthorization.gcp.googleServiceAccount}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option 2: Using gcloud CLI Commands\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst gcp = new confluentcloud.ProviderIntegrationSetup(\"gcp\", {\n    environment: {\n        id: environmentId,\n    },\n    displayName: \"gcp-integration\",\n    cloud: \"GCP\",\n});\nconst gcpProviderIntegrationAuthorization = new confluentcloud.ProviderIntegrationAuthorization(\"gcp\", {\n    providerIntegrationId: gcp.id,\n    environment: {\n        id: environmentId,\n    },\n    gcp: {\n        customerGoogleServiceAccount: gcpServiceAccount,\n    },\n});\nexport const gcpIamCommand = pulumi.all([gcpProviderIntegrationAuthorization.gcp, gcpProviderIntegrationAuthorization.gcp]).apply(([gcpProviderIntegrationAuthorizationGcp, gcpProviderIntegrationAuthorizationGcp1]) =\u003e `gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member=\"serviceAccount:${gcpProviderIntegrationAuthorizationGcp?.googleServiceAccount}\" --role=\"roles/iam.serviceAccountTokenCreator\" --condition=\"expression=request.auth.claims.sub=='${gcpProviderIntegrationAuthorizationGcp1?.googleServiceAccount}'\"`);\nexport const confluentServiceAccount = gcpProviderIntegrationAuthorization.gcp.apply(gcp =\u003e gcp?.googleServiceAccount);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ngcp = confluentcloud.ProviderIntegrationSetup(\"gcp\",\n    environment={\n        \"id\": environment_id,\n    },\n    display_name=\"gcp-integration\",\n    cloud=\"GCP\")\ngcp_provider_integration_authorization = confluentcloud.ProviderIntegrationAuthorization(\"gcp\",\n    provider_integration_id=gcp.id,\n    environment={\n        \"id\": environment_id,\n    },\n    gcp={\n        \"customer_google_service_account\": gcp_service_account,\n    })\npulumi.export(\"gcpIamCommand\", pulumi.Output.all(\n    gcpProviderIntegrationAuthorizationGcp=gcp_provider_integration_authorization.gcp,\n    gcpProviderIntegrationAuthorizationGcp1=gcp_provider_integration_authorization.gcp\n).apply(lambda resolved_outputs: f\"gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member=\\\"serviceAccount:{gcp_provider_integration_authorization_gcp.google_service_account}\\\" --role=\\\"roles/iam.serviceAccountTokenCreator\\\" --condition=\\\"expression=request.auth.claims.sub=='{gcp_provider_integration_authorization_gcp1.google_service_account}'\\\"\")\n)\npulumi.export(\"confluentServiceAccount\", gcp_provider_integration_authorization.gcp.google_service_account)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var gcp = new ConfluentCloud.ProviderIntegrationSetup(\"gcp\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationSetupEnvironmentArgs\n        {\n            Id = environmentId,\n        },\n        DisplayName = \"gcp-integration\",\n        Cloud = \"GCP\",\n    });\n\n    var gcpProviderIntegrationAuthorization = new ConfluentCloud.ProviderIntegrationAuthorization(\"gcp\", new()\n    {\n        ProviderIntegrationId = gcp.Id,\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationAuthorizationEnvironmentArgs\n        {\n            Id = environmentId,\n        },\n        Gcp = new ConfluentCloud.Inputs.ProviderIntegrationAuthorizationGcpArgs\n        {\n            CustomerGoogleServiceAccount = gcpServiceAccount,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"gcpIamCommand\"] = Output.Tuple(gcpProviderIntegrationAuthorization.Gcp, gcpProviderIntegrationAuthorization.Gcp).Apply(values =\u003e\n        {\n            var gcpProviderIntegrationAuthorizationGcp = values.Item1;\n            var gcpProviderIntegrationAuthorizationGcp1 = values.Item2;\n            return $\"gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member=\\\"serviceAccount:{gcpProviderIntegrationAuthorizationGcp?.GoogleServiceAccount}\\\" --role=\\\"roles/iam.serviceAccountTokenCreator\\\" --condition=\\\"expression=request.auth.claims.sub=='{gcpProviderIntegrationAuthorizationGcp1?.GoogleServiceAccount}'\\\"\";\n        }),\n        [\"confluentServiceAccount\"] = gcpProviderIntegrationAuthorization.Gcp.Apply(gcp =\u003e gcp?.GoogleServiceAccount),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgcp, err := confluentcloud.NewProviderIntegrationSetup(ctx, \"gcp\", \u0026confluentcloud.ProviderIntegrationSetupArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationSetupEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(environmentId),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"gcp-integration\"),\n\t\t\tCloud:       pulumi.String(\"GCP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcpProviderIntegrationAuthorization, err := confluentcloud.NewProviderIntegrationAuthorization(ctx, \"gcp\", \u0026confluentcloud.ProviderIntegrationAuthorizationArgs{\n\t\t\tProviderIntegrationId: gcp.ID(),\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationAuthorizationEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(environmentId),\n\t\t\t},\n\t\t\tGcp: \u0026confluentcloud.ProviderIntegrationAuthorizationGcpArgs{\n\t\t\t\tCustomerGoogleServiceAccount: pulumi.Any(gcpServiceAccount),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"gcpIamCommand\", pulumi.All(gcpProviderIntegrationAuthorization.Gcp, gcpProviderIntegrationAuthorization.Gcp).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\tgcpProviderIntegrationAuthorizationGcp := _args[0].(confluentcloud.ProviderIntegrationAuthorizationGcp)\n\t\t\tgcpProviderIntegrationAuthorizationGcp1 := _args[1].(confluentcloud.ProviderIntegrationAuthorizationGcp)\n\t\t\treturn fmt.Sprintf(\"gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member=\\\"serviceAccount:%v\\\" --role=\\\"roles/iam.serviceAccountTokenCreator\\\" --condition=\\\"expression=request.auth.claims.sub=='%v'\\\"\", gcpProviderIntegrationAuthorizationGcp.GoogleServiceAccount, gcpProviderIntegrationAuthorizationGcp1.GoogleServiceAccount), nil\n\t\t}).(pulumi.StringOutput))\n\t\tctx.Export(\"confluentServiceAccount\", gcpProviderIntegrationAuthorization.Gcp.ApplyT(func(gcp confluentcloud.ProviderIntegrationAuthorizationGcp) (*string, error) {\n\t\t\treturn \u0026gcp.GoogleServiceAccount, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ProviderIntegrationSetup;\nimport com.pulumi.confluentcloud.ProviderIntegrationSetupArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationSetupEnvironmentArgs;\nimport com.pulumi.confluentcloud.ProviderIntegrationAuthorization;\nimport com.pulumi.confluentcloud.ProviderIntegrationAuthorizationArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAuthorizationEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAuthorizationGcpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var gcp = new ProviderIntegrationSetup(\"gcp\", ProviderIntegrationSetupArgs.builder()\n            .environment(ProviderIntegrationSetupEnvironmentArgs.builder()\n                .id(environmentId)\n                .build())\n            .displayName(\"gcp-integration\")\n            .cloud(\"GCP\")\n            .build());\n\n        var gcpProviderIntegrationAuthorization = new ProviderIntegrationAuthorization(\"gcpProviderIntegrationAuthorization\", ProviderIntegrationAuthorizationArgs.builder()\n            .providerIntegrationId(gcp.id())\n            .environment(ProviderIntegrationAuthorizationEnvironmentArgs.builder()\n                .id(environmentId)\n                .build())\n            .gcp(ProviderIntegrationAuthorizationGcpArgs.builder()\n                .customerGoogleServiceAccount(gcpServiceAccount)\n                .build())\n            .build());\n\n        ctx.export(\"gcpIamCommand\", Output.tuple(gcpProviderIntegrationAuthorization.gcp(), gcpProviderIntegrationAuthorization.gcp()).applyValue(values -\u003e {\n            var gcpProviderIntegrationAuthorizationGcp = values.t1;\n            var gcpProviderIntegrationAuthorizationGcp1 = values.t2;\n            return String.format(\"gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member=\\\"serviceAccount:%s\\\" --role=\\\"roles/iam.serviceAccountTokenCreator\\\" --condition=\\\"expression=request.auth.claims.sub=='%s'\\\"\", gcpProviderIntegrationAuthorizationGcp.googleServiceAccount(),gcpProviderIntegrationAuthorizationGcp1.googleServiceAccount());\n        }));\n        ctx.export(\"confluentServiceAccount\", gcpProviderIntegrationAuthorization.gcp().applyValue(_gcp -\u003e _gcp.googleServiceAccount()));\n    }\n}\n```\n```yaml\nresources:\n  gcp:\n    type: confluentcloud:ProviderIntegrationSetup\n    properties:\n      environment:\n        id: ${environmentId}\n      displayName: gcp-integration\n      cloud: GCP\n  gcpProviderIntegrationAuthorization:\n    type: confluentcloud:ProviderIntegrationAuthorization\n    name: gcp\n    properties:\n      providerIntegrationId: ${gcp.id}\n      environment:\n        id: ${environmentId}\n      gcp:\n        customerGoogleServiceAccount: ${gcpServiceAccount}\noutputs:\n  # Output gcloud commands for manual setup\n  gcpIamCommand: gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member=\"serviceAccount:${gcpProviderIntegrationAuthorization.gcp.googleServiceAccount}\" --role=\"roles/iam.serviceAccountTokenCreator\" --condition=\"expression=request.auth.claims.sub=='${gcpProviderIntegrationAuthorization.gcp.googleServiceAccount}'\"\n  confluentServiceAccount: ${gcpProviderIntegrationAuthorization.gcp.googleServiceAccount}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Azure Setup Process\n\nAfter applying the Terraform configuration, complete the Azure setup:\n\n1. **Get the multi-tenant app ID** from the Terraform outputs\n2. **Grant admin consent** (if you have Global Admin rights):\n   ```\n   https://login.microsoftonline.com/{tenant-id}/adminconsent?client_id={app-id}\n```\n3. **Create the service principal**:\n   ```bash\n   az ad sp create --id {app-id}\n```\n4. **Grant permissions** in Azure Portal → Enterprise Applications\n5. **Re-run `pulumi up`** to validate the connection\n\n## GCP Setup Process\n\nAfter applying the Terraform configuration, complete the GCP setup:\n\n1. **Get the Confluent service account** from the Terraform outputs\n2. **Grant IAM permissions** in GCP Console:\n   - Grant the Confluent service account \"Service Account Token Creator\" role on your service account\n   - Grant your service account the necessary permissions (e.g., BigQuery Data Editor)\n3. **Re-run `pulumi up`** to validate the connection\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-go=\"`ProviderIntegrationAuthorization`\" pulumi-lang-python=\"`ProviderIntegrationAuthorization`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegrationAuthorization`\"\u003e`confluentcloud.ProviderIntegrationAuthorization`\u003c/span\u003e resource:\n* provider-integration-azure: Complete Azure Provider Integration setup\n* provider-integration-gcp: Complete GCP Provider Integration setup\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Provider Integration Authorization.\n\nYou can import a Provider Integration Authorization by using Environment ID and Provider Integration ID, in the format `\u003cEnvironment ID\u003e/\u003cProvider Integration ID\u003e`. The following example shows how to import a Provider Integration Authorization:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/providerIntegrationAuthorization:ProviderIntegrationAuthorization main env-abc123/cspi-4xg0q\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"azure":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationAuthorizationAzure:ProviderIntegrationAuthorizationAzure","description":"(Optional Configuration Block) Azure-specific configuration details. It supports the following:\n"},"environment":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationAuthorizationEnvironment:ProviderIntegrationAuthorizationEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"gcp":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationAuthorizationGcp:ProviderIntegrationAuthorizationGcp","description":"(Optional Configuration Block) GCP-specific configuration details. It supports the following:\n"},"providerIntegrationId":{"type":"string","description":"The ID of the provider integration to authorize.\n"}},"required":["environment","providerIntegrationId"],"inputProperties":{"azure":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationAuthorizationAzure:ProviderIntegrationAuthorizationAzure","description":"(Optional Configuration Block) Azure-specific configuration details. It supports the following:\n"},"environment":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationAuthorizationEnvironment:ProviderIntegrationAuthorizationEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gcp":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationAuthorizationGcp:ProviderIntegrationAuthorizationGcp","description":"(Optional Configuration Block) GCP-specific configuration details. It supports the following:\n"},"providerIntegrationId":{"type":"string","description":"The ID of the provider integration to authorize.\n","willReplaceOnChanges":true}},"requiredInputs":["environment","providerIntegrationId"],"stateInputs":{"description":"Input properties used for looking up and filtering ProviderIntegrationAuthorization resources.\n","properties":{"azure":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationAuthorizationAzure:ProviderIntegrationAuthorizationAzure","description":"(Optional Configuration Block) Azure-specific configuration details. It supports the following:\n"},"environment":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationAuthorizationEnvironment:ProviderIntegrationAuthorizationEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"gcp":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationAuthorizationGcp:ProviderIntegrationAuthorizationGcp","description":"(Optional Configuration Block) GCP-specific configuration details. It supports the following:\n"},"providerIntegrationId":{"type":"string","description":"The ID of the provider integration to authorize.\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/providerIntegrationSetup:ProviderIntegrationSetup":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-go=\"`ProviderIntegrationSetup`\" pulumi-lang-python=\"`ProviderIntegrationSetup`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegrationSetup`\"\u003e`confluentcloud.ProviderIntegrationSetup`\u003c/span\u003e provides a Cloud Service Provider (CSP) integration that allows Confluent Cloud to access resources in your cloud provider account. This is the second generation of provider integrations, supporting both Azure and GCP.\n\nThis resource creates the integration in DRAFT status. Use \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-go=\"`ProviderIntegrationAuthorization`\" pulumi-lang-python=\"`ProviderIntegrationAuthorization`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegrationAuthorization`\"\u003e`confluentcloud.ProviderIntegrationAuthorization`\u003c/span\u003e to configure and validate the integration.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Provider Integration deletion. This setting rejects plans that would destroy or recreate the Provider Integration, such as attempting to change un-editable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Azure Provider Integration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst staging = new confluentcloud.Environment(\"staging\", {\n    displayName: \"Staging\",\n    streamGovernance: {\n        \"package\": \"ESSENTIALS\",\n    },\n});\nconst azure = new confluentcloud.ProviderIntegrationSetup(\"azure\", {\n    environment: {\n        id: staging.id,\n    },\n    displayName: \"azure-integration\",\n    cloud: \"AZURE\",\n});\n// Configure and validate the Azure integration\nconst azureProviderIntegrationAuthorization = new confluentcloud.ProviderIntegrationAuthorization(\"azure\", {\n    providerIntegrationId: azure.id,\n    environment: {\n        id: staging.id,\n    },\n    azure: {\n        customerAzureTenantId: \"12345678-1234-1234-1234-123456789abc\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nstaging = confluentcloud.Environment(\"staging\",\n    display_name=\"Staging\",\n    stream_governance={\n        \"package\": \"ESSENTIALS\",\n    })\nazure = confluentcloud.ProviderIntegrationSetup(\"azure\",\n    environment={\n        \"id\": staging.id,\n    },\n    display_name=\"azure-integration\",\n    cloud=\"AZURE\")\n# Configure and validate the Azure integration\nazure_provider_integration_authorization = confluentcloud.ProviderIntegrationAuthorization(\"azure\",\n    provider_integration_id=azure.id,\n    environment={\n        \"id\": staging.id,\n    },\n    azure={\n        \"customer_azure_tenant_id\": \"12345678-1234-1234-1234-123456789abc\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var staging = new ConfluentCloud.Environment(\"staging\", new()\n    {\n        DisplayName = \"Staging\",\n        StreamGovernance = new ConfluentCloud.Inputs.EnvironmentStreamGovernanceArgs\n        {\n            Package = \"ESSENTIALS\",\n        },\n    });\n\n    var azure = new ConfluentCloud.ProviderIntegrationSetup(\"azure\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationSetupEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        DisplayName = \"azure-integration\",\n        Cloud = \"AZURE\",\n    });\n\n    // Configure and validate the Azure integration\n    var azureProviderIntegrationAuthorization = new ConfluentCloud.ProviderIntegrationAuthorization(\"azure\", new()\n    {\n        ProviderIntegrationId = azure.Id,\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationAuthorizationEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        Azure = new ConfluentCloud.Inputs.ProviderIntegrationAuthorizationAzureArgs\n        {\n            CustomerAzureTenantId = \"12345678-1234-1234-1234-123456789abc\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tstaging, err := confluentcloud.NewEnvironment(ctx, \"staging\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Staging\"),\n\t\t\tStreamGovernance: \u0026confluentcloud.EnvironmentStreamGovernanceArgs{\n\t\t\t\tPackage: pulumi.String(\"ESSENTIALS\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tazure, err := confluentcloud.NewProviderIntegrationSetup(ctx, \"azure\", \u0026confluentcloud.ProviderIntegrationSetupArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationSetupEnvironmentArgs{\n\t\t\t\tId: staging.ID(),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"azure-integration\"),\n\t\t\tCloud:       pulumi.String(\"AZURE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Configure and validate the Azure integration\n\t\t_, err = confluentcloud.NewProviderIntegrationAuthorization(ctx, \"azure\", \u0026confluentcloud.ProviderIntegrationAuthorizationArgs{\n\t\t\tProviderIntegrationId: azure.ID(),\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationAuthorizationEnvironmentArgs{\n\t\t\t\tId: staging.ID(),\n\t\t\t},\n\t\t\tAzure: \u0026confluentcloud.ProviderIntegrationAuthorizationAzureArgs{\n\t\t\t\tCustomerAzureTenantId: pulumi.String(\"12345678-1234-1234-1234-123456789abc\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.EnvironmentStreamGovernanceArgs;\nimport com.pulumi.confluentcloud.ProviderIntegrationSetup;\nimport com.pulumi.confluentcloud.ProviderIntegrationSetupArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationSetupEnvironmentArgs;\nimport com.pulumi.confluentcloud.ProviderIntegrationAuthorization;\nimport com.pulumi.confluentcloud.ProviderIntegrationAuthorizationArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAuthorizationEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAuthorizationAzureArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var staging = new Environment(\"staging\", EnvironmentArgs.builder()\n            .displayName(\"Staging\")\n            .streamGovernance(EnvironmentStreamGovernanceArgs.builder()\n                .package_(\"ESSENTIALS\")\n                .build())\n            .build());\n\n        var azure = new ProviderIntegrationSetup(\"azure\", ProviderIntegrationSetupArgs.builder()\n            .environment(ProviderIntegrationSetupEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .displayName(\"azure-integration\")\n            .cloud(\"AZURE\")\n            .build());\n\n        // Configure and validate the Azure integration\n        var azureProviderIntegrationAuthorization = new ProviderIntegrationAuthorization(\"azureProviderIntegrationAuthorization\", ProviderIntegrationAuthorizationArgs.builder()\n            .providerIntegrationId(azure.id())\n            .environment(ProviderIntegrationAuthorizationEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .azure(ProviderIntegrationAuthorizationAzureArgs.builder()\n                .customerAzureTenantId(\"12345678-1234-1234-1234-123456789abc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  staging:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Staging\n      streamGovernance:\n        package: ESSENTIALS\n  azure:\n    type: confluentcloud:ProviderIntegrationSetup\n    properties:\n      environment:\n        id: ${staging.id}\n      displayName: azure-integration\n      cloud: AZURE\n  # Configure and validate the Azure integration\n  azureProviderIntegrationAuthorization:\n    type: confluentcloud:ProviderIntegrationAuthorization\n    name: azure\n    properties:\n      providerIntegrationId: ${azure.id}\n      environment:\n        id: ${staging.id}\n      azure:\n        customerAzureTenantId: 12345678-1234-1234-1234-123456789abc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### GCP Provider Integration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst gcp = new confluentcloud.ProviderIntegrationSetup(\"gcp\", {\n    environment: {\n        id: staging.id,\n    },\n    displayName: \"gcp-integration\",\n    cloud: \"GCP\",\n});\n// Configure and validate the GCP integration\nconst gcpProviderIntegrationAuthorization = new confluentcloud.ProviderIntegrationAuthorization(\"gcp\", {\n    providerIntegrationId: gcp.id,\n    environment: {\n        id: staging.id,\n    },\n    gcp: {\n        customerGoogleServiceAccount: \"my-sa@my-project.iam.gserviceaccount.com\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ngcp = confluentcloud.ProviderIntegrationSetup(\"gcp\",\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    display_name=\"gcp-integration\",\n    cloud=\"GCP\")\n# Configure and validate the GCP integration\ngcp_provider_integration_authorization = confluentcloud.ProviderIntegrationAuthorization(\"gcp\",\n    provider_integration_id=gcp.id,\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    gcp={\n        \"customer_google_service_account\": \"my-sa@my-project.iam.gserviceaccount.com\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var gcp = new ConfluentCloud.ProviderIntegrationSetup(\"gcp\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationSetupEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        DisplayName = \"gcp-integration\",\n        Cloud = \"GCP\",\n    });\n\n    // Configure and validate the GCP integration\n    var gcpProviderIntegrationAuthorization = new ConfluentCloud.ProviderIntegrationAuthorization(\"gcp\", new()\n    {\n        ProviderIntegrationId = gcp.Id,\n        Environment = new ConfluentCloud.Inputs.ProviderIntegrationAuthorizationEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        Gcp = new ConfluentCloud.Inputs.ProviderIntegrationAuthorizationGcpArgs\n        {\n            CustomerGoogleServiceAccount = \"my-sa@my-project.iam.gserviceaccount.com\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgcp, err := confluentcloud.NewProviderIntegrationSetup(ctx, \"gcp\", \u0026confluentcloud.ProviderIntegrationSetupArgs{\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationSetupEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"gcp-integration\"),\n\t\t\tCloud:       pulumi.String(\"GCP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Configure and validate the GCP integration\n\t\t_, err = confluentcloud.NewProviderIntegrationAuthorization(ctx, \"gcp\", \u0026confluentcloud.ProviderIntegrationAuthorizationArgs{\n\t\t\tProviderIntegrationId: gcp.ID(),\n\t\t\tEnvironment: \u0026confluentcloud.ProviderIntegrationAuthorizationEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tGcp: \u0026confluentcloud.ProviderIntegrationAuthorizationGcpArgs{\n\t\t\t\tCustomerGoogleServiceAccount: pulumi.String(\"my-sa@my-project.iam.gserviceaccount.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ProviderIntegrationSetup;\nimport com.pulumi.confluentcloud.ProviderIntegrationSetupArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationSetupEnvironmentArgs;\nimport com.pulumi.confluentcloud.ProviderIntegrationAuthorization;\nimport com.pulumi.confluentcloud.ProviderIntegrationAuthorizationArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAuthorizationEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.ProviderIntegrationAuthorizationGcpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var gcp = new ProviderIntegrationSetup(\"gcp\", ProviderIntegrationSetupArgs.builder()\n            .environment(ProviderIntegrationSetupEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .displayName(\"gcp-integration\")\n            .cloud(\"GCP\")\n            .build());\n\n        // Configure and validate the GCP integration\n        var gcpProviderIntegrationAuthorization = new ProviderIntegrationAuthorization(\"gcpProviderIntegrationAuthorization\", ProviderIntegrationAuthorizationArgs.builder()\n            .providerIntegrationId(gcp.id())\n            .environment(ProviderIntegrationAuthorizationEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .gcp(ProviderIntegrationAuthorizationGcpArgs.builder()\n                .customerGoogleServiceAccount(\"my-sa@my-project.iam.gserviceaccount.com\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  gcp:\n    type: confluentcloud:ProviderIntegrationSetup\n    properties:\n      environment:\n        id: ${staging.id}\n      displayName: gcp-integration\n      cloud: GCP\n  # Configure and validate the GCP integration\n  gcpProviderIntegrationAuthorization:\n    type: confluentcloud:ProviderIntegrationAuthorization\n    name: gcp\n    properties:\n      providerIntegrationId: ${gcp.id}\n      environment:\n        id: ${staging.id}\n      gcp:\n        customerGoogleServiceAccount: my-sa@my-project.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-go=\"`ProviderIntegrationSetup`\" pulumi-lang-python=\"`ProviderIntegrationSetup`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegrationSetup`\"\u003e`confluentcloud.ProviderIntegrationSetup`\u003c/span\u003e resource:\n* provider-integration-azure: Complete Azure Provider Integration setup\n* provider-integration-gcp: Complete GCP Provider Integration setup\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Provider Integration.\n\nYou can import a Provider Integration by using Environment ID and Provider Integration ID, in the format `\u003cEnvironment ID\u003e/\u003cProvider Integration ID\u003e`. The following example shows how to import a Provider Integration:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/providerIntegrationSetup:ProviderIntegrationSetup main env-abc123/cspi-4xg0q\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"cloud":{"type":"string","description":"The cloud service provider. Supported values are `AZURE` and `GCP`.\n"},"displayName":{"type":"string","description":"The name of the Provider Integration.\n"},"environment":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationSetupEnvironment:ProviderIntegrationSetupEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"status":{"type":"string","description":"(Required String) The status of the Provider Integration. Values are `DRAFT` and `CREATED`.\n"},"usages":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) List of resource CRNs where this provider integration is being used.\n"}},"required":["cloud","displayName","environment","status","usages"],"inputProperties":{"cloud":{"type":"string","description":"The cloud service provider. Supported values are `AZURE` and `GCP`.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Provider Integration.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationSetupEnvironment:ProviderIntegrationSetupEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true}},"requiredInputs":["cloud","displayName","environment"],"stateInputs":{"description":"Input properties used for looking up and filtering ProviderIntegrationSetup resources.\n","properties":{"cloud":{"type":"string","description":"The cloud service provider. Supported values are `AZURE` and `GCP`.\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Provider Integration.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/ProviderIntegrationSetupEnvironment:ProviderIntegrationSetupEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"status":{"type":"string","description":"(Required String) The status of the Provider Integration. Values are `DRAFT` and `CREATED`.\n"},"usages":{"type":"array","items":{"type":"string"},"description":"(Required List of Strings) List of resource CRNs where this provider integration is being used.\n"}},"type":"object"}},"confluentcloud:index/roleBinding:RoleBinding":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.RoleBinding`\" pulumi-lang-dotnet=\"`confluentcloud.RoleBinding`\" pulumi-lang-go=\"`RoleBinding`\" pulumi-lang-python=\"`RoleBinding`\" pulumi-lang-yaml=\"`confluentcloud.RoleBinding`\" pulumi-lang-java=\"`confluentcloud.RoleBinding`\"\u003e`confluentcloud.RoleBinding`\u003c/span\u003e provides a Role Binding resource that enables creating, reading, and deleting role bindings on Confluent Cloud.\n\n\u003e **Note:** For more information on the Role Bindings, see [Predefined RBAC roles in Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/access-control/rbac/predefined-rbac-roles.html).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\nimport * as std from \"@pulumi/std\";\n\nconst org_example_rb = new confluentcloud.RoleBinding(\"org-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"MetricsViewer\",\n    crnPattern: demo.resourceName,\n});\nconst environment_example_rb = new confluentcloud.RoleBinding(\"environment-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"EnvironmentAdmin\",\n    crnPattern: stag.resourceName,\n});\nconst environment_example_rb_skip_sync = new confluentcloud.RoleBinding(\"environment-example-rb-skip-sync\", {\n    principal: `User:${test.id}`,\n    roleName: \"EnvironmentAdmin\",\n    crnPattern: stag.resourceName,\n    disableWaitForReady: true,\n});\nconst environment_example_rb_2 = new confluentcloud.RoleBinding(\"environment-example-rb-2\", {\n    principal: `User:${testConfluentIdentityPool.id}`,\n    roleName: \"EnvironmentAdmin\",\n    crnPattern: stag.resourceName,\n});\nconst data_discovery_example_rb = new confluentcloud.RoleBinding(\"data-discovery-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"DataDiscovery\",\n    crnPattern: stag.resourceName,\n});\nconst network_example_rb = new confluentcloud.RoleBinding(\"network-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"NetworkAdmin\",\n    crnPattern: demo.resourceName,\n});\nconst cluster_example_rb = new confluentcloud.RoleBinding(\"cluster-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"CloudClusterAdmin\",\n    crnPattern: basic.rbacCrn,\n});\nconst topic_example_rb = new confluentcloud.RoleBinding(\"topic-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"DeveloperWrite\",\n    crnPattern: `${standard.rbacCrn}/kafka=${standard.id}/topic=${orders.topicName}`,\n});\nconst topic_example_rb_2 = new confluentcloud.RoleBinding(\"topic-example-rb-2\", {\n    principal: `User:${testConfluentIdentityPool.id}`,\n    roleName: \"DeveloperWrite\",\n    crnPattern: `${standard.rbacCrn}/kafka=${standard.id}/topic=${orders.topicName}`,\n});\nconst group_example_rb = new confluentcloud.RoleBinding(\"group-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"DeveloperRead\",\n    crnPattern: `${basic.rbacCrn}/kafka=${standard.id}/group=confluent_cli_consumer_*`,\n});\nconst group_mapping_example_rb = new confluentcloud.RoleBinding(\"group-mapping-example-rb\", {\n    principal: `User:${application_developers.id}`,\n    roleName: \"EnvironmentAdmin\",\n    crnPattern: stag.resourceName,\n});\nconst transaction_example_rb = new confluentcloud.RoleBinding(\"transaction-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"DeveloperRead\",\n    crnPattern: `${basic.rbacCrn}/kafka=${standard.id}/transactional-id=my_transaction`,\n});\nconst connectorName = std.index.lookup({\n    map: testConfluentConnector.configNonsensitive,\n    key: \"name\",\n    \"default\": \"\\\"name\\\" attribute is missing\",\n}).result;\nconst connector_example_rb = new confluentcloud.RoleBinding(\"connector-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"DeveloperRead\",\n    crnPattern: `${standard.rbacCrn}/connector=${connectorName}`,\n});\nconst all_subjects_example_rb = new confluentcloud.RoleBinding(\"all-subjects-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"DeveloperRead\",\n    crnPattern: `${example.resourceName}/subject=*`,\n});\nconst subject_foo_example_rb = new confluentcloud.RoleBinding(\"subject-foo-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"DeveloperRead\",\n    crnPattern: `${example.resourceName}/subject=foo`,\n});\nconst subject_with_abc_prefix_example_rb = new confluentcloud.RoleBinding(\"subject-with-abc-prefix-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"DeveloperRead\",\n    crnPattern: `${example.resourceName}/subject=abc*`,\n});\nconst kek_example_rb = new confluentcloud.RoleBinding(\"kek-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"DeveloperRead\",\n    crnPattern: `${example.resourceName}/kek=kek-name`,\n});\nconst flink_developer_compute_pool_example_rb = new confluentcloud.RoleBinding(\"flink-developer-compute-pool-example-rb\", {\n    principal: `User:${test.id}`,\n    roleName: \"FlinkDeveloper\",\n    crnPattern: `${stag.resourceName}/flink-region=${exampleConfluentFlinkComputePool.cloud}.${exampleConfluentFlinkComputePool.region}/compute-pool=${exampleConfluentFlinkComputePool.id}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\nimport pulumi_std as std\n\norg_example_rb = confluentcloud.RoleBinding(\"org-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"MetricsViewer\",\n    crn_pattern=demo[\"resourceName\"])\nenvironment_example_rb = confluentcloud.RoleBinding(\"environment-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"EnvironmentAdmin\",\n    crn_pattern=stag[\"resourceName\"])\nenvironment_example_rb_skip_sync = confluentcloud.RoleBinding(\"environment-example-rb-skip-sync\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"EnvironmentAdmin\",\n    crn_pattern=stag[\"resourceName\"],\n    disable_wait_for_ready=True)\nenvironment_example_rb_2 = confluentcloud.RoleBinding(\"environment-example-rb-2\",\n    principal=f\"User:{test_confluent_identity_pool['id']}\",\n    role_name=\"EnvironmentAdmin\",\n    crn_pattern=stag[\"resourceName\"])\ndata_discovery_example_rb = confluentcloud.RoleBinding(\"data-discovery-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"DataDiscovery\",\n    crn_pattern=stag[\"resourceName\"])\nnetwork_example_rb = confluentcloud.RoleBinding(\"network-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"NetworkAdmin\",\n    crn_pattern=demo[\"resourceName\"])\ncluster_example_rb = confluentcloud.RoleBinding(\"cluster-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"CloudClusterAdmin\",\n    crn_pattern=basic[\"rbacCrn\"])\ntopic_example_rb = confluentcloud.RoleBinding(\"topic-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"DeveloperWrite\",\n    crn_pattern=f\"{standard['rbacCrn']}/kafka={standard['id']}/topic={orders['topicName']}\")\ntopic_example_rb_2 = confluentcloud.RoleBinding(\"topic-example-rb-2\",\n    principal=f\"User:{test_confluent_identity_pool['id']}\",\n    role_name=\"DeveloperWrite\",\n    crn_pattern=f\"{standard['rbacCrn']}/kafka={standard['id']}/topic={orders['topicName']}\")\ngroup_example_rb = confluentcloud.RoleBinding(\"group-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"DeveloperRead\",\n    crn_pattern=f\"{basic['rbacCrn']}/kafka={standard['id']}/group=confluent_cli_consumer_*\")\ngroup_mapping_example_rb = confluentcloud.RoleBinding(\"group-mapping-example-rb\",\n    principal=f\"User:{application_developers['id']}\",\n    role_name=\"EnvironmentAdmin\",\n    crn_pattern=stag[\"resourceName\"])\ntransaction_example_rb = confluentcloud.RoleBinding(\"transaction-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"DeveloperRead\",\n    crn_pattern=f\"{basic['rbacCrn']}/kafka={standard['id']}/transactional-id=my_transaction\")\nconnector_name = std.index.lookup(map=test_confluent_connector[\"configNonsensitive\"],\n    key=\"name\",\n    default=\"\\\"name\\\" attribute is missing\")[\"result\"]\nconnector_example_rb = confluentcloud.RoleBinding(\"connector-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"DeveloperRead\",\n    crn_pattern=f\"{standard['rbacCrn']}/connector={connector_name}\")\nall_subjects_example_rb = confluentcloud.RoleBinding(\"all-subjects-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"DeveloperRead\",\n    crn_pattern=f\"{example['resourceName']}/subject=*\")\nsubject_foo_example_rb = confluentcloud.RoleBinding(\"subject-foo-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"DeveloperRead\",\n    crn_pattern=f\"{example['resourceName']}/subject=foo\")\nsubject_with_abc_prefix_example_rb = confluentcloud.RoleBinding(\"subject-with-abc-prefix-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"DeveloperRead\",\n    crn_pattern=f\"{example['resourceName']}/subject=abc*\")\nkek_example_rb = confluentcloud.RoleBinding(\"kek-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"DeveloperRead\",\n    crn_pattern=f\"{example['resourceName']}/kek=kek-name\")\nflink_developer_compute_pool_example_rb = confluentcloud.RoleBinding(\"flink-developer-compute-pool-example-rb\",\n    principal=f\"User:{test['id']}\",\n    role_name=\"FlinkDeveloper\",\n    crn_pattern=f\"{stag['resourceName']}/flink-region={example_confluent_flink_compute_pool['cloud']}.{example_confluent_flink_compute_pool['region']}/compute-pool={example_confluent_flink_compute_pool['id']}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var org_example_rb = new ConfluentCloud.RoleBinding(\"org-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"MetricsViewer\",\n        CrnPattern = demo.ResourceName,\n    });\n\n    var environment_example_rb = new ConfluentCloud.RoleBinding(\"environment-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"EnvironmentAdmin\",\n        CrnPattern = stag.ResourceName,\n    });\n\n    var environment_example_rb_skip_sync = new ConfluentCloud.RoleBinding(\"environment-example-rb-skip-sync\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"EnvironmentAdmin\",\n        CrnPattern = stag.ResourceName,\n        DisableWaitForReady = true,\n    });\n\n    var environment_example_rb_2 = new ConfluentCloud.RoleBinding(\"environment-example-rb-2\", new()\n    {\n        Principal = $\"User:{testConfluentIdentityPool.Id}\",\n        RoleName = \"EnvironmentAdmin\",\n        CrnPattern = stag.ResourceName,\n    });\n\n    var data_discovery_example_rb = new ConfluentCloud.RoleBinding(\"data-discovery-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"DataDiscovery\",\n        CrnPattern = stag.ResourceName,\n    });\n\n    var network_example_rb = new ConfluentCloud.RoleBinding(\"network-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"NetworkAdmin\",\n        CrnPattern = demo.ResourceName,\n    });\n\n    var cluster_example_rb = new ConfluentCloud.RoleBinding(\"cluster-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"CloudClusterAdmin\",\n        CrnPattern = basic.RbacCrn,\n    });\n\n    var topic_example_rb = new ConfluentCloud.RoleBinding(\"topic-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"DeveloperWrite\",\n        CrnPattern = $\"{standard.RbacCrn}/kafka={standard.Id}/topic={orders.TopicName}\",\n    });\n\n    var topic_example_rb_2 = new ConfluentCloud.RoleBinding(\"topic-example-rb-2\", new()\n    {\n        Principal = $\"User:{testConfluentIdentityPool.Id}\",\n        RoleName = \"DeveloperWrite\",\n        CrnPattern = $\"{standard.RbacCrn}/kafka={standard.Id}/topic={orders.TopicName}\",\n    });\n\n    var group_example_rb = new ConfluentCloud.RoleBinding(\"group-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"DeveloperRead\",\n        CrnPattern = $\"{basic.RbacCrn}/kafka={standard.Id}/group=confluent_cli_consumer_*\",\n    });\n\n    var group_mapping_example_rb = new ConfluentCloud.RoleBinding(\"group-mapping-example-rb\", new()\n    {\n        Principal = $\"User:{application_developers.Id}\",\n        RoleName = \"EnvironmentAdmin\",\n        CrnPattern = stag.ResourceName,\n    });\n\n    var transaction_example_rb = new ConfluentCloud.RoleBinding(\"transaction-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"DeveloperRead\",\n        CrnPattern = $\"{basic.RbacCrn}/kafka={standard.Id}/transactional-id=my_transaction\",\n    });\n\n    var connectorName = Std.Index.Lookup.Invoke(new()\n    {\n        Map = testConfluentConnector.ConfigNonsensitive,\n        Key = \"name\",\n        Default = \"\\\"name\\\" attribute is missing\",\n    }).Result;\n\n    var connector_example_rb = new ConfluentCloud.RoleBinding(\"connector-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"DeveloperRead\",\n        CrnPattern = $\"{standard.RbacCrn}/connector={connectorName}\",\n    });\n\n    var all_subjects_example_rb = new ConfluentCloud.RoleBinding(\"all-subjects-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"DeveloperRead\",\n        CrnPattern = $\"{example.ResourceName}/subject=*\",\n    });\n\n    var subject_foo_example_rb = new ConfluentCloud.RoleBinding(\"subject-foo-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"DeveloperRead\",\n        CrnPattern = $\"{example.ResourceName}/subject=foo\",\n    });\n\n    var subject_with_abc_prefix_example_rb = new ConfluentCloud.RoleBinding(\"subject-with-abc-prefix-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"DeveloperRead\",\n        CrnPattern = $\"{example.ResourceName}/subject=abc*\",\n    });\n\n    var kek_example_rb = new ConfluentCloud.RoleBinding(\"kek-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"DeveloperRead\",\n        CrnPattern = $\"{example.ResourceName}/kek=kek-name\",\n    });\n\n    var flink_developer_compute_pool_example_rb = new ConfluentCloud.RoleBinding(\"flink-developer-compute-pool-example-rb\", new()\n    {\n        Principal = $\"User:{test.Id}\",\n        RoleName = \"FlinkDeveloper\",\n        CrnPattern = $\"{stag.ResourceName}/flink-region={exampleConfluentFlinkComputePool.Cloud}.{exampleConfluentFlinkComputePool.Region}/compute-pool={exampleConfluentFlinkComputePool.Id}\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewRoleBinding(ctx, \"org-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"MetricsViewer\"),\n\t\t\tCrnPattern: pulumi.Any(demo.ResourceName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"environment-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"EnvironmentAdmin\"),\n\t\t\tCrnPattern: pulumi.Any(stag.ResourceName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"environment-example-rb-skip-sync\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:           pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:            pulumi.String(\"EnvironmentAdmin\"),\n\t\t\tCrnPattern:          pulumi.Any(stag.ResourceName),\n\t\t\tDisableWaitForReady: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"environment-example-rb-2\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", testConfluentIdentityPool.Id),\n\t\t\tRoleName:   pulumi.String(\"EnvironmentAdmin\"),\n\t\t\tCrnPattern: pulumi.Any(stag.ResourceName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"data-discovery-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"DataDiscovery\"),\n\t\t\tCrnPattern: pulumi.Any(stag.ResourceName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"network-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"NetworkAdmin\"),\n\t\t\tCrnPattern: pulumi.Any(demo.ResourceName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"cluster-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"CloudClusterAdmin\"),\n\t\t\tCrnPattern: pulumi.Any(basic.RbacCrn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"topic-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"DeveloperWrite\"),\n\t\t\tCrnPattern: pulumi.Sprintf(\"%v/kafka=%v/topic=%v\", standard.RbacCrn, standard.Id, orders.TopicName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"topic-example-rb-2\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", testConfluentIdentityPool.Id),\n\t\t\tRoleName:   pulumi.String(\"DeveloperWrite\"),\n\t\t\tCrnPattern: pulumi.Sprintf(\"%v/kafka=%v/topic=%v\", standard.RbacCrn, standard.Id, orders.TopicName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"group-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"DeveloperRead\"),\n\t\t\tCrnPattern: pulumi.Sprintf(\"%v/kafka=%v/group=confluent_cli_consumer_*\", basic.RbacCrn, standard.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"group-mapping-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", application_developers.Id),\n\t\t\tRoleName:   pulumi.String(\"EnvironmentAdmin\"),\n\t\t\tCrnPattern: pulumi.Any(stag.ResourceName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"transaction-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"DeveloperRead\"),\n\t\t\tCrnPattern: pulumi.Sprintf(\"%v/kafka=%v/transactional-id=my_transaction\", basic.RbacCrn, standard.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconnectorName := std.Lookup(ctx, map[string]interface{}{\n\t\t\t\"map\":     testConfluentConnector.ConfigNonsensitive,\n\t\t\t\"key\":     \"name\",\n\t\t\t\"default\": \"\\\"name\\\" attribute is missing\",\n\t\t}, nil).Result\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"connector-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"DeveloperRead\"),\n\t\t\tCrnPattern: pulumi.Sprintf(\"%v/connector=%v\", standard.RbacCrn, connectorName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"all-subjects-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"DeveloperRead\"),\n\t\t\tCrnPattern: pulumi.Sprintf(\"%v/subject=*\", example.ResourceName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"subject-foo-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"DeveloperRead\"),\n\t\t\tCrnPattern: pulumi.Sprintf(\"%v/subject=foo\", example.ResourceName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"subject-with-abc-prefix-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"DeveloperRead\"),\n\t\t\tCrnPattern: pulumi.Sprintf(\"%v/subject=abc*\", example.ResourceName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"kek-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"DeveloperRead\"),\n\t\t\tCrnPattern: pulumi.Sprintf(\"%v/kek=kek-name\", example.ResourceName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"flink-developer-compute-pool-example-rb\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", test.Id),\n\t\t\tRoleName:   pulumi.String(\"FlinkDeveloper\"),\n\t\t\tCrnPattern: pulumi.Sprintf(\"%v/flink-region=%v.%v/compute-pool=%v\", stag.ResourceName, exampleConfluentFlinkComputePool.Cloud, exampleConfluentFlinkComputePool.Region, exampleConfluentFlinkComputePool.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.RoleBinding;\nimport com.pulumi.confluentcloud.RoleBindingArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var org_example_rb = new RoleBinding(\"org-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"MetricsViewer\")\n            .crnPattern(demo.resourceName())\n            .build());\n\n        var environment_example_rb = new RoleBinding(\"environment-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"EnvironmentAdmin\")\n            .crnPattern(stag.resourceName())\n            .build());\n\n        var environment_example_rb_skip_sync = new RoleBinding(\"environment-example-rb-skip-sync\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"EnvironmentAdmin\")\n            .crnPattern(stag.resourceName())\n            .disableWaitForReady(true)\n            .build());\n\n        var environment_example_rb_2 = new RoleBinding(\"environment-example-rb-2\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", testConfluentIdentityPool.id()))\n            .roleName(\"EnvironmentAdmin\")\n            .crnPattern(stag.resourceName())\n            .build());\n\n        var data_discovery_example_rb = new RoleBinding(\"data-discovery-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"DataDiscovery\")\n            .crnPattern(stag.resourceName())\n            .build());\n\n        var network_example_rb = new RoleBinding(\"network-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"NetworkAdmin\")\n            .crnPattern(demo.resourceName())\n            .build());\n\n        var cluster_example_rb = new RoleBinding(\"cluster-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"CloudClusterAdmin\")\n            .crnPattern(basic.rbacCrn())\n            .build());\n\n        var topic_example_rb = new RoleBinding(\"topic-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"DeveloperWrite\")\n            .crnPattern(String.format(\"%s/kafka=%s/topic=%s\", standard.rbacCrn(),standard.id(),orders.topicName()))\n            .build());\n\n        var topic_example_rb_2 = new RoleBinding(\"topic-example-rb-2\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", testConfluentIdentityPool.id()))\n            .roleName(\"DeveloperWrite\")\n            .crnPattern(String.format(\"%s/kafka=%s/topic=%s\", standard.rbacCrn(),standard.id(),orders.topicName()))\n            .build());\n\n        var group_example_rb = new RoleBinding(\"group-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"DeveloperRead\")\n            .crnPattern(String.format(\"%s/kafka=%s/group=confluent_cli_consumer_*\", basic.rbacCrn(),standard.id()))\n            .build());\n\n        var group_mapping_example_rb = new RoleBinding(\"group-mapping-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", application_developers.id()))\n            .roleName(\"EnvironmentAdmin\")\n            .crnPattern(stag.resourceName())\n            .build());\n\n        var transaction_example_rb = new RoleBinding(\"transaction-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"DeveloperRead\")\n            .crnPattern(String.format(\"%s/kafka=%s/transactional-id=my_transaction\", basic.rbacCrn(),standard.id()))\n            .build());\n\n        final var connectorName = StdFunctions.lookup(Map.ofEntries(\n            Map.entry(\"map\", testConfluentConnector.configNonsensitive()),\n            Map.entry(\"key\", \"name\"),\n            Map.entry(\"default\", \"\\\"name\\\" attribute is missing\")\n        )).result();\n\n        var connector_example_rb = new RoleBinding(\"connector-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"DeveloperRead\")\n            .crnPattern(String.format(\"%s/connector=%s\", standard.rbacCrn(),connectorName))\n            .build());\n\n        var all_subjects_example_rb = new RoleBinding(\"all-subjects-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"DeveloperRead\")\n            .crnPattern(String.format(\"%s/subject=*\", example.resourceName()))\n            .build());\n\n        var subject_foo_example_rb = new RoleBinding(\"subject-foo-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"DeveloperRead\")\n            .crnPattern(String.format(\"%s/subject=foo\", example.resourceName()))\n            .build());\n\n        var subject_with_abc_prefix_example_rb = new RoleBinding(\"subject-with-abc-prefix-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"DeveloperRead\")\n            .crnPattern(String.format(\"%s/subject=abc*\", example.resourceName()))\n            .build());\n\n        var kek_example_rb = new RoleBinding(\"kek-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"DeveloperRead\")\n            .crnPattern(String.format(\"%s/kek=kek-name\", example.resourceName()))\n            .build());\n\n        var flink_developer_compute_pool_example_rb = new RoleBinding(\"flink-developer-compute-pool-example-rb\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", test.id()))\n            .roleName(\"FlinkDeveloper\")\n            .crnPattern(String.format(\"%s/flink-region=%s.%s/compute-pool=%s\", stag.resourceName(),exampleConfluentFlinkComputePool.cloud(),exampleConfluentFlinkComputePool.region(),exampleConfluentFlinkComputePool.id()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  org-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: MetricsViewer\n      crnPattern: ${demo.resourceName}\n  environment-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: EnvironmentAdmin\n      crnPattern: ${stag.resourceName}\n  environment-example-rb-skip-sync:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: EnvironmentAdmin\n      crnPattern: ${stag.resourceName}\n      disableWaitForReady: true\n  environment-example-rb-2:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${testConfluentIdentityPool.id}\n      roleName: EnvironmentAdmin\n      crnPattern: ${stag.resourceName}\n  data-discovery-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: DataDiscovery\n      crnPattern: ${stag.resourceName}\n  network-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: NetworkAdmin\n      crnPattern: ${demo.resourceName}\n  cluster-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: CloudClusterAdmin\n      crnPattern: ${basic.rbacCrn}\n  topic-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: DeveloperWrite\n      crnPattern: ${standard.rbacCrn}/kafka=${standard.id}/topic=${orders.topicName}\n  topic-example-rb-2:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${testConfluentIdentityPool.id}\n      roleName: DeveloperWrite\n      crnPattern: ${standard.rbacCrn}/kafka=${standard.id}/topic=${orders.topicName}\n  group-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: DeveloperRead\n      crnPattern: ${basic.rbacCrn}/kafka=${standard.id}/group=confluent_cli_consumer_*\n  group-mapping-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${[\"application-developers\"].id}\n      roleName: EnvironmentAdmin\n      crnPattern: ${stag.resourceName}\n  transaction-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: DeveloperRead\n      crnPattern: ${basic.rbacCrn}/kafka=${standard.id}/transactional-id=my_transaction\n  connector-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: DeveloperRead\n      crnPattern: ${standard.rbacCrn}/connector=${connectorName}\n  all-subjects-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: DeveloperRead\n      crnPattern: ${example.resourceName}/subject=*\n  subject-foo-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: DeveloperRead\n      crnPattern: ${example.resourceName}/subject=foo\n  subject-with-abc-prefix-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: DeveloperRead\n      crnPattern: ${example.resourceName}/subject=abc*\n  kek-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: DeveloperRead\n      crnPattern: ${example.resourceName}/kek=kek-name\n  flink-developer-compute-pool-example-rb:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${test.id}\n      roleName: FlinkDeveloper\n      crnPattern: ${stag.resourceName}/flink-region=${exampleConfluentFlinkComputePool.cloud}.${exampleConfluentFlinkComputePool.region}/compute-pool=${exampleConfluentFlinkComputePool.id}\nvariables:\n  connectorName:\n    fn::invoke:\n      function: std:lookup\n      arguments:\n        map: ${testConfluentConnector.configNonsensitive}\n        key: name\n        default: '\"name\" attribute is missing'\n      return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.RoleBinding`\" pulumi-lang-dotnet=\"`confluentcloud.RoleBinding`\" pulumi-lang-go=\"`RoleBinding`\" pulumi-lang-python=\"`RoleBinding`\" pulumi-lang-yaml=\"`confluentcloud.RoleBinding`\" pulumi-lang-java=\"`confluentcloud.RoleBinding`\"\u003e`confluentcloud.RoleBinding`\u003c/span\u003e resource:\n  * standard-kafka-rbac: _Standard_ Kafka cluster with authorization using RBAC\n  * dedicated-public-kafka-rbac: _Dedicated_ Kafka cluster that is accessible over the public internet with authorization using RBAC\n  * dedicated-privatelink-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-vnet-peering-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-transit-gateway-attachment-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using ACLs\n  * dedicated-transit-gateway-attachment-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using RBAC\n  * enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n\n## Example of using\u003cspan pulumi-lang-nodejs=\" timeSleep\n\" pulumi-lang-dotnet=\" TimeSleep\n\" pulumi-lang-go=\" timeSleep\n\" pulumi-lang-python=\" time_sleep\n\" pulumi-lang-yaml=\" timeSleep\n\" pulumi-lang-java=\" timeSleep\n\"\u003e time_sleep\n\u003c/span\u003e\nThis configuration introduces a 360-second custom delay after the creation of a role binding, before creating a Kafka topic.\n\nFor context, using \u003cspan pulumi-lang-nodejs=\"`disableWaitForReady \" pulumi-lang-dotnet=\"`DisableWaitForReady \" pulumi-lang-go=\"`disableWaitForReady \" pulumi-lang-python=\"`disable_wait_for_ready \" pulumi-lang-yaml=\"`disableWaitForReady \" pulumi-lang-java=\"`disableWaitForReady \"\u003e`disable_wait_for_ready \u003c/span\u003e= false` (the default setting) results in a 90-second hardcoded delay, while opting for \u003cspan pulumi-lang-nodejs=\"`disableWaitForReady \" pulumi-lang-dotnet=\"`DisableWaitForReady \" pulumi-lang-go=\"`disableWaitForReady \" pulumi-lang-python=\"`disable_wait_for_ready \" pulumi-lang-yaml=\"`disableWaitForReady \" pulumi-lang-java=\"`disableWaitForReady \"\u003e`disable_wait_for_ready \u003c/span\u003e= true` results in a 0-second delay.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\nimport * as time from \"@pulumi/time\";\n\nconst app_manager_kafka_cluster_admin_skip_sync = new confluentcloud.RoleBinding(\"app-manager-kafka-cluster-admin-skip-sync\", {\n    principal: `User:${app_manager.id}`,\n    roleName: \"CloudClusterAdmin\",\n    crnPattern: standard.rbacCrn,\n    disableWaitForReady: true,\n});\nconst wait360SecondsAfterRoleBinding = new time.index.Sleep(\"wait_360_seconds_after_role_binding\", {createDuration: \"360s\"}, {\n    dependsOn: [app_manager_kafka_cluster_admin_skip_sync],\n});\nconst orders = new confluentcloud.KafkaTopic(\"orders\", {\n    kafkaCluster: {\n        id: standard.id,\n    },\n    topicName: \"orders\",\n    restEndpoint: standard.restEndpoint,\n    credentials: {\n        key: app_manager_kafka_api_key.id,\n        secret: app_manager_kafka_api_key.secret,\n    },\n}, {\n    dependsOn: [wait360SecondsAfterRoleBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\nimport pulumi_time as time\n\napp_manager_kafka_cluster_admin_skip_sync = confluentcloud.RoleBinding(\"app-manager-kafka-cluster-admin-skip-sync\",\n    principal=f\"User:{app_manager['id']}\",\n    role_name=\"CloudClusterAdmin\",\n    crn_pattern=standard[\"rbacCrn\"],\n    disable_wait_for_ready=True)\nwait360_seconds_after_role_binding = time.index.Sleep(\"wait_360_seconds_after_role_binding\", create_duration=360s,\nopts = pulumi.ResourceOptions(depends_on=[app_manager_kafka_cluster_admin_skip_sync]))\norders = confluentcloud.KafkaTopic(\"orders\",\n    kafka_cluster={\n        \"id\": standard[\"id\"],\n    },\n    topic_name=\"orders\",\n    rest_endpoint=standard[\"restEndpoint\"],\n    credentials={\n        \"key\": app_manager_kafka_api_key[\"id\"],\n        \"secret\": app_manager_kafka_api_key[\"secret\"],\n    },\n    opts = pulumi.ResourceOptions(depends_on=[wait360_seconds_after_role_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var app_manager_kafka_cluster_admin_skip_sync = new ConfluentCloud.RoleBinding(\"app-manager-kafka-cluster-admin-skip-sync\", new()\n    {\n        Principal = $\"User:{app_manager.Id}\",\n        RoleName = \"CloudClusterAdmin\",\n        CrnPattern = standard.RbacCrn,\n        DisableWaitForReady = true,\n    });\n\n    var wait360SecondsAfterRoleBinding = new Time.Index.Sleep(\"wait_360_seconds_after_role_binding\", new()\n    {\n        CreateDuration = \"360s\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            app_manager_kafka_cluster_admin_skip_sync,\n        },\n    });\n\n    var orders = new ConfluentCloud.KafkaTopic(\"orders\", new()\n    {\n        KafkaCluster = new ConfluentCloud.Inputs.KafkaTopicKafkaClusterArgs\n        {\n            Id = standard.Id,\n        },\n        TopicName = \"orders\",\n        RestEndpoint = standard.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.KafkaTopicCredentialsArgs\n        {\n            Key = app_manager_kafka_api_key.Id,\n            Secret = app_manager_kafka_api_key.Secret,\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            wait360SecondsAfterRoleBinding,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapp_manager_kafka_cluster_admin_skip_sync, err := confluentcloud.NewRoleBinding(ctx, \"app-manager-kafka-cluster-admin-skip-sync\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:           pulumi.Sprintf(\"User:%v\", app_manager.Id),\n\t\t\tRoleName:            pulumi.String(\"CloudClusterAdmin\"),\n\t\t\tCrnPattern:          pulumi.Any(standard.RbacCrn),\n\t\t\tDisableWaitForReady: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait360SecondsAfterRoleBinding, err := time.NewSleep(ctx, \"wait_360_seconds_after_role_binding\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"360s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapp_manager_kafka_cluster_admin_skip_sync,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewKafkaTopic(ctx, \"orders\", \u0026confluentcloud.KafkaTopicArgs{\n\t\t\tKafkaCluster: \u0026confluentcloud.KafkaTopicKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(standard.Id),\n\t\t\t},\n\t\t\tTopicName:    pulumi.String(\"orders\"),\n\t\t\tRestEndpoint: pulumi.Any(standard.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.KafkaTopicCredentialsArgs{\n\t\t\t\tKey:    pulumi.Any(app_manager_kafka_api_key.Id),\n\t\t\t\tSecret: pulumi.Any(app_manager_kafka_api_key.Secret),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait360SecondsAfterRoleBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.RoleBinding;\nimport com.pulumi.confluentcloud.RoleBindingArgs;\nimport com.pulumi.time.Sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.confluentcloud.KafkaTopic;\nimport com.pulumi.confluentcloud.KafkaTopicArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaTopicKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaTopicCredentialsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var app_manager_kafka_cluster_admin_skip_sync = new RoleBinding(\"app-manager-kafka-cluster-admin-skip-sync\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", app_manager.id()))\n            .roleName(\"CloudClusterAdmin\")\n            .crnPattern(standard.rbacCrn())\n            .disableWaitForReady(true)\n            .build());\n\n        var wait360SecondsAfterRoleBinding = new Sleep(\"wait360SecondsAfterRoleBinding\", SleepArgs.builder()\n            .createDuration(\"360s\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(List.of(app_manager_kafka_cluster_admin_skip_sync))\n                .build());\n\n        var orders = new KafkaTopic(\"orders\", KafkaTopicArgs.builder()\n            .kafkaCluster(KafkaTopicKafkaClusterArgs.builder()\n                .id(standard.id())\n                .build())\n            .topicName(\"orders\")\n            .restEndpoint(standard.restEndpoint())\n            .credentials(KafkaTopicCredentialsArgs.builder()\n                .key(app_manager_kafka_api_key.id())\n                .secret(app_manager_kafka_api_key.secret())\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(wait360SecondsAfterRoleBinding)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app-manager-kafka-cluster-admin-skip-sync:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${[\"app-manager\"].id}\n      roleName: CloudClusterAdmin\n      crnPattern: ${standard.rbacCrn}\n      disableWaitForReady: true\n  wait360SecondsAfterRoleBinding:\n    type: time:Sleep\n    name: wait_360_seconds_after_role_binding\n    properties:\n      createDuration: 360s\n    options:\n      dependsOn:\n        - ${[\"app-manager-kafka-cluster-admin-skip-sync\"]}\n  orders:\n    type: confluentcloud:KafkaTopic\n    properties:\n      kafkaCluster:\n        id: ${standard.id}\n      topicName: orders\n      restEndpoint: ${standard.restEndpoint}\n      credentials:\n        key: ${[\"app-manager-kafka-api-key\"].id}\n        secret: ${[\"app-manager-kafka-api-key\"].secret}\n    options:\n      dependsOn:\n        - ${wait360SecondsAfterRoleBinding}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Role Binding.\n\nYou can import a Role Binding by using Role Binding ID, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/roleBinding:RoleBinding my_rb rb-f3a90de\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"crnPattern":{"type":"string","description":"A [Confluent Resource Name (CRN)](https://docs.confluent.io/cloud/current/api.html#section/Identifiers-and-URLs/Confluent-Resource-Names-(CRNs)) that specifies the scope and resource patterns necessary for the role to bind.\n"},"disableWaitForReady":{"type":"boolean","description":"An optional flag to disable wait-for-readiness on create. Must be unset when importing. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n!\u003e **Warning:** When \u003cspan pulumi-lang-nodejs=\"`disableWaitForReady \" pulumi-lang-dotnet=\"`DisableWaitForReady \" pulumi-lang-go=\"`disableWaitForReady \" pulumi-lang-python=\"`disable_wait_for_ready \" pulumi-lang-yaml=\"`disableWaitForReady \" pulumi-lang-java=\"`disableWaitForReady \"\u003e`disable_wait_for_ready \u003c/span\u003e= true` is used, Terraform skips waiting for role bindings to fully propagate. This can lead to a situation where Terraform attempts to create resources before the service account has the necessary permissions—resulting in HTTP 403 Forbidden errors.\nFor example, if you're creating a new service account, a new Kafka API Key, a new `CloudClusterAdmin` role binding, and a Kafka topic in a single run (see this code snippet), the topic creation may fail if the role binding hasn’t taken effect yet. Without that role, the service account won’t have permission to create the topic.\nThis setting is best suited for scenarios where you're provisioning a large number of role bindings without dependent resources, as it significantly speeds up the apply process.\n\n\u003e **Note:** If you encounter HTTP 403 Forbidden errors when creating role bindings, you can rerun `pulumi up` after a few minutes, once the role bindings have had time to propagate.\n\n\u003e **Note:** You can also use \u003cspan pulumi-lang-nodejs=\"`timeSleep`\" pulumi-lang-dotnet=\"`TimeSleep`\" pulumi-lang-go=\"`timeSleep`\" pulumi-lang-python=\"`time_sleep`\" pulumi-lang-yaml=\"`timeSleep`\" pulumi-lang-java=\"`timeSleep`\"\u003e`time_sleep`\u003c/span\u003e resource of HashiCorp's \u003cspan pulumi-lang-nodejs=\"`time`\" pulumi-lang-dotnet=\"`Time`\" pulumi-lang-go=\"`time`\" pulumi-lang-python=\"`time`\" pulumi-lang-yaml=\"`time`\" pulumi-lang-java=\"`time`\"\u003e`time`\u003c/span\u003e TF provider to configure a custom waiting period, see this example for more details.\n"},"principal":{"type":"string","description":"A principal User to bind the role to, for example, \"User:u-111aaa\" for binding to a user \"u-111aaa\", or \"User:sa-111aaa\" for binding to a service account \"sa-111aaa\".\n"},"roleName":{"type":"string","description":"A name of the role to bind to the principal. See [Confluent Cloud RBAC Roles](https://docs.confluent.io/cloud/current/access-management/access-control/cloud-rbac.html#ccloud-rbac-roles) for a full list of supported role names.\n"}},"required":["crnPattern","principal","roleName"],"inputProperties":{"crnPattern":{"type":"string","description":"A [Confluent Resource Name (CRN)](https://docs.confluent.io/cloud/current/api.html#section/Identifiers-and-URLs/Confluent-Resource-Names-(CRNs)) that specifies the scope and resource patterns necessary for the role to bind.\n","willReplaceOnChanges":true},"disableWaitForReady":{"type":"boolean","description":"An optional flag to disable wait-for-readiness on create. Must be unset when importing. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n!\u003e **Warning:** When \u003cspan pulumi-lang-nodejs=\"`disableWaitForReady \" pulumi-lang-dotnet=\"`DisableWaitForReady \" pulumi-lang-go=\"`disableWaitForReady \" pulumi-lang-python=\"`disable_wait_for_ready \" pulumi-lang-yaml=\"`disableWaitForReady \" pulumi-lang-java=\"`disableWaitForReady \"\u003e`disable_wait_for_ready \u003c/span\u003e= true` is used, Terraform skips waiting for role bindings to fully propagate. This can lead to a situation where Terraform attempts to create resources before the service account has the necessary permissions—resulting in HTTP 403 Forbidden errors.\nFor example, if you're creating a new service account, a new Kafka API Key, a new `CloudClusterAdmin` role binding, and a Kafka topic in a single run (see this code snippet), the topic creation may fail if the role binding hasn’t taken effect yet. Without that role, the service account won’t have permission to create the topic.\nThis setting is best suited for scenarios where you're provisioning a large number of role bindings without dependent resources, as it significantly speeds up the apply process.\n\n\u003e **Note:** If you encounter HTTP 403 Forbidden errors when creating role bindings, you can rerun `pulumi up` after a few minutes, once the role bindings have had time to propagate.\n\n\u003e **Note:** You can also use \u003cspan pulumi-lang-nodejs=\"`timeSleep`\" pulumi-lang-dotnet=\"`TimeSleep`\" pulumi-lang-go=\"`timeSleep`\" pulumi-lang-python=\"`time_sleep`\" pulumi-lang-yaml=\"`timeSleep`\" pulumi-lang-java=\"`timeSleep`\"\u003e`time_sleep`\u003c/span\u003e resource of HashiCorp's \u003cspan pulumi-lang-nodejs=\"`time`\" pulumi-lang-dotnet=\"`Time`\" pulumi-lang-go=\"`time`\" pulumi-lang-python=\"`time`\" pulumi-lang-yaml=\"`time`\" pulumi-lang-java=\"`time`\"\u003e`time`\u003c/span\u003e TF provider to configure a custom waiting period, see this example for more details.\n"},"principal":{"type":"string","description":"A principal User to bind the role to, for example, \"User:u-111aaa\" for binding to a user \"u-111aaa\", or \"User:sa-111aaa\" for binding to a service account \"sa-111aaa\".\n","willReplaceOnChanges":true},"roleName":{"type":"string","description":"A name of the role to bind to the principal. See [Confluent Cloud RBAC Roles](https://docs.confluent.io/cloud/current/access-management/access-control/cloud-rbac.html#ccloud-rbac-roles) for a full list of supported role names.\n","willReplaceOnChanges":true}},"requiredInputs":["crnPattern","principal","roleName"],"stateInputs":{"description":"Input properties used for looking up and filtering RoleBinding resources.\n","properties":{"crnPattern":{"type":"string","description":"A [Confluent Resource Name (CRN)](https://docs.confluent.io/cloud/current/api.html#section/Identifiers-and-URLs/Confluent-Resource-Names-(CRNs)) that specifies the scope and resource patterns necessary for the role to bind.\n","willReplaceOnChanges":true},"disableWaitForReady":{"type":"boolean","description":"An optional flag to disable wait-for-readiness on create. Must be unset when importing. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n!\u003e **Warning:** When \u003cspan pulumi-lang-nodejs=\"`disableWaitForReady \" pulumi-lang-dotnet=\"`DisableWaitForReady \" pulumi-lang-go=\"`disableWaitForReady \" pulumi-lang-python=\"`disable_wait_for_ready \" pulumi-lang-yaml=\"`disableWaitForReady \" pulumi-lang-java=\"`disableWaitForReady \"\u003e`disable_wait_for_ready \u003c/span\u003e= true` is used, Terraform skips waiting for role bindings to fully propagate. This can lead to a situation where Terraform attempts to create resources before the service account has the necessary permissions—resulting in HTTP 403 Forbidden errors.\nFor example, if you're creating a new service account, a new Kafka API Key, a new `CloudClusterAdmin` role binding, and a Kafka topic in a single run (see this code snippet), the topic creation may fail if the role binding hasn’t taken effect yet. Without that role, the service account won’t have permission to create the topic.\nThis setting is best suited for scenarios where you're provisioning a large number of role bindings without dependent resources, as it significantly speeds up the apply process.\n\n\u003e **Note:** If you encounter HTTP 403 Forbidden errors when creating role bindings, you can rerun `pulumi up` after a few minutes, once the role bindings have had time to propagate.\n\n\u003e **Note:** You can also use \u003cspan pulumi-lang-nodejs=\"`timeSleep`\" pulumi-lang-dotnet=\"`TimeSleep`\" pulumi-lang-go=\"`timeSleep`\" pulumi-lang-python=\"`time_sleep`\" pulumi-lang-yaml=\"`timeSleep`\" pulumi-lang-java=\"`timeSleep`\"\u003e`time_sleep`\u003c/span\u003e resource of HashiCorp's \u003cspan pulumi-lang-nodejs=\"`time`\" pulumi-lang-dotnet=\"`Time`\" pulumi-lang-go=\"`time`\" pulumi-lang-python=\"`time`\" pulumi-lang-yaml=\"`time`\" pulumi-lang-java=\"`time`\"\u003e`time`\u003c/span\u003e TF provider to configure a custom waiting period, see this example for more details.\n"},"principal":{"type":"string","description":"A principal User to bind the role to, for example, \"User:u-111aaa\" for binding to a user \"u-111aaa\", or \"User:sa-111aaa\" for binding to a service account \"sa-111aaa\".\n","willReplaceOnChanges":true},"roleName":{"type":"string","description":"A name of the role to bind to the principal. See [Confluent Cloud RBAC Roles](https://docs.confluent.io/cloud/current/access-management/access-control/cloud-rbac.html#ccloud-rbac-roles) for a full list of supported role names.\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/schema:Schema":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Schema`\" pulumi-lang-dotnet=\"`confluentcloud.Schema`\" pulumi-lang-go=\"`Schema`\" pulumi-lang-python=\"`Schema`\" pulumi-lang-yaml=\"`confluentcloud.Schema`\" pulumi-lang-java=\"`confluentcloud.Schema`\"\u003e`confluentcloud.Schema`\u003c/span\u003e provides a Schema resource that enables creating, evolving, and deleting Schemas on a Schema Registry cluster on Confluent Cloud.\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Schema`\" pulumi-lang-dotnet=\"`confluentcloud.Schema`\" pulumi-lang-go=\"`Schema`\" pulumi-lang-python=\"`Schema`\" pulumi-lang-yaml=\"`confluentcloud.Schema`\" pulumi-lang-java=\"`confluentcloud.Schema`\"\u003e`confluentcloud.Schema`\u003c/span\u003e enables managing the latest version or a specific version of a schema. By design, \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Schema`\" pulumi-lang-dotnet=\"`confluentcloud.Schema`\" pulumi-lang-go=\"`Schema`\" pulumi-lang-python=\"`Schema`\" pulumi-lang-yaml=\"`confluentcloud.Schema`\" pulumi-lang-java=\"`confluentcloud.Schema`\"\u003e`confluentcloud.Schema`\u003c/span\u003e won't destroy all versions of a schema, which differs from Confluent Platform, which permits hard delete on all schema versions at once.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental schema deletion. This setting rejects plans that would destroy or recreate the schema, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\nimport * as std from \"@pulumi/std\";\n\nconst avro_purchase = new confluentcloud.Schema(\"avro-purchase\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    subjectName: \"avro-purchase-value\",\n    format: \"AVRO\",\n    schema: std.index.file({\n        input: \"./schemas/avro/purchase.avsc\",\n    }).result,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\nimport pulumi_std as std\n\navro_purchase = confluentcloud.Schema(\"avro-purchase\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    subject_name=\"avro-purchase-value\",\n    format=\"AVRO\",\n    schema=std.index.file(input=\"./schemas/avro/purchase.avsc\")[\"result\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var avro_purchase = new ConfluentCloud.Schema(\"avro-purchase\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.SchemaSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        SubjectName = \"avro-purchase-value\",\n        Format = \"AVRO\",\n        SchemaDetails = Std.Index.File.Invoke(new()\n        {\n            Input = \"./schemas/avro/purchase.avsc\",\n        }).Result,\n        Credentials = new ConfluentCloud.Inputs.SchemaCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"./schemas/avro/purchase.avsc\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewSchema(ctx, \"avro-purchase\", \u0026confluentcloud.SchemaArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.SchemaSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tSubjectName:  pulumi.String(\"avro-purchase-value\"),\n\t\t\tFormat:       pulumi.String(\"AVRO\"),\n\t\t\tSchema:       invokeFile.Result,\n\t\t\tCredentials: \u0026confluentcloud.SchemaCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Schema;\nimport com.pulumi.confluentcloud.SchemaArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaCredentialsArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var avro_purchase = new Schema(\"avro-purchase\", SchemaArgs.builder()\n            .schemaRegistryCluster(SchemaSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .subjectName(\"avro-purchase-value\")\n            .format(\"AVRO\")\n            .schema(StdFunctions.file(Map.of(\"input\", \"./schemas/avro/purchase.avsc\")).result())\n            .credentials(SchemaCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  avro-purchase:\n    type: confluentcloud:Schema\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      subjectName: avro-purchase-value\n      format: AVRO\n      schema:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ./schemas/avro/purchase.avsc\n          return: result\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\nimport * as std from \"@pulumi/std\";\n\nconst avro_purchase = new confluentcloud.Schema(\"avro-purchase\", {\n    subjectName: \"avro-purchase-value\",\n    format: \"AVRO\",\n    schema: std.index.file({\n        input: \"./schemas/avro/purchase.avsc\",\n    }).result,\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\nimport pulumi_std as std\n\navro_purchase = confluentcloud.Schema(\"avro-purchase\",\n    subject_name=\"avro-purchase-value\",\n    format=\"AVRO\",\n    schema=std.index.file(input=\"./schemas/avro/purchase.avsc\")[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var avro_purchase = new ConfluentCloud.Schema(\"avro-purchase\", new()\n    {\n        SubjectName = \"avro-purchase-value\",\n        Format = \"AVRO\",\n        SchemaDetails = Std.Index.File.Invoke(new()\n        {\n            Input = \"./schemas/avro/purchase.avsc\",\n        }).Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"./schemas/avro/purchase.avsc\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewSchema(ctx, \"avro-purchase\", \u0026confluentcloud.SchemaArgs{\n\t\t\tSubjectName: pulumi.String(\"avro-purchase-value\"),\n\t\t\tFormat:      pulumi.String(\"AVRO\"),\n\t\t\tSchema:      invokeFile.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Schema;\nimport com.pulumi.confluentcloud.SchemaArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var avro_purchase = new Schema(\"avro-purchase\", SchemaArgs.builder()\n            .subjectName(\"avro-purchase-value\")\n            .format(\"AVRO\")\n            .schema(StdFunctions.file(Map.of(\"input\", \"./schemas/avro/purchase.avsc\")).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  avro-purchase:\n    type: confluentcloud:Schema\n    properties:\n      subjectName: avro-purchase-value\n      format: AVRO\n      schema:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ./schemas/avro/purchase.avsc\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Schema`\" pulumi-lang-dotnet=\"`confluentcloud.Schema`\" pulumi-lang-go=\"`Schema`\" pulumi-lang-python=\"`Schema`\" pulumi-lang-yaml=\"`confluentcloud.Schema`\" pulumi-lang-java=\"`confluentcloud.Schema`\"\u003e`confluentcloud.Schema`\u003c/span\u003e resource:\n* single-event-types-avro-schema\n* single-event-types-proto-schema\n* single-event-types-proto-schema-with-alias\n* multiple-event-types-avro-schema\n* multiple-event-types-proto-schema\n* field-level-encryption-schema\n\n## Additional Examples\n\n### Default Option A: Manage the latest schema version only. The resource instance always points to the latest schema version by supporting in-place updates\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\nimport * as std from \"@pulumi/std\";\n\n// confluent_schema.avro-purchase points to v1.\nconst avro_purchase = new confluentcloud.Schema(\"avro-purchase\", {\n    subjectName: \"avro-purchase-value\",\n    format: \"AVRO\",\n    schema: std.index.file({\n        input: \"./schemas/avro/purchase.avsc\",\n    }).result,\n    metadata: {\n        properties: {\n            owner: \"Bob Jones\",\n            email: \"bob@acme.com\",\n        },\n        sensitives: [\n            \"s1\",\n            \"s2\",\n        ],\n        tags: [\n            {\n                key: \"tag1\",\n                values: [\"PII\"],\n            },\n            {\n                key: \"tag2\",\n                values: [\"PIIIII\"],\n            },\n        ],\n    },\n    ruleset: {\n        domainRules: [\n            {\n                name: \"encryptPII\",\n                kind: \"TRANSFORM\",\n                type: \"ENCRYPT\",\n                mode: \"WRITEREAD\",\n                tags: [\"PII\"],\n                params: {\n                    \"encrypt.kek.name\": \"testkek2\",\n                },\n            },\n            {\n                name: \"encrypt\",\n                kind: \"TRANSFORM\",\n                type: \"ENCRYPT\",\n                mode: \"WRITEREAD\",\n                tags: [\"PIIIII\"],\n                params: {\n                    \"encrypt.kek.name\": \"testkek2\",\n                },\n            },\n        ],\n        migrationRules: [{\n            name: \"encrypt\",\n            kind: \"TRANSFORM\",\n            type: \"ENCRYPT\",\n            mode: \"WRITEREAD\",\n            tags: [\"PIM\"],\n            params: {\n                \"encrypt.kek.name\": \"testkekM\",\n            },\n        }],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\nimport pulumi_std as std\n\n# confluent_schema.avro-purchase points to v1.\navro_purchase = confluentcloud.Schema(\"avro-purchase\",\n    subject_name=\"avro-purchase-value\",\n    format=\"AVRO\",\n    schema=std.index.file(input=\"./schemas/avro/purchase.avsc\")[\"result\"],\n    metadata={\n        \"properties\": {\n            \"owner\": \"Bob Jones\",\n            \"email\": \"bob@acme.com\",\n        },\n        \"sensitives\": [\n            \"s1\",\n            \"s2\",\n        ],\n        \"tags\": [\n            {\n                \"key\": \"tag1\",\n                \"values\": [\"PII\"],\n            },\n            {\n                \"key\": \"tag2\",\n                \"values\": [\"PIIIII\"],\n            },\n        ],\n    },\n    ruleset={\n        \"domain_rules\": [\n            {\n                \"name\": \"encryptPII\",\n                \"kind\": \"TRANSFORM\",\n                \"type\": \"ENCRYPT\",\n                \"mode\": \"WRITEREAD\",\n                \"tags\": [\"PII\"],\n                \"params\": {\n                    \"encrypt.kek.name\": \"testkek2\",\n                },\n            },\n            {\n                \"name\": \"encrypt\",\n                \"kind\": \"TRANSFORM\",\n                \"type\": \"ENCRYPT\",\n                \"mode\": \"WRITEREAD\",\n                \"tags\": [\"PIIIII\"],\n                \"params\": {\n                    \"encrypt.kek.name\": \"testkek2\",\n                },\n            },\n        ],\n        \"migration_rules\": [{\n            \"name\": \"encrypt\",\n            \"kind\": \"TRANSFORM\",\n            \"type\": \"ENCRYPT\",\n            \"mode\": \"WRITEREAD\",\n            \"tags\": [\"PIM\"],\n            \"params\": {\n                \"encrypt.kek.name\": \"testkekM\",\n            },\n        }],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // confluent_schema.avro-purchase points to v1.\n    var avro_purchase = new ConfluentCloud.Schema(\"avro-purchase\", new()\n    {\n        SubjectName = \"avro-purchase-value\",\n        Format = \"AVRO\",\n        SchemaDetails = Std.Index.File.Invoke(new()\n        {\n            Input = \"./schemas/avro/purchase.avsc\",\n        }).Result,\n        Metadata = new ConfluentCloud.Inputs.SchemaMetadataArgs\n        {\n            Properties = \n            {\n                { \"owner\", \"Bob Jones\" },\n                { \"email\", \"bob@acme.com\" },\n            },\n            Sensitives = new[]\n            {\n                \"s1\",\n                \"s2\",\n            },\n            Tags = new[]\n            {\n                new ConfluentCloud.Inputs.SchemaMetadataTagArgs\n                {\n                    Key = \"tag1\",\n                    Values = new[]\n                    {\n                        \"PII\",\n                    },\n                },\n                new ConfluentCloud.Inputs.SchemaMetadataTagArgs\n                {\n                    Key = \"tag2\",\n                    Values = new[]\n                    {\n                        \"PIIIII\",\n                    },\n                },\n            },\n        },\n        Ruleset = new ConfluentCloud.Inputs.SchemaRulesetArgs\n        {\n            DomainRules = new[]\n            {\n                new ConfluentCloud.Inputs.SchemaRulesetDomainRuleArgs\n                {\n                    Name = \"encryptPII\",\n                    Kind = \"TRANSFORM\",\n                    Type = \"ENCRYPT\",\n                    Mode = \"WRITEREAD\",\n                    Tags = new[]\n                    {\n                        \"PII\",\n                    },\n                    Params = \n                    {\n                        { \"encrypt.kek.name\", \"testkek2\" },\n                    },\n                },\n                new ConfluentCloud.Inputs.SchemaRulesetDomainRuleArgs\n                {\n                    Name = \"encrypt\",\n                    Kind = \"TRANSFORM\",\n                    Type = \"ENCRYPT\",\n                    Mode = \"WRITEREAD\",\n                    Tags = new[]\n                    {\n                        \"PIIIII\",\n                    },\n                    Params = \n                    {\n                        { \"encrypt.kek.name\", \"testkek2\" },\n                    },\n                },\n            },\n            MigrationRules = new[]\n            {\n                new ConfluentCloud.Inputs.SchemaRulesetMigrationRuleArgs\n                {\n                    Name = \"encrypt\",\n                    Kind = \"TRANSFORM\",\n                    Type = \"ENCRYPT\",\n                    Mode = \"WRITEREAD\",\n                    Tags = new[]\n                    {\n                        \"PIM\",\n                    },\n                    Params = \n                    {\n                        { \"encrypt.kek.name\", \"testkekM\" },\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"./schemas/avro/purchase.avsc\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// confluent_schema.avro-purchase points to v1.\n\t\t_, err = confluentcloud.NewSchema(ctx, \"avro-purchase\", \u0026confluentcloud.SchemaArgs{\n\t\t\tSubjectName: pulumi.String(\"avro-purchase-value\"),\n\t\t\tFormat:      pulumi.String(\"AVRO\"),\n\t\t\tSchema:      invokeFile.Result,\n\t\t\tMetadata: \u0026confluentcloud.SchemaMetadataArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"Bob Jones\"),\n\t\t\t\t\t\"email\": pulumi.String(\"bob@acme.com\"),\n\t\t\t\t},\n\t\t\t\tSensitives: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"s1\"),\n\t\t\t\t\tpulumi.String(\"s2\"),\n\t\t\t\t},\n\t\t\t\tTags: confluentcloud.SchemaMetadataTagArray{\n\t\t\t\t\t\u0026confluentcloud.SchemaMetadataTagArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"tag1\"),\n\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"PII\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026confluentcloud.SchemaMetadataTagArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"tag2\"),\n\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"PIIIII\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRuleset: \u0026confluentcloud.SchemaRulesetArgs{\n\t\t\t\tDomainRules: confluentcloud.SchemaRulesetDomainRuleArray{\n\t\t\t\t\t\u0026confluentcloud.SchemaRulesetDomainRuleArgs{\n\t\t\t\t\t\tName: pulumi.String(\"encryptPII\"),\n\t\t\t\t\t\tKind: pulumi.String(\"TRANSFORM\"),\n\t\t\t\t\t\tType: pulumi.String(\"ENCRYPT\"),\n\t\t\t\t\t\tMode: pulumi.String(\"WRITEREAD\"),\n\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"PII\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\t\t\t\"encrypt.kek.name\": pulumi.String(\"testkek2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026confluentcloud.SchemaRulesetDomainRuleArgs{\n\t\t\t\t\t\tName: pulumi.String(\"encrypt\"),\n\t\t\t\t\t\tKind: pulumi.String(\"TRANSFORM\"),\n\t\t\t\t\t\tType: pulumi.String(\"ENCRYPT\"),\n\t\t\t\t\t\tMode: pulumi.String(\"WRITEREAD\"),\n\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"PIIIII\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\t\t\t\"encrypt.kek.name\": pulumi.String(\"testkek2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMigrationRules: confluentcloud.SchemaRulesetMigrationRuleArray{\n\t\t\t\t\t\u0026confluentcloud.SchemaRulesetMigrationRuleArgs{\n\t\t\t\t\t\tName: pulumi.String(\"encrypt\"),\n\t\t\t\t\t\tKind: pulumi.String(\"TRANSFORM\"),\n\t\t\t\t\t\tType: pulumi.String(\"ENCRYPT\"),\n\t\t\t\t\t\tMode: pulumi.String(\"WRITEREAD\"),\n\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"PIM\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\t\t\t\"encrypt.kek.name\": pulumi.String(\"testkekM\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Schema;\nimport com.pulumi.confluentcloud.SchemaArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaMetadataArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaRulesetArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // confluent_schema.avro-purchase points to v1.\n        var avro_purchase = new Schema(\"avro-purchase\", SchemaArgs.builder()\n            .subjectName(\"avro-purchase-value\")\n            .format(\"AVRO\")\n            .schema(StdFunctions.file(Map.of(\"input\", \"./schemas/avro/purchase.avsc\")).result())\n            .metadata(SchemaMetadataArgs.builder()\n                .properties(Map.ofEntries(\n                    Map.entry(\"owner\", \"Bob Jones\"),\n                    Map.entry(\"email\", \"bob@acme.com\")\n                ))\n                .sensitives(                \n                    \"s1\",\n                    \"s2\")\n                .tags(                \n                    SchemaMetadataTagArgs.builder()\n                        .key(\"tag1\")\n                        .values(\"PII\")\n                        .build(),\n                    SchemaMetadataTagArgs.builder()\n                        .key(\"tag2\")\n                        .values(\"PIIIII\")\n                        .build())\n                .build())\n            .ruleset(SchemaRulesetArgs.builder()\n                .domainRules(                \n                    SchemaRulesetDomainRuleArgs.builder()\n                        .name(\"encryptPII\")\n                        .kind(\"TRANSFORM\")\n                        .type(\"ENCRYPT\")\n                        .mode(\"WRITEREAD\")\n                        .tags(\"PII\")\n                        .params(Map.of(\"encrypt.kek.name\", \"testkek2\"))\n                        .build(),\n                    SchemaRulesetDomainRuleArgs.builder()\n                        .name(\"encrypt\")\n                        .kind(\"TRANSFORM\")\n                        .type(\"ENCRYPT\")\n                        .mode(\"WRITEREAD\")\n                        .tags(\"PIIIII\")\n                        .params(Map.of(\"encrypt.kek.name\", \"testkek2\"))\n                        .build())\n                .migrationRules(SchemaRulesetMigrationRuleArgs.builder()\n                    .name(\"encrypt\")\n                    .kind(\"TRANSFORM\")\n                    .type(\"ENCRYPT\")\n                    .mode(\"WRITEREAD\")\n                    .tags(\"PIM\")\n                    .params(Map.of(\"encrypt.kek.name\", \"testkekM\"))\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # confluent_schema.avro-purchase points to v1.\n  avro-purchase:\n    type: confluentcloud:Schema\n    properties:\n      subjectName: avro-purchase-value\n      format: AVRO\n      schema:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ./schemas/avro/purchase.avsc\n          return: result\n      metadata:\n        properties:\n          owner: Bob Jones\n          email: bob@acme.com\n        sensitives:\n          - s1\n          - s2\n        tags:\n          - key: tag1\n            values:\n              - PII\n          - key: tag2\n            values:\n              - PIIIII\n      ruleset:\n        domainRules:\n          - name: encryptPII\n            kind: TRANSFORM\n            type: ENCRYPT\n            mode: WRITEREAD\n            tags:\n              - PII\n            params:\n              encrypt.kek.name: testkek2\n          - name: encrypt\n            kind: TRANSFORM\n            type: ENCRYPT\n            mode: WRITEREAD\n            tags:\n              - PIIIII\n            params:\n              encrypt.kek.name: testkek2\n        migrationRules:\n          - name: encrypt\n            kind: TRANSFORM\n            type: ENCRYPT\n            mode: WRITEREAD\n            tags:\n              - PIM\n            params:\n              encrypt.kek.name: testkekM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import a Schema by using the Schema Registry cluster ID, Subject name, and unique identifier (or \u003cspan pulumi-lang-nodejs=\"`latest`\" pulumi-lang-dotnet=\"`Latest`\" pulumi-lang-go=\"`latest`\" pulumi-lang-python=\"`latest`\" pulumi-lang-yaml=\"`latest`\" pulumi-lang-java=\"`latest`\"\u003e`latest`\u003c/span\u003e when \u003cspan pulumi-lang-nodejs=\"`recreateOnUpdate \" pulumi-lang-dotnet=\"`RecreateOnUpdate \" pulumi-lang-go=\"`recreateOnUpdate \" pulumi-lang-python=\"`recreate_on_update \" pulumi-lang-yaml=\"`recreateOnUpdate \" pulumi-lang-java=\"`recreateOnUpdate \"\u003e`recreate_on_update \u003c/span\u003e= false`) of the Schema in the format `\u003cSchema Registry cluster ID\u003e/\u003cSubject name\u003e/\u003cSchema identifier\u003e`, for example:\n\nOption A:\u003cspan pulumi-lang-nodejs=\" recreateOnUpdate \" pulumi-lang-dotnet=\" RecreateOnUpdate \" pulumi-lang-go=\" recreateOnUpdate \" pulumi-lang-python=\" recreate_on_update \" pulumi-lang-yaml=\" recreateOnUpdate \" pulumi-lang-java=\" recreateOnUpdate \"\u003e recreate_on_update \u003c/span\u003e= false (by default)\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT=\"\u003cschema_registry_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/schema:Schema my_schema_1 lsrc-abc123/test-subject/latest\n```\n\nOption B:\u003cspan pulumi-lang-nodejs=\" recreateOnUpdate \" pulumi-lang-dotnet=\" RecreateOnUpdate \" pulumi-lang-go=\" recreateOnUpdate \" pulumi-lang-python=\" recreate_on_update \" pulumi-lang-yaml=\" recreateOnUpdate \" pulumi-lang-java=\" recreateOnUpdate \"\u003e recreate_on_update \u003c/span\u003e= true\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT=\"\u003cschema_registry_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/schema:Schema my_schema_1 lsrc-abc123/test-subject/100003\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/SchemaCredentials:SchemaCredentials","description":"The Cluster API Credentials.","secret":true},"format":{"type":"string","description":"The format of the Schema."},"hardDelete":{"type":"boolean","description":"Controls whether a schema should be soft or hard deleted. Set it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e if you want to hard delete a schema on destroy. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e (soft delete)."},"metadata":{"$ref":"#/types/confluentcloud:index/SchemaMetadata:SchemaMetadata"},"recreateOnUpdate":{"type":"boolean","description":"Controls whether a schema should be recreated on update."},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster. For example, for public networking: `https://psrc-00000.us-central1.gcp.confluent.cloud`. In the case of private networking, the endpoint might look like `https://lsrc-abc123.pr1jy6.us-east-2.aws.confluent.cloud`. You can construct it using either:\n- `data.confluent_schema_registry_cluster.essentials.private_regional_rest_endpoints[\"us-east-2\"]`, or\n- `https://${data.confluent_schema_registry_cluster.essentials.id}${data.confluent_network.main.endpoint_suffix}`\n"},"ruleset":{"$ref":"#/types/confluentcloud:index/SchemaRuleset:SchemaRuleset"},"schema":{"type":"string","description":"The definition of the Schema.","language":{"csharp":{"name":"SchemaDetails"}}},"schemaIdentifier":{"type":"integer","description":"(Required Integer) The globally unique ID of the Schema, for example, \u003cspan pulumi-lang-nodejs=\"`100003`\" pulumi-lang-dotnet=\"`100003`\" pulumi-lang-go=\"`100003`\" pulumi-lang-python=\"`100003`\" pulumi-lang-yaml=\"`100003`\" pulumi-lang-java=\"`100003`\"\u003e`100003`\u003c/span\u003e. If the same schema is registered under a different subject, the same identifier will be returned. However, the \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e of the schema may be different under different subjects.\n"},"schemaReferences":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/SchemaSchemaReference:SchemaSchemaReference"},"description":"The list of references to other Schemas."},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaSchemaRegistryCluster:SchemaSchemaRegistryCluster"},"skipValidationDuringPlan":{"type":"boolean","description":"Controls whether a schema validation should be skipped during terraform plan."},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`. Schemas evolve safely, following a compatibility mode defined, under a subject name.\n"},"version":{"type":"integer","description":"(Required Integer) The version of the Schema, for example, \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e.\n"}},"required":["format","metadata","schema","schemaIdentifier","subjectName","version"],"inputProperties":{"credentials":{"$ref":"#/types/confluentcloud:index/SchemaCredentials:SchemaCredentials","description":"The Cluster API Credentials.","secret":true},"format":{"type":"string","description":"The format of the Schema.","willReplaceOnChanges":true},"hardDelete":{"type":"boolean","description":"Controls whether a schema should be soft or hard deleted. Set it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e if you want to hard delete a schema on destroy. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e (soft delete)."},"metadata":{"$ref":"#/types/confluentcloud:index/SchemaMetadata:SchemaMetadata"},"recreateOnUpdate":{"type":"boolean","description":"Controls whether a schema should be recreated on update."},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster. For example, for public networking: `https://psrc-00000.us-central1.gcp.confluent.cloud`. In the case of private networking, the endpoint might look like `https://lsrc-abc123.pr1jy6.us-east-2.aws.confluent.cloud`. You can construct it using either:\n- `data.confluent_schema_registry_cluster.essentials.private_regional_rest_endpoints[\"us-east-2\"]`, or\n- `https://${data.confluent_schema_registry_cluster.essentials.id}${data.confluent_network.main.endpoint_suffix}`\n","willReplaceOnChanges":true},"ruleset":{"$ref":"#/types/confluentcloud:index/SchemaRuleset:SchemaRuleset"},"schema":{"type":"string","description":"The definition of the Schema.","language":{"csharp":{"name":"SchemaDetails"}}},"schemaReferences":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/SchemaSchemaReference:SchemaSchemaReference"},"description":"The list of references to other Schemas."},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaSchemaRegistryCluster:SchemaSchemaRegistryCluster","willReplaceOnChanges":true},"skipValidationDuringPlan":{"type":"boolean","description":"Controls whether a schema validation should be skipped during terraform plan."},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`. Schemas evolve safely, following a compatibility mode defined, under a subject name.\n","willReplaceOnChanges":true}},"requiredInputs":["format","subjectName"],"stateInputs":{"description":"Input properties used for looking up and filtering Schema resources.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/SchemaCredentials:SchemaCredentials","description":"The Cluster API Credentials.","secret":true},"format":{"type":"string","description":"The format of the Schema.","willReplaceOnChanges":true},"hardDelete":{"type":"boolean","description":"Controls whether a schema should be soft or hard deleted. Set it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e if you want to hard delete a schema on destroy. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e (soft delete)."},"metadata":{"$ref":"#/types/confluentcloud:index/SchemaMetadata:SchemaMetadata"},"recreateOnUpdate":{"type":"boolean","description":"Controls whether a schema should be recreated on update."},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster. For example, for public networking: `https://psrc-00000.us-central1.gcp.confluent.cloud`. In the case of private networking, the endpoint might look like `https://lsrc-abc123.pr1jy6.us-east-2.aws.confluent.cloud`. You can construct it using either:\n- `data.confluent_schema_registry_cluster.essentials.private_regional_rest_endpoints[\"us-east-2\"]`, or\n- `https://${data.confluent_schema_registry_cluster.essentials.id}${data.confluent_network.main.endpoint_suffix}`\n","willReplaceOnChanges":true},"ruleset":{"$ref":"#/types/confluentcloud:index/SchemaRuleset:SchemaRuleset"},"schema":{"type":"string","description":"The definition of the Schema.","language":{"csharp":{"name":"SchemaDetails"}}},"schemaIdentifier":{"type":"integer","description":"(Required Integer) The globally unique ID of the Schema, for example, \u003cspan pulumi-lang-nodejs=\"`100003`\" pulumi-lang-dotnet=\"`100003`\" pulumi-lang-go=\"`100003`\" pulumi-lang-python=\"`100003`\" pulumi-lang-yaml=\"`100003`\" pulumi-lang-java=\"`100003`\"\u003e`100003`\u003c/span\u003e. If the same schema is registered under a different subject, the same identifier will be returned. However, the \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e of the schema may be different under different subjects.\n"},"schemaReferences":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/SchemaSchemaReference:SchemaSchemaReference"},"description":"The list of references to other Schemas."},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaSchemaRegistryCluster:SchemaSchemaRegistryCluster","willReplaceOnChanges":true},"skipValidationDuringPlan":{"type":"boolean","description":"Controls whether a schema validation should be skipped during terraform plan."},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`. Schemas evolve safely, following a compatibility mode defined, under a subject name.\n","willReplaceOnChanges":true},"version":{"type":"integer","description":"(Required Integer) The version of the Schema, for example, \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e.\n"}},"type":"object"}},"confluentcloud:index/schemaExporter:SchemaExporter":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaExporter`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaExporter`\" pulumi-lang-go=\"`SchemaExporter`\" pulumi-lang-python=\"`SchemaExporter`\" pulumi-lang-yaml=\"`confluentcloud.SchemaExporter`\" pulumi-lang-java=\"`confluentcloud.SchemaExporter`\"\u003e`confluentcloud.SchemaExporter`\u003c/span\u003e provides a Schema Exporter resource that enables creating, editing, and deleting Schema Exporters on Confluent Cloud.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = new confluentcloud.SchemaExporter(\"main\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name: \"test-exporter\",\n    subjects: [\"foo\"],\n    destinationSchemaRegistryCluster: {\n        restEndpoint: destination.restEndpoint,\n        credentials: {\n            key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.destination\u003e\",\n            secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.destination\u003e\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.SchemaExporter(\"main\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name=\"test-exporter\",\n    subjects=[\"foo\"],\n    destination_schema_registry_cluster={\n        \"rest_endpoint\": destination[\"restEndpoint\"],\n        \"credentials\": {\n            \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.destination\u003e\",\n            \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.destination\u003e\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new ConfluentCloud.SchemaExporter(\"main\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.SchemaExporterSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.SchemaExporterCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        Name = \"test-exporter\",\n        Subjects = new[]\n        {\n            \"foo\",\n        },\n        DestinationSchemaRegistryCluster = new ConfluentCloud.Inputs.SchemaExporterDestinationSchemaRegistryClusterArgs\n        {\n            RestEndpoint = destination.RestEndpoint,\n            Credentials = new ConfluentCloud.Inputs.SchemaExporterDestinationSchemaRegistryClusterCredentialsArgs\n            {\n                Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.destination\u003e\",\n                Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.destination\u003e\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSchemaExporter(ctx, \"main\", \u0026confluentcloud.SchemaExporterArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.SchemaExporterSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.SchemaExporterCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t\tName: pulumi.String(\"test-exporter\"),\n\t\t\tSubjects: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t},\n\t\t\tDestinationSchemaRegistryCluster: \u0026confluentcloud.SchemaExporterDestinationSchemaRegistryClusterArgs{\n\t\t\t\tRestEndpoint: pulumi.Any(destination.RestEndpoint),\n\t\t\t\tCredentials: \u0026confluentcloud.SchemaExporterDestinationSchemaRegistryClusterCredentialsArgs{\n\t\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.destination\u003e\"),\n\t\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.destination\u003e\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SchemaExporter;\nimport com.pulumi.confluentcloud.SchemaExporterArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaExporterSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaExporterCredentialsArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaExporterDestinationSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaExporterDestinationSchemaRegistryClusterCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new SchemaExporter(\"main\", SchemaExporterArgs.builder()\n            .schemaRegistryCluster(SchemaExporterSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(SchemaExporterCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .name(\"test-exporter\")\n            .subjects(\"foo\")\n            .destinationSchemaRegistryCluster(SchemaExporterDestinationSchemaRegistryClusterArgs.builder()\n                .restEndpoint(destination.restEndpoint())\n                .credentials(SchemaExporterDestinationSchemaRegistryClusterCredentialsArgs.builder()\n                    .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.destination\u003e\")\n                    .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.destination\u003e\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: confluentcloud:SchemaExporter\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n      name: test-exporter\n      subjects:\n        - foo\n      destinationSchemaRegistryCluster:\n        restEndpoint: ${destination.restEndpoint}\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.destination\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.destination\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = new confluentcloud.SchemaExporter(\"main\", {\n    name: \"test-exporter\",\n    subjects: [\"foo\"],\n    destinationSchemaRegistryCluster: {\n        restEndpoint: destination.restEndpoint,\n        credentials: {\n            key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.destination\u003e\",\n            secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.destination\u003e\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.SchemaExporter(\"main\",\n    name=\"test-exporter\",\n    subjects=[\"foo\"],\n    destination_schema_registry_cluster={\n        \"rest_endpoint\": destination[\"restEndpoint\"],\n        \"credentials\": {\n            \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.destination\u003e\",\n            \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.destination\u003e\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new ConfluentCloud.SchemaExporter(\"main\", new()\n    {\n        Name = \"test-exporter\",\n        Subjects = new[]\n        {\n            \"foo\",\n        },\n        DestinationSchemaRegistryCluster = new ConfluentCloud.Inputs.SchemaExporterDestinationSchemaRegistryClusterArgs\n        {\n            RestEndpoint = destination.RestEndpoint,\n            Credentials = new ConfluentCloud.Inputs.SchemaExporterDestinationSchemaRegistryClusterCredentialsArgs\n            {\n                Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.destination\u003e\",\n                Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.destination\u003e\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSchemaExporter(ctx, \"main\", \u0026confluentcloud.SchemaExporterArgs{\n\t\t\tName: pulumi.String(\"test-exporter\"),\n\t\t\tSubjects: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t},\n\t\t\tDestinationSchemaRegistryCluster: \u0026confluentcloud.SchemaExporterDestinationSchemaRegistryClusterArgs{\n\t\t\t\tRestEndpoint: pulumi.Any(destination.RestEndpoint),\n\t\t\t\tCredentials: \u0026confluentcloud.SchemaExporterDestinationSchemaRegistryClusterCredentialsArgs{\n\t\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.destination\u003e\"),\n\t\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.destination\u003e\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SchemaExporter;\nimport com.pulumi.confluentcloud.SchemaExporterArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaExporterDestinationSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaExporterDestinationSchemaRegistryClusterCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new SchemaExporter(\"main\", SchemaExporterArgs.builder()\n            .name(\"test-exporter\")\n            .subjects(\"foo\")\n            .destinationSchemaRegistryCluster(SchemaExporterDestinationSchemaRegistryClusterArgs.builder()\n                .restEndpoint(destination.restEndpoint())\n                .credentials(SchemaExporterDestinationSchemaRegistryClusterCredentialsArgs.builder()\n                    .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.destination\u003e\")\n                    .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.destination\u003e\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: confluentcloud:SchemaExporter\n    properties:\n      name: test-exporter\n      subjects:\n        - foo\n      destinationSchemaRegistryCluster:\n        restEndpoint: ${destination.restEndpoint}\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.destination\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.destination\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #3: Manage multiple Schema Registry clusters in the same Pulumi Stack using OAuth authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = new confluentcloud.SchemaExporter(\"main\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    name: \"test-exporter\",\n    subjects: [\"foo\"],\n    destinationSchemaRegistryCluster: {\n        id: destination.id,\n        restEndpoint: destination.restEndpoint,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.SchemaExporter(\"main\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    name=\"test-exporter\",\n    subjects=[\"foo\"],\n    destination_schema_registry_cluster={\n        \"id\": destination[\"id\"],\n        \"rest_endpoint\": destination[\"restEndpoint\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new ConfluentCloud.SchemaExporter(\"main\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.SchemaExporterSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Name = \"test-exporter\",\n        Subjects = new[]\n        {\n            \"foo\",\n        },\n        DestinationSchemaRegistryCluster = new ConfluentCloud.Inputs.SchemaExporterDestinationSchemaRegistryClusterArgs\n        {\n            Id = destination.Id,\n            RestEndpoint = destination.RestEndpoint,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSchemaExporter(ctx, \"main\", \u0026confluentcloud.SchemaExporterArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.SchemaExporterSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tName:         pulumi.String(\"test-exporter\"),\n\t\t\tSubjects: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t},\n\t\t\tDestinationSchemaRegistryCluster: \u0026confluentcloud.SchemaExporterDestinationSchemaRegistryClusterArgs{\n\t\t\t\tId:           pulumi.Any(destination.Id),\n\t\t\t\tRestEndpoint: pulumi.Any(destination.RestEndpoint),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SchemaExporter;\nimport com.pulumi.confluentcloud.SchemaExporterArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaExporterSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaExporterDestinationSchemaRegistryClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new SchemaExporter(\"main\", SchemaExporterArgs.builder()\n            .schemaRegistryCluster(SchemaExporterSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .name(\"test-exporter\")\n            .subjects(\"foo\")\n            .destinationSchemaRegistryCluster(SchemaExporterDestinationSchemaRegistryClusterArgs.builder()\n                .id(destination.id())\n                .restEndpoint(destination.restEndpoint())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: confluentcloud:SchemaExporter\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      name: test-exporter\n      subjects:\n        - foo\n      destinationSchemaRegistryCluster:\n        id: ${destination.id}\n        restEndpoint: ${destination.restEndpoint}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import a Schema Exporter by using the Schema Registry cluster ID, Schema Exporter name in the format `\u003cSchema Registry cluster ID\u003e/\u003cSchema Exporter name\u003e`, for example:\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_ID=\"\u003cschema_registry_cluster_id\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT=\"\u003cschema_registry_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/schemaExporter:SchemaExporter main lsrc-8wrx70/test-exporter\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n\u003e **Note:** When using OAuth authentication in the provider block, only `IMPORT_SCHEMA_REGISTRY_ID` and `IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT` are required to be set.\n\n","properties":{"config":{"type":"object","additionalProperties":{"type":"string"},"description":"Block for custom *nonsensitive* configuration properties:\n"},"context":{"type":"string","description":"Customized context of the exporter if \u003cspan pulumi-lang-nodejs=\"`contextType`\" pulumi-lang-dotnet=\"`ContextType`\" pulumi-lang-go=\"`contextType`\" pulumi-lang-python=\"`context_type`\" pulumi-lang-yaml=\"`contextType`\" pulumi-lang-java=\"`contextType`\"\u003e`context_type`\u003c/span\u003e is set to `CUSTOM`.\n"},"contextType":{"type":"string","description":"Context type of the exporter. Accepted values are: `CUSTOM`, `NONE` or `AUTO`. Defaults to `AUTO`.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/SchemaExporterCredentials:SchemaExporterCredentials","description":"The Cluster API Credentials.","secret":true},"destinationSchemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaExporterDestinationSchemaRegistryCluster:SchemaExporterDestinationSchemaRegistryCluster"},"name":{"type":"string","description":"Name of the Schema Exporter.\n"},"resetOnUpdate":{"type":"boolean","description":"The flag to control whether to reset the exporter when updating configs. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n\u003e **Note:** When using OAuth authentication in the provider block, `destination_schema_registry_cluster.id` is required and credentials blocks for both source and destination schema registry clusters must be removed.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaExporterSchemaRegistryCluster:SchemaExporterSchemaRegistryCluster"},"status":{"type":"string","description":"The status of the schema exporter. Accepted values are: `RUNNING` and `PAUSED`.\n"},"subjectRenameFormat":{"type":"string","description":"Format string for the subject name in the destination cluster, which may contain `${subject}` as a placeholder for the originating subject name. For example, `dc_${subject}` for the subject orders will map to the destination subject name \u003cspan pulumi-lang-nodejs=\"`dcOrders`\" pulumi-lang-dotnet=\"`DcOrders`\" pulumi-lang-go=\"`dcOrders`\" pulumi-lang-python=\"`dc_orders`\" pulumi-lang-yaml=\"`dcOrders`\" pulumi-lang-java=\"`dcOrders`\"\u003e`dc_orders`\u003c/span\u003e.\n"},"subjects":{"type":"array","items":{"type":"string"},"description":"Name of each exporter subject.\n"}},"required":["config","context","contextType","destinationSchemaRegistryCluster","name","status","subjectRenameFormat","subjects"],"inputProperties":{"config":{"type":"object","additionalProperties":{"type":"string"},"description":"Block for custom *nonsensitive* configuration properties:\n"},"context":{"type":"string","description":"Customized context of the exporter if \u003cspan pulumi-lang-nodejs=\"`contextType`\" pulumi-lang-dotnet=\"`ContextType`\" pulumi-lang-go=\"`contextType`\" pulumi-lang-python=\"`context_type`\" pulumi-lang-yaml=\"`contextType`\" pulumi-lang-java=\"`contextType`\"\u003e`context_type`\u003c/span\u003e is set to `CUSTOM`.\n"},"contextType":{"type":"string","description":"Context type of the exporter. Accepted values are: `CUSTOM`, `NONE` or `AUTO`. Defaults to `AUTO`.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/SchemaExporterCredentials:SchemaExporterCredentials","description":"The Cluster API Credentials.","secret":true},"destinationSchemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaExporterDestinationSchemaRegistryCluster:SchemaExporterDestinationSchemaRegistryCluster"},"name":{"type":"string","description":"Name of the Schema Exporter.\n","willReplaceOnChanges":true},"resetOnUpdate":{"type":"boolean","description":"The flag to control whether to reset the exporter when updating configs. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n\u003e **Note:** When using OAuth authentication in the provider block, `destination_schema_registry_cluster.id` is required and credentials blocks for both source and destination schema registry clusters must be removed.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaExporterSchemaRegistryCluster:SchemaExporterSchemaRegistryCluster","willReplaceOnChanges":true},"status":{"type":"string","description":"The status of the schema exporter. Accepted values are: `RUNNING` and `PAUSED`.\n"},"subjectRenameFormat":{"type":"string","description":"Format string for the subject name in the destination cluster, which may contain `${subject}` as a placeholder for the originating subject name. For example, `dc_${subject}` for the subject orders will map to the destination subject name \u003cspan pulumi-lang-nodejs=\"`dcOrders`\" pulumi-lang-dotnet=\"`DcOrders`\" pulumi-lang-go=\"`dcOrders`\" pulumi-lang-python=\"`dc_orders`\" pulumi-lang-yaml=\"`dcOrders`\" pulumi-lang-java=\"`dcOrders`\"\u003e`dc_orders`\u003c/span\u003e.\n"},"subjects":{"type":"array","items":{"type":"string"},"description":"Name of each exporter subject.\n"}},"requiredInputs":["destinationSchemaRegistryCluster"],"stateInputs":{"description":"Input properties used for looking up and filtering SchemaExporter resources.\n","properties":{"config":{"type":"object","additionalProperties":{"type":"string"},"description":"Block for custom *nonsensitive* configuration properties:\n"},"context":{"type":"string","description":"Customized context of the exporter if \u003cspan pulumi-lang-nodejs=\"`contextType`\" pulumi-lang-dotnet=\"`ContextType`\" pulumi-lang-go=\"`contextType`\" pulumi-lang-python=\"`context_type`\" pulumi-lang-yaml=\"`contextType`\" pulumi-lang-java=\"`contextType`\"\u003e`context_type`\u003c/span\u003e is set to `CUSTOM`.\n"},"contextType":{"type":"string","description":"Context type of the exporter. Accepted values are: `CUSTOM`, `NONE` or `AUTO`. Defaults to `AUTO`.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/SchemaExporterCredentials:SchemaExporterCredentials","description":"The Cluster API Credentials.","secret":true},"destinationSchemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaExporterDestinationSchemaRegistryCluster:SchemaExporterDestinationSchemaRegistryCluster"},"name":{"type":"string","description":"Name of the Schema Exporter.\n","willReplaceOnChanges":true},"resetOnUpdate":{"type":"boolean","description":"The flag to control whether to reset the exporter when updating configs. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n\u003e **Note:** When using OAuth authentication in the provider block, `destination_schema_registry_cluster.id` is required and credentials blocks for both source and destination schema registry clusters must be removed.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaExporterSchemaRegistryCluster:SchemaExporterSchemaRegistryCluster","willReplaceOnChanges":true},"status":{"type":"string","description":"The status of the schema exporter. Accepted values are: `RUNNING` and `PAUSED`.\n"},"subjectRenameFormat":{"type":"string","description":"Format string for the subject name in the destination cluster, which may contain `${subject}` as a placeholder for the originating subject name. For example, `dc_${subject}` for the subject orders will map to the destination subject name \u003cspan pulumi-lang-nodejs=\"`dcOrders`\" pulumi-lang-dotnet=\"`DcOrders`\" pulumi-lang-go=\"`dcOrders`\" pulumi-lang-python=\"`dc_orders`\" pulumi-lang-yaml=\"`dcOrders`\" pulumi-lang-java=\"`dcOrders`\"\u003e`dc_orders`\u003c/span\u003e.\n"},"subjects":{"type":"array","items":{"type":"string"},"description":"Name of each exporter subject.\n"}},"type":"object"}},"confluentcloud:index/schemaRegistryClusterConfig:SchemaRegistryClusterConfig":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryClusterConfig`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryClusterConfig`\" pulumi-lang-go=\"`SchemaRegistryClusterConfig`\" pulumi-lang-python=\"`SchemaRegistryClusterConfig`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryClusterConfig`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryClusterConfig`\"\u003e`confluentcloud.SchemaRegistryClusterConfig`\u003c/span\u003e provides a Schema Registry Cluster Config resource that enables updating Config on a Schema Registry cluster on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Schema Registry Cluster Config deletion. This setting rejects plans that would destroy or recreate the Schema Registry Cluster Config, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.SchemaRegistryClusterConfig(\"example\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    compatibilityLevel: \"FULL\",\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.SchemaRegistryClusterConfig(\"example\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    compatibility_level=\"FULL\",\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.SchemaRegistryClusterConfig(\"example\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.SchemaRegistryClusterConfigSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        CompatibilityLevel = \"FULL\",\n        Credentials = new ConfluentCloud.Inputs.SchemaRegistryClusterConfigCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSchemaRegistryClusterConfig(ctx, \"example\", \u0026confluentcloud.SchemaRegistryClusterConfigArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.SchemaRegistryClusterConfigSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint:       pulumi.Any(essentials.RestEndpoint),\n\t\t\tCompatibilityLevel: pulumi.String(\"FULL\"),\n\t\t\tCredentials: \u0026confluentcloud.SchemaRegistryClusterConfigCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SchemaRegistryClusterConfig;\nimport com.pulumi.confluentcloud.SchemaRegistryClusterConfigArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaRegistryClusterConfigSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaRegistryClusterConfigCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new SchemaRegistryClusterConfig(\"example\", SchemaRegistryClusterConfigArgs.builder()\n            .schemaRegistryCluster(SchemaRegistryClusterConfigSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .compatibilityLevel(\"FULL\")\n            .credentials(SchemaRegistryClusterConfigCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:SchemaRegistryClusterConfig\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      compatibilityLevel: FULL\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.SchemaRegistryClusterConfig(\"example\", {\n    compatibilityLevel: \"FULL\",\n    compatibilityGroup: \"abc.cg.version\",\n    normalize: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.SchemaRegistryClusterConfig(\"example\",\n    compatibility_level=\"FULL\",\n    compatibility_group=\"abc.cg.version\",\n    normalize=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.SchemaRegistryClusterConfig(\"example\", new()\n    {\n        CompatibilityLevel = \"FULL\",\n        CompatibilityGroup = \"abc.cg.version\",\n        Normalize = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSchemaRegistryClusterConfig(ctx, \"example\", \u0026confluentcloud.SchemaRegistryClusterConfigArgs{\n\t\t\tCompatibilityLevel: pulumi.String(\"FULL\"),\n\t\t\tCompatibilityGroup: pulumi.String(\"abc.cg.version\"),\n\t\t\tNormalize:          pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SchemaRegistryClusterConfig;\nimport com.pulumi.confluentcloud.SchemaRegistryClusterConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new SchemaRegistryClusterConfig(\"example\", SchemaRegistryClusterConfigArgs.builder()\n            .compatibilityLevel(\"FULL\")\n            .compatibilityGroup(\"abc.cg.version\")\n            .normalize(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:SchemaRegistryClusterConfig\n    properties:\n      compatibilityLevel: FULL\n      compatibilityGroup: abc.cg.version\n      normalize: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import a Schema Registry Cluster Config by using the Schema Registry cluster ID, Subject name in the format `\u003cSchema Registry cluster ID\u003e`, for example:\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT=\"\u003cschema_registry_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/schemaRegistryClusterConfig:SchemaRegistryClusterConfig example lsrc-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"compatibilityGroup":{"type":"string","description":"The global Schema Registry compatibility group.\n"},"compatibilityLevel":{"type":"string","description":"The global Schema Registry compatibility level. Accepted values are: `BACKWARD`, `BACKWARD_TRANSITIVE`, `FORWARD`, `FORWARD_TRANSITIVE`, `FULL`, `FULL_TRANSITIVE`, and `NONE`. See the [Compatibility Types](https://docs.confluent.io/platform/current/schema-registry/avro.html#compatibility-types) for more details.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/SchemaRegistryClusterConfigCredentials:SchemaRegistryClusterConfigCredentials","description":"The Cluster API Credentials.","secret":true},"normalize":{"type":"boolean","description":"Whether schemas are automatically normalized when registered or passed during lookups.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaRegistryClusterConfigSchemaRegistryCluster:SchemaRegistryClusterConfigSchemaRegistryCluster"}},"required":["compatibilityGroup","compatibilityLevel","normalize"],"inputProperties":{"compatibilityGroup":{"type":"string","description":"The global Schema Registry compatibility group.\n"},"compatibilityLevel":{"type":"string","description":"The global Schema Registry compatibility level. Accepted values are: `BACKWARD`, `BACKWARD_TRANSITIVE`, `FORWARD`, `FORWARD_TRANSITIVE`, `FULL`, `FULL_TRANSITIVE`, and `NONE`. See the [Compatibility Types](https://docs.confluent.io/platform/current/schema-registry/avro.html#compatibility-types) for more details.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/SchemaRegistryClusterConfigCredentials:SchemaRegistryClusterConfigCredentials","description":"The Cluster API Credentials.","secret":true},"normalize":{"type":"boolean","description":"Whether schemas are automatically normalized when registered or passed during lookups.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaRegistryClusterConfigSchemaRegistryCluster:SchemaRegistryClusterConfigSchemaRegistryCluster","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering SchemaRegistryClusterConfig resources.\n","properties":{"compatibilityGroup":{"type":"string","description":"The global Schema Registry compatibility group.\n"},"compatibilityLevel":{"type":"string","description":"The global Schema Registry compatibility level. Accepted values are: `BACKWARD`, `BACKWARD_TRANSITIVE`, `FORWARD`, `FORWARD_TRANSITIVE`, `FULL`, `FULL_TRANSITIVE`, and `NONE`. See the [Compatibility Types](https://docs.confluent.io/platform/current/schema-registry/avro.html#compatibility-types) for more details.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/SchemaRegistryClusterConfigCredentials:SchemaRegistryClusterConfigCredentials","description":"The Cluster API Credentials.","secret":true},"normalize":{"type":"boolean","description":"Whether schemas are automatically normalized when registered or passed during lookups.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaRegistryClusterConfigSchemaRegistryCluster:SchemaRegistryClusterConfigSchemaRegistryCluster","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/schemaRegistryClusterMode:SchemaRegistryClusterMode":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryClusterMode`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryClusterMode`\" pulumi-lang-go=\"`SchemaRegistryClusterMode`\" pulumi-lang-python=\"`SchemaRegistryClusterMode`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryClusterMode`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryClusterMode`\"\u003e`confluentcloud.SchemaRegistryClusterMode`\u003c/span\u003e provides a Mode resource that enables updating Mode on a Schema Registry cluster on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental mode deletion. This setting rejects plans that would destroy or recreate the mode, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.SchemaRegistryClusterMode(\"example\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    mode: \"READONLY\",\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.SchemaRegistryClusterMode(\"example\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    mode=\"READONLY\",\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.SchemaRegistryClusterMode(\"example\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.SchemaRegistryClusterModeSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Mode = \"READONLY\",\n        Credentials = new ConfluentCloud.Inputs.SchemaRegistryClusterModeCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSchemaRegistryClusterMode(ctx, \"example\", \u0026confluentcloud.SchemaRegistryClusterModeArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.SchemaRegistryClusterModeSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tMode:         pulumi.String(\"READONLY\"),\n\t\t\tCredentials: \u0026confluentcloud.SchemaRegistryClusterModeCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SchemaRegistryClusterMode;\nimport com.pulumi.confluentcloud.SchemaRegistryClusterModeArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaRegistryClusterModeSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaRegistryClusterModeCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new SchemaRegistryClusterMode(\"example\", SchemaRegistryClusterModeArgs.builder()\n            .schemaRegistryCluster(SchemaRegistryClusterModeSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .mode(\"READONLY\")\n            .credentials(SchemaRegistryClusterModeCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:SchemaRegistryClusterMode\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      mode: READONLY\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.SchemaRegistryClusterMode(\"example\", {mode: \"READONLY\"});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.SchemaRegistryClusterMode(\"example\", mode=\"READONLY\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.SchemaRegistryClusterMode(\"example\", new()\n    {\n        Mode = \"READONLY\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSchemaRegistryClusterMode(ctx, \"example\", \u0026confluentcloud.SchemaRegistryClusterModeArgs{\n\t\t\tMode: pulumi.String(\"READONLY\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SchemaRegistryClusterMode;\nimport com.pulumi.confluentcloud.SchemaRegistryClusterModeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new SchemaRegistryClusterMode(\"example\", SchemaRegistryClusterModeArgs.builder()\n            .mode(\"READONLY\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:SchemaRegistryClusterMode\n    properties:\n      mode: READONLY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import a Mode by using the Schema Registry cluster ID, Subject name in the format `\u003cSchema Registry cluster ID\u003e`, for example:\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT=\"\u003cschema_registry_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/schemaRegistryClusterMode:SchemaRegistryClusterMode example lsrc-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/SchemaRegistryClusterModeCredentials:SchemaRegistryClusterModeCredentials","description":"The Cluster API Credentials.","secret":true},"force":{"type":"boolean","description":"An optional flag to force a mode change even if the Schema Registry has existing schemas. This can be useful in disaster recovery (DR) scenarios using [Schema Linking](https://docs.confluent.io/cloud/current/sr/schema-linking.html). Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, which does not allow a mode change to `IMPORT` if Schema Registry has registered schemas. Must be unset when importing.\n"},"mode":{"type":"string","description":"The global Schema Registry mode. Accepted values are: `READWRITE`, `READONLY`, `READONLY_OVERRIDE`, and `IMPORT`.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaRegistryClusterModeSchemaRegistryCluster:SchemaRegistryClusterModeSchemaRegistryCluster"}},"required":["mode"],"inputProperties":{"credentials":{"$ref":"#/types/confluentcloud:index/SchemaRegistryClusterModeCredentials:SchemaRegistryClusterModeCredentials","description":"The Cluster API Credentials.","secret":true},"force":{"type":"boolean","description":"An optional flag to force a mode change even if the Schema Registry has existing schemas. This can be useful in disaster recovery (DR) scenarios using [Schema Linking](https://docs.confluent.io/cloud/current/sr/schema-linking.html). Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, which does not allow a mode change to `IMPORT` if Schema Registry has registered schemas. Must be unset when importing.\n"},"mode":{"type":"string","description":"The global Schema Registry mode. Accepted values are: `READWRITE`, `READONLY`, `READONLY_OVERRIDE`, and `IMPORT`.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaRegistryClusterModeSchemaRegistryCluster:SchemaRegistryClusterModeSchemaRegistryCluster","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering SchemaRegistryClusterMode resources.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/SchemaRegistryClusterModeCredentials:SchemaRegistryClusterModeCredentials","description":"The Cluster API Credentials.","secret":true},"force":{"type":"boolean","description":"An optional flag to force a mode change even if the Schema Registry has existing schemas. This can be useful in disaster recovery (DR) scenarios using [Schema Linking](https://docs.confluent.io/cloud/current/sr/schema-linking.html). Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, which does not allow a mode change to `IMPORT` if Schema Registry has registered schemas. Must be unset when importing.\n"},"mode":{"type":"string","description":"The global Schema Registry mode. Accepted values are: `READWRITE`, `READONLY`, `READONLY_OVERRIDE`, and `IMPORT`.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaRegistryClusterModeSchemaRegistryCluster:SchemaRegistryClusterModeSchemaRegistryCluster","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/schemaRegistryDek:SchemaRegistryDek":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-go=\"`SchemaRegistryDek`\" pulumi-lang-python=\"`SchemaRegistryDek`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryDek`\"\u003e`confluentcloud.SchemaRegistryDek`\u003c/span\u003e provides a Schema Registry Data Encryption Key (DEK) resource that enables creating, editing, and deleting Schema Registry Data Encryption Keys on Confluent Cloud.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst myDek = new confluentcloud.SchemaRegistryDek(\"my_dek\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    kekName: \"my_kek\",\n    subjectName: \"my_subject\",\n    hardDelete: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmy_dek = confluentcloud.SchemaRegistryDek(\"my_dek\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    kek_name=\"my_kek\",\n    subject_name=\"my_subject\",\n    hard_delete=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myDek = new ConfluentCloud.SchemaRegistryDek(\"my_dek\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.SchemaRegistryDekSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.SchemaRegistryDekCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        KekName = \"my_kek\",\n        SubjectName = \"my_subject\",\n        HardDelete = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSchemaRegistryDek(ctx, \"my_dek\", \u0026confluentcloud.SchemaRegistryDekArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.SchemaRegistryDekSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.SchemaRegistryDekCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t\tKekName:     pulumi.String(\"my_kek\"),\n\t\t\tSubjectName: pulumi.String(\"my_subject\"),\n\t\t\tHardDelete:  pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SchemaRegistryDek;\nimport com.pulumi.confluentcloud.SchemaRegistryDekArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaRegistryDekSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaRegistryDekCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myDek = new SchemaRegistryDek(\"myDek\", SchemaRegistryDekArgs.builder()\n            .schemaRegistryCluster(SchemaRegistryDekSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(SchemaRegistryDekCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .kekName(\"my_kek\")\n            .subjectName(\"my_subject\")\n            .hardDelete(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myDek:\n    type: confluentcloud:SchemaRegistryDek\n    name: my_dek\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n      kekName: my_kek\n      subjectName: my_subject\n      hardDelete: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst myDek = new confluentcloud.SchemaRegistryDek(\"my_dek\", {\n    kekName: \"my_kek\",\n    subjectName: \"my_subject\",\n    hardDelete: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmy_dek = confluentcloud.SchemaRegistryDek(\"my_dek\",\n    kek_name=\"my_kek\",\n    subject_name=\"my_subject\",\n    hard_delete=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myDek = new ConfluentCloud.SchemaRegistryDek(\"my_dek\", new()\n    {\n        KekName = \"my_kek\",\n        SubjectName = \"my_subject\",\n        HardDelete = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSchemaRegistryDek(ctx, \"my_dek\", \u0026confluentcloud.SchemaRegistryDekArgs{\n\t\t\tKekName:     pulumi.String(\"my_kek\"),\n\t\t\tSubjectName: pulumi.String(\"my_subject\"),\n\t\t\tHardDelete:  pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SchemaRegistryDek;\nimport com.pulumi.confluentcloud.SchemaRegistryDekArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myDek = new SchemaRegistryDek(\"myDek\", SchemaRegistryDekArgs.builder()\n            .kekName(\"my_kek\")\n            .subjectName(\"my_subject\")\n            .hardDelete(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myDek:\n    type: confluentcloud:SchemaRegistryDek\n    name: my_dek\n    properties:\n      kekName: my_kek\n      subjectName: my_subject\n      hardDelete: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end example might help to get started with field-level encryption:\n  * field-level-encryption-schema\n\n## Import\n\n \nYou can import a Schema Registry Key by using the Schema Registry cluster ID, KEK name, Subject, Version and Algorithm in the format `\u003cSchema Registry Cluster Id\u003e/\u003cSchema Registry KEK Name\u003e/\u003cSubject\u003e/\u003cVersion\u003e/\u003cAlgorithm\u003e`, for example:\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT=\"\u003cschema_registry_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/schemaRegistryDek:SchemaRegistryDek my_dek lsrc-8wrx70/testkek/ts/1/AES256_GCM\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"algorithm":{"type":"string","description":"Accepted values are: `AES128_GCM`, `AES256_GCM`, and `AES256_SIV`. Defaults to `AES256_GCM`.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/SchemaRegistryDekCredentials:SchemaRegistryDekCredentials","description":"The Cluster API Credentials.","secret":true},"encryptedKeyMaterial":{"type":"string","description":"The encrypted key material for the DEK.\n"},"hardDelete":{"type":"boolean","description":"An optional flag to control whether a DEK should be soft-deleted or hard-deleted. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_schema_registry_dek.pii\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_schema_registry_dek.pii\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-go=\"`SchemaRegistryDek`\" pulumi-lang-python=\"`SchemaRegistryDek`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryDek`\"\u003e`confluentcloud.SchemaRegistryDek`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"kekName":{"type":"string","description":"The name of the KEK used to encrypt this DEK.\n"},"keyMaterial":{"type":"string","description":"(Optional String) The decrypted version of encrypted key material.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaRegistryDekSchemaRegistryCluster:SchemaRegistryDekSchemaRegistryCluster"},"subjectName":{"type":"string","description":"The subject for this DEK.\n"},"version":{"type":"integer","description":"The version of this DEK. Defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n"}},"required":["encryptedKeyMaterial","kekName","keyMaterial","subjectName"],"inputProperties":{"algorithm":{"type":"string","description":"Accepted values are: `AES128_GCM`, `AES256_GCM`, and `AES256_SIV`. Defaults to `AES256_GCM`.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/SchemaRegistryDekCredentials:SchemaRegistryDekCredentials","description":"The Cluster API Credentials.","secret":true},"encryptedKeyMaterial":{"type":"string","description":"The encrypted key material for the DEK.\n"},"hardDelete":{"type":"boolean","description":"An optional flag to control whether a DEK should be soft-deleted or hard-deleted. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_schema_registry_dek.pii\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_schema_registry_dek.pii\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-go=\"`SchemaRegistryDek`\" pulumi-lang-python=\"`SchemaRegistryDek`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryDek`\"\u003e`confluentcloud.SchemaRegistryDek`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"kekName":{"type":"string","description":"The name of the KEK used to encrypt this DEK.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaRegistryDekSchemaRegistryCluster:SchemaRegistryDekSchemaRegistryCluster","willReplaceOnChanges":true},"subjectName":{"type":"string","description":"The subject for this DEK.\n","willReplaceOnChanges":true},"version":{"type":"integer","description":"The version of this DEK. Defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n"}},"requiredInputs":["kekName","subjectName"],"stateInputs":{"description":"Input properties used for looking up and filtering SchemaRegistryDek resources.\n","properties":{"algorithm":{"type":"string","description":"Accepted values are: `AES128_GCM`, `AES256_GCM`, and `AES256_SIV`. Defaults to `AES256_GCM`.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/SchemaRegistryDekCredentials:SchemaRegistryDekCredentials","description":"The Cluster API Credentials.","secret":true},"encryptedKeyMaterial":{"type":"string","description":"The encrypted key material for the DEK.\n"},"hardDelete":{"type":"boolean","description":"An optional flag to control whether a DEK should be soft-deleted or hard-deleted. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_schema_registry_dek.pii\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_schema_registry_dek.pii\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-go=\"`SchemaRegistryDek`\" pulumi-lang-python=\"`SchemaRegistryDek`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryDek`\"\u003e`confluentcloud.SchemaRegistryDek`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"kekName":{"type":"string","description":"The name of the KEK used to encrypt this DEK.\n","willReplaceOnChanges":true},"keyMaterial":{"type":"string","description":"(Optional String) The decrypted version of encrypted key material.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaRegistryDekSchemaRegistryCluster:SchemaRegistryDekSchemaRegistryCluster","willReplaceOnChanges":true},"subjectName":{"type":"string","description":"The subject for this DEK.\n","willReplaceOnChanges":true},"version":{"type":"integer","description":"The version of this DEK. Defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n"}},"type":"object"}},"confluentcloud:index/schemaRegistryKek:SchemaRegistryKek":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-go=\"`SchemaRegistryKek`\" pulumi-lang-python=\"`SchemaRegistryKek`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryKek`\"\u003e`confluentcloud.SchemaRegistryKek`\u003c/span\u003e provides a Schema Registry Key Encryption Key (KEK) resource that enables creating, editing, and deleting Schema Registry Key Encryption Keys on Confluent Cloud.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst awsKey = new confluentcloud.SchemaRegistryKek(\"aws_key\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name: \"my_key\",\n    kmsType: \"aws-kms\",\n    kmsKeyId: \"key_id\",\n    doc: \"test key\",\n    shared: false,\n    hardDelete: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\naws_key = confluentcloud.SchemaRegistryKek(\"aws_key\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name=\"my_key\",\n    kms_type=\"aws-kms\",\n    kms_key_id=\"key_id\",\n    doc=\"test key\",\n    shared=False,\n    hard_delete=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var awsKey = new ConfluentCloud.SchemaRegistryKek(\"aws_key\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.SchemaRegistryKekSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.SchemaRegistryKekCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        Name = \"my_key\",\n        KmsType = \"aws-kms\",\n        KmsKeyId = \"key_id\",\n        Doc = \"test key\",\n        Shared = false,\n        HardDelete = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSchemaRegistryKek(ctx, \"aws_key\", \u0026confluentcloud.SchemaRegistryKekArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.SchemaRegistryKekSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.SchemaRegistryKekCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t\tName:       pulumi.String(\"my_key\"),\n\t\t\tKmsType:    pulumi.String(\"aws-kms\"),\n\t\t\tKmsKeyId:   pulumi.String(\"key_id\"),\n\t\t\tDoc:        pulumi.String(\"test key\"),\n\t\t\tShared:     pulumi.Bool(false),\n\t\t\tHardDelete: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SchemaRegistryKek;\nimport com.pulumi.confluentcloud.SchemaRegistryKekArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaRegistryKekSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.SchemaRegistryKekCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var awsKey = new SchemaRegistryKek(\"awsKey\", SchemaRegistryKekArgs.builder()\n            .schemaRegistryCluster(SchemaRegistryKekSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(SchemaRegistryKekCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .name(\"my_key\")\n            .kmsType(\"aws-kms\")\n            .kmsKeyId(\"key_id\")\n            .doc(\"test key\")\n            .shared(false)\n            .hardDelete(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  awsKey:\n    type: confluentcloud:SchemaRegistryKek\n    name: aws_key\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n      name: my_key\n      kmsType: aws-kms\n      kmsKeyId: key_id\n      doc: test key\n      shared: false\n      hardDelete: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst pii = new confluentcloud.SchemaRegistryKek(\"pii\", {\n    name: \"my_key\",\n    kmsType: \"aws-kms\",\n    kmsKeyId: \"key_id\",\n    doc: \"test key\",\n    shared: false,\n    hardDelete: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npii = confluentcloud.SchemaRegistryKek(\"pii\",\n    name=\"my_key\",\n    kms_type=\"aws-kms\",\n    kms_key_id=\"key_id\",\n    doc=\"test key\",\n    shared=False,\n    hard_delete=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pii = new ConfluentCloud.SchemaRegistryKek(\"pii\", new()\n    {\n        Name = \"my_key\",\n        KmsType = \"aws-kms\",\n        KmsKeyId = \"key_id\",\n        Doc = \"test key\",\n        Shared = false,\n        HardDelete = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSchemaRegistryKek(ctx, \"pii\", \u0026confluentcloud.SchemaRegistryKekArgs{\n\t\t\tName:       pulumi.String(\"my_key\"),\n\t\t\tKmsType:    pulumi.String(\"aws-kms\"),\n\t\t\tKmsKeyId:   pulumi.String(\"key_id\"),\n\t\t\tDoc:        pulumi.String(\"test key\"),\n\t\t\tShared:     pulumi.Bool(false),\n\t\t\tHardDelete: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SchemaRegistryKek;\nimport com.pulumi.confluentcloud.SchemaRegistryKekArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var pii = new SchemaRegistryKek(\"pii\", SchemaRegistryKekArgs.builder()\n            .name(\"my_key\")\n            .kmsType(\"aws-kms\")\n            .kmsKeyId(\"key_id\")\n            .doc(\"test key\")\n            .shared(false)\n            .hardDelete(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pii:\n    type: confluentcloud:SchemaRegistryKek\n    properties:\n      name: my_key\n      kmsType: aws-kms\n      kmsKeyId: key_id\n      doc: test key\n      shared: false\n      hardDelete: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end example might help to get started with field-level encryption:\n  * field-level-encryption-schema\n\n## Import\n\nYou can import a Schema Registry Key by using the Schema Registry cluster ID, Kek name in the format `\u003cSchema Registry cluster ID\u003e/\u003cKek name\u003e`, for example:\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT=\"\u003cschema_registry_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/schemaRegistryKek:SchemaRegistryKek aws_key lsrc-8wrx70/aws_key\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/SchemaRegistryKekCredentials:SchemaRegistryKekCredentials","description":"The Cluster API Credentials.","secret":true},"doc":{"type":"string","description":"The optional description for the KEK.\n"},"hardDelete":{"type":"boolean","description":"The optional flag to control whether a kek should be soft or hard deleted. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_schema_registry_kek.pii\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_schema_registry_kek.pii\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-go=\"`SchemaRegistryKek`\" pulumi-lang-python=\"`SchemaRegistryKek`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryKek`\"\u003e`confluentcloud.SchemaRegistryKek`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"kmsKeyId":{"type":"string","description":"The ID of the key from KMS. \n- When using the AWS KMS, this is an ARN, for example, `arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789abc`.\n- When using the Azure Key Vault, this is a Key Identifier (URI), for example, `https://test-keyvault1.vault.azure.net/keys/test-key1/1234567890abcdef1234567890abcdef`.\n- When using the GCP KMS, this is a resource name, for example, `projects/test-project1/locations/us-central1/keyRings/test-keyRing1/cryptoKeys/test-key1`.\n"},"kmsType":{"type":"string","description":"The type of Key Management Service (KMS). The supported values include `aws-kms`, `azure-kms`, and `gcp-kms`. Additionally, custom KMS types are supported as well.\n"},"name":{"type":"string","description":"The name for the KEK.\n"},"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom properties to set (for example, `KeyUsage=ENCRYPT_DECRYPT`, `KeyState=Enabled`):\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaRegistryKekSchemaRegistryCluster:SchemaRegistryKekSchemaRegistryCluster"},"shared":{"type":"boolean","description":"The optional flag to control whether the DEK Registry has shared access to the KMS. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"}},"required":["doc","kmsKeyId","kmsType","name","properties"],"inputProperties":{"credentials":{"$ref":"#/types/confluentcloud:index/SchemaRegistryKekCredentials:SchemaRegistryKekCredentials","description":"The Cluster API Credentials.","secret":true},"doc":{"type":"string","description":"The optional description for the KEK.\n"},"hardDelete":{"type":"boolean","description":"The optional flag to control whether a kek should be soft or hard deleted. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_schema_registry_kek.pii\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_schema_registry_kek.pii\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-go=\"`SchemaRegistryKek`\" pulumi-lang-python=\"`SchemaRegistryKek`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryKek`\"\u003e`confluentcloud.SchemaRegistryKek`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"kmsKeyId":{"type":"string","description":"The ID of the key from KMS. \n- When using the AWS KMS, this is an ARN, for example, `arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789abc`.\n- When using the Azure Key Vault, this is a Key Identifier (URI), for example, `https://test-keyvault1.vault.azure.net/keys/test-key1/1234567890abcdef1234567890abcdef`.\n- When using the GCP KMS, this is a resource name, for example, `projects/test-project1/locations/us-central1/keyRings/test-keyRing1/cryptoKeys/test-key1`.\n","willReplaceOnChanges":true},"kmsType":{"type":"string","description":"The type of Key Management Service (KMS). The supported values include `aws-kms`, `azure-kms`, and `gcp-kms`. Additionally, custom KMS types are supported as well.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name for the KEK.\n","willReplaceOnChanges":true},"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom properties to set (for example, `KeyUsage=ENCRYPT_DECRYPT`, `KeyState=Enabled`):\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaRegistryKekSchemaRegistryCluster:SchemaRegistryKekSchemaRegistryCluster","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"The optional flag to control whether the DEK Registry has shared access to the KMS. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"}},"requiredInputs":["kmsKeyId","kmsType"],"stateInputs":{"description":"Input properties used for looking up and filtering SchemaRegistryKek resources.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/SchemaRegistryKekCredentials:SchemaRegistryKekCredentials","description":"The Cluster API Credentials.","secret":true},"doc":{"type":"string","description":"The optional description for the KEK.\n"},"hardDelete":{"type":"boolean","description":"The optional flag to control whether a kek should be soft or hard deleted. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_schema_registry_kek.pii\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_schema_registry_kek.pii\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-go=\"`SchemaRegistryKek`\" pulumi-lang-python=\"`SchemaRegistryKek`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryKek`\"\u003e`confluentcloud.SchemaRegistryKek`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"kmsKeyId":{"type":"string","description":"The ID of the key from KMS. \n- When using the AWS KMS, this is an ARN, for example, `arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789abc`.\n- When using the Azure Key Vault, this is a Key Identifier (URI), for example, `https://test-keyvault1.vault.azure.net/keys/test-key1/1234567890abcdef1234567890abcdef`.\n- When using the GCP KMS, this is a resource name, for example, `projects/test-project1/locations/us-central1/keyRings/test-keyRing1/cryptoKeys/test-key1`.\n","willReplaceOnChanges":true},"kmsType":{"type":"string","description":"The type of Key Management Service (KMS). The supported values include `aws-kms`, `azure-kms`, and `gcp-kms`. Additionally, custom KMS types are supported as well.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name for the KEK.\n","willReplaceOnChanges":true},"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"The custom properties to set (for example, `KeyUsage=ENCRYPT_DECRYPT`, `KeyState=Enabled`):\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SchemaRegistryKekSchemaRegistryCluster:SchemaRegistryKekSchemaRegistryCluster","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"The optional flag to control whether the DEK Registry has shared access to the KMS. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"}},"type":"object"}},"confluentcloud:index/serviceAccount:ServiceAccount":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ServiceAccount`\" pulumi-lang-dotnet=\"`confluentcloud.ServiceAccount`\" pulumi-lang-go=\"`ServiceAccount`\" pulumi-lang-python=\"`ServiceAccount`\" pulumi-lang-yaml=\"`confluentcloud.ServiceAccount`\" pulumi-lang-java=\"`confluentcloud.ServiceAccount`\"\u003e`confluentcloud.ServiceAccount`\u003c/span\u003e provides a Service Account resource that enables creating, editing, and deleting service accounts on Confluent Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example_sa = new confluentcloud.ServiceAccount(\"example-sa\", {\n    displayName: \"orders-app-sa\",\n    description: \"Service Account for orders app\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_sa = confluentcloud.ServiceAccount(\"example-sa\",\n    display_name=\"orders-app-sa\",\n    description=\"Service Account for orders app\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example_sa = new ConfluentCloud.ServiceAccount(\"example-sa\", new()\n    {\n        DisplayName = \"orders-app-sa\",\n        Description = \"Service Account for orders app\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewServiceAccount(ctx, \"example-sa\", \u0026confluentcloud.ServiceAccountArgs{\n\t\t\tDisplayName: pulumi.String(\"orders-app-sa\"),\n\t\t\tDescription: pulumi.String(\"Service Account for orders app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ServiceAccount;\nimport com.pulumi.confluentcloud.ServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example_sa = new ServiceAccount(\"example-sa\", ServiceAccountArgs.builder()\n            .displayName(\"orders-app-sa\")\n            .description(\"Service Account for orders app\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-sa:\n    type: confluentcloud:ServiceAccount\n    properties:\n      displayName: orders-app-sa\n      description: Service Account for orders app\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ServiceAccount`\" pulumi-lang-dotnet=\"`confluentcloud.ServiceAccount`\" pulumi-lang-go=\"`ServiceAccount`\" pulumi-lang-python=\"`ServiceAccount`\" pulumi-lang-yaml=\"`confluentcloud.ServiceAccount`\" pulumi-lang-java=\"`confluentcloud.ServiceAccount`\"\u003e`confluentcloud.ServiceAccount`\u003c/span\u003e resource:\n  * basic-kafka-acls: _Basic_ Kafka cluster with authorization using ACLs\n  * basic-kafka-acls-with-alias: _Basic_ Kafka cluster with authorization using ACLs\n  * standard-kafka-acls: _Standard_ Kafka cluster with authorization using ACLs\n  * standard-kafka-rbac: _Standard_ Kafka cluster with authorization using RBAC\n  * dedicated-public-kafka-acls: _Dedicated_ Kafka cluster that is accessible over the public internet with authorization using ACLs\n  * dedicated-public-kafka-rbac: _Dedicated_ Kafka cluster that is accessible over the public internet with authorization using RBAC\n  * dedicated-privatelink-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-privatelink-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using RBAC\n  * dedicated-privatelink-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using ACLs\n  * dedicated-private-service-connect-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via Private Service Connect connections with authorization using RBAC\n  * dedicated-vnet-peering-azure-kafka-acls: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vnet-peering-azure-kafka-rbac: _Dedicated_ Kafka cluster on Azure that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-vpc-peering-gcp-kafka-acls: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using ACLs\n  * dedicated-vpc-peering-gcp-kafka-rbac: _Dedicated_ Kafka cluster on GCP that is accessible via VPC Peering connections with authorization using RBAC\n  * dedicated-transit-gateway-attachment-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using ACLs\n  * dedicated-transit-gateway-attachment-aws-kafka-rbac: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using RBAC\n  * enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Service Account.\n\nYou can import a Service Account by using Service Account ID, for example:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/serviceAccount:ServiceAccount my_sa sa-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"apiVersion":{"type":"string","description":"(Required String) An API Version of the schema version of the Service Account, for example, `iam/v2`.\n"},"description":{"type":"string","description":"A free-form description of the Service Account.\n"},"displayName":{"type":"string","description":"A human-readable name for the Service Account.\n"},"kind":{"type":"string","description":"(Required String) A kind of the Service Account, for example, `ServiceAccount`.\n"}},"required":["apiVersion","displayName","kind"],"inputProperties":{"description":{"type":"string","description":"A free-form description of the Service Account.\n"},"displayName":{"type":"string","description":"A human-readable name for the Service Account.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering ServiceAccount resources.\n","properties":{"apiVersion":{"type":"string","description":"(Required String) An API Version of the schema version of the Service Account, for example, `iam/v2`.\n"},"description":{"type":"string","description":"A free-form description of the Service Account.\n"},"displayName":{"type":"string","description":"A human-readable name for the Service Account.\n"},"kind":{"type":"string","description":"(Required String) A kind of the Service Account, for example, `ServiceAccount`.\n"}},"type":"object"}},"confluentcloud:index/subjectConfig:SubjectConfig":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.SubjectConfig`\" pulumi-lang-dotnet=\"`confluentcloud.SubjectConfig`\" pulumi-lang-go=\"`SubjectConfig`\" pulumi-lang-python=\"`SubjectConfig`\" pulumi-lang-yaml=\"`confluentcloud.SubjectConfig`\" pulumi-lang-java=\"`confluentcloud.SubjectConfig`\"\u003e`confluentcloud.SubjectConfig`\u003c/span\u003e provides a Subject Config resource that enables updating Subject Config on a Schema Registry cluster on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental subject config deletion. This setting rejects plans that would destroy or recreate the subject config, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.SubjectConfig(\"example\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentialsConfluentSchemaRegistryCluster.restEndpoint,\n    subjectName: \"proto-purchase-value\",\n    compatibilityLevel: \"BACKWARD\",\n    compatibilityGroup: \"abc.cg.version\",\n    normalize: true,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.SubjectConfig(\"example\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials_confluent_schema_registry_cluster[\"restEndpoint\"],\n    subject_name=\"proto-purchase-value\",\n    compatibility_level=\"BACKWARD\",\n    compatibility_group=\"abc.cg.version\",\n    normalize=True,\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.SubjectConfig(\"example\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.SubjectConfigSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentialsConfluentSchemaRegistryCluster.RestEndpoint,\n        SubjectName = \"proto-purchase-value\",\n        CompatibilityLevel = \"BACKWARD\",\n        CompatibilityGroup = \"abc.cg.version\",\n        Normalize = true,\n        Credentials = new ConfluentCloud.Inputs.SubjectConfigCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSubjectConfig(ctx, \"example\", \u0026confluentcloud.SubjectConfigArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.SubjectConfigSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint:       pulumi.Any(essentialsConfluentSchemaRegistryCluster.RestEndpoint),\n\t\t\tSubjectName:        pulumi.String(\"proto-purchase-value\"),\n\t\t\tCompatibilityLevel: pulumi.String(\"BACKWARD\"),\n\t\t\tCompatibilityGroup: pulumi.String(\"abc.cg.version\"),\n\t\t\tNormalize:          pulumi.Bool(true),\n\t\t\tCredentials: \u0026confluentcloud.SubjectConfigCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SubjectConfig;\nimport com.pulumi.confluentcloud.SubjectConfigArgs;\nimport com.pulumi.confluentcloud.inputs.SubjectConfigSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.SubjectConfigCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new SubjectConfig(\"example\", SubjectConfigArgs.builder()\n            .schemaRegistryCluster(SubjectConfigSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentialsConfluentSchemaRegistryCluster.restEndpoint())\n            .subjectName(\"proto-purchase-value\")\n            .compatibilityLevel(\"BACKWARD\")\n            .compatibilityGroup(\"abc.cg.version\")\n            .normalize(true)\n            .credentials(SubjectConfigCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:SubjectConfig\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentialsConfluentSchemaRegistryCluster.restEndpoint}\n      subjectName: proto-purchase-value\n      compatibilityLevel: BACKWARD\n      compatibilityGroup: abc.cg.version\n      normalize: true\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.SubjectConfig(\"example\", {\n    subjectName: \"proto-purchase-value\",\n    compatibilityLevel: \"BACKWARD\",\n    compatibilityGroup: \"abc.cg.version\",\n    normalize: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.SubjectConfig(\"example\",\n    subject_name=\"proto-purchase-value\",\n    compatibility_level=\"BACKWARD\",\n    compatibility_group=\"abc.cg.version\",\n    normalize=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.SubjectConfig(\"example\", new()\n    {\n        SubjectName = \"proto-purchase-value\",\n        CompatibilityLevel = \"BACKWARD\",\n        CompatibilityGroup = \"abc.cg.version\",\n        Normalize = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSubjectConfig(ctx, \"example\", \u0026confluentcloud.SubjectConfigArgs{\n\t\t\tSubjectName:        pulumi.String(\"proto-purchase-value\"),\n\t\t\tCompatibilityLevel: pulumi.String(\"BACKWARD\"),\n\t\t\tCompatibilityGroup: pulumi.String(\"abc.cg.version\"),\n\t\t\tNormalize:          pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SubjectConfig;\nimport com.pulumi.confluentcloud.SubjectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new SubjectConfig(\"example\", SubjectConfigArgs.builder()\n            .subjectName(\"proto-purchase-value\")\n            .compatibilityLevel(\"BACKWARD\")\n            .compatibilityGroup(\"abc.cg.version\")\n            .normalize(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:SubjectConfig\n    properties:\n      subjectName: proto-purchase-value\n      compatibilityLevel: BACKWARD\n      compatibilityGroup: abc.cg.version\n      normalize: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example: Creating a Subject Alias\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\nimport * as std from \"@pulumi/std\";\n\n// First, ensure the original subject exists with a schema\nconst original = new confluentcloud.Schema(\"original\", {\n    subjectName: \"orders-long-subject-name-value\",\n    format: \"AVRO\",\n    schema: std.index.file({\n        input: \"./schemas/avro/orders.avsc\",\n    }).result,\n});\n// Create an alias that points to the original subject\n// Any reference to \"orders-value\" will now resolve to \"orders-long-subject-name-value\"\nconst ordersAlias = new confluentcloud.SubjectConfig(\"orders_alias\", {\n    subjectName: \"orders-value\",\n    alias: \"orders-long-subject-name-value\",\n}, {\n    dependsOn: [original],\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\nimport pulumi_std as std\n\n# First, ensure the original subject exists with a schema\noriginal = confluentcloud.Schema(\"original\",\n    subject_name=\"orders-long-subject-name-value\",\n    format=\"AVRO\",\n    schema=std.index.file(input=\"./schemas/avro/orders.avsc\")[\"result\"])\n# Create an alias that points to the original subject\n# Any reference to \"orders-value\" will now resolve to \"orders-long-subject-name-value\"\norders_alias = confluentcloud.SubjectConfig(\"orders_alias\",\n    subject_name=\"orders-value\",\n    alias=\"orders-long-subject-name-value\",\n    opts = pulumi.ResourceOptions(depends_on=[original]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // First, ensure the original subject exists with a schema\n    var original = new ConfluentCloud.Schema(\"original\", new()\n    {\n        SubjectName = \"orders-long-subject-name-value\",\n        Format = \"AVRO\",\n        SchemaDetails = Std.Index.File.Invoke(new()\n        {\n            Input = \"./schemas/avro/orders.avsc\",\n        }).Result,\n    });\n\n    // Create an alias that points to the original subject\n    // Any reference to \"orders-value\" will now resolve to \"orders-long-subject-name-value\"\n    var ordersAlias = new ConfluentCloud.SubjectConfig(\"orders_alias\", new()\n    {\n        SubjectName = \"orders-value\",\n        Alias = \"orders-long-subject-name-value\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            original,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"./schemas/avro/orders.avsc\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// First, ensure the original subject exists with a schema\n\t\toriginal, err := confluentcloud.NewSchema(ctx, \"original\", \u0026confluentcloud.SchemaArgs{\n\t\t\tSubjectName: pulumi.String(\"orders-long-subject-name-value\"),\n\t\t\tFormat:      pulumi.String(\"AVRO\"),\n\t\t\tSchema:      invokeFile.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create an alias that points to the original subject\n\t\t// Any reference to \"orders-value\" will now resolve to \"orders-long-subject-name-value\"\n\t\t_, err = confluentcloud.NewSubjectConfig(ctx, \"orders_alias\", \u0026confluentcloud.SubjectConfigArgs{\n\t\t\tSubjectName: pulumi.String(\"orders-value\"),\n\t\t\tAlias:       pulumi.String(\"orders-long-subject-name-value\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\toriginal,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Schema;\nimport com.pulumi.confluentcloud.SchemaArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.confluentcloud.SubjectConfig;\nimport com.pulumi.confluentcloud.SubjectConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // First, ensure the original subject exists with a schema\n        var original = new Schema(\"original\", SchemaArgs.builder()\n            .subjectName(\"orders-long-subject-name-value\")\n            .format(\"AVRO\")\n            .schema(StdFunctions.file(Map.of(\"input\", \"./schemas/avro/orders.avsc\")).result())\n            .build());\n\n        // Create an alias that points to the original subject\n        // Any reference to \"orders-value\" will now resolve to \"orders-long-subject-name-value\"\n        var ordersAlias = new SubjectConfig(\"ordersAlias\", SubjectConfigArgs.builder()\n            .subjectName(\"orders-value\")\n            .alias(\"orders-long-subject-name-value\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(original)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # First, ensure the original subject exists with a schema\n  original:\n    type: confluentcloud:Schema\n    properties:\n      subjectName: orders-long-subject-name-value\n      format: AVRO\n      schema:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ./schemas/avro/orders.avsc\n          return: result\n  # Create an alias that points to the original subject\n  # Any reference to \"orders-value\" will now resolve to \"orders-long-subject-name-value\"\n  ordersAlias:\n    type: confluentcloud:SubjectConfig\n    name: orders_alias\n    properties:\n      subjectName: orders-value\n      alias: orders-long-subject-name-value\n    options:\n      dependsOn:\n        - ${original}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import a Subject Config by using the Schema Registry cluster ID, Subject name in the format `\u003cSchema Registry cluster ID\u003e/\u003cSubject name\u003e`, for example:\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT=\"\u003cschema_registry_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/subjectConfig:SubjectConfig example lsrc-abc123/test-subject\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"alias":{"type":"string","description":"The subject name that this subject is an alias for. Any reference to this subject will be replaced by the alias. See [Subject Aliases](https://docs.confluent.io/platform/current/schema-registry/fundamentals/index.html#subject-aliases) for more details.\n\n\u003e **Note:** To create an alias for a subject, create a new subject config where \u003cspan pulumi-lang-nodejs=\"`subjectName`\" pulumi-lang-dotnet=\"`SubjectName`\" pulumi-lang-go=\"`subjectName`\" pulumi-lang-python=\"`subject_name`\" pulumi-lang-yaml=\"`subjectName`\" pulumi-lang-java=\"`subjectName`\"\u003e`subject_name`\u003c/span\u003e is the alias and \u003cspan pulumi-lang-nodejs=\"`alias`\" pulumi-lang-dotnet=\"`Alias`\" pulumi-lang-go=\"`alias`\" pulumi-lang-python=\"`alias`\" pulumi-lang-yaml=\"`alias`\" pulumi-lang-java=\"`alias`\"\u003e`alias`\u003c/span\u003e points to the real subject. For example, to create an alias `short-name` that points to subject `very-long-subject-name`, set \u003cspan pulumi-lang-nodejs=\"`subjectName \" pulumi-lang-dotnet=\"`SubjectName \" pulumi-lang-go=\"`subjectName \" pulumi-lang-python=\"`subject_name \" pulumi-lang-yaml=\"`subjectName \" pulumi-lang-java=\"`subjectName \"\u003e`subject_name \u003c/span\u003e= \"short-name\"` and `alias = \"very-long-subject-name\"`.\n"},"compatibilityGroup":{"type":"string","description":"The Compatibility Group of the specified subject.\n"},"compatibilityLevel":{"type":"string","description":"The Compatibility Level of the specified subject. Accepted values are: `BACKWARD`, `BACKWARD_TRANSITIVE`, `FORWARD`, `FORWARD_TRANSITIVE`, `FULL`, `FULL_TRANSITIVE`, and `NONE`. See the [Compatibility Types](https://docs.confluent.io/platform/current/schema-registry/avro.html#compatibility-types) for more details.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/SubjectConfigCredentials:SubjectConfigCredentials","description":"The Cluster API Credentials.","secret":true},"normalize":{"type":"boolean","description":"Whether schemas are automatically normalized when registered or passed during lookups.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SubjectConfigSchemaRegistryCluster:SubjectConfigSchemaRegistryCluster"},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`.\n\n\u003e **Note:** If you want to reference the subject that is located in a custom context, use the following naming pattern: `:.contextName:subjectName`. For example, use \u003cspan pulumi-lang-nodejs=\"`subjectName \" pulumi-lang-dotnet=\"`SubjectName \" pulumi-lang-go=\"`subjectName \" pulumi-lang-python=\"`subject_name \" pulumi-lang-yaml=\"`subjectName \" pulumi-lang-java=\"`subjectName \"\u003e`subject_name \u003c/span\u003e= \":.context1:test-subject\"` to reference the subject named `test-subject` in the \u003cspan pulumi-lang-nodejs=\"`context1`\" pulumi-lang-dotnet=\"`Context1`\" pulumi-lang-go=\"`context1`\" pulumi-lang-python=\"`context1`\" pulumi-lang-yaml=\"`context1`\" pulumi-lang-java=\"`context1`\"\u003e`context1`\u003c/span\u003e context, and use \u003cspan pulumi-lang-nodejs=\"`subjectName \" pulumi-lang-dotnet=\"`SubjectName \" pulumi-lang-go=\"`subjectName \" pulumi-lang-python=\"`subject_name \" pulumi-lang-yaml=\"`subjectName \" pulumi-lang-java=\"`subjectName \"\u003e`subject_name \u003c/span\u003e= \"test-subject\"` to reference the subject named `test-subject` in the \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e context.\n\n\u003e **Note:** To configure a config at the context level, affecting all subjects created within that context, use the following naming pattern: `:.contextName:`. For example, to set the global configuration for the \u003cspan pulumi-lang-nodejs=\"`context1`\" pulumi-lang-dotnet=\"`Context1`\" pulumi-lang-go=\"`context1`\" pulumi-lang-python=\"`context1`\" pulumi-lang-yaml=\"`context1`\" pulumi-lang-java=\"`context1`\"\u003e`context1`\u003c/span\u003e context, use \u003cspan pulumi-lang-nodejs=\"`subjectName \" pulumi-lang-dotnet=\"`SubjectName \" pulumi-lang-go=\"`subjectName \" pulumi-lang-python=\"`subject_name \" pulumi-lang-yaml=\"`subjectName \" pulumi-lang-java=\"`subjectName \"\u003e`subject_name \u003c/span\u003e= \":.context1:\"`.\n"}},"required":["alias","compatibilityGroup","compatibilityLevel","normalize","subjectName"],"inputProperties":{"alias":{"type":"string","description":"The subject name that this subject is an alias for. Any reference to this subject will be replaced by the alias. See [Subject Aliases](https://docs.confluent.io/platform/current/schema-registry/fundamentals/index.html#subject-aliases) for more details.\n\n\u003e **Note:** To create an alias for a subject, create a new subject config where \u003cspan pulumi-lang-nodejs=\"`subjectName`\" pulumi-lang-dotnet=\"`SubjectName`\" pulumi-lang-go=\"`subjectName`\" pulumi-lang-python=\"`subject_name`\" pulumi-lang-yaml=\"`subjectName`\" pulumi-lang-java=\"`subjectName`\"\u003e`subject_name`\u003c/span\u003e is the alias and \u003cspan pulumi-lang-nodejs=\"`alias`\" pulumi-lang-dotnet=\"`Alias`\" pulumi-lang-go=\"`alias`\" pulumi-lang-python=\"`alias`\" pulumi-lang-yaml=\"`alias`\" pulumi-lang-java=\"`alias`\"\u003e`alias`\u003c/span\u003e points to the real subject. For example, to create an alias `short-name` that points to subject `very-long-subject-name`, set \u003cspan pulumi-lang-nodejs=\"`subjectName \" pulumi-lang-dotnet=\"`SubjectName \" pulumi-lang-go=\"`subjectName \" pulumi-lang-python=\"`subject_name \" pulumi-lang-yaml=\"`subjectName \" pulumi-lang-java=\"`subjectName \"\u003e`subject_name \u003c/span\u003e= \"short-name\"` and `alias = \"very-long-subject-name\"`.\n"},"compatibilityGroup":{"type":"string","description":"The Compatibility Group of the specified subject.\n"},"compatibilityLevel":{"type":"string","description":"The Compatibility Level of the specified subject. Accepted values are: `BACKWARD`, `BACKWARD_TRANSITIVE`, `FORWARD`, `FORWARD_TRANSITIVE`, `FULL`, `FULL_TRANSITIVE`, and `NONE`. See the [Compatibility Types](https://docs.confluent.io/platform/current/schema-registry/avro.html#compatibility-types) for more details.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/SubjectConfigCredentials:SubjectConfigCredentials","description":"The Cluster API Credentials.","secret":true},"normalize":{"type":"boolean","description":"Whether schemas are automatically normalized when registered or passed during lookups.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SubjectConfigSchemaRegistryCluster:SubjectConfigSchemaRegistryCluster","willReplaceOnChanges":true},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`.\n\n\u003e **Note:** If you want to reference the subject that is located in a custom context, use the following naming pattern: `:.contextName:subjectName`. For example, use \u003cspan pulumi-lang-nodejs=\"`subjectName \" pulumi-lang-dotnet=\"`SubjectName \" pulumi-lang-go=\"`subjectName \" pulumi-lang-python=\"`subject_name \" pulumi-lang-yaml=\"`subjectName \" pulumi-lang-java=\"`subjectName \"\u003e`subject_name \u003c/span\u003e= \":.context1:test-subject\"` to reference the subject named `test-subject` in the \u003cspan pulumi-lang-nodejs=\"`context1`\" pulumi-lang-dotnet=\"`Context1`\" pulumi-lang-go=\"`context1`\" pulumi-lang-python=\"`context1`\" pulumi-lang-yaml=\"`context1`\" pulumi-lang-java=\"`context1`\"\u003e`context1`\u003c/span\u003e context, and use \u003cspan pulumi-lang-nodejs=\"`subjectName \" pulumi-lang-dotnet=\"`SubjectName \" pulumi-lang-go=\"`subjectName \" pulumi-lang-python=\"`subject_name \" pulumi-lang-yaml=\"`subjectName \" pulumi-lang-java=\"`subjectName \"\u003e`subject_name \u003c/span\u003e= \"test-subject\"` to reference the subject named `test-subject` in the \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e context.\n\n\u003e **Note:** To configure a config at the context level, affecting all subjects created within that context, use the following naming pattern: `:.contextName:`. For example, to set the global configuration for the \u003cspan pulumi-lang-nodejs=\"`context1`\" pulumi-lang-dotnet=\"`Context1`\" pulumi-lang-go=\"`context1`\" pulumi-lang-python=\"`context1`\" pulumi-lang-yaml=\"`context1`\" pulumi-lang-java=\"`context1`\"\u003e`context1`\u003c/span\u003e context, use \u003cspan pulumi-lang-nodejs=\"`subjectName \" pulumi-lang-dotnet=\"`SubjectName \" pulumi-lang-go=\"`subjectName \" pulumi-lang-python=\"`subject_name \" pulumi-lang-yaml=\"`subjectName \" pulumi-lang-java=\"`subjectName \"\u003e`subject_name \u003c/span\u003e= \":.context1:\"`.\n","willReplaceOnChanges":true}},"requiredInputs":["subjectName"],"stateInputs":{"description":"Input properties used for looking up and filtering SubjectConfig resources.\n","properties":{"alias":{"type":"string","description":"The subject name that this subject is an alias for. Any reference to this subject will be replaced by the alias. See [Subject Aliases](https://docs.confluent.io/platform/current/schema-registry/fundamentals/index.html#subject-aliases) for more details.\n\n\u003e **Note:** To create an alias for a subject, create a new subject config where \u003cspan pulumi-lang-nodejs=\"`subjectName`\" pulumi-lang-dotnet=\"`SubjectName`\" pulumi-lang-go=\"`subjectName`\" pulumi-lang-python=\"`subject_name`\" pulumi-lang-yaml=\"`subjectName`\" pulumi-lang-java=\"`subjectName`\"\u003e`subject_name`\u003c/span\u003e is the alias and \u003cspan pulumi-lang-nodejs=\"`alias`\" pulumi-lang-dotnet=\"`Alias`\" pulumi-lang-go=\"`alias`\" pulumi-lang-python=\"`alias`\" pulumi-lang-yaml=\"`alias`\" pulumi-lang-java=\"`alias`\"\u003e`alias`\u003c/span\u003e points to the real subject. For example, to create an alias `short-name` that points to subject `very-long-subject-name`, set \u003cspan pulumi-lang-nodejs=\"`subjectName \" pulumi-lang-dotnet=\"`SubjectName \" pulumi-lang-go=\"`subjectName \" pulumi-lang-python=\"`subject_name \" pulumi-lang-yaml=\"`subjectName \" pulumi-lang-java=\"`subjectName \"\u003e`subject_name \u003c/span\u003e= \"short-name\"` and `alias = \"very-long-subject-name\"`.\n"},"compatibilityGroup":{"type":"string","description":"The Compatibility Group of the specified subject.\n"},"compatibilityLevel":{"type":"string","description":"The Compatibility Level of the specified subject. Accepted values are: `BACKWARD`, `BACKWARD_TRANSITIVE`, `FORWARD`, `FORWARD_TRANSITIVE`, `FULL`, `FULL_TRANSITIVE`, and `NONE`. See the [Compatibility Types](https://docs.confluent.io/platform/current/schema-registry/avro.html#compatibility-types) for more details.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/SubjectConfigCredentials:SubjectConfigCredentials","description":"The Cluster API Credentials.","secret":true},"normalize":{"type":"boolean","description":"Whether schemas are automatically normalized when registered or passed during lookups.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SubjectConfigSchemaRegistryCluster:SubjectConfigSchemaRegistryCluster","willReplaceOnChanges":true},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`.\n\n\u003e **Note:** If you want to reference the subject that is located in a custom context, use the following naming pattern: `:.contextName:subjectName`. For example, use \u003cspan pulumi-lang-nodejs=\"`subjectName \" pulumi-lang-dotnet=\"`SubjectName \" pulumi-lang-go=\"`subjectName \" pulumi-lang-python=\"`subject_name \" pulumi-lang-yaml=\"`subjectName \" pulumi-lang-java=\"`subjectName \"\u003e`subject_name \u003c/span\u003e= \":.context1:test-subject\"` to reference the subject named `test-subject` in the \u003cspan pulumi-lang-nodejs=\"`context1`\" pulumi-lang-dotnet=\"`Context1`\" pulumi-lang-go=\"`context1`\" pulumi-lang-python=\"`context1`\" pulumi-lang-yaml=\"`context1`\" pulumi-lang-java=\"`context1`\"\u003e`context1`\u003c/span\u003e context, and use \u003cspan pulumi-lang-nodejs=\"`subjectName \" pulumi-lang-dotnet=\"`SubjectName \" pulumi-lang-go=\"`subjectName \" pulumi-lang-python=\"`subject_name \" pulumi-lang-yaml=\"`subjectName \" pulumi-lang-java=\"`subjectName \"\u003e`subject_name \u003c/span\u003e= \"test-subject\"` to reference the subject named `test-subject` in the \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e context.\n\n\u003e **Note:** To configure a config at the context level, affecting all subjects created within that context, use the following naming pattern: `:.contextName:`. For example, to set the global configuration for the \u003cspan pulumi-lang-nodejs=\"`context1`\" pulumi-lang-dotnet=\"`Context1`\" pulumi-lang-go=\"`context1`\" pulumi-lang-python=\"`context1`\" pulumi-lang-yaml=\"`context1`\" pulumi-lang-java=\"`context1`\"\u003e`context1`\u003c/span\u003e context, use \u003cspan pulumi-lang-nodejs=\"`subjectName \" pulumi-lang-dotnet=\"`SubjectName \" pulumi-lang-go=\"`subjectName \" pulumi-lang-python=\"`subject_name \" pulumi-lang-yaml=\"`subjectName \" pulumi-lang-java=\"`subjectName \"\u003e`subject_name \u003c/span\u003e= \":.context1:\"`.\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/subjectMode:SubjectMode":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.SubjectMode`\" pulumi-lang-dotnet=\"`confluentcloud.SubjectMode`\" pulumi-lang-go=\"`SubjectMode`\" pulumi-lang-python=\"`SubjectMode`\" pulumi-lang-yaml=\"`confluentcloud.SubjectMode`\" pulumi-lang-java=\"`confluentcloud.SubjectMode`\"\u003e`confluentcloud.SubjectMode`\u003c/span\u003e provides a Subject Mode resource that enables updating Subject Mode on a Schema Registry cluster on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental subject mode deletion. This setting rejects plans that would destroy or recreate the subject mode, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.SubjectMode(\"example\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    subjectName: \"proto-purchase-value\",\n    mode: \"READONLY\",\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.SubjectMode(\"example\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    subject_name=\"proto-purchase-value\",\n    mode=\"READONLY\",\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.SubjectMode(\"example\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.SubjectModeSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        SubjectName = \"proto-purchase-value\",\n        Mode = \"READONLY\",\n        Credentials = new ConfluentCloud.Inputs.SubjectModeCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSubjectMode(ctx, \"example\", \u0026confluentcloud.SubjectModeArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.SubjectModeSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tSubjectName:  pulumi.String(\"proto-purchase-value\"),\n\t\t\tMode:         pulumi.String(\"READONLY\"),\n\t\t\tCredentials: \u0026confluentcloud.SubjectModeCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SubjectMode;\nimport com.pulumi.confluentcloud.SubjectModeArgs;\nimport com.pulumi.confluentcloud.inputs.SubjectModeSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.SubjectModeCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new SubjectMode(\"example\", SubjectModeArgs.builder()\n            .schemaRegistryCluster(SubjectModeSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .subjectName(\"proto-purchase-value\")\n            .mode(\"READONLY\")\n            .credentials(SubjectModeCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:SubjectMode\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      subjectName: proto-purchase-value\n      mode: READONLY\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.SubjectMode(\"example\", {\n    subjectName: \"proto-purchase-value\",\n    mode: \"READONLY\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.SubjectMode(\"example\",\n    subject_name=\"proto-purchase-value\",\n    mode=\"READONLY\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.SubjectMode(\"example\", new()\n    {\n        SubjectName = \"proto-purchase-value\",\n        Mode = \"READONLY\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewSubjectMode(ctx, \"example\", \u0026confluentcloud.SubjectModeArgs{\n\t\t\tSubjectName: pulumi.String(\"proto-purchase-value\"),\n\t\t\tMode:        pulumi.String(\"READONLY\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.SubjectMode;\nimport com.pulumi.confluentcloud.SubjectModeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new SubjectMode(\"example\", SubjectModeArgs.builder()\n            .subjectName(\"proto-purchase-value\")\n            .mode(\"READONLY\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:SubjectMode\n    properties:\n      subjectName: proto-purchase-value\n      mode: READONLY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import a Subject Mode by using the Schema Registry cluster ID, Subject name in the format `\u003cSchema Registry cluster ID\u003e/\u003cSubject name\u003e`, for example:\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT=\"\u003cschema_registry_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/subjectMode:SubjectMode example lsrc-abc123/test-subject\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/SubjectModeCredentials:SubjectModeCredentials","description":"The Cluster API Credentials.","secret":true},"force":{"type":"boolean","description":"An optional flag to force a mode change even if the Schema Registry has existing schemas. This can be useful in disaster recovery (DR) scenarios using [Schema Linking](https://docs.confluent.io/cloud/current/sr/schema-linking.html). Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, which does not allow a mode change to `IMPORT` if Schema Registry has registered schemas. Must be unset when importing.\n"},"mode":{"type":"string","description":"The mode of the specified subject. Accepted values are: `READWRITE`, `READONLY`, `READONLY_OVERRIDE`, and `IMPORT`.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SubjectModeSchemaRegistryCluster:SubjectModeSchemaRegistryCluster"},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`.\n"}},"required":["mode","subjectName"],"inputProperties":{"credentials":{"$ref":"#/types/confluentcloud:index/SubjectModeCredentials:SubjectModeCredentials","description":"The Cluster API Credentials.","secret":true},"force":{"type":"boolean","description":"An optional flag to force a mode change even if the Schema Registry has existing schemas. This can be useful in disaster recovery (DR) scenarios using [Schema Linking](https://docs.confluent.io/cloud/current/sr/schema-linking.html). Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, which does not allow a mode change to `IMPORT` if Schema Registry has registered schemas. Must be unset when importing.\n"},"mode":{"type":"string","description":"The mode of the specified subject. Accepted values are: `READWRITE`, `READONLY`, `READONLY_OVERRIDE`, and `IMPORT`.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SubjectModeSchemaRegistryCluster:SubjectModeSchemaRegistryCluster","willReplaceOnChanges":true},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`.\n","willReplaceOnChanges":true}},"requiredInputs":["subjectName"],"stateInputs":{"description":"Input properties used for looking up and filtering SubjectMode resources.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/SubjectModeCredentials:SubjectModeCredentials","description":"The Cluster API Credentials.","secret":true},"force":{"type":"boolean","description":"An optional flag to force a mode change even if the Schema Registry has existing schemas. This can be useful in disaster recovery (DR) scenarios using [Schema Linking](https://docs.confluent.io/cloud/current/sr/schema-linking.html). Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, which does not allow a mode change to `IMPORT` if Schema Registry has registered schemas. Must be unset when importing.\n"},"mode":{"type":"string","description":"The mode of the specified subject. Accepted values are: `READWRITE`, `READONLY`, `READONLY_OVERRIDE`, and `IMPORT`.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/SubjectModeSchemaRegistryCluster:SubjectModeSchemaRegistryCluster","willReplaceOnChanges":true},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`.\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/tableflowTopic:TableflowTopic":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental tableflow topic deletion. This setting rejects plans that would destroy or recreate the tableflow topic, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n\u003e **Note:** Make sure to use \u003cspan pulumi-lang-nodejs=\"`confluentcloud.CatalogIntegration`\" pulumi-lang-dotnet=\"`confluentcloud.CatalogIntegration`\" pulumi-lang-go=\"`CatalogIntegration`\" pulumi-lang-python=\"`CatalogIntegration`\" pulumi-lang-yaml=\"`confluentcloud.CatalogIntegration`\" pulumi-lang-java=\"`confluentcloud.CatalogIntegration`\"\u003e`confluentcloud.CatalogIntegration`\u003c/span\u003e resource if you want to integrate Tableflow with AWS Glue Catalog, Snowflake Open Catalog, or Unity Catalog.\n\n## Example Usage\n\n### Option #1: Manage multiple Tableflow Topics in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.TableflowTopic(\"example\", {\n    managedStorages: [{}],\n    environment: {\n        id: staging.id,\n    },\n    kafkaCluster: {\n        id: stagingConfluentKafkaCluster.id,\n    },\n    displayName: orders.topicName,\n    tableFormats: [\n        \"ICEBERG\",\n        \"DELTA\",\n    ],\n    credentials: {\n        key: env_admin_tableflow_api_key.id,\n        secret: env_admin_tableflow_api_key.secret,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.TableflowTopic(\"example\",\n    managed_storages=[{}],\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    kafka_cluster={\n        \"id\": staging_confluent_kafka_cluster[\"id\"],\n    },\n    display_name=orders[\"topicName\"],\n    table_formats=[\n        \"ICEBERG\",\n        \"DELTA\",\n    ],\n    credentials={\n        \"key\": env_admin_tableflow_api_key[\"id\"],\n        \"secret\": env_admin_tableflow_api_key[\"secret\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.TableflowTopic(\"example\", new()\n    {\n        ManagedStorages = new[]\n        {\n            null,\n        },\n        Environment = new ConfluentCloud.Inputs.TableflowTopicEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.TableflowTopicKafkaClusterArgs\n        {\n            Id = stagingConfluentKafkaCluster.Id,\n        },\n        DisplayName = orders.TopicName,\n        TableFormats = new[]\n        {\n            \"ICEBERG\",\n            \"DELTA\",\n        },\n        Credentials = new ConfluentCloud.Inputs.TableflowTopicCredentialsArgs\n        {\n            Key = env_admin_tableflow_api_key.Id,\n            Secret = env_admin_tableflow_api_key.Secret,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewTableflowTopic(ctx, \"example\", \u0026confluentcloud.TableflowTopicArgs{\n\t\t\tManagedStorages: confluentcloud.TableflowTopicManagedStorageArray{\n\t\t\t\t\u0026confluentcloud.TableflowTopicManagedStorageArgs{},\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.TableflowTopicEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tKafkaCluster: \u0026confluentcloud.TableflowTopicKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(stagingConfluentKafkaCluster.Id),\n\t\t\t},\n\t\t\tDisplayName: pulumi.Any(orders.TopicName),\n\t\t\tTableFormats: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ICEBERG\"),\n\t\t\t\tpulumi.String(\"DELTA\"),\n\t\t\t},\n\t\t\tCredentials: \u0026confluentcloud.TableflowTopicCredentialsArgs{\n\t\t\t\tKey:    pulumi.Any(env_admin_tableflow_api_key.Id),\n\t\t\t\tSecret: pulumi.Any(env_admin_tableflow_api_key.Secret),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.TableflowTopic;\nimport com.pulumi.confluentcloud.TableflowTopicArgs;\nimport com.pulumi.confluentcloud.inputs.TableflowTopicManagedStorageArgs;\nimport com.pulumi.confluentcloud.inputs.TableflowTopicEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.TableflowTopicKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.TableflowTopicCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new TableflowTopic(\"example\", TableflowTopicArgs.builder()\n            .managedStorages(TableflowTopicManagedStorageArgs.builder()\n                .build())\n            .environment(TableflowTopicEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .kafkaCluster(TableflowTopicKafkaClusterArgs.builder()\n                .id(stagingConfluentKafkaCluster.id())\n                .build())\n            .displayName(orders.topicName())\n            .tableFormats(            \n                \"ICEBERG\",\n                \"DELTA\")\n            .credentials(TableflowTopicCredentialsArgs.builder()\n                .key(env_admin_tableflow_api_key.id())\n                .secret(env_admin_tableflow_api_key.secret())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:TableflowTopic\n    properties:\n      managedStorages:\n        - {}\n      environment:\n        id: ${staging.id}\n      kafkaCluster:\n        id: ${stagingConfluentKafkaCluster.id}\n      displayName: ${orders.topicName}\n      tableFormats:\n        - ICEBERG\n        - DELTA\n      credentials:\n        key: ${[\"env-admin-tableflow-api-key\"].id}\n        secret: ${[\"env-admin-tableflow-api-key\"].secret}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Tableflow Topic in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.TableflowTopic(\"example\", {\n    environment: {\n        id: staging.id,\n    },\n    kafkaCluster: {\n        id: stagingConfluentKafkaCluster.id,\n    },\n    displayName: orders.topicName,\n    byobAws: {\n        bucketName: \"bucket_1\",\n        providerIntegrationId: main.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.TableflowTopic(\"example\",\n    environment={\n        \"id\": staging[\"id\"],\n    },\n    kafka_cluster={\n        \"id\": staging_confluent_kafka_cluster[\"id\"],\n    },\n    display_name=orders[\"topicName\"],\n    byob_aws={\n        \"bucket_name\": \"bucket_1\",\n        \"provider_integration_id\": main[\"id\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.TableflowTopic(\"example\", new()\n    {\n        Environment = new ConfluentCloud.Inputs.TableflowTopicEnvironmentArgs\n        {\n            Id = staging.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.TableflowTopicKafkaClusterArgs\n        {\n            Id = stagingConfluentKafkaCluster.Id,\n        },\n        DisplayName = orders.TopicName,\n        ByobAws = new ConfluentCloud.Inputs.TableflowTopicByobAwsArgs\n        {\n            BucketName = \"bucket_1\",\n            ProviderIntegrationId = main.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewTableflowTopic(ctx, \"example\", \u0026confluentcloud.TableflowTopicArgs{\n\t\t\tEnvironment: \u0026confluentcloud.TableflowTopicEnvironmentArgs{\n\t\t\t\tId: pulumi.Any(staging.Id),\n\t\t\t},\n\t\t\tKafkaCluster: \u0026confluentcloud.TableflowTopicKafkaClusterArgs{\n\t\t\t\tId: pulumi.Any(stagingConfluentKafkaCluster.Id),\n\t\t\t},\n\t\t\tDisplayName: pulumi.Any(orders.TopicName),\n\t\t\tByobAws: \u0026confluentcloud.TableflowTopicByobAwsArgs{\n\t\t\t\tBucketName:            pulumi.String(\"bucket_1\"),\n\t\t\t\tProviderIntegrationId: pulumi.Any(main.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.TableflowTopic;\nimport com.pulumi.confluentcloud.TableflowTopicArgs;\nimport com.pulumi.confluentcloud.inputs.TableflowTopicEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.TableflowTopicKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.TableflowTopicByobAwsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new TableflowTopic(\"example\", TableflowTopicArgs.builder()\n            .environment(TableflowTopicEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .kafkaCluster(TableflowTopicKafkaClusterArgs.builder()\n                .id(stagingConfluentKafkaCluster.id())\n                .build())\n            .displayName(orders.topicName())\n            .byobAws(TableflowTopicByobAwsArgs.builder()\n                .bucketName(\"bucket_1\")\n                .providerIntegrationId(main.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:TableflowTopic\n    properties:\n      environment:\n        id: ${staging.id}\n      kafkaCluster:\n        id: ${stagingConfluentKafkaCluster.id}\n      displayName: ${orders.topicName}\n      byobAws:\n        bucketName: bucket_1\n        providerIntegrationId: ${main.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nYou can import a Tableflow Topic by using the Tableflow Topic name, Environment ID, and Kafka Cluster ID, in the format `\u003cEnvironment ID\u003e/\u003cKafka Cluster ID\u003e/\u003cTableflow Topic name\u003e`, for example:\n\nOption #1: Manage multiple Tableflow Topics in the same Pulumi Stack\n\n```sh\n$ export IMPORT_TABLEFLOW_API_KEY=\"\u003ctableflow_api_key\u003e\"\n$ export IMPORT_TABLEFLOW_API_SECRET=\"\u003ctableflow_api_secret\u003e\"\n$ pulumi import confluentcloud:index/tableflowTopic:TableflowTopic example env-abc123/lkc-abc123/orders\n```\n\nOption #2: Manage a single Tableflow Topic in the same Pulumi Stack\n\n```sh\n$ pulumi import confluentcloud:index/tableflowTopic:TableflowTopic example env-abc123/lkc-abc123/orders\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"azureDataLakeStorageGen2":{"$ref":"#/types/confluentcloud:index/TableflowTopicAzureDataLakeStorageGen2:TableflowTopicAzureDataLakeStorageGen2","description":"(Optional Configuration Block) supports the following:\n"},"byobAws":{"$ref":"#/types/confluentcloud:index/TableflowTopicByobAws:TableflowTopicByobAws","description":"supports the following (See [Quick Start with Custom Storage](https://docs.confluent.io/cloud/current/topics/tableflow/get-started/quick-start-custom-storage-glue.html#cloud-tableflow-quick-start) for more details):\n"},"credentials":{"$ref":"#/types/confluentcloud:index/TableflowTopicCredentials:TableflowTopicCredentials","description":"The Cluster API Credentials.","secret":true},"displayName":{"type":"string","description":"The name of the Kafka topic for which Tableflow is enabled.\n"},"enableCompaction":{"type":"boolean","description":"(Optional Boolean) This flag determines whether to enable compaction for the Tableflow enabled topic.\n"},"enablePartitioning":{"type":"boolean","description":"(Optional Boolean) This flag determines whether to enable partitioning for the Tableflow enabled topic.\n"},"environment":{"$ref":"#/types/confluentcloud:index/TableflowTopicEnvironment:TableflowTopicEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"errorHandling":{"$ref":"#/types/confluentcloud:index/TableflowTopicErrorHandling:TableflowTopicErrorHandling"},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/TableflowTopicKafkaCluster:TableflowTopicKafkaCluster"},"managedStorages":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/TableflowTopicManagedStorage:TableflowTopicManagedStorage"},"description":"The configuration of the Confluent managed storage. See [Quick Start with Managed Storage](https://docs.confluent.io/cloud/current/topics/tableflow/get-started/quick-start-managed-storage.html#cloud-tableflow-quick-start-managed-storage) for more details.\n"},"recordFailureStrategy":{"type":"string","description":"The strategy to handle record failures in the Tableflow enabled topic during materialization. Accepted values are `SKIP`, `SUSPEND`. For `SKIP`, we skip the bad records and move to the next record. For `SUSPEND`, we suspend the materialization of the topic.\n","deprecationMessage":"This attribute is deprecated and will be removed in a future release."},"retentionMs":{"type":"string","description":"The max age of snapshots (Iceberg) or versions (Delta) (snapshot/version expiration) to keep on the table in milliseconds for the Tableflow enabled topic.\n"},"suspended":{"type":"boolean","description":"(Optional Boolean) Indicates whether the Tableflow should be suspended.\n"},"tableFormats":{"type":"array","items":{"type":"string"},"description":"The supported table formats for the Tableflow-enabled topic. Accepted values are `DELTA`, `ICEBERG`.\n"},"tablePath":{"type":"string","description":"(Optional String) The current storage path where the data and metadata is stored for this table.\n"},"writeMode":{"type":"string","description":"(Optional String) Indicates the write mode of the Tableflow topic.\n"}},"required":["displayName","enableCompaction","enablePartitioning","environment","errorHandling","kafkaCluster","recordFailureStrategy","suspended","tableFormats","tablePath","writeMode"],"inputProperties":{"azureDataLakeStorageGen2":{"$ref":"#/types/confluentcloud:index/TableflowTopicAzureDataLakeStorageGen2:TableflowTopicAzureDataLakeStorageGen2","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"byobAws":{"$ref":"#/types/confluentcloud:index/TableflowTopicByobAws:TableflowTopicByobAws","description":"supports the following (See [Quick Start with Custom Storage](https://docs.confluent.io/cloud/current/topics/tableflow/get-started/quick-start-custom-storage-glue.html#cloud-tableflow-quick-start) for more details):\n","willReplaceOnChanges":true},"credentials":{"$ref":"#/types/confluentcloud:index/TableflowTopicCredentials:TableflowTopicCredentials","description":"The Cluster API Credentials.","secret":true},"displayName":{"type":"string","description":"The name of the Kafka topic for which Tableflow is enabled.\n","willReplaceOnChanges":true},"environment":{"$ref":"#/types/confluentcloud:index/TableflowTopicEnvironment:TableflowTopicEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"errorHandling":{"$ref":"#/types/confluentcloud:index/TableflowTopicErrorHandling:TableflowTopicErrorHandling"},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/TableflowTopicKafkaCluster:TableflowTopicKafkaCluster","willReplaceOnChanges":true},"managedStorages":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/TableflowTopicManagedStorage:TableflowTopicManagedStorage"},"description":"The configuration of the Confluent managed storage. See [Quick Start with Managed Storage](https://docs.confluent.io/cloud/current/topics/tableflow/get-started/quick-start-managed-storage.html#cloud-tableflow-quick-start-managed-storage) for more details.\n"},"recordFailureStrategy":{"type":"string","description":"The strategy to handle record failures in the Tableflow enabled topic during materialization. Accepted values are `SKIP`, `SUSPEND`. For `SKIP`, we skip the bad records and move to the next record. For `SUSPEND`, we suspend the materialization of the topic.\n","deprecationMessage":"This attribute is deprecated and will be removed in a future release."},"retentionMs":{"type":"string","description":"The max age of snapshots (Iceberg) or versions (Delta) (snapshot/version expiration) to keep on the table in milliseconds for the Tableflow enabled topic.\n"},"tableFormats":{"type":"array","items":{"type":"string"},"description":"The supported table formats for the Tableflow-enabled topic. Accepted values are `DELTA`, `ICEBERG`.\n"}},"requiredInputs":["displayName","environment","kafkaCluster"],"stateInputs":{"description":"Input properties used for looking up and filtering TableflowTopic resources.\n","properties":{"azureDataLakeStorageGen2":{"$ref":"#/types/confluentcloud:index/TableflowTopicAzureDataLakeStorageGen2:TableflowTopicAzureDataLakeStorageGen2","description":"(Optional Configuration Block) supports the following:\n","willReplaceOnChanges":true},"byobAws":{"$ref":"#/types/confluentcloud:index/TableflowTopicByobAws:TableflowTopicByobAws","description":"supports the following (See [Quick Start with Custom Storage](https://docs.confluent.io/cloud/current/topics/tableflow/get-started/quick-start-custom-storage-glue.html#cloud-tableflow-quick-start) for more details):\n","willReplaceOnChanges":true},"credentials":{"$ref":"#/types/confluentcloud:index/TableflowTopicCredentials:TableflowTopicCredentials","description":"The Cluster API Credentials.","secret":true},"displayName":{"type":"string","description":"The name of the Kafka topic for which Tableflow is enabled.\n","willReplaceOnChanges":true},"enableCompaction":{"type":"boolean","description":"(Optional Boolean) This flag determines whether to enable compaction for the Tableflow enabled topic.\n"},"enablePartitioning":{"type":"boolean","description":"(Optional Boolean) This flag determines whether to enable partitioning for the Tableflow enabled topic.\n"},"environment":{"$ref":"#/types/confluentcloud:index/TableflowTopicEnvironment:TableflowTopicEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"errorHandling":{"$ref":"#/types/confluentcloud:index/TableflowTopicErrorHandling:TableflowTopicErrorHandling"},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/TableflowTopicKafkaCluster:TableflowTopicKafkaCluster","willReplaceOnChanges":true},"managedStorages":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/TableflowTopicManagedStorage:TableflowTopicManagedStorage"},"description":"The configuration of the Confluent managed storage. See [Quick Start with Managed Storage](https://docs.confluent.io/cloud/current/topics/tableflow/get-started/quick-start-managed-storage.html#cloud-tableflow-quick-start-managed-storage) for more details.\n"},"recordFailureStrategy":{"type":"string","description":"The strategy to handle record failures in the Tableflow enabled topic during materialization. Accepted values are `SKIP`, `SUSPEND`. For `SKIP`, we skip the bad records and move to the next record. For `SUSPEND`, we suspend the materialization of the topic.\n","deprecationMessage":"This attribute is deprecated and will be removed in a future release."},"retentionMs":{"type":"string","description":"The max age of snapshots (Iceberg) or versions (Delta) (snapshot/version expiration) to keep on the table in milliseconds for the Tableflow enabled topic.\n"},"suspended":{"type":"boolean","description":"(Optional Boolean) Indicates whether the Tableflow should be suspended.\n"},"tableFormats":{"type":"array","items":{"type":"string"},"description":"The supported table formats for the Tableflow-enabled topic. Accepted values are `DELTA`, `ICEBERG`.\n"},"tablePath":{"type":"string","description":"(Optional String) The current storage path where the data and metadata is stored for this table.\n"},"writeMode":{"type":"string","description":"(Optional String) Indicates the write mode of the Tableflow topic.\n"}},"type":"object"}},"confluentcloud:index/tag:Tag":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Tag`\" pulumi-lang-dotnet=\"`confluentcloud.Tag`\" pulumi-lang-go=\"`Tag`\" pulumi-lang-python=\"`Tag`\" pulumi-lang-yaml=\"`confluentcloud.Tag`\" pulumi-lang-java=\"`confluentcloud.Tag`\"\u003e`confluentcloud.Tag`\u003c/span\u003e provides a Tag resource that enables creating, editing, and deleting Tags on Confluent Cloud.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst pii = new confluentcloud.Tag(\"pii\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name: \"PII\",\n    description: \"PII tag\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npii = confluentcloud.Tag(\"pii\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name=\"PII\",\n    description=\"PII tag\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pii = new ConfluentCloud.Tag(\"pii\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.TagSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.TagCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        Name = \"PII\",\n        Description = \"PII tag\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewTag(ctx, \"pii\", \u0026confluentcloud.TagArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.TagSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.TagCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t\tName:        pulumi.String(\"PII\"),\n\t\t\tDescription: pulumi.String(\"PII tag\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Tag;\nimport com.pulumi.confluentcloud.TagArgs;\nimport com.pulumi.confluentcloud.inputs.TagSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.TagCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var pii = new Tag(\"pii\", TagArgs.builder()\n            .schemaRegistryCluster(TagSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(TagCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .name(\"PII\")\n            .description(\"PII tag\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pii:\n    type: confluentcloud:Tag\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n      name: PII\n      description: PII tag\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst pii = new confluentcloud.Tag(\"pii\", {\n    name: \"PII\",\n    description: \"PII tag\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npii = confluentcloud.Tag(\"pii\",\n    name=\"PII\",\n    description=\"PII tag\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pii = new ConfluentCloud.Tag(\"pii\", new()\n    {\n        Name = \"PII\",\n        Description = \"PII tag\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewTag(ctx, \"pii\", \u0026confluentcloud.TagArgs{\n\t\t\tName:        pulumi.String(\"PII\"),\n\t\t\tDescription: pulumi.String(\"PII tag\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Tag;\nimport com.pulumi.confluentcloud.TagArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var pii = new Tag(\"pii\", TagArgs.builder()\n            .name(\"PII\")\n            .description(\"PII tag\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pii:\n    type: confluentcloud:Tag\n    properties:\n      name: PII\n      description: PII tag\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\u003e **Note:** We also support \u003cspan pulumi-lang-nodejs=\"`schemaRegistryRestEndpoint`\" pulumi-lang-dotnet=\"`SchemaRegistryRestEndpoint`\" pulumi-lang-go=\"`schemaRegistryRestEndpoint`\" pulumi-lang-python=\"`schema_registry_rest_endpoint`\" pulumi-lang-yaml=\"`schemaRegistryRestEndpoint`\" pulumi-lang-java=\"`schemaRegistryRestEndpoint`\"\u003e`schema_registry_rest_endpoint`\u003c/span\u003e instead of \u003cspan pulumi-lang-nodejs=\"`catalogRestEndpoint`\" pulumi-lang-dotnet=\"`CatalogRestEndpoint`\" pulumi-lang-go=\"`catalogRestEndpoint`\" pulumi-lang-python=\"`catalog_rest_endpoint`\" pulumi-lang-yaml=\"`catalogRestEndpoint`\" pulumi-lang-java=\"`catalogRestEndpoint`\"\u003e`catalog_rest_endpoint`\u003c/span\u003e for the time being.\n\n\n## Getting Started\n\nThe following end-to-end example might help to get started with [Stream Catalog](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog.html):\n* stream-catalog\n\n## Import\n\nYou can import a Tag by using the Schema Registry cluster ID, Tag name in the format `\u003cSchema Registry cluster ID\u003e/\u003cTag name\u003e`, for example:\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_CATALOG_REST_ENDPOINT=\"\u003ccatalog_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/tag:Tag pii lsrc-8wrx70/PII\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/TagCredentials:TagCredentials","description":"The Cluster API Credentials.","secret":true},"description":{"type":"string","description":"The description of the tag.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_tag.pii\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_tag.pii\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Tag`\" pulumi-lang-dotnet=\"`confluentcloud.Tag`\" pulumi-lang-go=\"`Tag`\" pulumi-lang-python=\"`Tag`\" pulumi-lang-yaml=\"`confluentcloud.Tag`\" pulumi-lang-java=\"`confluentcloud.Tag`\"\u003e`confluentcloud.Tag`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"entityTypes":{"type":"array","items":{"type":"string"},"description":"(Optional List of String) The entity types of the tag, this always returns `[\u003cspan pulumi-lang-nodejs=\"\"cfEntity\"\" pulumi-lang-dotnet=\"\"CfEntity\"\" pulumi-lang-go=\"\"cfEntity\"\" pulumi-lang-python=\"\"cf_entity\"\" pulumi-lang-yaml=\"\"cfEntity\"\" pulumi-lang-java=\"\"cfEntity\"\"\u003e\"cf_entity\"\u003c/span\u003e]`. Refer to the [Entity types](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#entity-types) to learn more about entity types.\n"},"name":{"type":"string","description":"The name of the tag, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/TagSchemaRegistryCluster:TagSchemaRegistryCluster"},"version":{"type":"integer","description":"(Optional Integer) The version, for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n"}},"required":["entityTypes","name","version"],"inputProperties":{"credentials":{"$ref":"#/types/confluentcloud:index/TagCredentials:TagCredentials","description":"The Cluster API Credentials.","secret":true},"description":{"type":"string","description":"The description of the tag.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_tag.pii\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_tag.pii\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Tag`\" pulumi-lang-dotnet=\"`confluentcloud.Tag`\" pulumi-lang-go=\"`Tag`\" pulumi-lang-python=\"`Tag`\" pulumi-lang-yaml=\"`confluentcloud.Tag`\" pulumi-lang-java=\"`confluentcloud.Tag`\"\u003e`confluentcloud.Tag`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"name":{"type":"string","description":"The name of the tag, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/TagSchemaRegistryCluster:TagSchemaRegistryCluster","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering Tag resources.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/TagCredentials:TagCredentials","description":"The Cluster API Credentials.","secret":true},"description":{"type":"string","description":"The description of the tag.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_tag.pii\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_tag.pii\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.Tag`\" pulumi-lang-dotnet=\"`confluentcloud.Tag`\" pulumi-lang-go=\"`Tag`\" pulumi-lang-python=\"`Tag`\" pulumi-lang-yaml=\"`confluentcloud.Tag`\" pulumi-lang-java=\"`confluentcloud.Tag`\"\u003e`confluentcloud.Tag`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"entityTypes":{"type":"array","items":{"type":"string"},"description":"(Optional List of String) The entity types of the tag, this always returns `[\u003cspan pulumi-lang-nodejs=\"\"cfEntity\"\" pulumi-lang-dotnet=\"\"CfEntity\"\" pulumi-lang-go=\"\"cfEntity\"\" pulumi-lang-python=\"\"cf_entity\"\" pulumi-lang-yaml=\"\"cfEntity\"\" pulumi-lang-java=\"\"cfEntity\"\"\u003e\"cf_entity\"\u003c/span\u003e]`. Refer to the [Entity types](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#entity-types) to learn more about entity types.\n"},"name":{"type":"string","description":"The name of the tag, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/TagSchemaRegistryCluster:TagSchemaRegistryCluster","willReplaceOnChanges":true},"version":{"type":"integer","description":"(Optional Integer) The version, for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n"}},"type":"object"}},"confluentcloud:index/tagBinding:TagBinding":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.TagBinding`\" pulumi-lang-dotnet=\"`confluentcloud.TagBinding`\" pulumi-lang-go=\"`TagBinding`\" pulumi-lang-python=\"`TagBinding`\" pulumi-lang-yaml=\"`confluentcloud.TagBinding`\" pulumi-lang-java=\"`confluentcloud.TagBinding`\"\u003e`confluentcloud.TagBinding`\u003c/span\u003e provides a Tag Binding resource that enables creating, editing, and deleting Tag Bindings on Confluent Cloud.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getKafkaTopic({\n    topicName: \"orders\",\n});\nconst mainTagBinding = new confluentcloud.TagBinding(\"main\", {\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    tagName: \"PII\",\n    entityName: main.then(main =\u003e `${schemaRegistryId}:${kafkaId}:${main.topicName}`),\n    entityType: \"kafka_topic\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_kafka_topic(topic_name=\"orders\")\nmain_tag_binding = confluentcloud.TagBinding(\"main\",\n    schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    tag_name=\"PII\",\n    entity_name=f\"{schema_registry_id}:{kafka_id}:{main.topic_name}\",\n    entity_type=\"kafka_topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetKafkaTopic.Invoke(new()\n    {\n        TopicName = \"orders\",\n    });\n\n    var mainTagBinding = new ConfluentCloud.TagBinding(\"main\", new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.TagBindingSchemaRegistryClusterArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.TagBindingCredentialsArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        TagName = \"PII\",\n        EntityName = $\"{schemaRegistryId}:{kafkaId}:{main.Apply(getKafkaTopicResult =\u003e getKafkaTopicResult.TopicName)}\",\n        EntityType = \"kafka_topic\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupKafkaTopic(ctx, \u0026confluentcloud.LookupKafkaTopicArgs{\n\t\t\tTopicName: \"orders\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewTagBinding(ctx, \"main\", \u0026confluentcloud.TagBindingArgs{\n\t\t\tSchemaRegistryCluster: \u0026confluentcloud.TagBindingSchemaRegistryClusterArgs{\n\t\t\t\tId: pulumi.Any(essentials.Id),\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.Any(essentials.RestEndpoint),\n\t\t\tCredentials: \u0026confluentcloud.TagBindingCredentialsArgs{\n\t\t\t\tKey:    pulumi.String(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t\tSecret: pulumi.String(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\"),\n\t\t\t},\n\t\t\tTagName:    pulumi.String(\"PII\"),\n\t\t\tEntityName: pulumi.Sprintf(\"%v:%v:%v\", schemaRegistryId, kafkaId, main.TopicName),\n\t\t\tEntityType: pulumi.String(\"kafka_topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetKafkaTopicArgs;\nimport com.pulumi.confluentcloud.TagBinding;\nimport com.pulumi.confluentcloud.TagBindingArgs;\nimport com.pulumi.confluentcloud.inputs.TagBindingSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.TagBindingCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getKafkaTopic(GetKafkaTopicArgs.builder()\n            .topicName(\"orders\")\n            .build());\n\n        var mainTagBinding = new TagBinding(\"mainTagBinding\", TagBindingArgs.builder()\n            .schemaRegistryCluster(TagBindingSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(TagBindingCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .tagName(\"PII\")\n            .entityName(String.format(\"%s:%s:%s\", schemaRegistryId,kafkaId,main.topicName()))\n            .entityType(\"kafka_topic\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mainTagBinding:\n    type: confluentcloud:TagBinding\n    name: main\n    properties:\n      schemaRegistryCluster:\n        id: ${essentials.id}\n      restEndpoint: ${essentials.restEndpoint}\n      credentials:\n        key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n        secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n      tagName: PII\n      entityName: ${schemaRegistryId}:${kafkaId}:${main.topicName}\n      entityType: kafka_topic\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getKafkaTopic\n      arguments:\n        topicName: orders\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getKafkaTopic({\n    topicName: \"orders\",\n});\nconst topic_tagging = new confluentcloud.TagBinding(\"topic-tagging\", {\n    tagName: \"PII\",\n    entityName: main.then(main =\u003e `${schemaRegistryId}:${kafkaId}:${main.topicName}`),\n    entityType: \"kafka_topic\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_kafka_topic(topic_name=\"orders\")\ntopic_tagging = confluentcloud.TagBinding(\"topic-tagging\",\n    tag_name=\"PII\",\n    entity_name=f\"{schema_registry_id}:{kafka_id}:{main.topic_name}\",\n    entity_type=\"kafka_topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetKafkaTopic.Invoke(new()\n    {\n        TopicName = \"orders\",\n    });\n\n    var topic_tagging = new ConfluentCloud.TagBinding(\"topic-tagging\", new()\n    {\n        TagName = \"PII\",\n        EntityName = $\"{schemaRegistryId}:{kafkaId}:{main.Apply(getKafkaTopicResult =\u003e getKafkaTopicResult.TopicName)}\",\n        EntityType = \"kafka_topic\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupKafkaTopic(ctx, \u0026confluentcloud.LookupKafkaTopicArgs{\n\t\t\tTopicName: \"orders\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewTagBinding(ctx, \"topic-tagging\", \u0026confluentcloud.TagBindingArgs{\n\t\t\tTagName:    pulumi.String(\"PII\"),\n\t\t\tEntityName: pulumi.Sprintf(\"%v:%v:%v\", schemaRegistryId, kafkaId, main.TopicName),\n\t\t\tEntityType: pulumi.String(\"kafka_topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetKafkaTopicArgs;\nimport com.pulumi.confluentcloud.TagBinding;\nimport com.pulumi.confluentcloud.TagBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getKafkaTopic(GetKafkaTopicArgs.builder()\n            .topicName(\"orders\")\n            .build());\n\n        var topic_tagging = new TagBinding(\"topic-tagging\", TagBindingArgs.builder()\n            .tagName(\"PII\")\n            .entityName(String.format(\"%s:%s:%s\", schemaRegistryId,kafkaId,main.topicName()))\n            .entityType(\"kafka_topic\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  topic-tagging:\n    type: confluentcloud:TagBinding\n    properties:\n      tagName: PII\n      entityName: ${schemaRegistryId}:${kafkaId}:${main.topicName}\n      entityType: kafka_topic\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getKafkaTopic\n      arguments:\n        topicName: orders\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\u003e **Note:** We also support \u003cspan pulumi-lang-nodejs=\"`schemaRegistryRestEndpoint`\" pulumi-lang-dotnet=\"`SchemaRegistryRestEndpoint`\" pulumi-lang-go=\"`schemaRegistryRestEndpoint`\" pulumi-lang-python=\"`schema_registry_rest_endpoint`\" pulumi-lang-yaml=\"`schemaRegistryRestEndpoint`\" pulumi-lang-java=\"`schemaRegistryRestEndpoint`\"\u003e`schema_registry_rest_endpoint`\u003c/span\u003e instead of \u003cspan pulumi-lang-nodejs=\"`catalogRestEndpoint`\" pulumi-lang-dotnet=\"`CatalogRestEndpoint`\" pulumi-lang-go=\"`catalogRestEndpoint`\" pulumi-lang-python=\"`catalog_rest_endpoint`\" pulumi-lang-yaml=\"`catalogRestEndpoint`\" pulumi-lang-java=\"`catalogRestEndpoint`\"\u003e`catalog_rest_endpoint`\u003c/span\u003e for the time being.\n\n\n## Getting Started\n\nThe following end-to-end example might help to get started with [Stream Catalog](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog.html):\n* stream-catalog\n\n## Import\n\nYou can import a Tag Binding by using the Schema Registry cluster ID, Tag name, entity name and entity type in the format `\u003cSchema Registry Cluster Id\u003e/\u003cTag Name\u003e/\u003cEntity Name\u003e/\u003cEntity Type\u003e`, for example:\n\n```sh\n$ export IMPORT_SCHEMA_REGISTRY_API_KEY=\"\u003cschema_registry_api_key\u003e\"\n$ export IMPORT_SCHEMA_REGISTRY_API_SECRET=\"\u003cschema_registry_api_secret\u003e\"\n$ export IMPORT_CATALOG_REST_ENDPOINT=\"\u003ccatalog_rest_endpoint\u003e\"\n$ pulumi import confluentcloud:index/tagBinding:TagBinding main lsrc-8wrx70/PII/lsrc-8wrx70:.:100001/sr_schema\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/TagBindingCredentials:TagBindingCredentials","description":"The Cluster API Credentials.","secret":true},"disableWaitForReady":{"type":"boolean","description":"An optional flag to disable wait-for-readiness on create. Must be unset when importing. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_tag_binding.main\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_tag_binding.main\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.TagBinding`\" pulumi-lang-dotnet=\"`confluentcloud.TagBinding`\" pulumi-lang-go=\"`TagBinding`\" pulumi-lang-python=\"`TagBinding`\" pulumi-lang-yaml=\"`confluentcloud.TagBinding`\" pulumi-lang-java=\"`confluentcloud.TagBinding`\"\u003e`confluentcloud.TagBinding`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"entityName":{"type":"string","description":"The qualified name of the entity, for example, `${data.confluent_schema_registry_cluster.essentials.id}:.:${confluent_schema.purchase.schema_identifier}`, `${data.confluent_schema_registry_cluster.essentials.id}:${confluent_kafka_cluster.basic.id}:${confluent_kafka_topic.purchase.topic_name}`. Refer to the [Examples of qualified names](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#examples-of-qualified-names) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityName`\" pulumi-lang-dotnet=\"`EntityName`\" pulumi-lang-go=\"`entityName`\" pulumi-lang-python=\"`entity_name`\" pulumi-lang-yaml=\"`entityName`\" pulumi-lang-java=\"`entityName`\"\u003e`entity_name`\u003c/span\u003e attribute.\n"},"entityType":{"type":"string","description":"The entity type, for example, \u003cspan pulumi-lang-nodejs=\"`srSchema`\" pulumi-lang-dotnet=\"`SrSchema`\" pulumi-lang-go=\"`srSchema`\" pulumi-lang-python=\"`sr_schema`\" pulumi-lang-yaml=\"`srSchema`\" pulumi-lang-java=\"`srSchema`\"\u003e`sr_schema`\u003c/span\u003e. Refer to the [Entity types](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#entity-types) to learn more about entity types.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/TagBindingSchemaRegistryCluster:TagBindingSchemaRegistryCluster"},"tagName":{"type":"string","description":"The name of the tag to be applied, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n"}},"required":["entityName","entityType","tagName"],"inputProperties":{"credentials":{"$ref":"#/types/confluentcloud:index/TagBindingCredentials:TagBindingCredentials","description":"The Cluster API Credentials.","secret":true},"disableWaitForReady":{"type":"boolean","description":"An optional flag to disable wait-for-readiness on create. Must be unset when importing. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_tag_binding.main\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_tag_binding.main\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.TagBinding`\" pulumi-lang-dotnet=\"`confluentcloud.TagBinding`\" pulumi-lang-go=\"`TagBinding`\" pulumi-lang-python=\"`TagBinding`\" pulumi-lang-yaml=\"`confluentcloud.TagBinding`\" pulumi-lang-java=\"`confluentcloud.TagBinding`\"\u003e`confluentcloud.TagBinding`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"entityName":{"type":"string","description":"The qualified name of the entity, for example, `${data.confluent_schema_registry_cluster.essentials.id}:.:${confluent_schema.purchase.schema_identifier}`, `${data.confluent_schema_registry_cluster.essentials.id}:${confluent_kafka_cluster.basic.id}:${confluent_kafka_topic.purchase.topic_name}`. Refer to the [Examples of qualified names](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#examples-of-qualified-names) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityName`\" pulumi-lang-dotnet=\"`EntityName`\" pulumi-lang-go=\"`entityName`\" pulumi-lang-python=\"`entity_name`\" pulumi-lang-yaml=\"`entityName`\" pulumi-lang-java=\"`entityName`\"\u003e`entity_name`\u003c/span\u003e attribute.\n"},"entityType":{"type":"string","description":"The entity type, for example, \u003cspan pulumi-lang-nodejs=\"`srSchema`\" pulumi-lang-dotnet=\"`SrSchema`\" pulumi-lang-go=\"`srSchema`\" pulumi-lang-python=\"`sr_schema`\" pulumi-lang-yaml=\"`srSchema`\" pulumi-lang-java=\"`srSchema`\"\u003e`sr_schema`\u003c/span\u003e. Refer to the [Entity types](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#entity-types) to learn more about entity types.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/TagBindingSchemaRegistryCluster:TagBindingSchemaRegistryCluster","willReplaceOnChanges":true},"tagName":{"type":"string","description":"The name of the tag to be applied, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n","willReplaceOnChanges":true}},"requiredInputs":["entityName","entityType","tagName"],"stateInputs":{"description":"Input properties used for looking up and filtering TagBinding resources.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/TagBindingCredentials:TagBindingCredentials","description":"The Cluster API Credentials.","secret":true},"disableWaitForReady":{"type":"boolean","description":"An optional flag to disable wait-for-readiness on create. Must be unset when importing. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n\n\u003e **Note:** Use Option #2 to simplify the key rotation process. When using Option #1, to rotate a Schema Registry API key, create a new Schema Registry API key, update the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e block in all configuration files to use the new Schema Registry API key, run `pulumi up -target=\"confluent_tag_binding.main\"`, and remove the old Schema Registry API key. Alternatively, in case the old Schema Registry API Key was deleted already, you might need to run `pulumi preview -refresh=false -target=\"confluent_tag_binding.main\" -out=rotate-schema-registry-api-key` and `pulumi up rotate-schema-registry-api-key` instead.\n\n!\u003e **Warning:** Use Option #2 to avoid exposing sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value in a state file. When using Option #1, Terraform doesn't encrypt the sensitive \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\"\u003e`credentials`\u003c/span\u003e value of the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.TagBinding`\" pulumi-lang-dotnet=\"`confluentcloud.TagBinding`\" pulumi-lang-go=\"`TagBinding`\" pulumi-lang-python=\"`TagBinding`\" pulumi-lang-yaml=\"`confluentcloud.TagBinding`\" pulumi-lang-java=\"`confluentcloud.TagBinding`\"\u003e`confluentcloud.TagBinding`\u003c/span\u003e resource, so you must keep your state file secure to avoid exposing it. Refer to the Terraform documentation to learn more about securing your state file.\n"},"entityName":{"type":"string","description":"The qualified name of the entity, for example, `${data.confluent_schema_registry_cluster.essentials.id}:.:${confluent_schema.purchase.schema_identifier}`, `${data.confluent_schema_registry_cluster.essentials.id}:${confluent_kafka_cluster.basic.id}:${confluent_kafka_topic.purchase.topic_name}`. Refer to the [Examples of qualified names](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#examples-of-qualified-names) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityName`\" pulumi-lang-dotnet=\"`EntityName`\" pulumi-lang-go=\"`entityName`\" pulumi-lang-python=\"`entity_name`\" pulumi-lang-yaml=\"`entityName`\" pulumi-lang-java=\"`entityName`\"\u003e`entity_name`\u003c/span\u003e attribute.\n"},"entityType":{"type":"string","description":"The entity type, for example, \u003cspan pulumi-lang-nodejs=\"`srSchema`\" pulumi-lang-dotnet=\"`SrSchema`\" pulumi-lang-go=\"`srSchema`\" pulumi-lang-python=\"`sr_schema`\" pulumi-lang-yaml=\"`srSchema`\" pulumi-lang-java=\"`srSchema`\"\u003e`sr_schema`\u003c/span\u003e. Refer to the [Entity types](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#entity-types) to learn more about entity types.\n","willReplaceOnChanges":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/TagBindingSchemaRegistryCluster:TagBindingSchemaRegistryCluster","willReplaceOnChanges":true},"tagName":{"type":"string","description":"The name of the tag to be applied, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/tfImporter:TfImporter":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.TfImporter`\" pulumi-lang-dotnet=\"`confluentcloud.TfImporter`\" pulumi-lang-go=\"`TfImporter`\" pulumi-lang-python=\"`TfImporter`\" pulumi-lang-yaml=\"`confluentcloud.TfImporter`\" pulumi-lang-java=\"`confluentcloud.TfImporter`\"\u003e`confluentcloud.TfImporter`\u003c/span\u003e resource provides an Importer resource that enables exporting of your existing Confluent Cloud resources to Terraform Configuration (`main.tf`) and Terraform State (`terraform.tfstate`) files to a local directory called \u003cspan pulumi-lang-nodejs=\"`importedConfluentInfrastructure`\" pulumi-lang-dotnet=\"`ImportedConfluentInfrastructure`\" pulumi-lang-go=\"`importedConfluentInfrastructure`\" pulumi-lang-python=\"`imported_confluent_infrastructure`\" pulumi-lang-yaml=\"`importedConfluentInfrastructure`\" pulumi-lang-java=\"`importedConfluentInfrastructure`\"\u003e`imported_confluent_infrastructure`\u003c/span\u003e.\n\nSee Resource Importer for Confluent Terraform Provider for step-by-step instructions on how to use the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.TfImporter`\" pulumi-lang-dotnet=\"`confluentcloud.TfImporter`\" pulumi-lang-go=\"`TfImporter`\" pulumi-lang-python=\"`TfImporter`\" pulumi-lang-yaml=\"`confluentcloud.TfImporter`\" pulumi-lang-java=\"`confluentcloud.TfImporter`\"\u003e`confluentcloud.TfImporter`\u003c/span\u003e resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = new confluentcloud.TfImporter(\"example\", {resources: [\n    \"confluent_service_account\",\n    \"confluent_environment\",\n]});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.TfImporter(\"example\", resources=[\n    \"confluent_service_account\",\n    \"confluent_environment\",\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ConfluentCloud.TfImporter(\"example\", new()\n    {\n        Resources = new[]\n        {\n            \"confluent_service_account\",\n            \"confluent_environment\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.NewTfImporter(ctx, \"example\", \u0026confluentcloud.TfImporterArgs{\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"confluent_service_account\"),\n\t\t\t\tpulumi.String(\"confluent_environment\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.TfImporter;\nimport com.pulumi.confluentcloud.TfImporterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new TfImporter(\"example\", TfImporterArgs.builder()\n            .resources(            \n                \"confluent_service_account\",\n                \"confluent_environment\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: confluentcloud:TfImporter\n    properties:\n      resources:\n        - confluent_service_account\n        - confluent_environment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with the \u003cspan pulumi-lang-nodejs=\"`confluentcloud.TfImporter`\" pulumi-lang-dotnet=\"`confluentcloud.TfImporter`\" pulumi-lang-go=\"`TfImporter`\" pulumi-lang-python=\"`TfImporter`\" pulumi-lang-yaml=\"`confluentcloud.TfImporter`\" pulumi-lang-java=\"`confluentcloud.TfImporter`\"\u003e`confluentcloud.TfImporter`\u003c/span\u003e resource:\n  * `cloud-importer`: Export _Cloud_ resources (for example, Service Accounts, Environments)\n  * `kafka-importer`: Export _Kafka_ resources (for example, ACLs, Topics)\n  * `schema-registry-importer`: Export _Schema Registry_ resources (for example, Schemas)\n","properties":{"outputPath":{"type":"string","description":"An absolute path to a folder for outputting generated TF state and TF configuration files for your infrastructure. The folder is created if it doesn't exist. Defaults to `./imported_confluent_infrastructure`.\n\nThese are the exportable resources:\n* Service Accounts\n* Environments\n* Connectors\n* Kafka Clusters\n* Access Control Lists (ACLs)\n* Topics\n* Schemas\n\n\u003e **Note:** File an issue to request a support for other resources.\n"},"resources":{"type":"array","items":{"type":"string"},"description":"A list of resources names to export. Defaults to all exportable resources.\n"}},"inputProperties":{"outputPath":{"type":"string","description":"An absolute path to a folder for outputting generated TF state and TF configuration files for your infrastructure. The folder is created if it doesn't exist. Defaults to `./imported_confluent_infrastructure`.\n\nThese are the exportable resources:\n* Service Accounts\n* Environments\n* Connectors\n* Kafka Clusters\n* Access Control Lists (ACLs)\n* Topics\n* Schemas\n\n\u003e **Note:** File an issue to request a support for other resources.\n","willReplaceOnChanges":true},"resources":{"type":"array","items":{"type":"string"},"description":"A list of resources names to export. Defaults to all exportable resources.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering TfImporter resources.\n","properties":{"outputPath":{"type":"string","description":"An absolute path to a folder for outputting generated TF state and TF configuration files for your infrastructure. The folder is created if it doesn't exist. Defaults to `./imported_confluent_infrastructure`.\n\nThese are the exportable resources:\n* Service Accounts\n* Environments\n* Connectors\n* Kafka Clusters\n* Access Control Lists (ACLs)\n* Topics\n* Schemas\n\n\u003e **Note:** File an issue to request a support for other resources.\n","willReplaceOnChanges":true},"resources":{"type":"array","items":{"type":"string"},"description":"A list of resources names to export. Defaults to all exportable resources.\n","willReplaceOnChanges":true}},"type":"object"}},"confluentcloud:index/transitGatewayAttachment:TransitGatewayAttachment":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.TransitGatewayAttachment`\" pulumi-lang-dotnet=\"`confluentcloud.TransitGatewayAttachment`\" pulumi-lang-go=\"`TransitGatewayAttachment`\" pulumi-lang-python=\"`TransitGatewayAttachment`\" pulumi-lang-yaml=\"`confluentcloud.TransitGatewayAttachment`\" pulumi-lang-java=\"`confluentcloud.TransitGatewayAttachment`\"\u003e`confluentcloud.TransitGatewayAttachment`\u003c/span\u003e provides a Transit Gateway Attachment resource that enables creating, editing, and deleting Transit Gateway Attachments on Confluent Cloud.\n\n\u003e **Note:** It is recommended to set `lifecycle {\u003cspan pulumi-lang-nodejs=\" preventDestroy \" pulumi-lang-dotnet=\" PreventDestroy \" pulumi-lang-go=\" preventDestroy \" pulumi-lang-python=\" prevent_destroy \" pulumi-lang-yaml=\" preventDestroy \" pulumi-lang-java=\" preventDestroy \"\u003e prevent_destroy \u003c/span\u003e= true }` on production instances to prevent accidental Transit Gateway Attachment deletion. This setting rejects plans that would destroy or recreate the Transit Gateway Attachment, such as attempting to change uneditable attributes. Read more about it in the Terraform docs.\n\n## Example Usage\n\n### Example Transit Gateway Attachment on AWS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst development = new confluentcloud.Environment(\"development\", {displayName: \"Development\"});\nconst aws_transit_gateway_attachment = new confluentcloud.Network(\"aws-transit-gateway-attachment\", {\n    displayName: \"AWS Transit Gateway Attachment Network\",\n    cloud: \"AWS\",\n    region: \"us-east-2\",\n    cidr: \"10.10.0.0/16\",\n    connectionTypes: [\"TRANSITGATEWAY\"],\n    environment: {\n        id: development.id,\n    },\n});\nconst aws = new confluentcloud.TransitGatewayAttachment(\"aws\", {\n    displayName: \"AWS Transit Gateway Attachment\",\n    aws: {\n        ramResourceShareArn: \"arn:aws:ram:us-east-2:000000000000:resource-share/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx\",\n        transitGatewayId: \"tgw-xxxxxxxxxxxxxxxxx\",\n        routes: [\n            \"192.168.0.0/16\",\n            \"172.16.0.0/12\",\n            \"100.64.0.0/10\",\n            \"10.0.0.0/8\",\n        ],\n    },\n    environment: {\n        id: development.id,\n    },\n    network: {\n        id: aws_transit_gateway_attachment.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ndevelopment = confluentcloud.Environment(\"development\", display_name=\"Development\")\naws_transit_gateway_attachment = confluentcloud.Network(\"aws-transit-gateway-attachment\",\n    display_name=\"AWS Transit Gateway Attachment Network\",\n    cloud=\"AWS\",\n    region=\"us-east-2\",\n    cidr=\"10.10.0.0/16\",\n    connection_types=[\"TRANSITGATEWAY\"],\n    environment={\n        \"id\": development.id,\n    })\naws = confluentcloud.TransitGatewayAttachment(\"aws\",\n    display_name=\"AWS Transit Gateway Attachment\",\n    aws={\n        \"ram_resource_share_arn\": \"arn:aws:ram:us-east-2:000000000000:resource-share/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx\",\n        \"transit_gateway_id\": \"tgw-xxxxxxxxxxxxxxxxx\",\n        \"routes\": [\n            \"192.168.0.0/16\",\n            \"172.16.0.0/12\",\n            \"100.64.0.0/10\",\n            \"10.0.0.0/8\",\n        ],\n    },\n    environment={\n        \"id\": development.id,\n    },\n    network={\n        \"id\": aws_transit_gateway_attachment.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new ConfluentCloud.Environment(\"development\", new()\n    {\n        DisplayName = \"Development\",\n    });\n\n    var aws_transit_gateway_attachment = new ConfluentCloud.Network(\"aws-transit-gateway-attachment\", new()\n    {\n        DisplayName = \"AWS Transit Gateway Attachment Network\",\n        Cloud = \"AWS\",\n        Region = \"us-east-2\",\n        Cidr = \"10.10.0.0/16\",\n        ConnectionTypes = new[]\n        {\n            \"TRANSITGATEWAY\",\n        },\n        Environment = new ConfluentCloud.Inputs.NetworkEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n    });\n\n    var aws = new ConfluentCloud.TransitGatewayAttachment(\"aws\", new()\n    {\n        DisplayName = \"AWS Transit Gateway Attachment\",\n        Aws = new ConfluentCloud.Inputs.TransitGatewayAttachmentAwsArgs\n        {\n            RamResourceShareArn = \"arn:aws:ram:us-east-2:000000000000:resource-share/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx\",\n            TransitGatewayId = \"tgw-xxxxxxxxxxxxxxxxx\",\n            Routes = new[]\n            {\n                \"192.168.0.0/16\",\n                \"172.16.0.0/12\",\n                \"100.64.0.0/10\",\n                \"10.0.0.0/8\",\n            },\n        },\n        Environment = new ConfluentCloud.Inputs.TransitGatewayAttachmentEnvironmentArgs\n        {\n            Id = development.Id,\n        },\n        Network = new ConfluentCloud.Inputs.TransitGatewayAttachmentNetworkArgs\n        {\n            Id = aws_transit_gateway_attachment.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevelopment, err := confluentcloud.NewEnvironment(ctx, \"development\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taws_transit_gateway_attachment, err := confluentcloud.NewNetwork(ctx, \"aws-transit-gateway-attachment\", \u0026confluentcloud.NetworkArgs{\n\t\t\tDisplayName: pulumi.String(\"AWS Transit Gateway Attachment Network\"),\n\t\t\tCloud:       pulumi.String(\"AWS\"),\n\t\t\tRegion:      pulumi.String(\"us-east-2\"),\n\t\t\tCidr:        pulumi.String(\"10.10.0.0/16\"),\n\t\t\tConnectionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"TRANSITGATEWAY\"),\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.NetworkEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewTransitGatewayAttachment(ctx, \"aws\", \u0026confluentcloud.TransitGatewayAttachmentArgs{\n\t\t\tDisplayName: pulumi.String(\"AWS Transit Gateway Attachment\"),\n\t\t\tAws: \u0026confluentcloud.TransitGatewayAttachmentAwsArgs{\n\t\t\t\tRamResourceShareArn: pulumi.String(\"arn:aws:ram:us-east-2:000000000000:resource-share/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx\"),\n\t\t\t\tTransitGatewayId:    pulumi.String(\"tgw-xxxxxxxxxxxxxxxxx\"),\n\t\t\t\tRoutes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t\tpulumi.String(\"172.16.0.0/12\"),\n\t\t\t\t\tpulumi.String(\"100.64.0.0/10\"),\n\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironment: \u0026confluentcloud.TransitGatewayAttachmentEnvironmentArgs{\n\t\t\t\tId: development.ID(),\n\t\t\t},\n\t\t\tNetwork: \u0026confluentcloud.TransitGatewayAttachmentNetworkArgs{\n\t\t\t\tId: aws_transit_gateway_attachment.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.Network;\nimport com.pulumi.confluentcloud.NetworkArgs;\nimport com.pulumi.confluentcloud.inputs.NetworkEnvironmentArgs;\nimport com.pulumi.confluentcloud.TransitGatewayAttachment;\nimport com.pulumi.confluentcloud.TransitGatewayAttachmentArgs;\nimport com.pulumi.confluentcloud.inputs.TransitGatewayAttachmentAwsArgs;\nimport com.pulumi.confluentcloud.inputs.TransitGatewayAttachmentEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.TransitGatewayAttachmentNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new Environment(\"development\", EnvironmentArgs.builder()\n            .displayName(\"Development\")\n            .build());\n\n        var aws_transit_gateway_attachment = new Network(\"aws-transit-gateway-attachment\", NetworkArgs.builder()\n            .displayName(\"AWS Transit Gateway Attachment Network\")\n            .cloud(\"AWS\")\n            .region(\"us-east-2\")\n            .cidr(\"10.10.0.0/16\")\n            .connectionTypes(\"TRANSITGATEWAY\")\n            .environment(NetworkEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .build());\n\n        var aws = new TransitGatewayAttachment(\"aws\", TransitGatewayAttachmentArgs.builder()\n            .displayName(\"AWS Transit Gateway Attachment\")\n            .aws(TransitGatewayAttachmentAwsArgs.builder()\n                .ramResourceShareArn(\"arn:aws:ram:us-east-2:000000000000:resource-share/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx\")\n                .transitGatewayId(\"tgw-xxxxxxxxxxxxxxxxx\")\n                .routes(                \n                    \"192.168.0.0/16\",\n                    \"172.16.0.0/12\",\n                    \"100.64.0.0/10\",\n                    \"10.0.0.0/8\")\n                .build())\n            .environment(TransitGatewayAttachmentEnvironmentArgs.builder()\n                .id(development.id())\n                .build())\n            .network(TransitGatewayAttachmentNetworkArgs.builder()\n                .id(aws_transit_gateway_attachment.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: confluentcloud:Environment\n    properties:\n      displayName: Development\n  aws-transit-gateway-attachment:\n    type: confluentcloud:Network\n    properties:\n      displayName: AWS Transit Gateway Attachment Network\n      cloud: AWS\n      region: us-east-2\n      cidr: 10.10.0.0/16\n      connectionTypes:\n        - TRANSITGATEWAY\n      environment:\n        id: ${development.id}\n  aws:\n    type: confluentcloud:TransitGatewayAttachment\n    properties:\n      displayName: AWS Transit Gateway Attachment\n      aws:\n        ramResourceShareArn: arn:aws:ram:us-east-2:000000000000:resource-share/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx\n        transitGatewayId: tgw-xxxxxxxxxxxxxxxxx\n        routes:\n          - 192.168.0.0/16\n          - 172.16.0.0/12\n          - 100.64.0.0/10\n          - 10.0.0.0/8\n      environment:\n        id: ${development.id}\n      network:\n        id: ${[\"aws-transit-gateway-attachment\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.TransitGatewayAttachment`\" pulumi-lang-dotnet=\"`confluentcloud.TransitGatewayAttachment`\" pulumi-lang-go=\"`TransitGatewayAttachment`\" pulumi-lang-python=\"`TransitGatewayAttachment`\" pulumi-lang-yaml=\"`confluentcloud.TransitGatewayAttachment`\" pulumi-lang-java=\"`confluentcloud.TransitGatewayAttachment`\"\u003e`confluentcloud.TransitGatewayAttachment`\u003c/span\u003e resource:\n  * dedicated-transit-gateway-attachment-aws-kafka-acls: _Dedicated_ Kafka cluster on AWS that is accessible via Transit Gateway Endpoint with authorization using ACLs\n  * enterprise-privatelinkattachment-aws-kafka-acls\n\n## Import\n\n\u003e **Note:** `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET` environment variables must be set before importing a Transit Gateway Attachment.\n\nYou can import a Transit Gateway Attachment by using Environment ID and Transit Gateway Attachment ID, in the format `\u003cEnvironment ID\u003e/\u003cTransit Gateway Attachment ID\u003e`. The following example shows how to import a Transit Gateway Attachment:\n\n```sh\n$ export CONFLUENT_CLOUD_API_KEY=\"\u003ccloud_api_key\u003e\"\n$ export CONFLUENT_CLOUD_API_SECRET=\"\u003ccloud_api_secret\u003e\"\n$ pulumi import confluentcloud:index/transitGatewayAttachment:TransitGatewayAttachment my_tgwa env-abc123/tgwa-abc123\n```\n\n!\u003e **Warning:** Do not forget to delete terminal command history afterwards for security purposes.\n\n","properties":{"aws":{"$ref":"#/types/confluentcloud:index/TransitGatewayAttachmentAws:TransitGatewayAttachmentAws","description":"(Required Configuration Block) The AWS-specific Transit Gateway Attachment details. It supports the following:\n"},"displayName":{"type":"string","description":"The name of the Transit Gateway Attachment.\n"},"environment":{"$ref":"#/types/confluentcloud:index/TransitGatewayAttachmentEnvironment:TransitGatewayAttachmentEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes."},"network":{"$ref":"#/types/confluentcloud:index/TransitGatewayAttachmentNetwork:TransitGatewayAttachmentNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts."}},"required":["displayName","environment","network"],"inputProperties":{"aws":{"$ref":"#/types/confluentcloud:index/TransitGatewayAttachmentAws:TransitGatewayAttachmentAws","description":"(Required Configuration Block) The AWS-specific Transit Gateway Attachment details. It supports the following:\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Transit Gateway Attachment.\n"},"environment":{"$ref":"#/types/confluentcloud:index/TransitGatewayAttachmentEnvironment:TransitGatewayAttachmentEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"network":{"$ref":"#/types/confluentcloud:index/TransitGatewayAttachmentNetwork:TransitGatewayAttachmentNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts.","willReplaceOnChanges":true}},"requiredInputs":["environment","network"],"stateInputs":{"description":"Input properties used for looking up and filtering TransitGatewayAttachment resources.\n","properties":{"aws":{"$ref":"#/types/confluentcloud:index/TransitGatewayAttachmentAws:TransitGatewayAttachmentAws","description":"(Required Configuration Block) The AWS-specific Transit Gateway Attachment details. It supports the following:\n","willReplaceOnChanges":true},"displayName":{"type":"string","description":"The name of the Transit Gateway Attachment.\n"},"environment":{"$ref":"#/types/confluentcloud:index/TransitGatewayAttachmentEnvironment:TransitGatewayAttachmentEnvironment","description":"Environment objects represent an isolated namespace for your Confluent resources for organizational purposes.","willReplaceOnChanges":true},"network":{"$ref":"#/types/confluentcloud:index/TransitGatewayAttachmentNetwork:TransitGatewayAttachmentNetwork","description":"Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts.","willReplaceOnChanges":true}},"type":"object"}}},"functions":{"confluentcloud:index/getAccessPoint:getAccessPoint":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.AccessPoint`\" pulumi-lang-dotnet=\"`confluentcloud.AccessPoint`\" pulumi-lang-go=\"`AccessPoint`\" pulumi-lang-python=\"`AccessPoint`\" pulumi-lang-yaml=\"`confluentcloud.AccessPoint`\" pulumi-lang-java=\"`confluentcloud.AccessPoint`\"\u003e`confluentcloud.AccessPoint`\u003c/span\u003e describes a Access Point data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getAccessPoint({\n    id: \"ap-abc123\",\n    environment: {\n        id: \"env-123abc\",\n    },\n});\nexport const accessPoint = main;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_access_point(id=\"ap-abc123\",\n    environment={\n        \"id\": \"env-123abc\",\n    })\npulumi.export(\"accessPoint\", main)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetAccessPoint.Invoke(new()\n    {\n        Id = \"ap-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetAccessPointEnvironmentInputArgs\n        {\n            Id = \"env-123abc\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"accessPoint\"] = main,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupAccessPoint(ctx, \u0026confluentcloud.LookupAccessPointArgs{\n\t\t\tId: \"ap-abc123\",\n\t\t\tEnvironment: confluentcloud.GetAccessPointEnvironment{\n\t\t\t\tId: \"env-123abc\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"accessPoint\", main)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetAccessPointArgs;\nimport com.pulumi.confluentcloud.inputs.GetAccessPointEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getAccessPoint(GetAccessPointArgs.builder()\n            .id(\"ap-abc123\")\n            .environment(GetAccessPointEnvironmentArgs.builder()\n                .id(\"env-123abc\")\n                .build())\n            .build());\n\n        ctx.export(\"accessPoint\", main);\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getAccessPoint\n      arguments:\n        id: ap-abc123\n        environment:\n          id: env-123abc\noutputs:\n  accessPoint: ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAccessPoint.\n","properties":{"environment":{"$ref":"#/types/confluentcloud:index/getAccessPointEnvironment:getAccessPointEnvironment"},"gcpEgressPrivateServiceConnectEndpoints":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getAccessPointGcpEgressPrivateServiceConnectEndpoint:getAccessPointGcpEgressPrivateServiceConnectEndpoint"},"description":"(Optional Configuration Block) supports the following:\n"},"id":{"type":"string","description":"The ID of the Access Point, for example, `ap-abc123`.\n"}},"type":"object","required":["environment","id"]},"outputs":{"description":"A collection of values returned by getAccessPoint.\n","properties":{"awsEgressPrivateLinkEndpoints":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getAccessPointAwsEgressPrivateLinkEndpoint:getAccessPointAwsEgressPrivateLinkEndpoint"},"type":"array"},"awsIngressPrivateLinkEndpoints":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getAccessPointAwsIngressPrivateLinkEndpoint:getAccessPointAwsIngressPrivateLinkEndpoint"},"type":"array"},"awsPrivateNetworkInterfaces":{"description":"(Optional Configuration Block) Supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getAccessPointAwsPrivateNetworkInterface:getAccessPointAwsPrivateNetworkInterface"},"type":"array"},"azureEgressPrivateLinkEndpoints":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getAccessPointAzureEgressPrivateLinkEndpoint:getAccessPointAzureEgressPrivateLinkEndpoint"},"type":"array"},"displayName":{"description":"(Required String) A human-readable name for the Access Point.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getAccessPointEnvironment:getAccessPointEnvironment"},"gateways":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getAccessPointGateway:getAccessPointGateway"},"type":"array"},"gcpEgressPrivateServiceConnectEndpoints":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getAccessPointGcpEgressPrivateServiceConnectEndpoint:getAccessPointGcpEgressPrivateServiceConnectEndpoint"},"type":"array"},"id":{"description":"(Required String) The ID of the gateway to which the Access Point belongs, for example, `gw-abc123`.\n","type":"string"}},"required":["awsEgressPrivateLinkEndpoints","awsIngressPrivateLinkEndpoints","awsPrivateNetworkInterfaces","azureEgressPrivateLinkEndpoints","displayName","environment","gateways","id"],"type":"object"}},"confluentcloud:index/getBusinessMetadata:getBusinessMetadata":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.BusinessMetadata`\" pulumi-lang-dotnet=\"`confluentcloud.BusinessMetadata`\" pulumi-lang-go=\"`BusinessMetadata`\" pulumi-lang-python=\"`BusinessMetadata`\" pulumi-lang-yaml=\"`confluentcloud.BusinessMetadata`\" pulumi-lang-java=\"`confluentcloud.BusinessMetadata`\"\u003e`confluentcloud.BusinessMetadata`\u003c/span\u003e describes a Business Metadata data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst pii = confluentcloud.getBusinessMetadata({\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name: \"PII\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npii = confluentcloud.get_business_metadata(schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name=\"PII\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pii = ConfluentCloud.GetBusinessMetadata.Invoke(new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.GetBusinessMetadataSchemaRegistryClusterInputArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.GetBusinessMetadataCredentialsInputArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        Name = \"PII\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.LookupBusinessMetadata(ctx, \u0026confluentcloud.LookupBusinessMetadataArgs{\n\t\t\tSchemaRegistryCluster: confluentcloud.GetBusinessMetadataSchemaRegistryCluster{\n\t\t\t\tId: essentials.Id,\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.StringRef(essentials.RestEndpoint),\n\t\t\tCredentials: confluentcloud.GetBusinessMetadataCredentials{\n\t\t\t\tKey:    \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t\tSecret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t},\n\t\t\tName: \"PII\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetBusinessMetadataArgs;\nimport com.pulumi.confluentcloud.inputs.GetBusinessMetadataSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetBusinessMetadataCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var pii = ConfluentcloudFunctions.getBusinessMetadata(GetBusinessMetadataArgs.builder()\n            .schemaRegistryCluster(GetBusinessMetadataSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(GetBusinessMetadataCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .name(\"PII\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  pii:\n    fn::invoke:\n      function: confluentcloud:getBusinessMetadata\n      arguments:\n        schemaRegistryCluster:\n          id: ${essentials.id}\n        restEndpoint: ${essentials.restEndpoint}\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n        name: PII\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst pii = confluentcloud.getBusinessMetadata({\n    name: \"PII\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npii = confluentcloud.get_business_metadata(name=\"PII\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pii = ConfluentCloud.GetBusinessMetadata.Invoke(new()\n    {\n        Name = \"PII\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.LookupBusinessMetadata(ctx, \u0026confluentcloud.LookupBusinessMetadataArgs{\n\t\t\tName: \"PII\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetBusinessMetadataArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var pii = ConfluentcloudFunctions.getBusinessMetadata(GetBusinessMetadataArgs.builder()\n            .name(\"PII\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  pii:\n    fn::invoke:\n      function: confluentcloud:getBusinessMetadata\n      arguments:\n        name: PII\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\u003e **Note:** We also support \u003cspan pulumi-lang-nodejs=\"`schemaRegistryRestEndpoint`\" pulumi-lang-dotnet=\"`SchemaRegistryRestEndpoint`\" pulumi-lang-go=\"`schemaRegistryRestEndpoint`\" pulumi-lang-python=\"`schema_registry_rest_endpoint`\" pulumi-lang-yaml=\"`schemaRegistryRestEndpoint`\" pulumi-lang-java=\"`schemaRegistryRestEndpoint`\"\u003e`schema_registry_rest_endpoint`\u003c/span\u003e instead of \u003cspan pulumi-lang-nodejs=\"`catalogRestEndpoint`\" pulumi-lang-dotnet=\"`CatalogRestEndpoint`\" pulumi-lang-go=\"`catalogRestEndpoint`\" pulumi-lang-python=\"`catalog_rest_endpoint`\" pulumi-lang-yaml=\"`catalogRestEndpoint`\" pulumi-lang-java=\"`catalogRestEndpoint`\"\u003e`catalog_rest_endpoint`\u003c/span\u003e for the time being.\n","inputs":{"description":"A collection of arguments for invoking getBusinessMetadata.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getBusinessMetadataCredentials:getBusinessMetadataCredentials","secret":true},"name":{"type":"string","description":"The name of the Business Metadata, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getBusinessMetadataSchemaRegistryCluster:getBusinessMetadataSchemaRegistryCluster"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getBusinessMetadata.\n","properties":{"attributeDefinitions":{"description":"(Optional List) The list of attribute definitions (see [Business Metadata](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog.html#business-metadata-for-schemas) for more details):\n","items":{"$ref":"#/types/confluentcloud:index/getBusinessMetadataAttributeDefinition:getBusinessMetadataAttributeDefinition"},"type":"array"},"credentials":{"$ref":"#/types/confluentcloud:index/getBusinessMetadataCredentials:getBusinessMetadataCredentials","secret":true},"description":{"description":"(Optional String) The description of this attribute.\n","type":"string"},"id":{"description":"(Required String) The ID of the Business Metadata, in the format `\u003cSchema Registry cluster ID\u003e/\u003cBusiness Metadata name\u003e`, for example, `lsrc-8wrx70/PII`.\n","type":"string"},"name":{"description":"(Required String) The name of the attribute.\n","type":"string"},"restEndpoint":{"type":"string"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getBusinessMetadataSchemaRegistryCluster:getBusinessMetadataSchemaRegistryCluster"},"version":{"description":"(Required Integer) The version of the Business Metadata, for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n","type":"integer"}},"required":["attributeDefinitions","description","id","name","version"],"type":"object"}},"confluentcloud:index/getBusinessMetadataBinding:getBusinessMetadataBinding":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-dotnet=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-go=\"`BusinessMetadataBinding`\" pulumi-lang-python=\"`BusinessMetadataBinding`\" pulumi-lang-yaml=\"`confluentcloud.BusinessMetadataBinding`\" pulumi-lang-java=\"`confluentcloud.BusinessMetadataBinding`\"\u003e`confluentcloud.BusinessMetadataBinding`\u003c/span\u003e describes a Business Metadata Binding data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getBusinessMetadataBinding({\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    businessMetadataName: pii.name,\n    entityName: `${schemaRegistryId}:${kafkaId}:${mainConfluentKafkaTopic.topicName}`,\n    entityType: \"kafka_topic\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_business_metadata_binding(schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    business_metadata_name=pii[\"name\"],\n    entity_name=f\"{schema_registry_id}:{kafka_id}:{main_confluent_kafka_topic['topicName']}\",\n    entity_type=\"kafka_topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetBusinessMetadataBinding.Invoke(new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.GetBusinessMetadataBindingSchemaRegistryClusterInputArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.GetBusinessMetadataBindingCredentialsInputArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        BusinessMetadataName = pii.Name,\n        EntityName = $\"{schemaRegistryId}:{kafkaId}:{mainConfluentKafkaTopic.TopicName}\",\n        EntityType = \"kafka_topic\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.LookupBusinessMetadataBinding(ctx, \u0026confluentcloud.LookupBusinessMetadataBindingArgs{\n\t\t\tSchemaRegistryCluster: confluentcloud.GetBusinessMetadataBindingSchemaRegistryCluster{\n\t\t\t\tId: essentials.Id,\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.StringRef(essentials.RestEndpoint),\n\t\t\tCredentials: confluentcloud.GetBusinessMetadataBindingCredentials{\n\t\t\t\tKey:    \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t\tSecret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t},\n\t\t\tBusinessMetadataName: pii.Name,\n\t\t\tEntityName:           fmt.Sprintf(\"%v:%v:%v\", schemaRegistryId, kafkaId, mainConfluentKafkaTopic.TopicName),\n\t\t\tEntityType:           \"kafka_topic\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetBusinessMetadataBindingArgs;\nimport com.pulumi.confluentcloud.inputs.GetBusinessMetadataBindingSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetBusinessMetadataBindingCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getBusinessMetadataBinding(GetBusinessMetadataBindingArgs.builder()\n            .schemaRegistryCluster(GetBusinessMetadataBindingSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(GetBusinessMetadataBindingCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .businessMetadataName(pii.name())\n            .entityName(String.format(\"%s:%s:%s\", schemaRegistryId,kafkaId,mainConfluentKafkaTopic.topicName()))\n            .entityType(\"kafka_topic\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getBusinessMetadataBinding\n      arguments:\n        schemaRegistryCluster:\n          id: ${essentials.id}\n        restEndpoint: ${essentials.restEndpoint}\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n        businessMetadataName: ${pii.name}\n        entityName: ${schemaRegistryId}:${kafkaId}:${mainConfluentKafkaTopic.topicName}\n        entityType: kafka_topic\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getBusinessMetadataBinding({\n    businessMetadataName: pii.name,\n    entityName: `${schemaRegistryId}:${kafkaId}:${mainConfluentKafkaTopic.topicName}`,\n    entityType: \"kafka_topic\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_business_metadata_binding(business_metadata_name=pii[\"name\"],\n    entity_name=f\"{schema_registry_id}:{kafka_id}:{main_confluent_kafka_topic['topicName']}\",\n    entity_type=\"kafka_topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetBusinessMetadataBinding.Invoke(new()\n    {\n        BusinessMetadataName = pii.Name,\n        EntityName = $\"{schemaRegistryId}:{kafkaId}:{mainConfluentKafkaTopic.TopicName}\",\n        EntityType = \"kafka_topic\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.LookupBusinessMetadataBinding(ctx, \u0026confluentcloud.LookupBusinessMetadataBindingArgs{\n\t\t\tBusinessMetadataName: pii.Name,\n\t\t\tEntityName:           fmt.Sprintf(\"%v:%v:%v\", schemaRegistryId, kafkaId, mainConfluentKafkaTopic.TopicName),\n\t\t\tEntityType:           \"kafka_topic\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetBusinessMetadataBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getBusinessMetadataBinding(GetBusinessMetadataBindingArgs.builder()\n            .businessMetadataName(pii.name())\n            .entityName(String.format(\"%s:%s:%s\", schemaRegistryId,kafkaId,mainConfluentKafkaTopic.topicName()))\n            .entityType(\"kafka_topic\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getBusinessMetadataBinding\n      arguments:\n        businessMetadataName: ${pii.name}\n        entityName: ${schemaRegistryId}:${kafkaId}:${mainConfluentKafkaTopic.topicName}\n        entityType: kafka_topic\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\u003e **Note:** We also support \u003cspan pulumi-lang-nodejs=\"`schemaRegistryRestEndpoint`\" pulumi-lang-dotnet=\"`SchemaRegistryRestEndpoint`\" pulumi-lang-go=\"`schemaRegistryRestEndpoint`\" pulumi-lang-python=\"`schema_registry_rest_endpoint`\" pulumi-lang-yaml=\"`schemaRegistryRestEndpoint`\" pulumi-lang-java=\"`schemaRegistryRestEndpoint`\"\u003e`schema_registry_rest_endpoint`\u003c/span\u003e instead of \u003cspan pulumi-lang-nodejs=\"`catalogRestEndpoint`\" pulumi-lang-dotnet=\"`CatalogRestEndpoint`\" pulumi-lang-go=\"`catalogRestEndpoint`\" pulumi-lang-python=\"`catalog_rest_endpoint`\" pulumi-lang-yaml=\"`catalogRestEndpoint`\" pulumi-lang-java=\"`catalogRestEndpoint`\"\u003e`catalog_rest_endpoint`\u003c/span\u003e for the time being.\n","inputs":{"description":"A collection of arguments for invoking getBusinessMetadataBinding.\n","properties":{"businessMetadataName":{"type":"string","description":"The name of the Business Metadata to be applied, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/getBusinessMetadataBindingCredentials:getBusinessMetadataBindingCredentials","secret":true},"entityName":{"type":"string","description":"The qualified name of the entity, for example, `${data.confluent_schema_registry_cluster.essentials.id}:.:${confluent_schema.purchase.schema_identifier}`, `${data.confluent_schema_registry_cluster.essentials.id}:${confluent_kafka_cluster.basic.id}:${confluent_kafka_topic.purchase.topic_name}`. Refer to the [Examples of qualified names](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#examples-of-qualified-names) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityName`\" pulumi-lang-dotnet=\"`EntityName`\" pulumi-lang-go=\"`entityName`\" pulumi-lang-python=\"`entity_name`\" pulumi-lang-yaml=\"`entityName`\" pulumi-lang-java=\"`entityName`\"\u003e`entity_name`\u003c/span\u003e attribute.\n"},"entityType":{"type":"string","description":"The entity type, for example, \u003cspan pulumi-lang-nodejs=\"`srSchema`\" pulumi-lang-dotnet=\"`SrSchema`\" pulumi-lang-go=\"`srSchema`\" pulumi-lang-python=\"`sr_schema`\" pulumi-lang-yaml=\"`srSchema`\" pulumi-lang-java=\"`srSchema`\"\u003e`sr_schema`\u003c/span\u003e.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getBusinessMetadataBindingSchemaRegistryCluster:getBusinessMetadataBindingSchemaRegistryCluster"}},"type":"object","required":["businessMetadataName","entityName","entityType"]},"outputs":{"description":"A collection of values returned by getBusinessMetadataBinding.\n","properties":{"attributes":{"additionalProperties":{"type":"string"},"description":"(Optional Map) The block of key-value pair attributes.\n","type":"object"},"businessMetadataName":{"type":"string"},"credentials":{"$ref":"#/types/confluentcloud:index/getBusinessMetadataBindingCredentials:getBusinessMetadataBindingCredentials","secret":true},"entityName":{"type":"string"},"entityType":{"type":"string"},"id":{"description":"(Required String) The ID of the Business Metadata Binding, in the format `\u003cSchema Registry Cluster Id\u003e/\u003cBusiness Metadata Name\u003e/\u003cEntity Name\u003e/\u003cEntity Type\u003e`, for example, `lsrc-8wrx70/PII/lsrc-8wrx70:.:100001/sr_schema`.\n","type":"string"},"restEndpoint":{"type":"string"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getBusinessMetadataBindingSchemaRegistryCluster:getBusinessMetadataBindingSchemaRegistryCluster"}},"required":["attributes","businessMetadataName","entityName","entityType","id"],"type":"object"}},"confluentcloud:index/getByokKey:getByokKey":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ByokKey`\" pulumi-lang-dotnet=\"`confluentcloud.ByokKey`\" pulumi-lang-go=\"`ByokKey`\" pulumi-lang-python=\"`ByokKey`\" pulumi-lang-yaml=\"`confluentcloud.ByokKey`\" pulumi-lang-java=\"`confluentcloud.ByokKey`\"\u003e`confluentcloud.ByokKey`\u003c/span\u003e describes a BYOK Key data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst azureKey = confluentcloud.getByokKey({\n    id: \"cck-abcde\",\n});\nexport const byok = azureKey;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nazure_key = confluentcloud.get_byok_key(id=\"cck-abcde\")\npulumi.export(\"byok\", azure_key)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var azureKey = ConfluentCloud.GetByokKey.Invoke(new()\n    {\n        Id = \"cck-abcde\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"byok\"] = azureKey,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tazureKey, err := confluentcloud.LookupByokKey(ctx, \u0026confluentcloud.LookupByokKeyArgs{\n\t\t\tId: \"cck-abcde\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"byok\", azureKey)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetByokKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var azureKey = ConfluentcloudFunctions.getByokKey(GetByokKeyArgs.builder()\n            .id(\"cck-abcde\")\n            .build());\n\n        ctx.export(\"byok\", azureKey);\n    }\n}\n```\n```yaml\nvariables:\n  azureKey:\n    fn::invoke:\n      function: confluentcloud:getByokKey\n      arguments:\n        id: cck-abcde\noutputs:\n  byok: ${azureKey}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getByokKey.\n","properties":{"id":{"type":"string","description":"The ID of the BYOK key, for example, `cck-abcde`.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getByokKey.\n","properties":{"aws":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getByokKeyAw:getByokKeyAw"},"type":"array"},"azures":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getByokKeyAzure:getByokKeyAzure"},"type":"array"},"gcps":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getByokKeyGcp:getByokKeyGcp"},"type":"array"},"id":{"description":"(Required String) The ID of the BYOK key, for example, `cck-abcde`.\n","type":"string"}},"required":["aws","azures","gcps","id"],"type":"object"}},"confluentcloud:index/getCatalogIntegration:getCatalogIntegration":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.CatalogIntegration`\" pulumi-lang-dotnet=\"`confluentcloud.CatalogIntegration`\" pulumi-lang-go=\"`CatalogIntegration`\" pulumi-lang-python=\"`CatalogIntegration`\" pulumi-lang-yaml=\"`confluentcloud.CatalogIntegration`\" pulumi-lang-java=\"`confluentcloud.CatalogIntegration`\"\u003e`confluentcloud.CatalogIntegration`\u003c/span\u003e describes a Catalog Integration data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Catalog Integrations in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const example = await confluentcloud.getCatalogIntegration({\n        environment: {\n            id: staging.id,\n        },\n        kafkaCluster: {\n            id: stagingConfluentKafkaCluster.id,\n        },\n        id: \"tci-abc123\",\n        credentials: {\n            key: env_admin_tableflow_api_key.id,\n            secret: env_admin_tableflow_api_key.secret,\n        },\n    });\n    return {\n        \"retention-ms\": example.retentionMs,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_catalog_integration(environment={\n        \"id\": staging[\"id\"],\n    },\n    kafka_cluster={\n        \"id\": staging_confluent_kafka_cluster[\"id\"],\n    },\n    id=\"tci-abc123\",\n    credentials={\n        \"key\": env_admin_tableflow_api_key[\"id\"],\n        \"secret\": env_admin_tableflow_api_key[\"secret\"],\n    })\npulumi.export(\"retention-ms\", example.retention_ms)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetCatalogIntegration.Invoke(new()\n    {\n        Environment = new ConfluentCloud.Inputs.GetCatalogIntegrationEnvironmentInputArgs\n        {\n            Id = staging.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.GetCatalogIntegrationKafkaClusterInputArgs\n        {\n            Id = stagingConfluentKafkaCluster.Id,\n        },\n        Id = \"tci-abc123\",\n        Credentials = new ConfluentCloud.Inputs.GetCatalogIntegrationCredentialsInputArgs\n        {\n            Key = env_admin_tableflow_api_key.Id,\n            Secret = env_admin_tableflow_api_key.Secret,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"retention-ms\"] = example.Apply(getCatalogIntegrationResult =\u003e getCatalogIntegrationResult.RetentionMs),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupCatalogIntegration(ctx, \u0026confluentcloud.LookupCatalogIntegrationArgs{\n\t\t\tEnvironment: confluentcloud.GetCatalogIntegrationEnvironment{\n\t\t\t\tId: staging.Id,\n\t\t\t},\n\t\t\tKafkaCluster: confluentcloud.GetCatalogIntegrationKafkaCluster{\n\t\t\t\tId: stagingConfluentKafkaCluster.Id,\n\t\t\t},\n\t\t\tId: \"tci-abc123\",\n\t\t\tCredentials: confluentcloud.GetCatalogIntegrationCredentials{\n\t\t\t\tKey:    env_admin_tableflow_api_key.Id,\n\t\t\t\tSecret: env_admin_tableflow_api_key.Secret,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"retention-ms\", example.RetentionMs)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetCatalogIntegrationArgs;\nimport com.pulumi.confluentcloud.inputs.GetCatalogIntegrationEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.GetCatalogIntegrationKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetCatalogIntegrationCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getCatalogIntegration(GetCatalogIntegrationArgs.builder()\n            .environment(GetCatalogIntegrationEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .kafkaCluster(GetCatalogIntegrationKafkaClusterArgs.builder()\n                .id(stagingConfluentKafkaCluster.id())\n                .build())\n            .id(\"tci-abc123\")\n            .credentials(GetCatalogIntegrationCredentialsArgs.builder()\n                .key(env_admin_tableflow_api_key.id())\n                .secret(env_admin_tableflow_api_key.secret())\n                .build())\n            .build());\n\n        ctx.export(\"retention-ms\", example.retentionMs());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getCatalogIntegration\n      arguments:\n        environment:\n          id: ${staging.id}\n        kafkaCluster:\n          id: ${stagingConfluentKafkaCluster.id}\n        id: tci-abc123\n        credentials:\n          key: ${[\"env-admin-tableflow-api-key\"].id}\n          secret: ${[\"env-admin-tableflow-api-key\"].secret}\noutputs:\n  retention-ms: ${example.retentionMs}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Catalog Integration in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const example = await confluentcloud.getCatalogIntegration({\n        id: \"tci-abc123\",\n    });\n    return {\n        \"retention-ms\": example.retentionMs,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_catalog_integration(id=\"tci-abc123\")\npulumi.export(\"retention-ms\", example.retention_ms)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetCatalogIntegration.Invoke(new()\n    {\n        Id = \"tci-abc123\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"retention-ms\"] = example.Apply(getCatalogIntegrationResult =\u003e getCatalogIntegrationResult.RetentionMs),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupCatalogIntegration(ctx, \u0026confluentcloud.LookupCatalogIntegrationArgs{\n\t\t\tId: \"tci-abc123\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"retention-ms\", example.RetentionMs)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetCatalogIntegrationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getCatalogIntegration(GetCatalogIntegrationArgs.builder()\n            .id(\"tci-abc123\")\n            .build());\n\n        ctx.export(\"retention-ms\", example.retentionMs());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getCatalogIntegration\n      arguments:\n        id: tci-abc123\noutputs:\n  retention-ms: ${example.retentionMs}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getCatalogIntegration.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getCatalogIntegrationCredentials:getCatalogIntegrationCredentials","secret":true},"environment":{"$ref":"#/types/confluentcloud:index/getCatalogIntegrationEnvironment:getCatalogIntegrationEnvironment"},"id":{"type":"string","description":"The ID of the Catalog Integration, for example, `tci-abc123`.\n"},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/getCatalogIntegrationKafkaCluster:getCatalogIntegrationKafkaCluster"}},"type":"object","required":["environment","id","kafkaCluster"]},"outputs":{"description":"A collection of values returned by getCatalogIntegration.\n","properties":{"awsGlues":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getCatalogIntegrationAwsGlue:getCatalogIntegrationAwsGlue"},"type":"array"},"credentials":{"$ref":"#/types/confluentcloud:index/getCatalogIntegrationCredentials:getCatalogIntegrationCredentials","secret":true},"displayName":{"description":"(Required String) The name of the catalog integration.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getCatalogIntegrationEnvironment:getCatalogIntegrationEnvironment"},"id":{"type":"string"},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/getCatalogIntegrationKafkaCluster:getCatalogIntegrationKafkaCluster"},"snowflakes":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getCatalogIntegrationSnowflake:getCatalogIntegrationSnowflake"},"type":"array"},"suspended":{"description":"(Optional Boolean) Indicates whether the Catalog Integration should be suspended.\n","type":"boolean"},"unities":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getCatalogIntegrationUnity:getCatalogIntegrationUnity"},"type":"array"}},"required":["awsGlues","displayName","environment","id","kafkaCluster","snowflakes","suspended","unities"],"type":"object"}},"confluentcloud:index/getCertificateAuthority:getCertificateAuthority":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.CertificateAuthority`\" pulumi-lang-dotnet=\"`confluentcloud.CertificateAuthority`\" pulumi-lang-go=\"`CertificateAuthority`\" pulumi-lang-python=\"`CertificateAuthority`\" pulumi-lang-yaml=\"`confluentcloud.CertificateAuthority`\" pulumi-lang-java=\"`confluentcloud.CertificateAuthority`\"\u003e`confluentcloud.CertificateAuthority`\u003c/span\u003e describes a Certificate Authority data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getCertificateAuthority({\n    id: \"op-abc123\",\n});\nexport const certificateAuthority = main;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_certificate_authority(id=\"op-abc123\")\npulumi.export(\"certificateAuthority\", main)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetCertificateAuthority.Invoke(new()\n    {\n        Id = \"op-abc123\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"certificateAuthority\"] = main,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupCertificateAuthority(ctx, \u0026confluentcloud.LookupCertificateAuthorityArgs{\n\t\t\tId: \"op-abc123\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"certificateAuthority\", main)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetCertificateAuthorityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getCertificateAuthority(GetCertificateAuthorityArgs.builder()\n            .id(\"op-abc123\")\n            .build());\n\n        ctx.export(\"certificateAuthority\", main);\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getCertificateAuthority\n      arguments:\n        id: op-abc123\noutputs:\n  certificateAuthority: ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getCertificateAuthority.\n","properties":{"crlSource":{"type":"string","description":"(Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`.\n"},"crlUpdatedAt":{"type":"string","description":"(Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`.\n"},"crlUrl":{"type":"string","description":"(Optional String) The url from which to fetch the CRL for the certificate authority if\u003cspan pulumi-lang-nodejs=\" crlSource \" pulumi-lang-dotnet=\" CrlSource \" pulumi-lang-go=\" crlSource \" pulumi-lang-python=\" crl_source \" pulumi-lang-yaml=\" crlSource \" pulumi-lang-java=\" crlSource \"\u003e crl_source \u003c/span\u003eis URL.\n"},"id":{"type":"string","description":"The ID of the Certificate Authority, for example, `op-abc123`.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getCertificateAuthority.\n","properties":{"certificateChainFilename":{"description":"(Required String) The name of the certificate file, for example, `certificate.pem`.\n","type":"string"},"crlSource":{"description":"(Optional String) The source specifies whether the Certificate Revocation List (CRL) is updated from either local file uploaded (LOCAL) or from url of CRL (URL). Accepted values are `LOCAL` and `URL`.\n","type":"string"},"crlUpdatedAt":{"description":"(Optional String) The timestamp for when CRL was last updated, for example, `2017-07-21T17:32:28Z`.\n","type":"string"},"crlUrl":{"description":"(Optional String) The url from which to fetch the CRL for the certificate authority if\u003cspan pulumi-lang-nodejs=\" crlSource \" pulumi-lang-dotnet=\" CrlSource \" pulumi-lang-go=\" crlSource \" pulumi-lang-python=\" crl_source \" pulumi-lang-yaml=\" crlSource \" pulumi-lang-java=\" crlSource \"\u003e crl_source \u003c/span\u003eis URL.\n","type":"string"},"description":{"description":"(Required String) A description for the Certificate Authority.\n","type":"string"},"displayName":{"description":"(Required String) A human-readable name for the Certificate Authority.\n","type":"string"},"expirationDates":{"description":"(Required List of Strings) The expiration dates of certificates in the chain, for example, `[\"2017-07-21T17:32:28Z\"]`.\n","items":{"type":"string"},"type":"array"},"fingerprints":{"description":"(Required List of Strings) The fingerprints for each certificate in the certificate chain, for example, `[\"B1BC968BD4f49D622AA89A81F2150152A41D829C\"]`.\n","items":{"type":"string"},"type":"array"},"id":{"type":"string"},"serialNumbers":{"description":"(Required List of Strings) The serial numbers for each certificate in the certificate chain.\n","items":{"type":"string"},"type":"array"}},"required":["certificateChainFilename","crlSource","crlUpdatedAt","crlUrl","description","displayName","expirationDates","fingerprints","id","serialNumbers"],"type":"object"}},"confluentcloud:index/getCertificatePool:getCertificatePool":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.CertificatePool`\" pulumi-lang-dotnet=\"`confluentcloud.CertificatePool`\" pulumi-lang-go=\"`CertificatePool`\" pulumi-lang-python=\"`CertificatePool`\" pulumi-lang-yaml=\"`confluentcloud.CertificatePool`\" pulumi-lang-java=\"`confluentcloud.CertificatePool`\"\u003e`confluentcloud.CertificatePool`\u003c/span\u003e describes a Certificate Pool data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const main = await confluentcloud.getCertificatePool({\n        id: \"pool-def456\",\n        certificateAuthority: {\n            id: \"op-abc123\",\n        },\n    });\n    const exampleUsingName = await confluentcloud.getCertificatePool({\n        displayName: \"My Certificate Pool\",\n        certificateAuthority: {\n            id: \"op-abc123\",\n        },\n    });\n    return {\n        certificatePool: main,\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_certificate_pool(id=\"pool-def456\",\n    certificate_authority={\n        \"id\": \"op-abc123\",\n    })\npulumi.export(\"certificatePool\", main)\nexample_using_name = confluentcloud.get_certificate_pool(display_name=\"My Certificate Pool\",\n    certificate_authority={\n        \"id\": \"op-abc123\",\n    })\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetCertificatePool.Invoke(new()\n    {\n        Id = \"pool-def456\",\n        CertificateAuthority = new ConfluentCloud.Inputs.GetCertificatePoolCertificateAuthorityInputArgs\n        {\n            Id = \"op-abc123\",\n        },\n    });\n\n    var exampleUsingName = ConfluentCloud.GetCertificatePool.Invoke(new()\n    {\n        DisplayName = \"My Certificate Pool\",\n        CertificateAuthority = new ConfluentCloud.Inputs.GetCertificatePoolCertificateAuthorityInputArgs\n        {\n            Id = \"op-abc123\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"certificatePool\"] = main,\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupCertificatePool(ctx, \u0026confluentcloud.LookupCertificatePoolArgs{\n\t\t\tId: pulumi.StringRef(\"pool-def456\"),\n\t\t\tCertificateAuthority: confluentcloud.GetCertificatePoolCertificateAuthority{\n\t\t\t\tId: \"op-abc123\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"certificatePool\", main)\n\t\texampleUsingName, err := confluentcloud.LookupCertificatePool(ctx, \u0026confluentcloud.LookupCertificatePoolArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"My Certificate Pool\"),\n\t\t\tCertificateAuthority: confluentcloud.GetCertificatePoolCertificateAuthority{\n\t\t\t\tId: \"op-abc123\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetCertificatePoolArgs;\nimport com.pulumi.confluentcloud.inputs.GetCertificatePoolCertificateAuthorityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getCertificatePool(GetCertificatePoolArgs.builder()\n            .id(\"pool-def456\")\n            .certificateAuthority(GetCertificatePoolCertificateAuthorityArgs.builder()\n                .id(\"op-abc123\")\n                .build())\n            .build());\n\n        ctx.export(\"certificatePool\", main);\n        final var exampleUsingName = ConfluentcloudFunctions.getCertificatePool(GetCertificatePoolArgs.builder()\n            .displayName(\"My Certificate Pool\")\n            .certificateAuthority(GetCertificatePoolCertificateAuthorityArgs.builder()\n                .id(\"op-abc123\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getCertificatePool\n      arguments:\n        id: pool-def456\n        certificateAuthority:\n          id: op-abc123\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getCertificatePool\n      arguments:\n        displayName: My Certificate Pool\n        certificateAuthority:\n          id: op-abc123\noutputs:\n  certificatePool: ${main}\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getCertificatePool.\n","properties":{"certificateAuthority":{"$ref":"#/types/confluentcloud:index/getCertificatePoolCertificateAuthority:getCertificatePoolCertificateAuthority"},"displayName":{"type":"string","description":"A human-readable name for the Certificate Pool.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"},"id":{"type":"string","description":"The ID of the Certificate Pool, for example, `pool-abc123`.\n"}},"type":"object","required":["certificateAuthority"]},"outputs":{"description":"A collection of values returned by getCertificatePool.\n","properties":{"certificateAuthority":{"$ref":"#/types/confluentcloud:index/getCertificatePoolCertificateAuthority:getCertificatePoolCertificateAuthority"},"description":{"description":"(Required String) A description of the Certificate Pool.\n","type":"string"},"displayName":{"type":"string"},"externalIdentifier":{"description":"(Required String) The certificate field that will be used to represent the pool's external identity for audit logging, for example, `UID`.\n","type":"string"},"filter":{"description":"(Required String) A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/mtls/cel-filters.html) that specifies which identities can authenticate using your certificate pool.\n","type":"string"},"id":{"type":"string"}},"required":["certificateAuthority","description","displayName","externalIdentifier","filter","id"],"type":"object"}},"confluentcloud:index/getClusterLink:getClusterLink":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ClusterLink`\" pulumi-lang-dotnet=\"`confluentcloud.ClusterLink`\" pulumi-lang-go=\"`ClusterLink`\" pulumi-lang-python=\"`ClusterLink`\" pulumi-lang-yaml=\"`confluentcloud.ClusterLink`\" pulumi-lang-java=\"`confluentcloud.ClusterLink`\"\u003e`confluentcloud.ClusterLink`\u003c/span\u003e describes a Cluster Link data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Kafka clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getClusterLink({\n    linkName: \"main-link\",\n    restEndpoint: west.restEndpoint,\n    kafkaCluster: {\n        id: west.id,\n    },\n    credentials: {\n        key: app_manager_west_cluster_api_key.id,\n        secret: app_manager_west_cluster_api_key.secret,\n    },\n});\nexport const kafkaClusterLinkId = main.then(main =\u003e main.clusterLinkId);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_cluster_link(link_name=\"main-link\",\n    rest_endpoint=west[\"restEndpoint\"],\n    kafka_cluster={\n        \"id\": west[\"id\"],\n    },\n    credentials={\n        \"key\": app_manager_west_cluster_api_key[\"id\"],\n        \"secret\": app_manager_west_cluster_api_key[\"secret\"],\n    })\npulumi.export(\"kafkaClusterLinkId\", main.cluster_link_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetClusterLink.Invoke(new()\n    {\n        LinkName = \"main-link\",\n        RestEndpoint = west.RestEndpoint,\n        KafkaCluster = new ConfluentCloud.Inputs.GetClusterLinkKafkaClusterInputArgs\n        {\n            Id = west.Id,\n        },\n        Credentials = new ConfluentCloud.Inputs.GetClusterLinkCredentialsInputArgs\n        {\n            Key = app_manager_west_cluster_api_key.Id,\n            Secret = app_manager_west_cluster_api_key.Secret,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"kafkaClusterLinkId\"] = main.Apply(getClusterLinkResult =\u003e getClusterLinkResult.ClusterLinkId),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupClusterLink(ctx, \u0026confluentcloud.LookupClusterLinkArgs{\n\t\t\tLinkName:     \"main-link\",\n\t\t\tRestEndpoint: pulumi.StringRef(west.RestEndpoint),\n\t\t\tKafkaCluster: confluentcloud.GetClusterLinkKafkaCluster{\n\t\t\t\tId: west.Id,\n\t\t\t},\n\t\t\tCredentials: confluentcloud.GetClusterLinkCredentials{\n\t\t\t\tKey:    app_manager_west_cluster_api_key.Id,\n\t\t\t\tSecret: app_manager_west_cluster_api_key.Secret,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"kafkaClusterLinkId\", main.ClusterLinkId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetClusterLinkArgs;\nimport com.pulumi.confluentcloud.inputs.GetClusterLinkKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetClusterLinkCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getClusterLink(GetClusterLinkArgs.builder()\n            .linkName(\"main-link\")\n            .restEndpoint(west.restEndpoint())\n            .kafkaCluster(GetClusterLinkKafkaClusterArgs.builder()\n                .id(west.id())\n                .build())\n            .credentials(GetClusterLinkCredentialsArgs.builder()\n                .key(app_manager_west_cluster_api_key.id())\n                .secret(app_manager_west_cluster_api_key.secret())\n                .build())\n            .build());\n\n        ctx.export(\"kafkaClusterLinkId\", main.clusterLinkId());\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getClusterLink\n      arguments:\n        linkName: main-link\n        restEndpoint: ${west.restEndpoint}\n        kafkaCluster:\n          id: ${west.id}\n        credentials:\n          key: ${[\"app-manager-west-cluster-api-key\"].id}\n          secret: ${[\"app-manager-west-cluster-api-key\"].secret}\noutputs:\n  kafkaClusterLinkId: ${main.clusterLinkId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Kafka cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getClusterLink({\n    linkName: \"main-link\",\n});\nexport const kafkaClusterLinkId = main.then(main =\u003e main.clusterLinkId);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_cluster_link(link_name=\"main-link\")\npulumi.export(\"kafkaClusterLinkId\", main.cluster_link_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetClusterLink.Invoke(new()\n    {\n        LinkName = \"main-link\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"kafkaClusterLinkId\"] = main.Apply(getClusterLinkResult =\u003e getClusterLinkResult.ClusterLinkId),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupClusterLink(ctx, \u0026confluentcloud.LookupClusterLinkArgs{\n\t\t\tLinkName: \"main-link\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"kafkaClusterLinkId\", main.ClusterLinkId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetClusterLinkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getClusterLink(GetClusterLinkArgs.builder()\n            .linkName(\"main-link\")\n            .build());\n\n        ctx.export(\"kafkaClusterLinkId\", main.clusterLinkId());\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getClusterLink\n      arguments:\n        linkName: main-link\noutputs:\n  kafkaClusterLinkId: ${main.clusterLinkId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #3: Manage Kafka cluster(s) in the same Pulumi Stack using OAuth authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getClusterLink({\n    linkName: \"main-link\",\n    restEndpoint: west.restEndpoint,\n    kafkaCluster: {\n        id: west.id,\n    },\n});\nexport const kafkaClusterLinkId = main.then(main =\u003e main.clusterLinkId);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_cluster_link(link_name=\"main-link\",\n    rest_endpoint=west[\"restEndpoint\"],\n    kafka_cluster={\n        \"id\": west[\"id\"],\n    })\npulumi.export(\"kafkaClusterLinkId\", main.cluster_link_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetClusterLink.Invoke(new()\n    {\n        LinkName = \"main-link\",\n        RestEndpoint = west.RestEndpoint,\n        KafkaCluster = new ConfluentCloud.Inputs.GetClusterLinkKafkaClusterInputArgs\n        {\n            Id = west.Id,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"kafkaClusterLinkId\"] = main.Apply(getClusterLinkResult =\u003e getClusterLinkResult.ClusterLinkId),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupClusterLink(ctx, \u0026confluentcloud.LookupClusterLinkArgs{\n\t\t\tLinkName:     \"main-link\",\n\t\t\tRestEndpoint: pulumi.StringRef(west.RestEndpoint),\n\t\t\tKafkaCluster: confluentcloud.GetClusterLinkKafkaCluster{\n\t\t\t\tId: west.Id,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"kafkaClusterLinkId\", main.ClusterLinkId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetClusterLinkArgs;\nimport com.pulumi.confluentcloud.inputs.GetClusterLinkKafkaClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getClusterLink(GetClusterLinkArgs.builder()\n            .linkName(\"main-link\")\n            .restEndpoint(west.restEndpoint())\n            .kafkaCluster(GetClusterLinkKafkaClusterArgs.builder()\n                .id(west.id())\n                .build())\n            .build());\n\n        ctx.export(\"kafkaClusterLinkId\", main.clusterLinkId());\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getClusterLink\n      arguments:\n        linkName: main-link\n        restEndpoint: ${west.restEndpoint}\n        kafkaCluster:\n          id: ${west.id}\noutputs:\n  kafkaClusterLinkId: ${main.clusterLinkId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getClusterLink.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getClusterLinkCredentials:getClusterLinkCredentials","secret":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/getClusterLinkKafkaCluster:getClusterLinkKafkaCluster"},"linkName":{"type":"string","description":"The name of the cluster link, for example, `my-cluster-link`.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n"}},"type":"object","required":["linkName"]},"outputs":{"description":"A collection of values returned by getClusterLink.\n","properties":{"clusterLinkId":{"description":"(Required String) The actual Cluster Link ID assigned from Confluent Cloud that uniquely represents a link between two Kafka clusters, for example, `qz0HDEV-Qz2B5aPFpcWQJQ`.\n","type":"string"},"config":{"additionalProperties":{"type":"string"},"description":"(Optional Map) The custom cluster link settings retrieved:\n","type":"object"},"credentials":{"$ref":"#/types/confluentcloud:index/getClusterLinkCredentials:getClusterLinkCredentials","secret":true},"id":{"description":"(Required String) The composite ID of the Cluster Link data-source, in the format `\u003cKafka cluster ID\u003e/\u003cCluster link name\u003e`, for example, `lkc-abc123/my-cluster-link`.\n","type":"string"},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/getClusterLinkKafkaCluster:getClusterLinkKafkaCluster"},"linkName":{"type":"string"},"linkState":{"description":"(Required String) The current state of the Cluster Link.\n","type":"string"},"restEndpoint":{"type":"string"}},"required":["clusterLinkId","config","id","linkName","linkState"],"type":"object"}},"confluentcloud:index/getConnectArtifact:getConnectArtifact":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ConnectArtifact`\" pulumi-lang-dotnet=\"`confluentcloud.ConnectArtifact`\" pulumi-lang-go=\"`ConnectArtifact`\" pulumi-lang-python=\"`ConnectArtifact`\" pulumi-lang-yaml=\"`confluentcloud.ConnectArtifact`\" pulumi-lang-java=\"`confluentcloud.ConnectArtifact`\"\u003e`confluentcloud.ConnectArtifact`\u003c/span\u003e data source represents a Connect Artifact in Confluent Cloud. Connect Artifacts are used to store and manage custom connector plugins in Confluent Cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = confluentcloud.getConnectArtifact({\n    id: \"ca-123456\",\n    environment: {\n        id: \"env-123456\",\n    },\n    cloud: \"AWS\",\n});\nexport const artifactName = example.then(example =\u003e example.displayName);\nexport const artifactCloud = example.then(example =\u003e example.cloud);\nexport const artifactContentFormat = example.then(example =\u003e example.contentFormat);\nexport const artifactDescription = example.then(example =\u003e example.description);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_connect_artifact(id=\"ca-123456\",\n    environment={\n        \"id\": \"env-123456\",\n    },\n    cloud=\"AWS\")\npulumi.export(\"artifactName\", example.display_name)\npulumi.export(\"artifactCloud\", example.cloud)\npulumi.export(\"artifactContentFormat\", example.content_format)\npulumi.export(\"artifactDescription\", example.description)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetConnectArtifact.Invoke(new()\n    {\n        Id = \"ca-123456\",\n        Environment = new ConfluentCloud.Inputs.GetConnectArtifactEnvironmentInputArgs\n        {\n            Id = \"env-123456\",\n        },\n        Cloud = \"AWS\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"artifactName\"] = example.Apply(getConnectArtifactResult =\u003e getConnectArtifactResult.DisplayName),\n        [\"artifactCloud\"] = example.Apply(getConnectArtifactResult =\u003e getConnectArtifactResult.Cloud),\n        [\"artifactContentFormat\"] = example.Apply(getConnectArtifactResult =\u003e getConnectArtifactResult.ContentFormat),\n        [\"artifactDescription\"] = example.Apply(getConnectArtifactResult =\u003e getConnectArtifactResult.Description),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupConnectArtifact(ctx, \u0026confluentcloud.LookupConnectArtifactArgs{\n\t\t\tId: \"ca-123456\",\n\t\t\tEnvironment: confluentcloud.GetConnectArtifactEnvironment{\n\t\t\t\tId: \"env-123456\",\n\t\t\t},\n\t\t\tCloud: \"AWS\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"artifactName\", example.DisplayName)\n\t\tctx.Export(\"artifactCloud\", example.Cloud)\n\t\tctx.Export(\"artifactContentFormat\", example.ContentFormat)\n\t\tctx.Export(\"artifactDescription\", example.Description)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetConnectArtifactArgs;\nimport com.pulumi.confluentcloud.inputs.GetConnectArtifactEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getConnectArtifact(GetConnectArtifactArgs.builder()\n            .id(\"ca-123456\")\n            .environment(GetConnectArtifactEnvironmentArgs.builder()\n                .id(\"env-123456\")\n                .build())\n            .cloud(\"AWS\")\n            .build());\n\n        ctx.export(\"artifactName\", example.displayName());\n        ctx.export(\"artifactCloud\", example.cloud());\n        ctx.export(\"artifactContentFormat\", example.contentFormat());\n        ctx.export(\"artifactDescription\", example.description());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getConnectArtifact\n      arguments:\n        id: ca-123456\n        environment:\n          id: env-123456\n        cloud: AWS\noutputs:\n  artifactName: ${example.displayName}\n  artifactCloud: ${example.cloud}\n  artifactContentFormat: ${example.contentFormat}\n  artifactDescription: ${example.description}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getConnectArtifact.\n","properties":{"cloud":{"type":"string","description":"Cloud provider where the Connect Artifact archive is uploaded. Accepted values are: `AWS`, `AZURE`.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getConnectArtifactEnvironment:getConnectArtifactEnvironment"},"id":{"type":"string","description":"The ID of the Connect Artifact.\n"}},"type":"object","required":["cloud","environment","id"]},"outputs":{"description":"A collection of values returned by getConnectArtifact.\n","properties":{"cloud":{"type":"string"},"contentFormat":{"description":"(String) Archive format of the Connect Artifact. Supported formats are `JAR` and `ZIP`.\n","type":"string"},"description":{"description":"(String) Description of the Connect Artifact.\n","type":"string"},"displayName":{"description":"(String) The unique name of the Connect Artifact per cloud, environment scope.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getConnectArtifactEnvironment:getConnectArtifactEnvironment"},"id":{"type":"string"}},"required":["cloud","contentFormat","description","displayName","environment","id"],"type":"object"}},"confluentcloud:index/getDnsRecord:getDnsRecord":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.DnsRecord`\" pulumi-lang-dotnet=\"`confluentcloud.DnsRecord`\" pulumi-lang-go=\"`DnsRecord`\" pulumi-lang-python=\"`DnsRecord`\" pulumi-lang-yaml=\"`confluentcloud.DnsRecord`\" pulumi-lang-java=\"`confluentcloud.DnsRecord`\"\u003e`confluentcloud.DnsRecord`\u003c/span\u003e describes a DNS Record data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getDnsRecord({\n    id: \"dnsrec-abc123\",\n    environment: {\n        id: \"env-123abc\",\n    },\n});\nexport const dnsRecord = main;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_dns_record(id=\"dnsrec-abc123\",\n    environment={\n        \"id\": \"env-123abc\",\n    })\npulumi.export(\"dnsRecord\", main)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetDnsRecord.Invoke(new()\n    {\n        Id = \"dnsrec-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetDnsRecordEnvironmentInputArgs\n        {\n            Id = \"env-123abc\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dnsRecord\"] = main,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupDnsRecord(ctx, \u0026confluentcloud.LookupDnsRecordArgs{\n\t\t\tId: \"dnsrec-abc123\",\n\t\t\tEnvironment: confluentcloud.GetDnsRecordEnvironment{\n\t\t\t\tId: \"env-123abc\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dnsRecord\", main)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetDnsRecordArgs;\nimport com.pulumi.confluentcloud.inputs.GetDnsRecordEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getDnsRecord(GetDnsRecordArgs.builder()\n            .id(\"dnsrec-abc123\")\n            .environment(GetDnsRecordEnvironmentArgs.builder()\n                .id(\"env-123abc\")\n                .build())\n            .build());\n\n        ctx.export(\"dnsRecord\", main);\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getDnsRecord\n      arguments:\n        id: dnsrec-abc123\n        environment:\n          id: env-123abc\noutputs:\n  dnsRecord: ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDnsRecord.\n","properties":{"environment":{"$ref":"#/types/confluentcloud:index/getDnsRecordEnvironment:getDnsRecordEnvironment"},"id":{"type":"string","description":"The ID of the DNS Record, for example, `dnsrec-abc123`.\n"}},"type":"object","required":["environment","id"]},"outputs":{"description":"A collection of values returned by getDnsRecord.\n","properties":{"displayName":{"description":"(Required String) A human-readable name for the DNS Record.\n","type":"string"},"domain":{"description":"(Required String) The fully qualified domain name of the DNS Record.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getDnsRecordEnvironment:getDnsRecordEnvironment"},"gateways":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getDnsRecordGateway:getDnsRecordGateway"},"type":"array"},"id":{"description":"(Required String) The ID of the Private Link access point to which the DNS Record is associated, for example `ap-123abc`.\n","type":"string"},"privateLinkAccessPoints":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getDnsRecordPrivateLinkAccessPoint:getDnsRecordPrivateLinkAccessPoint"},"type":"array"}},"required":["displayName","domain","environment","gateways","id","privateLinkAccessPoints"],"type":"object"}},"confluentcloud:index/getEndpoint:getEndpoint":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.getEndpoint`\" pulumi-lang-dotnet=\"`confluentcloud.getEndpoint`\" pulumi-lang-go=\"`getEndpoint`\" pulumi-lang-python=\"`get_endpoint`\" pulumi-lang-yaml=\"`confluentcloud.getEndpoint`\" pulumi-lang-java=\"`confluentcloud.getEndpoint`\"\u003e`confluentcloud.getEndpoint`\u003c/span\u003e describes an Endpoint data source.\n\nAn Endpoint object represents a Fully Qualified Domain Name (FQDN) for a Confluent service resource via a specific networking solution for a given Confluent Cloud environment. Endpoints can be filtered by service, cloud provider, region, etc.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getEndpoint({\n    filter: {\n        environment: {\n            id: \"env-123abc\",\n        },\n        service: \"KAFKA\",\n        resource: \"lkc-abc123\",\n        cloud: \"AWS\",\n        region: \"us-west-2\",\n    },\n});\nexport const endpoints = main.then(main =\u003e main.endpoints);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_endpoint(filter={\n    \"environment\": {\n        \"id\": \"env-123abc\",\n    },\n    \"service\": \"KAFKA\",\n    \"resource\": \"lkc-abc123\",\n    \"cloud\": \"AWS\",\n    \"region\": \"us-west-2\",\n})\npulumi.export(\"endpoints\", main.endpoints)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetEndpoint.Invoke(new()\n    {\n        Filter = new ConfluentCloud.Inputs.GetEndpointFilterInputArgs\n        {\n            Environment = new ConfluentCloud.Inputs.GetEndpointFilterEnvironmentInputArgs\n            {\n                Id = \"env-123abc\",\n            },\n            Service = \"KAFKA\",\n            Resource = \"lkc-abc123\",\n            Cloud = \"AWS\",\n            Region = \"us-west-2\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"endpoints\"] = main.Apply(getEndpointResult =\u003e getEndpointResult.Endpoints),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.GetEndpoint(ctx, \u0026confluentcloud.GetEndpointArgs{\n\t\t\tFilter: confluentcloud.GetEndpointFilter{\n\t\t\t\tEnvironment: confluentcloud.GetEndpointFilterEnvironment{\n\t\t\t\t\tId: \"env-123abc\",\n\t\t\t\t},\n\t\t\t\tService:  \"KAFKA\",\n\t\t\t\tResource: pulumi.StringRef(\"lkc-abc123\"),\n\t\t\t\tCloud:    pulumi.StringRef(\"AWS\"),\n\t\t\t\tRegion:   pulumi.StringRef(\"us-west-2\"),\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"endpoints\", main.Endpoints)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetEndpointArgs;\nimport com.pulumi.confluentcloud.inputs.GetEndpointFilterArgs;\nimport com.pulumi.confluentcloud.inputs.GetEndpointFilterEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getEndpoint(GetEndpointArgs.builder()\n            .filter(GetEndpointFilterArgs.builder()\n                .environment(GetEndpointFilterEnvironmentArgs.builder()\n                    .id(\"env-123abc\")\n                    .build())\n                .service(\"KAFKA\")\n                .resource(\"lkc-abc123\")\n                .cloud(\"AWS\")\n                .region(\"us-west-2\")\n                .build())\n            .build());\n\n        ctx.export(\"endpoints\", main.endpoints());\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getEndpoint\n      arguments:\n        filter:\n          environment:\n            id: env-123abc\n          service: KAFKA\n          resource: lkc-abc123\n          cloud: AWS\n          region: us-west-2\noutputs:\n  endpoints: ${main.endpoints}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getEndpoint.\n","properties":{"filter":{"$ref":"#/types/confluentcloud:index/getEndpointFilter:getEndpointFilter"}},"type":"object","required":["filter"]},"outputs":{"description":"A collection of values returned by getEndpoint.\n","properties":{"endpoints":{"description":"(Computed List) List of endpoints matching the filter criteria. Each endpoint object contains:\n","items":{"$ref":"#/types/confluentcloud:index/getEndpointEndpoint:getEndpointEndpoint"},"type":"array"},"filter":{"$ref":"#/types/confluentcloud:index/getEndpointFilter:getEndpointFilter"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"}},"required":["endpoints","filter","id"],"type":"object"}},"confluentcloud:index/getEnvironment:getEnvironment":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Environment`\" pulumi-lang-dotnet=\"`confluentcloud.Environment`\" pulumi-lang-go=\"`Environment`\" pulumi-lang-python=\"`Environment`\" pulumi-lang-yaml=\"`confluentcloud.Environment`\" pulumi-lang-java=\"`confluentcloud.Environment`\"\u003e`confluentcloud.Environment`\u003c/span\u003e describes an Environment data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getEnvironment({\n        id: \"env-abc123\",\n    });\n    const exampleUsingName = await confluentcloud.getEnvironment({\n        displayName: \"stag\",\n    });\n    const exampleUsingNameGetServiceAccount = await confluentcloud.getServiceAccount({\n        displayName: \"test_sa\",\n    });\n    const test_role_binding = new confluentcloud.RoleBinding(\"test-role-binding\", {\n        principal: `User:${exampleUsingNameGetServiceAccount.id}`,\n        roleName: \"EnvironmentAdmin\",\n        crnPattern: exampleUsingName.resourceName,\n    });\n    return {\n        exampleUsingId: exampleUsingId,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_environment(id=\"env-abc123\")\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_environment(display_name=\"stag\")\nexample_using_name_get_service_account = confluentcloud.get_service_account(display_name=\"test_sa\")\ntest_role_binding = confluentcloud.RoleBinding(\"test-role-binding\",\n    principal=f\"User:{example_using_name_get_service_account.id}\",\n    role_name=\"EnvironmentAdmin\",\n    crn_pattern=example_using_name.resource_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetEnvironment.Invoke(new()\n    {\n        Id = \"env-abc123\",\n    });\n\n    var exampleUsingName = ConfluentCloud.GetEnvironment.Invoke(new()\n    {\n        DisplayName = \"stag\",\n    });\n\n    var exampleUsingNameGetServiceAccount = ConfluentCloud.GetServiceAccount.Invoke(new()\n    {\n        DisplayName = \"test_sa\",\n    });\n\n    var test_role_binding = new ConfluentCloud.RoleBinding(\"test-role-binding\", new()\n    {\n        Principal = $\"User:{exampleUsingNameGetServiceAccount.Apply(getServiceAccountResult =\u003e getServiceAccountResult.Id)}\",\n        RoleName = \"EnvironmentAdmin\",\n        CrnPattern = exampleUsingName.Apply(getEnvironmentResult =\u003e getEnvironmentResult.ResourceName),\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupEnvironment(ctx, \u0026confluentcloud.LookupEnvironmentArgs{\n\t\t\tId: pulumi.StringRef(\"env-abc123\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\texampleUsingName, err := confluentcloud.LookupEnvironment(ctx, \u0026confluentcloud.LookupEnvironmentArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"stag\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUsingNameGetServiceAccount, err := confluentcloud.LookupServiceAccount(ctx, \u0026confluentcloud.LookupServiceAccountArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"test_sa\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"test-role-binding\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", exampleUsingNameGetServiceAccount.Id),\n\t\t\tRoleName:   pulumi.String(\"EnvironmentAdmin\"),\n\t\t\tCrnPattern: pulumi.String(exampleUsingName.ResourceName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.GetServiceAccountArgs;\nimport com.pulumi.confluentcloud.RoleBinding;\nimport com.pulumi.confluentcloud.RoleBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getEnvironment(GetEnvironmentArgs.builder()\n            .id(\"env-abc123\")\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getEnvironment(GetEnvironmentArgs.builder()\n            .displayName(\"stag\")\n            .build());\n\n        final var exampleUsingNameGetServiceAccount = ConfluentcloudFunctions.getServiceAccount(GetServiceAccountArgs.builder()\n            .displayName(\"test_sa\")\n            .build());\n\n        var test_role_binding = new RoleBinding(\"test-role-binding\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", exampleUsingNameGetServiceAccount.id()))\n            .roleName(\"EnvironmentAdmin\")\n            .crnPattern(exampleUsingName.resourceName())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test-role-binding:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${exampleUsingNameGetServiceAccount.id}\n      roleName: EnvironmentAdmin\n      crnPattern: ${exampleUsingName.resourceName}\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getEnvironment\n      arguments:\n        id: env-abc123\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getEnvironment\n      arguments:\n        displayName: stag\n  exampleUsingNameGetServiceAccount:\n    fn::invoke:\n      function: confluentcloud:getServiceAccount\n      arguments:\n        displayName: test_sa\noutputs:\n  exampleUsingId: ${exampleUsingId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getEnvironment.\n","properties":{"displayName":{"type":"string","description":"A human-readable name for the Environment.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"},"id":{"type":"string","description":"The ID of the Environment, for example, `env-abc123`.\n"},"streamGovernance":{"$ref":"#/types/confluentcloud:index/getEnvironmentStreamGovernance:getEnvironmentStreamGovernance"}},"type":"object"},"outputs":{"description":"A collection of values returned by getEnvironment.\n","properties":{"displayName":{"description":"(Required String) A human-readable name for the Environment.\n","type":"string"},"id":{"description":"(Required String) The ID of the Environment, for example, `env-abc123`.\n","type":"string"},"resourceName":{"description":"(Required String) The Confluent Resource Name of the Environment, for example, `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123`.\n","type":"string"},"streamGovernance":{"$ref":"#/types/confluentcloud:index/getEnvironmentStreamGovernance:getEnvironmentStreamGovernance"}},"required":["displayName","id","resourceName","streamGovernance"],"type":"object"}},"confluentcloud:index/getEnvironments:getEnvironments":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.getEnvironments`\" pulumi-lang-dotnet=\"`confluentcloud.getEnvironments`\" pulumi-lang-go=\"`getEnvironments`\" pulumi-lang-python=\"`get_environments`\" pulumi-lang-yaml=\"`confluentcloud.getEnvironments`\" pulumi-lang-java=\"`confluentcloud.getEnvironments`\"\u003e`confluentcloud.getEnvironments`\u003c/span\u003e describes a data source for Environments.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getEnvironments({});\nexport const environments = main.then(main =\u003e main.ids);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_environments()\npulumi.export(\"environments\", main.ids)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetEnvironments.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"environments\"] = main.Apply(getEnvironmentsResult =\u003e getEnvironmentsResult.Ids),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.GetEnvironments(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"environments\", main.Ids)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getEnvironments(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"environments\", main.ids());\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getEnvironments\n      arguments: {}\noutputs:\n  environments: ${main.ids}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getEnvironments.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ids":{"description":"(Required List of Strings) The list of Environment IDs, for example: `[\"env-abc123\", \"env-abc124\"]`.\n","items":{"type":"string"},"type":"array"}},"required":["ids","id"],"type":"object"}},"confluentcloud:index/getFlinkArtifact:getFlinkArtifact":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.FlinkArtifact`\" pulumi-lang-dotnet=\"`confluentcloud.FlinkArtifact`\" pulumi-lang-go=\"`FlinkArtifact`\" pulumi-lang-python=\"`FlinkArtifact`\" pulumi-lang-yaml=\"`confluentcloud.FlinkArtifact`\" pulumi-lang-java=\"`confluentcloud.FlinkArtifact`\"\u003e`confluentcloud.FlinkArtifact`\u003c/span\u003e describes a Flink Artifact data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getFlinkArtifact({\n        id: \"lfa-abc123\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    const exampleUsingName = await confluentcloud.getFlinkArtifact({\n        displayName: \"my_artifact\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    return {\n        exampleUsingId: exampleUsingId,\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_flink_artifact(id=\"lfa-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_flink_artifact(display_name=\"my_artifact\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetFlinkArtifact.Invoke(new()\n    {\n        Id = \"lfa-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetFlinkArtifactEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    var exampleUsingName = ConfluentCloud.GetFlinkArtifact.Invoke(new()\n    {\n        DisplayName = \"my_artifact\",\n        Environment = new ConfluentCloud.Inputs.GetFlinkArtifactEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupFlinkArtifact(ctx, \u0026confluentcloud.LookupFlinkArtifactArgs{\n\t\t\tId: pulumi.StringRef(\"lfa-abc123\"),\n\t\t\tEnvironment: confluentcloud.GetFlinkArtifactEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\texampleUsingName, err := confluentcloud.LookupFlinkArtifact(ctx, \u0026confluentcloud.LookupFlinkArtifactArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"my_artifact\"),\n\t\t\tEnvironment: confluentcloud.GetFlinkArtifactEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetFlinkArtifactArgs;\nimport com.pulumi.confluentcloud.inputs.GetFlinkArtifactEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getFlinkArtifact(GetFlinkArtifactArgs.builder()\n            .id(\"lfa-abc123\")\n            .environment(GetFlinkArtifactEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getFlinkArtifact(GetFlinkArtifactArgs.builder()\n            .displayName(\"my_artifact\")\n            .environment(GetFlinkArtifactEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getFlinkArtifact\n      arguments:\n        id: lfa-abc123\n        environment:\n          id: env-xyz456\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getFlinkArtifact\n      arguments:\n        displayName: my_artifact\n        environment:\n          id: env-xyz456\noutputs:\n  exampleUsingId: ${exampleUsingId}\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFlinkArtifact.\n","properties":{"class":{"type":"string","description":"(Required String) Java class or alias for the Flink Artifact as provided by developer.\n","deprecationMessage":"The \"class\" attribute has been deprecated and will be removed in the next major version of the provider (3.0.0). Refer to the Upgrade Guide at https://registry.terraform.io/providers/confluentinc/confluent/latest/docs/guides/version-3-upgrade for more details. The guide will be published once version 3.0.0 is released."},"cloud":{"type":"string","description":"The cloud service provider that hosts the region. Accepted values are: `AWS`, `AZURE`, and `GCP`.\n"},"displayName":{"type":"string","description":"A human-readable name for the Flink Artifact.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getFlinkArtifactEnvironment:getFlinkArtifactEnvironment"},"id":{"type":"string","description":"The ID of the Flink Artifact, for example, `lfa-abc123`.\n"},"region":{"type":"string","description":"The cloud service provider region, for example, `us-east-1`.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"}},"type":"object","required":["cloud","environment","region"]},"outputs":{"description":"A collection of values returned by getFlinkArtifact.\n","properties":{"apiVersion":{"description":"(Required String) The API Version of the schema version of the Flink Artifact, for example, `fa/v2`.\n","type":"string"},"class":{"deprecationMessage":"The \"class\" attribute has been deprecated and will be removed in the next major version of the provider (3.0.0). Refer to the Upgrade Guide at https://registry.terraform.io/providers/confluentinc/confluent/latest/docs/guides/version-3-upgrade for more details. The guide will be published once version 3.0.0 is released.","description":"(Required String) Java class or alias for the Flink Artifact as provided by developer.\n","type":"string"},"cloud":{"type":"string"},"contentFormat":{"description":"(Required String) Archive format of the Flink Artifact.\n","type":"string"},"description":{"description":"(Required String) Description of the Flink Artifact.\n","type":"string"},"displayName":{"type":"string"},"documentationLink":{"type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getFlinkArtifactEnvironment:getFlinkArtifactEnvironment"},"id":{"type":"string"},"kind":{"description":"(Required String) The kind of the Flink Artifact, for example, `FlinkArtifact`.\n","type":"string"},"region":{"type":"string"},"runtimeLanguage":{"description":"(Required String) Runtime language of the Flink Artifact. The default runtime language is JAVA.\n","type":"string"},"versions":{"items":{"$ref":"#/types/confluentcloud:index/getFlinkArtifactVersion:getFlinkArtifactVersion"},"type":"array"}},"required":["apiVersion","class","cloud","contentFormat","description","displayName","documentationLink","environment","id","kind","region","runtimeLanguage","versions"],"type":"object"}},"confluentcloud:index/getFlinkComputePool:getFlinkComputePool":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.FlinkComputePool`\" pulumi-lang-dotnet=\"`confluentcloud.FlinkComputePool`\" pulumi-lang-go=\"`FlinkComputePool`\" pulumi-lang-python=\"`FlinkComputePool`\" pulumi-lang-yaml=\"`confluentcloud.FlinkComputePool`\" pulumi-lang-java=\"`confluentcloud.FlinkComputePool`\"\u003e`confluentcloud.FlinkComputePool`\u003c/span\u003e describes a Flink Compute Pool data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getFlinkComputePool({\n        id: \"lfcp-abc123\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    const exampleUsingName = await confluentcloud.getFlinkComputePool({\n        displayName: \"my_compute_pool\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    return {\n        exampleUsingId: exampleUsingId,\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_flink_compute_pool(id=\"lfcp-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_flink_compute_pool(display_name=\"my_compute_pool\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetFlinkComputePool.Invoke(new()\n    {\n        Id = \"lfcp-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetFlinkComputePoolEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    var exampleUsingName = ConfluentCloud.GetFlinkComputePool.Invoke(new()\n    {\n        DisplayName = \"my_compute_pool\",\n        Environment = new ConfluentCloud.Inputs.GetFlinkComputePoolEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupFlinkComputePool(ctx, \u0026confluentcloud.LookupFlinkComputePoolArgs{\n\t\t\tId: pulumi.StringRef(\"lfcp-abc123\"),\n\t\t\tEnvironment: confluentcloud.GetFlinkComputePoolEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\texampleUsingName, err := confluentcloud.LookupFlinkComputePool(ctx, \u0026confluentcloud.LookupFlinkComputePoolArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"my_compute_pool\"),\n\t\t\tEnvironment: confluentcloud.GetFlinkComputePoolEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetFlinkComputePoolArgs;\nimport com.pulumi.confluentcloud.inputs.GetFlinkComputePoolEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getFlinkComputePool(GetFlinkComputePoolArgs.builder()\n            .id(\"lfcp-abc123\")\n            .environment(GetFlinkComputePoolEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getFlinkComputePool(GetFlinkComputePoolArgs.builder()\n            .displayName(\"my_compute_pool\")\n            .environment(GetFlinkComputePoolEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getFlinkComputePool\n      arguments:\n        id: lfcp-abc123\n        environment:\n          id: env-xyz456\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getFlinkComputePool\n      arguments:\n        displayName: my_compute_pool\n        environment:\n          id: env-xyz456\noutputs:\n  exampleUsingId: ${exampleUsingId}\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFlinkComputePool.\n","properties":{"displayName":{"type":"string","description":"A human-readable name for the Flink Compute Pool.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getFlinkComputePoolEnvironment:getFlinkComputePoolEnvironment","description":"(Required Configuration Block) supports the following:\n"},"id":{"type":"string","description":"The ID of the Flink Compute Pool, for example, `lfcp-abc123`.\n"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getFlinkComputePool.\n","properties":{"apiVersion":{"description":"(Required String) The API Version of the schema version of the Flink Compute Pool, for example, `fcpm/v2`.\n","type":"string"},"cloud":{"description":"(Required String) The cloud service provider that runs the Flink Compute Pool.\n","type":"string"},"displayName":{"description":"(Required String) The name of the Flink Compute Pool.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getFlinkComputePoolEnvironment:getFlinkComputePoolEnvironment","description":"(Required Configuration Block) supports the following:\n"},"id":{"description":"(Required String) The ID of the Environment that the Flink Compute Pool belongs to, for example, `env-abc123`.\n","type":"string"},"kind":{"description":"(Required String) The kind of the Flink Compute Pool, for example, `ComputePool`.\n","type":"string"},"maxCfu":{"description":"(Required Integer) Maximum number of Confluent Flink Units (CFUs) that the Flink compute pool should auto-scale to.\n","type":"integer"},"region":{"description":"(Required String) The cloud service provider region that hosts the Flink Compute Pool.\n","type":"string"},"resourceName":{"description":"(Required String) The Confluent Resource Name of the Flink Compute Pool.\n","type":"string"}},"required":["apiVersion","cloud","displayName","environment","id","kind","maxCfu","region","resourceName"],"type":"object"}},"confluentcloud:index/getFlinkConnection:getFlinkConnection":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.FlinkConnection`\" pulumi-lang-dotnet=\"`confluentcloud.FlinkConnection`\" pulumi-lang-go=\"`FlinkConnection`\" pulumi-lang-python=\"`FlinkConnection`\" pulumi-lang-yaml=\"`confluentcloud.FlinkConnection`\" pulumi-lang-java=\"`confluentcloud.FlinkConnection`\"\u003e`confluentcloud.FlinkConnection`\u003c/span\u003e describes a Flink Connection data source.\n\n## Example Usage\n\n","inputs":{"description":"A collection of arguments for invoking getFlinkConnection.\n","properties":{"computePool":{"$ref":"#/types/confluentcloud:index/getFlinkConnectionComputePool:getFlinkConnectionComputePool"},"credentials":{"$ref":"#/types/confluentcloud:index/getFlinkConnectionCredentials:getFlinkConnectionCredentials","secret":true},"displayName":{"type":"string","description":"The name of the Flink Connection.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getFlinkConnectionEnvironment:getFlinkConnectionEnvironment"},"organization":{"$ref":"#/types/confluentcloud:index/getFlinkConnectionOrganization:getFlinkConnectionOrganization"},"principal":{"$ref":"#/types/confluentcloud:index/getFlinkConnectionPrincipal:getFlinkConnectionPrincipal"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Flink region, for example, `https://flink.us-east-1.aws.confluent.cloud`).\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The type of the Flink Connection. The accepted values are: `OPENAI`, `AZUREML`, `AZUREOPENAI`, `BEDROCK`, `SAGEMAKER`, `GOOGLEAI`, `VERTEXAI`, `MONGODB`, `PINECONE`, `ELASTIC` and `COUCHBASE`.\n"}},"type":"object","required":["displayName"]},"outputs":{"description":"A collection of values returned by getFlinkConnection.\n","properties":{"computePool":{"$ref":"#/types/confluentcloud:index/getFlinkConnectionComputePool:getFlinkConnectionComputePool"},"credentials":{"$ref":"#/types/confluentcloud:index/getFlinkConnectionCredentials:getFlinkConnectionCredentials","secret":true},"data":{"description":"(Required String) The authentication data of the Flink Connection.\n","type":"string"},"displayName":{"type":"string"},"endpoint":{"description":"(Required String) The endpoint of the Flink Connection, for example, `https://api.openai.com/v1/chat/completions`\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getFlinkConnectionEnvironment:getFlinkConnectionEnvironment"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"organization":{"$ref":"#/types/confluentcloud:index/getFlinkConnectionOrganization:getFlinkConnectionOrganization"},"principal":{"$ref":"#/types/confluentcloud:index/getFlinkConnectionPrincipal:getFlinkConnectionPrincipal"},"restEndpoint":{"type":"string"},"status":{"description":"(Required String) The status of the Flink Connection.\n","type":"string"},"statusDetail":{"description":"(Required String) The status details of the Flink Connection.\n-\n","type":"string"},"type":{"type":"string"}},"required":["computePool","data","displayName","endpoint","environment","organization","principal","status","statusDetail","id"],"type":"object"}},"confluentcloud:index/getFlinkRegion:getFlinkRegion":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.getFlinkRegion`\" pulumi-lang-dotnet=\"`confluentcloud.getFlinkRegion`\" pulumi-lang-go=\"`getFlinkRegion`\" pulumi-lang-python=\"`get_flink_region`\" pulumi-lang-yaml=\"`confluentcloud.getFlinkRegion`\" pulumi-lang-java=\"`confluentcloud.getFlinkRegion`\"\u003e`confluentcloud.getFlinkRegion`\u003c/span\u003e describes a Flink cluster data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const example = await confluentcloud.getFlinkRegion({\n        cloud: \"AWS\",\n        region: \"us-east-1\",\n    });\n    return {\n        example: example,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_flink_region(cloud=\"AWS\",\n    region=\"us-east-1\")\npulumi.export(\"example\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetFlinkRegion.Invoke(new()\n    {\n        Cloud = \"AWS\",\n        Region = \"us-east-1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"example\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.GetFlinkRegion(ctx, \u0026confluentcloud.GetFlinkRegionArgs{\n\t\t\tCloud:  \"AWS\",\n\t\t\tRegion: \"us-east-1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"example\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetFlinkRegionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getFlinkRegion(GetFlinkRegionArgs.builder()\n            .cloud(\"AWS\")\n            .region(\"us-east-1\")\n            .build());\n\n        ctx.export(\"example\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getFlinkRegion\n      arguments:\n        cloud: AWS\n        region: us-east-1\noutputs:\n  example: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFlinkRegion.\n","properties":{"cloud":{"type":"string","description":"The cloud service provider that hosts the region. Accepted values are: `AWS`, `AZURE`, and `GCP`.\n"},"region":{"type":"string","description":"The cloud service provider region, for example, `us-east-1`.\n"}},"type":"object","required":["cloud","region"]},"outputs":{"description":"A collection of values returned by getFlinkRegion.\n","properties":{"apiVersion":{"description":"(Required String) An API Version of the Flink region, for example, `fcpm/v2`.\n","type":"string"},"cloud":{"type":"string"},"id":{"description":"(Required String) The ID of the Flink region, for example, `aws.us-east-1`.\n","type":"string"},"kind":{"description":"(Required String) A kind of the Flink region, for example, `Region`.\n","type":"string"},"privateRestEndpoint":{"description":"(Required String) The private HTTP endpoint of the Flink region, for example, `https://flink.us-east-1.aws.private.confluent.cloud`.\n","type":"string"},"region":{"type":"string"},"restEndpoint":{"description":"(Required String) The HTTP endpoint of the Flink region, for example, `https://flink.us-east-1.aws.confluent.cloud`.\n","type":"string"}},"required":["apiVersion","cloud","id","kind","privateRestEndpoint","region","restEndpoint"],"type":"object"}},"confluentcloud:index/getGateway:getGateway":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Gateway`\" pulumi-lang-dotnet=\"`confluentcloud.Gateway`\" pulumi-lang-go=\"`Gateway`\" pulumi-lang-python=\"`Gateway`\" pulumi-lang-yaml=\"`confluentcloud.Gateway`\" pulumi-lang-java=\"`confluentcloud.Gateway`\"\u003e`confluentcloud.Gateway`\u003c/span\u003e describes a Gateway data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getGateway({\n    id: \"gw-abc123\",\n    environment: {\n        id: \"env-123abc\",\n    },\n});\nexport const gateway = main;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_gateway(id=\"gw-abc123\",\n    environment={\n        \"id\": \"env-123abc\",\n    })\npulumi.export(\"gateway\", main)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetGateway.Invoke(new()\n    {\n        Id = \"gw-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetGatewayEnvironmentInputArgs\n        {\n            Id = \"env-123abc\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"gateway\"] = main,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupGateway(ctx, \u0026confluentcloud.LookupGatewayArgs{\n\t\t\tId: \"gw-abc123\",\n\t\t\tEnvironment: confluentcloud.GetGatewayEnvironment{\n\t\t\t\tId: \"env-123abc\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"gateway\", main)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetGatewayArgs;\nimport com.pulumi.confluentcloud.inputs.GetGatewayEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getGateway(GetGatewayArgs.builder()\n            .id(\"gw-abc123\")\n            .environment(GetGatewayEnvironmentArgs.builder()\n                .id(\"env-123abc\")\n                .build())\n            .build());\n\n        ctx.export(\"gateway\", main);\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getGateway\n      arguments:\n        id: gw-abc123\n        environment:\n          id: env-123abc\noutputs:\n  gateway: ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getGateway.\n","properties":{"environment":{"$ref":"#/types/confluentcloud:index/getGatewayEnvironment:getGatewayEnvironment"},"id":{"type":"string","description":"The ID of the Gateway, for example, `gw-abc123`.\n"}},"type":"object","required":["environment","id"]},"outputs":{"description":"A collection of values returned by getGateway.\n","properties":{"awsEgressPrivateLinkGateways":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getGatewayAwsEgressPrivateLinkGateway:getGatewayAwsEgressPrivateLinkGateway"},"type":"array"},"awsIngressPrivateLinkGateways":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getGatewayAwsIngressPrivateLinkGateway:getGatewayAwsIngressPrivateLinkGateway"},"type":"array"},"awsPeeringGateways":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getGatewayAwsPeeringGateway:getGatewayAwsPeeringGateway"},"type":"array"},"awsPrivateNetworkInterfaceGateways":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getGatewayAwsPrivateNetworkInterfaceGateway:getGatewayAwsPrivateNetworkInterfaceGateway"},"type":"array"},"azureEgressPrivateLinkGateways":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getGatewayAzureEgressPrivateLinkGateway:getGatewayAzureEgressPrivateLinkGateway"},"type":"array"},"azurePeeringGateways":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getGatewayAzurePeeringGateway:getGatewayAzurePeeringGateway"},"type":"array"},"displayName":{"description":"(Required String) A human-readable name for the Gateway.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getGatewayEnvironment:getGatewayEnvironment"},"gcpEgressPrivateServiceConnectGateways":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getGatewayGcpEgressPrivateServiceConnectGateway:getGatewayGcpEgressPrivateServiceConnectGateway"},"type":"array"},"gcpPeeringGateways":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getGatewayGcpPeeringGateway:getGatewayGcpPeeringGateway"},"type":"array"},"id":{"type":"string"}},"required":["awsEgressPrivateLinkGateways","awsIngressPrivateLinkGateways","awsPeeringGateways","awsPrivateNetworkInterfaceGateways","azureEgressPrivateLinkGateways","azurePeeringGateways","displayName","environment","gcpEgressPrivateServiceConnectGateways","gcpPeeringGateways","id"],"type":"object"}},"confluentcloud:index/getGateways:getGateways":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.getGateways`\" pulumi-lang-dotnet=\"`confluentcloud.getGateways`\" pulumi-lang-go=\"`getGateways`\" pulumi-lang-python=\"`get_gateways`\" pulumi-lang-yaml=\"`confluentcloud.getGateways`\" pulumi-lang-java=\"`confluentcloud.getGateways`\"\u003e`confluentcloud.getGateways`\u003c/span\u003e describes a Gateways data source that allows you to filter and list multiple Gateways.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst all = confluentcloud.getGateways({\n    environment: {\n        id: \"env-123abc\",\n    },\n});\nconst readyIngress = confluentcloud.getGateways({\n    environment: {\n        id: \"env-123abc\",\n    },\n    filter: {\n        gatewayTypes: [\"AwsIngressPrivateLink\"],\n        phases: [\"READY\"],\n    },\n});\nconst usEast = confluentcloud.getGateways({\n    environment: {\n        id: \"env-123abc\",\n    },\n    filter: {\n        regions: [\"us-east-1\"],\n        displayNames: [\"prod-gateway-ingress-use1\"],\n    },\n});\nexport const allGateways = all.then(all =\u003e all.gateways);\nexport const readyIngressGateways = readyIngress.then(readyIngress =\u003e readyIngress.gateways);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nall = confluentcloud.get_gateways(environment={\n    \"id\": \"env-123abc\",\n})\nready_ingress = confluentcloud.get_gateways(environment={\n        \"id\": \"env-123abc\",\n    },\n    filter={\n        \"gateway_types\": [\"AwsIngressPrivateLink\"],\n        \"phases\": [\"READY\"],\n    })\nus_east = confluentcloud.get_gateways(environment={\n        \"id\": \"env-123abc\",\n    },\n    filter={\n        \"regions\": [\"us-east-1\"],\n        \"display_names\": [\"prod-gateway-ingress-use1\"],\n    })\npulumi.export(\"allGateways\", all.gateways)\npulumi.export(\"readyIngressGateways\", ready_ingress.gateways)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var all = ConfluentCloud.GetGateways.Invoke(new()\n    {\n        Environment = new ConfluentCloud.Inputs.GetGatewaysEnvironmentInputArgs\n        {\n            Id = \"env-123abc\",\n        },\n    });\n\n    var readyIngress = ConfluentCloud.GetGateways.Invoke(new()\n    {\n        Environment = new ConfluentCloud.Inputs.GetGatewaysEnvironmentInputArgs\n        {\n            Id = \"env-123abc\",\n        },\n        Filter = new ConfluentCloud.Inputs.GetGatewaysFilterInputArgs\n        {\n            GatewayTypes = new[]\n            {\n                \"AwsIngressPrivateLink\",\n            },\n            Phases = new[]\n            {\n                \"READY\",\n            },\n        },\n    });\n\n    var usEast = ConfluentCloud.GetGateways.Invoke(new()\n    {\n        Environment = new ConfluentCloud.Inputs.GetGatewaysEnvironmentInputArgs\n        {\n            Id = \"env-123abc\",\n        },\n        Filter = new ConfluentCloud.Inputs.GetGatewaysFilterInputArgs\n        {\n            Regions = new[]\n            {\n                \"us-east-1\",\n            },\n            DisplayNames = new[]\n            {\n                \"prod-gateway-ingress-use1\",\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"allGateways\"] = all.Apply(getGatewaysResult =\u003e getGatewaysResult.Gateways),\n        [\"readyIngressGateways\"] = readyIngress.Apply(getGatewaysResult =\u003e getGatewaysResult.Gateways),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := confluentcloud.GetGateways(ctx, \u0026confluentcloud.GetGatewaysArgs{\n\t\t\tEnvironment: confluentcloud.GetGatewaysEnvironment{\n\t\t\t\tId: \"env-123abc\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treadyIngress, err := confluentcloud.GetGateways(ctx, \u0026confluentcloud.GetGatewaysArgs{\n\t\t\tEnvironment: confluentcloud.GetGatewaysEnvironment{\n\t\t\t\tId: \"env-123abc\",\n\t\t\t},\n\t\t\tFilter: confluentcloud.GetGatewaysFilter{\n\t\t\t\tGatewayTypes: []string{\n\t\t\t\t\t\"AwsIngressPrivateLink\",\n\t\t\t\t},\n\t\t\t\tPhases: []string{\n\t\t\t\t\t\"READY\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.GetGateways(ctx, \u0026confluentcloud.GetGatewaysArgs{\n\t\t\tEnvironment: confluentcloud.GetGatewaysEnvironment{\n\t\t\t\tId: \"env-123abc\",\n\t\t\t},\n\t\t\tFilter: confluentcloud.GetGatewaysFilter{\n\t\t\t\tRegions: []string{\n\t\t\t\t\t\"us-east-1\",\n\t\t\t\t},\n\t\t\t\tDisplayNames: []string{\n\t\t\t\t\t\"prod-gateway-ingress-use1\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"allGateways\", all.Gateways)\n\t\tctx.Export(\"readyIngressGateways\", readyIngress.Gateways)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetGatewaysArgs;\nimport com.pulumi.confluentcloud.inputs.GetGatewaysEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.GetGatewaysFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var all = ConfluentcloudFunctions.getGateways(GetGatewaysArgs.builder()\n            .environment(GetGatewaysEnvironmentArgs.builder()\n                .id(\"env-123abc\")\n                .build())\n            .build());\n\n        final var readyIngress = ConfluentcloudFunctions.getGateways(GetGatewaysArgs.builder()\n            .environment(GetGatewaysEnvironmentArgs.builder()\n                .id(\"env-123abc\")\n                .build())\n            .filter(GetGatewaysFilterArgs.builder()\n                .gatewayTypes(\"AwsIngressPrivateLink\")\n                .phases(\"READY\")\n                .build())\n            .build());\n\n        final var usEast = ConfluentcloudFunctions.getGateways(GetGatewaysArgs.builder()\n            .environment(GetGatewaysEnvironmentArgs.builder()\n                .id(\"env-123abc\")\n                .build())\n            .filter(GetGatewaysFilterArgs.builder()\n                .regions(\"us-east-1\")\n                .displayNames(\"prod-gateway-ingress-use1\")\n                .build())\n            .build());\n\n        ctx.export(\"allGateways\", all.gateways());\n        ctx.export(\"readyIngressGateways\", readyIngress.gateways());\n    }\n}\n```\n```yaml\nvariables:\n  all:\n    fn::invoke:\n      function: confluentcloud:getGateways\n      arguments:\n        environment:\n          id: env-123abc\n  readyIngress:\n    fn::invoke:\n      function: confluentcloud:getGateways\n      arguments:\n        environment:\n          id: env-123abc\n        filter:\n          gatewayTypes:\n            - AwsIngressPrivateLink\n          phases:\n            - READY\n  usEast:\n    fn::invoke:\n      function: confluentcloud:getGateways\n      arguments:\n        environment:\n          id: env-123abc\n        filter:\n          regions:\n            - us-east-1\n          displayNames:\n            - prod-gateway-ingress-use1\noutputs:\n  allGateways: ${all.gateways}\n  readyIngressGateways: ${readyIngress.gateways}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getGateways.\n","properties":{"environment":{"$ref":"#/types/confluentcloud:index/getGatewaysEnvironment:getGatewaysEnvironment"},"filter":{"$ref":"#/types/confluentcloud:index/getGatewaysFilter:getGatewaysFilter"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getGateways.\n","properties":{"environment":{"$ref":"#/types/confluentcloud:index/getGatewaysEnvironment:getGatewaysEnvironment"},"filter":{"$ref":"#/types/confluentcloud:index/getGatewaysFilter:getGatewaysFilter"},"gateways":{"description":"(List of Object) List of Gateways. Each gateway object exports the following attributes:\n","items":{"$ref":"#/types/confluentcloud:index/getGatewaysGateway:getGatewaysGateway"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"}},"required":["environment","gateways","id"],"type":"object"}},"confluentcloud:index/getGroupMapping:getGroupMapping":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.GroupMapping`\" pulumi-lang-dotnet=\"`confluentcloud.GroupMapping`\" pulumi-lang-go=\"`GroupMapping`\" pulumi-lang-python=\"`GroupMapping`\" pulumi-lang-yaml=\"`confluentcloud.GroupMapping`\" pulumi-lang-java=\"`confluentcloud.GroupMapping`\"\u003e`confluentcloud.GroupMapping`\u003c/span\u003e describes a Group Mapping data source.\n\n\u003e **Note:** See [Group Mapping in Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/authenticate/sso/group-mapping/overview.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getGroupMapping({\n        id: \"group-abc123\",\n    });\n    const exampleUsingName = await confluentcloud.getGroupMapping({\n        displayName: \"Default\",\n    });\n    return {\n        exampleUsingId: exampleUsingId,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_group_mapping(id=\"group-abc123\")\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_group_mapping(display_name=\"Default\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetGroupMapping.Invoke(new()\n    {\n        Id = \"group-abc123\",\n    });\n\n    var exampleUsingName = ConfluentCloud.GetGroupMapping.Invoke(new()\n    {\n        DisplayName = \"Default\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupGroupMapping(ctx, \u0026confluentcloud.LookupGroupMappingArgs{\n\t\t\tId: pulumi.StringRef(\"group-abc123\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\t_, err = confluentcloud.LookupGroupMapping(ctx, \u0026confluentcloud.LookupGroupMappingArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"Default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetGroupMappingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getGroupMapping(GetGroupMappingArgs.builder()\n            .id(\"group-abc123\")\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getGroupMapping(GetGroupMappingArgs.builder()\n            .displayName(\"Default\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getGroupMapping\n      arguments:\n        id: group-abc123\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getGroupMapping\n      arguments:\n        displayName: Default\noutputs:\n  exampleUsingId: ${exampleUsingId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getGroupMapping.\n","properties":{"displayName":{"type":"string","description":"The name of the Group Mapping.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"},"id":{"type":"string","description":"The ID of the Group Mapping.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getGroupMapping.\n","properties":{"description":{"description":"(Required String) A description explaining the purpose and use of the group mapping.\n","type":"string"},"displayName":{"description":"(Required String) The name of the Group Mapping.\n","type":"string"},"filter":{"description":"(Required String) A single group identifier or a condition based on [supported CEL operators](https://docs.confluent.io/cloud/current/access-management/authenticate/sso/group-mapping/overview.html#supported-cel-operators-for-group-mapping) that defines which groups are included.\n","type":"string"},"id":{"description":"(Required String) The ID of the Group Mapping (for example, `group-abc123`).\n","type":"string"}},"required":["description","displayName","filter","id"],"type":"object"}},"confluentcloud:index/getIdentityPool:getIdentityPool":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.IdentityPool`\" pulumi-lang-dotnet=\"`confluentcloud.IdentityPool`\" pulumi-lang-go=\"`IdentityPool`\" pulumi-lang-python=\"`IdentityPool`\" pulumi-lang-yaml=\"`confluentcloud.IdentityPool`\" pulumi-lang-java=\"`confluentcloud.IdentityPool`\"\u003e`confluentcloud.IdentityPool`\u003c/span\u003e describes an Identity Pool data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getIdentityPool({\n        id: \"pool-xyz456\",\n        identityProvider: {\n            id: \"op-abc123\",\n        },\n    });\n    const exampleUsingName = await confluentcloud.getIdentityPool({\n        displayName: \"My Identity Pool\",\n        identityProvider: {\n            id: \"op-abc123\",\n        },\n    });\n    return {\n        exampleUsingId: exampleUsingId,\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_identity_pool(id=\"pool-xyz456\",\n    identity_provider={\n        \"id\": \"op-abc123\",\n    })\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_identity_pool(display_name=\"My Identity Pool\",\n    identity_provider={\n        \"id\": \"op-abc123\",\n    })\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetIdentityPool.Invoke(new()\n    {\n        Id = \"pool-xyz456\",\n        IdentityProvider = new ConfluentCloud.Inputs.GetIdentityPoolIdentityProviderInputArgs\n        {\n            Id = \"op-abc123\",\n        },\n    });\n\n    var exampleUsingName = ConfluentCloud.GetIdentityPool.Invoke(new()\n    {\n        DisplayName = \"My Identity Pool\",\n        IdentityProvider = new ConfluentCloud.Inputs.GetIdentityPoolIdentityProviderInputArgs\n        {\n            Id = \"op-abc123\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupIdentityPool(ctx, \u0026confluentcloud.LookupIdentityPoolArgs{\n\t\t\tId: pulumi.StringRef(\"pool-xyz456\"),\n\t\t\tIdentityProvider: confluentcloud.GetIdentityPoolIdentityProvider{\n\t\t\t\tId: \"op-abc123\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\texampleUsingName, err := confluentcloud.LookupIdentityPool(ctx, \u0026confluentcloud.LookupIdentityPoolArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"My Identity Pool\"),\n\t\t\tIdentityProvider: confluentcloud.GetIdentityPoolIdentityProvider{\n\t\t\t\tId: \"op-abc123\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetIdentityPoolArgs;\nimport com.pulumi.confluentcloud.inputs.GetIdentityPoolIdentityProviderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getIdentityPool(GetIdentityPoolArgs.builder()\n            .id(\"pool-xyz456\")\n            .identityProvider(GetIdentityPoolIdentityProviderArgs.builder()\n                .id(\"op-abc123\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getIdentityPool(GetIdentityPoolArgs.builder()\n            .displayName(\"My Identity Pool\")\n            .identityProvider(GetIdentityPoolIdentityProviderArgs.builder()\n                .id(\"op-abc123\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getIdentityPool\n      arguments:\n        id: pool-xyz456\n        identityProvider:\n          id: op-abc123\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getIdentityPool\n      arguments:\n        displayName: My Identity Pool\n        identityProvider:\n          id: op-abc123\noutputs:\n  exampleUsingId: ${exampleUsingId}\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getIdentityPool.\n","properties":{"displayName":{"type":"string","description":"A human-readable name for the Identity Pool.\n"},"id":{"type":"string","description":"The ID of the Identity Pool, for example, `pool-xyz456`.\n"},"identityProvider":{"$ref":"#/types/confluentcloud:index/getIdentityPoolIdentityProvider:getIdentityPoolIdentityProvider","description":"(Required Configuration Block) supports the following:\n"}},"type":"object","required":["identityProvider"]},"outputs":{"description":"A collection of values returned by getIdentityPool.\n","properties":{"description":{"description":"(Required String) A description for the Identity Pool.\n","type":"string"},"displayName":{"description":"(Required String) A human-readable name for the Identity Pool.\n","type":"string"},"filter":{"description":"(Required String) A filter expression in [Supported Common Expression Language (CEL)](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/identity-pools.html#supported-common-expression-language-cel-filters) that specifies which identities can authenticate using your identity pool (see [Set identity pool filters](https://docs.confluent.io/cloud/current/access-management/authenticate/oauth/identity-pools.html#set-identity-pool-filters) for more details).\n","type":"string"},"id":{"description":"(Required String) The ID of the Identity Provider associated with the Identity Pool, for example, `op-abc123`.\n","type":"string"},"identityClaim":{"description":"(Required String) The JSON Web Token (JWT) claim to extract the authenticating identity to Confluent resources from (see [Registered Claim Names](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1) for more details). This appears in the audit log records, showing, for example, that \"identity Z used identity pool X to access topic A\".\n","type":"string"},"identityProvider":{"$ref":"#/types/confluentcloud:index/getIdentityPoolIdentityProvider:getIdentityPoolIdentityProvider","description":"(Required Configuration Block) supports the following:\n"}},"required":["description","displayName","filter","id","identityClaim","identityProvider"],"type":"object"}},"confluentcloud:index/getIdentityProvider:getIdentityProvider":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.IdentityProvider`\" pulumi-lang-dotnet=\"`confluentcloud.IdentityProvider`\" pulumi-lang-go=\"`IdentityProvider`\" pulumi-lang-python=\"`IdentityProvider`\" pulumi-lang-yaml=\"`confluentcloud.IdentityProvider`\" pulumi-lang-java=\"`confluentcloud.IdentityProvider`\"\u003e`confluentcloud.IdentityProvider`\u003c/span\u003e describes an Identity Provider data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getIdentityProvider({\n        id: \"op-abc123\",\n    });\n    const exampleUsingName = await confluentcloud.getIdentityProvider({\n        displayName: \"My OIDC Provider: Azure AD\",\n    });\n    return {\n        exampleUsingId: exampleUsingId,\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_identity_provider(id=\"op-abc123\")\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_identity_provider(display_name=\"My OIDC Provider: Azure AD\")\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetIdentityProvider.Invoke(new()\n    {\n        Id = \"op-abc123\",\n    });\n\n    var exampleUsingName = ConfluentCloud.GetIdentityProvider.Invoke(new()\n    {\n        DisplayName = \"My OIDC Provider: Azure AD\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupIdentityProvider(ctx, \u0026confluentcloud.LookupIdentityProviderArgs{\n\t\t\tId: pulumi.StringRef(\"op-abc123\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\texampleUsingName, err := confluentcloud.LookupIdentityProvider(ctx, \u0026confluentcloud.LookupIdentityProviderArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"My OIDC Provider: Azure AD\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetIdentityProviderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getIdentityProvider(GetIdentityProviderArgs.builder()\n            .id(\"op-abc123\")\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getIdentityProvider(GetIdentityProviderArgs.builder()\n            .displayName(\"My OIDC Provider: Azure AD\")\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getIdentityProvider\n      arguments:\n        id: op-abc123\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getIdentityProvider\n      arguments:\n        displayName: 'My OIDC Provider: Azure AD'\noutputs:\n  exampleUsingId: ${exampleUsingId}\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getIdentityProvider.\n","properties":{"displayName":{"type":"string","description":"A human-readable name for the Identity Provider.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"},"id":{"type":"string","description":"The ID of the Identity Provider, for example, `op-abc123`.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getIdentityProvider.\n","properties":{"description":{"description":"(Required String) A description for the Identity Provider.\n","type":"string"},"displayName":{"description":"(Required String) A human-readable name for the Identity Provider.\n","type":"string"},"id":{"description":"(Required String) The ID of the Identity Provider, for example, `op-abc123`.\n","type":"string"},"identityClaim":{"description":"(Optional String) The JSON Web Token (JWT) claim to extract the authenticating identity to Confluent resources from [Registered Claim Names](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1). This appears in audit log records.\n","type":"string"},"issuer":{"description":"(Required String) A publicly reachable issuer URI for the Identity Provider. The unique issuer URI string represents the entity for issuing tokens.\n","type":"string"},"jwksUri":{"description":"(Required String) A publicly reachable JSON Web Key Set (JWKS) URI for the Identity Provider. A JSON Web Key Set (JWKS) provides a set of keys containing the public keys used to verify any JSON Web Token (JWT) issued by your OAuth 2.0 identity provider.\n","type":"string"}},"required":["description","displayName","id","identityClaim","issuer","jwksUri"],"type":"object"}},"confluentcloud:index/getInvitation:getInvitation":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Invitation`\" pulumi-lang-dotnet=\"`confluentcloud.Invitation`\" pulumi-lang-go=\"`Invitation`\" pulumi-lang-python=\"`Invitation`\" pulumi-lang-yaml=\"`confluentcloud.Invitation`\" pulumi-lang-java=\"`confluentcloud.Invitation`\"\u003e`confluentcloud.Invitation`\u003c/span\u003e describes an Invitation data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getInvitation({\n    id: \"i-gxxn1\",\n});\nexport const invitation = main;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_invitation(id=\"i-gxxn1\")\npulumi.export(\"invitation\", main)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetInvitation.Invoke(new()\n    {\n        Id = \"i-gxxn1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"invitation\"] = main,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupInvitation(ctx, \u0026confluentcloud.LookupInvitationArgs{\n\t\t\tId: \"i-gxxn1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"invitation\", main)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetInvitationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getInvitation(GetInvitationArgs.builder()\n            .id(\"i-gxxn1\")\n            .build());\n\n        ctx.export(\"invitation\", main);\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getInvitation\n      arguments:\n        id: i-gxxn1\noutputs:\n  invitation: ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getInvitation.\n","properties":{"id":{"type":"string","description":"The ID of the Invitation, for example, `i-zyw30`.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getInvitation.\n","properties":{"acceptedAt":{"description":"(Optional String) The timestamp that the invitation was accepted.\n","type":"string"},"authType":{"description":"(Optional String) Accepted values are: `AUTH_TYPE_LOCAL` and `AUTH_TYPE_SSO`. The user/invitee's authentication type. Note that only the [`OrganizationAdmin role`](https://docs.confluent.io/cloud/current/access-management/access-control/cloud-rbac.html#organizationadmin) can invite `AUTH_TYPE_LOCAL` users to SSO organizations. The user's\u003cspan pulumi-lang-nodejs=\" authType \" pulumi-lang-dotnet=\" AuthType \" pulumi-lang-go=\" authType \" pulumi-lang-python=\" auth_type \" pulumi-lang-yaml=\" authType \" pulumi-lang-java=\" authType \"\u003e auth_type \u003c/span\u003eis set as `AUTH_TYPE_SSO` by default if the organization has SSO enabled. Otherwise, the user's\u003cspan pulumi-lang-nodejs=\" authType \" pulumi-lang-dotnet=\" AuthType \" pulumi-lang-go=\" authType \" pulumi-lang-python=\" auth_type \" pulumi-lang-yaml=\" authType \" pulumi-lang-java=\" authType \"\u003e auth_type \u003c/span\u003eis `AUTH_TYPE_LOCAL` by default.\n","type":"string"},"creators":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getInvitationCreator:getInvitationCreator"},"type":"array"},"email":{"description":"(Required String) The user/invitee's email address.\n","type":"string"},"expiresAt":{"description":"(Optional String) The timestamp that the invitation will expire.\n","type":"string"},"id":{"description":"(Required String) The id of invitation creator.\n","type":"string"},"status":{"description":"(Optional String) The status of invitations. Accepted values are: `INVITE_STATUS_SENT`,`INVITE_STATUS_STAGED`,`INVITE_STATUS_ACCEPTED`,`INVITE_STATUS_EXPIRED`, and `INVITE_STATUS_DEACTIVATED`.\n","type":"string"},"users":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getInvitationUser:getInvitationUser"},"type":"array"}},"required":["acceptedAt","authType","creators","email","expiresAt","id","status","users"],"type":"object"}},"confluentcloud:index/getIpAddresses:getIpAddresses":{"description":"[![Preview](https://img.shields.io/badge/Lifecycle%20Stage-Preview-%2300afba)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003e **Note:** \u003cspan pulumi-lang-nodejs=\"`confluentcloud.getIpAddresses`\" pulumi-lang-dotnet=\"`confluentcloud.getIpAddresses`\" pulumi-lang-go=\"`getIpAddresses`\" pulumi-lang-python=\"`get_ip_addresses`\" pulumi-lang-yaml=\"`confluentcloud.getIpAddresses`\" pulumi-lang-java=\"`confluentcloud.getIpAddresses`\"\u003e`confluentcloud.getIpAddresses`\u003c/span\u003e data source is available in **Preview** for early adopters. Preview features are introduced to gather customer feedback. This feature should be used only for evaluation and non-production testing purposes or to provide feedback to Confluent, particularly as it becomes more widely available in follow-on editions.  \n**Preview** features are intended for evaluation use in development and testing environments only, and not for production use. The warranty, SLA, and Support Services provisions of your agreement with Confluent do not apply to Preview features. Preview features are considered to be a Proof of Concept as defined in the Confluent Cloud Terms of Service. Confluent may discontinue providing preview releases of the Preview features at any time in Confluent’s sole discretion.\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.getIpAddresses`\" pulumi-lang-dotnet=\"`confluentcloud.getIpAddresses`\" pulumi-lang-go=\"`getIpAddresses`\" pulumi-lang-python=\"`get_ip_addresses`\" pulumi-lang-yaml=\"`confluentcloud.getIpAddresses`\" pulumi-lang-java=\"`confluentcloud.getIpAddresses`\"\u003e`confluentcloud.getIpAddresses`\u003c/span\u003e describes IP Addresses data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getIpAddresses({\n    filter: {\n        clouds: [\"AWS\"],\n        regions: [\n            \"us-east-1\",\n            \"us-east-2\",\n        ],\n        services: [\"KAFKA\"],\n        addressTypes: [\"EGRESS\"],\n    },\n});\nexport const ipAddresses = main.then(main =\u003e main.ipAddresses);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_ip_addresses(filter={\n    \"clouds\": [\"AWS\"],\n    \"regions\": [\n        \"us-east-1\",\n        \"us-east-2\",\n    ],\n    \"services\": [\"KAFKA\"],\n    \"address_types\": [\"EGRESS\"],\n})\npulumi.export(\"ipAddresses\", main.ip_addresses)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetIpAddresses.Invoke(new()\n    {\n        Filter = new ConfluentCloud.Inputs.GetIpAddressesFilterInputArgs\n        {\n            Clouds = new[]\n            {\n                \"AWS\",\n            },\n            Regions = new[]\n            {\n                \"us-east-1\",\n                \"us-east-2\",\n            },\n            Services = new[]\n            {\n                \"KAFKA\",\n            },\n            AddressTypes = new[]\n            {\n                \"EGRESS\",\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"ipAddresses\"] = main.Apply(getIpAddressesResult =\u003e getIpAddressesResult.IpAddresses),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.GetIpAddresses(ctx, \u0026confluentcloud.GetIpAddressesArgs{\n\t\t\tFilter: confluentcloud.GetIpAddressesFilter{\n\t\t\t\tClouds: []string{\n\t\t\t\t\t\"AWS\",\n\t\t\t\t},\n\t\t\t\tRegions: []string{\n\t\t\t\t\t\"us-east-1\",\n\t\t\t\t\t\"us-east-2\",\n\t\t\t\t},\n\t\t\t\tServices: []string{\n\t\t\t\t\t\"KAFKA\",\n\t\t\t\t},\n\t\t\t\tAddressTypes: []string{\n\t\t\t\t\t\"EGRESS\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ipAddresses\", main.IpAddresses)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetIpAddressesArgs;\nimport com.pulumi.confluentcloud.inputs.GetIpAddressesFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getIpAddresses(GetIpAddressesArgs.builder()\n            .filter(GetIpAddressesFilterArgs.builder()\n                .clouds(\"AWS\")\n                .regions(                \n                    \"us-east-1\",\n                    \"us-east-2\")\n                .services(\"KAFKA\")\n                .addressTypes(\"EGRESS\")\n                .build())\n            .build());\n\n        ctx.export(\"ipAddresses\", main.ipAddresses());\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getIpAddresses\n      arguments:\n        filter:\n          clouds:\n            - AWS\n          regions:\n            - us-east-1\n            - us-east-2\n          services:\n            - KAFKA\n          addressTypes:\n            - EGRESS\noutputs:\n  ipAddresses: ${main.ipAddresses}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getIpAddresses.\n","properties":{"filter":{"$ref":"#/types/confluentcloud:index/getIpAddressesFilter:getIpAddressesFilter"}},"type":"object"},"outputs":{"description":"A collection of values returned by getIpAddresses.\n","properties":{"filter":{"$ref":"#/types/confluentcloud:index/getIpAddressesFilter:getIpAddressesFilter"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ipAddresses":{"description":"(List of Object) List of schemas. Each schema object exports the following attributes:\n","items":{"$ref":"#/types/confluentcloud:index/getIpAddressesIpAddress:getIpAddressesIpAddress"},"type":"array"}},"required":["ipAddresses","id"],"type":"object"}},"confluentcloud:index/getIpFilter:getIpFilter":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.IpFilter`\" pulumi-lang-dotnet=\"`confluentcloud.IpFilter`\" pulumi-lang-go=\"`IpFilter`\" pulumi-lang-python=\"`IpFilter`\" pulumi-lang-yaml=\"`confluentcloud.IpFilter`\" pulumi-lang-java=\"`confluentcloud.IpFilter`\"\u003e`confluentcloud.IpFilter`\u003c/span\u003e describes an IP Filter data source.\n\n\u003e **Note:** See [IP Filtering on Confluent Cloud](https://docs.confluent.io/cloud/current/security/access-control/ip-filtering/overview.html) for more details about the IP Filtering feature, its prerequisites, and its limitations.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const example = await confluentcloud.getIpFilter({\n        id: \"ipf-abc123\",\n    });\n    return {\n        example: example,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_ip_filter(id=\"ipf-abc123\")\npulumi.export(\"example\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetIpFilter.Invoke(new()\n    {\n        Id = \"ipf-abc123\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"example\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupIpFilter(ctx, \u0026confluentcloud.LookupIpFilterArgs{\n\t\t\tId: \"ipf-abc123\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"example\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetIpFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getIpFilter(GetIpFilterArgs.builder()\n            .id(\"ipf-abc123\")\n            .build());\n\n        ctx.export(\"example\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getIpFilter\n      arguments:\n        id: ipf-abc123\noutputs:\n  example: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getIpFilter.\n","properties":{"id":{"type":"string","description":"The ID of the IP Group (e.g., `ipf-abc123`).\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getIpFilter.\n","properties":{"filterName":{"description":"(Required String) A human-readable name for an IP Filter. Can contain any unicode letter or number, the ASCII space character, or any of the following special characters: `[`, `]`, `|`, `\u0026`, `+`, `-`, `_`, `/`, `.`, `,`.\n","type":"string"},"id":{"type":"string"},"ipGroups":{"description":"(Required List of Strings) A list of IP Groups.\n","items":{"type":"string"},"type":"array"},"operationGroups":{"description":"(Required List of Strings) Scope of resources covered by this IP Filter. Resource group must be set to 'multiple' in order to use this property. During update operations, note that the operation groups passed in will replace the list of existing operation groups (passing in an empty list will remove all operation groups) from the filter (in line with the behavior for \u003cspan pulumi-lang-nodejs=\"`ipGroups`\" pulumi-lang-dotnet=\"`IpGroups`\" pulumi-lang-go=\"`ipGroups`\" pulumi-lang-python=\"`ip_groups`\" pulumi-lang-yaml=\"`ipGroups`\" pulumi-lang-java=\"`ipGroups`\"\u003e`ip_groups`\u003c/span\u003e attribute).\n","items":{"type":"string"},"type":"array"},"resourceGroup":{"description":"(Required String) Scope of resources covered by this IP Filter. Available resource groups include `\"management\"` and `\"multiple\"`.\n","type":"string"},"resourceScope":{"description":"(Required String) A CRN that specifies the scope of the IP Filter, specifically the organization or environment. Without specifying this property, the IP Filter would apply to the whole organization. For example, `\"crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa\"` or `data.confluent_organization.resource_name`.\n","type":"string"}},"required":["filterName","id","ipGroups","operationGroups","resourceGroup","resourceScope"],"type":"object"}},"confluentcloud:index/getIpGroup:getIpGroup":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.IpGroup`\" pulumi-lang-dotnet=\"`confluentcloud.IpGroup`\" pulumi-lang-go=\"`IpGroup`\" pulumi-lang-python=\"`IpGroup`\" pulumi-lang-yaml=\"`confluentcloud.IpGroup`\" pulumi-lang-java=\"`confluentcloud.IpGroup`\"\u003e`confluentcloud.IpGroup`\u003c/span\u003e describes an IP Group data source.\n\n\u003e **Note:** See [IP Filtering on Confluent Cloud](https://docs.confluent.io/cloud/current/security/access-control/ip-filtering/overview.html) for more details about the IP Filtering feature, its prerequisites, and its limitations.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const example = await confluentcloud.getIpGroup({\n        id: \"ipg-abc123\",\n    });\n    return {\n        example: example,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_ip_group(id=\"ipg-abc123\")\npulumi.export(\"example\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetIpGroup.Invoke(new()\n    {\n        Id = \"ipg-abc123\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"example\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupIpGroup(ctx, \u0026confluentcloud.LookupIpGroupArgs{\n\t\t\tId: \"ipg-abc123\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"example\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetIpGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getIpGroup(GetIpGroupArgs.builder()\n            .id(\"ipg-abc123\")\n            .build());\n\n        ctx.export(\"example\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getIpGroup\n      arguments:\n        id: ipg-abc123\noutputs:\n  example: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getIpGroup.\n","properties":{"id":{"type":"string","description":"The ID of the IP Group (e.g., `ipg-abc123`).\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getIpGroup.\n","properties":{"cidrBlocks":{"description":"(Required List of Strings) A list of CIDRs.\n","items":{"type":"string"},"type":"array"},"groupName":{"description":"(Required String) A human-readable name for an IP Group. Can contain any unicode letter or number, the ASCII space character, or any of the following special characters: `[`, `]`, `|`, `\u0026`, `+`, `-`, `_`, `/`, `.`, `,`.\n","type":"string"},"id":{"type":"string"}},"required":["cidrBlocks","groupName","id"],"type":"object"}},"confluentcloud:index/getKafkaClientQuota:getKafkaClientQuota":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaClientQuota`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaClientQuota`\" pulumi-lang-go=\"`KafkaClientQuota`\" pulumi-lang-python=\"`KafkaClientQuota`\" pulumi-lang-yaml=\"`confluentcloud.KafkaClientQuota`\" pulumi-lang-java=\"`confluentcloud.KafkaClientQuota`\"\u003e`confluentcloud.KafkaClientQuota`\u003c/span\u003e describes a Kafka Client Quota.\n\n\u003e **Note:** See [Control application usage with Client Quotas](https://docs.confluent.io/cloud/current/clusters/client-quotas.html#control-application-usage-with-client-quotas) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const example = await confluentcloud.getKafkaClientQuota({\n        id: \"cq-abc123\",\n    });\n    return {\n        example: example,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_kafka_client_quota(id=\"cq-abc123\")\npulumi.export(\"example\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetKafkaClientQuota.Invoke(new()\n    {\n        Id = \"cq-abc123\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"example\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupKafkaClientQuota(ctx, \u0026confluentcloud.LookupKafkaClientQuotaArgs{\n\t\t\tId: \"cq-abc123\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"example\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetKafkaClientQuotaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getKafkaClientQuota(GetKafkaClientQuotaArgs.builder()\n            .id(\"cq-abc123\")\n            .build());\n\n        ctx.export(\"example\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getKafkaClientQuota\n      arguments:\n        id: cq-abc123\noutputs:\n  example: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getKafkaClientQuota.\n","properties":{"id":{"type":"string","description":"The ID of the Kafka Client Quota (for example, `cq-abc123`).\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getKafkaClientQuota.\n","properties":{"description":{"description":"(Required String) The description of the Kafka Client Quota.\n","type":"string"},"displayName":{"description":"(Required String) The name of the Kafka Client Quota.\n","type":"string"},"environments":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getKafkaClientQuotaEnvironment:getKafkaClientQuotaEnvironment"},"type":"array"},"id":{"description":"(Required String) The ID of the Environment that the corresponding Kafka Cluster belongs to, for example, `env-abc123`.\n","type":"string"},"kafkaClusters":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getKafkaClientQuotaKafkaCluster:getKafkaClientQuotaKafkaCluster"},"type":"array"},"principals":{"description":"(Required Set of Strings) The list of principals (i.e., service accounts or identity pools) to apply the Kafka Client Quota to. Use the special name, `\"\u003cdefault\u003e\"`, to represent the default quota for all users and service accounts.\n","items":{"type":"string"},"type":"array"},"throughputs":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getKafkaClientQuotaThroughput:getKafkaClientQuotaThroughput"},"type":"array"}},"required":["description","displayName","environments","id","kafkaClusters","principals","throughputs"],"type":"object"}},"confluentcloud:index/getKafkaCluster:getKafkaCluster":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaCluster`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaCluster`\" pulumi-lang-go=\"`KafkaCluster`\" pulumi-lang-python=\"`KafkaCluster`\" pulumi-lang-yaml=\"`confluentcloud.KafkaCluster`\" pulumi-lang-java=\"`confluentcloud.KafkaCluster`\"\u003e`confluentcloud.KafkaCluster`\u003c/span\u003e describes a Kafka cluster data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getKafkaCluster({\n        id: \"lkc-abc123\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    const test_sa = new confluentcloud.ServiceAccount(\"test-sa\", {\n        displayName: \"app_mgr\",\n        description: `app_mgr for ${exampleUsingId.displayName}`,\n    });\n    const exampleUsingName = await confluentcloud.getKafkaCluster({\n        displayName: \"basic_kafka_cluster\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    return {\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_kafka_cluster(id=\"lkc-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\ntest_sa = confluentcloud.ServiceAccount(\"test-sa\",\n    display_name=\"app_mgr\",\n    description=f\"app_mgr for {example_using_id.display_name}\")\nexample_using_name = confluentcloud.get_kafka_cluster(display_name=\"basic_kafka_cluster\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetKafkaCluster.Invoke(new()\n    {\n        Id = \"lkc-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetKafkaClusterEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    var test_sa = new ConfluentCloud.ServiceAccount(\"test-sa\", new()\n    {\n        DisplayName = \"app_mgr\",\n        Description = $\"app_mgr for {exampleUsingId.Apply(getKafkaClusterResult =\u003e getKafkaClusterResult.DisplayName)}\",\n    });\n\n    var exampleUsingName = ConfluentCloud.GetKafkaCluster.Invoke(new()\n    {\n        DisplayName = \"basic_kafka_cluster\",\n        Environment = new ConfluentCloud.Inputs.GetKafkaClusterEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupKafkaCluster(ctx, \u0026confluentcloud.LookupKafkaClusterArgs{\n\t\t\tId: pulumi.StringRef(\"lkc-abc123\"),\n\t\t\tEnvironment: confluentcloud.GetKafkaClusterEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewServiceAccount(ctx, \"test-sa\", \u0026confluentcloud.ServiceAccountArgs{\n\t\t\tDisplayName: pulumi.String(\"app_mgr\"),\n\t\t\tDescription: pulumi.Sprintf(\"app_mgr for %v\", exampleUsingId.DisplayName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUsingName, err := confluentcloud.LookupKafkaCluster(ctx, \u0026confluentcloud.LookupKafkaClusterArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"basic_kafka_cluster\"),\n\t\t\tEnvironment: confluentcloud.GetKafkaClusterEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetKafkaClusterEnvironmentArgs;\nimport com.pulumi.confluentcloud.ServiceAccount;\nimport com.pulumi.confluentcloud.ServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getKafkaCluster(GetKafkaClusterArgs.builder()\n            .id(\"lkc-abc123\")\n            .environment(GetKafkaClusterEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        var test_sa = new ServiceAccount(\"test-sa\", ServiceAccountArgs.builder()\n            .displayName(\"app_mgr\")\n            .description(String.format(\"app_mgr for %s\", exampleUsingId.displayName()))\n            .build());\n\n        final var exampleUsingName = ConfluentcloudFunctions.getKafkaCluster(GetKafkaClusterArgs.builder()\n            .displayName(\"basic_kafka_cluster\")\n            .environment(GetKafkaClusterEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nresources:\n  test-sa:\n    type: confluentcloud:ServiceAccount\n    properties:\n      displayName: app_mgr\n      description: app_mgr for ${exampleUsingId.displayName}\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getKafkaCluster\n      arguments:\n        id: lkc-abc123\n        environment:\n          id: env-xyz456\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getKafkaCluster\n      arguments:\n        displayName: basic_kafka_cluster\n        environment:\n          id: env-xyz456\noutputs:\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getKafkaCluster.\n","properties":{"basics":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getKafkaClusterBasic:getKafkaClusterBasic"},"description":"(Optional Configuration Block) The configuration of the Basic Kafka cluster.\n"},"dedicated":{"$ref":"#/types/confluentcloud:index/getKafkaClusterDedicated:getKafkaClusterDedicated","description":"(Optional Configuration Block) The configuration of the Dedicated Kafka cluster. It supports the following:\n"},"displayName":{"type":"string","description":"A human-readable name for the Kafka cluster.\n"},"enterprises":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getKafkaClusterEnterprise:getKafkaClusterEnterprise"},"description":"(Optional Configuration Block) The configuration of the Enterprise Kafka cluster.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getKafkaClusterEnvironment:getKafkaClusterEnvironment"},"freights":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getKafkaClusterFreight:getKafkaClusterFreight"},"description":"(Optional Configuration Block) The configuration of the Freight Kafka cluster.\n"},"id":{"type":"string","description":"The ID of the Kafka cluster, for example, `lkc-abc123`.\n"},"standards":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getKafkaClusterStandard:getKafkaClusterStandard"},"description":"(Optional Configuration Block) The configuration of the Standard Kafka cluster.\n"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getKafkaCluster.\n","properties":{"apiVersion":{"description":"(Required String) An API Version of the schema version of the Kafka cluster, for example, `cmk/v2`.\n","type":"string"},"availability":{"description":"(Required String) The availability zone configuration of the Kafka cluster. Accepted values are: `SINGLE_ZONE`, `MULTI_ZONE`, `LOW`, and `HIGH`.\n","type":"string"},"basics":{"description":"(Optional Configuration Block) The configuration of the Basic Kafka cluster.\n","items":{"$ref":"#/types/confluentcloud:index/getKafkaClusterBasic:getKafkaClusterBasic"},"type":"array"},"bootstrapEndpoint":{"description":"(Required String) The bootstrap endpoint used by Kafka clients to connect to the cluster (for example, `lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:9092`).\n","type":"string"},"byokKeys":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getKafkaClusterByokKey:getKafkaClusterByokKey"},"type":"array"},"cloud":{"description":"(Required String) The cloud service provider that runs the Kafka cluster. Accepted values are: `AWS`, `AZURE`, and `GCP`.\n","type":"string"},"dedicated":{"$ref":"#/types/confluentcloud:index/getKafkaClusterDedicated:getKafkaClusterDedicated","description":"(Optional Configuration Block) The configuration of the Dedicated Kafka cluster. It supports the following:\n"},"displayName":{"description":"(Required String) The name of the Kafka cluster.\n","type":"string"},"endpoints":{"description":"(Optional List) The list of endpoints for connecting to the Kafka cluster. These endpoints provide different network access methods or regions for connecting to the cluster:\n","items":{"$ref":"#/types/confluentcloud:index/getKafkaClusterEndpoint:getKafkaClusterEndpoint"},"type":"array"},"enterprises":{"description":"(Optional Configuration Block) The configuration of the Enterprise Kafka cluster.\n","items":{"$ref":"#/types/confluentcloud:index/getKafkaClusterEnterprise:getKafkaClusterEnterprise"},"type":"array"},"environment":{"$ref":"#/types/confluentcloud:index/getKafkaClusterEnvironment:getKafkaClusterEnvironment"},"freights":{"description":"(Optional Configuration Block) The configuration of the Freight Kafka cluster.\n","items":{"$ref":"#/types/confluentcloud:index/getKafkaClusterFreight:getKafkaClusterFreight"},"type":"array"},"id":{"description":"(Required String) The ID of the Confluent key that is used to encrypt the data in the Kafka cluster, for example, `cck-lye5m`.\n","type":"string"},"kind":{"description":"(Required String) A kind of the Kafka cluster, for example, `Cluster`.\n","type":"string"},"networks":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getKafkaClusterNetwork:getKafkaClusterNetwork"},"type":"array"},"rbacCrn":{"description":"(Required String) The Confluent Resource Name of the Kafka cluster, for example, `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123/cloud-cluster=lkc-abc123`.\n","type":"string"},"region":{"description":"(Required String) The cloud service provider region where the Kafka cluster is running, for example, `us-west-2`. See [Cloud Providers and Regions](https://docs.confluent.io/cloud/current/clusters/regions.html#cloud-providers-and-regions) for a full list of options for AWS, Azure, and GCP.\n","type":"string"},"restEndpoint":{"description":"(Required String) The REST endpoint of the Kafka cluster (for example, `https://lkc-abc123-apfoo123.eu-west-3.aws.accesspoint.glb.confluent.cloud:443`).\n","type":"string"},"standards":{"description":"(Optional Configuration Block) The configuration of the Standard Kafka cluster.\n","items":{"$ref":"#/types/confluentcloud:index/getKafkaClusterStandard:getKafkaClusterStandard"},"type":"array"}},"required":["apiVersion","availability","bootstrapEndpoint","byokKeys","cloud","displayName","endpoints","environment","id","kind","networks","rbacCrn","region","restEndpoint"],"type":"object"}},"confluentcloud:index/getKafkaClusters:getKafkaClusters":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.getKafkaClusters`\" pulumi-lang-dotnet=\"`confluentcloud.getKafkaClusters`\" pulumi-lang-go=\"`getKafkaClusters`\" pulumi-lang-python=\"`get_kafka_clusters`\" pulumi-lang-yaml=\"`confluentcloud.getKafkaClusters`\" pulumi-lang-java=\"`confluentcloud.getKafkaClusters`\"\u003e`confluentcloud.getKafkaClusters`\u003c/span\u003e describes a data source for Kafka Clusters.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getKafkaClusters({\n    environment: {\n        id: \"env-123abc\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_kafka_clusters(environment={\n    \"id\": \"env-123abc\",\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetKafkaClusters.Invoke(new()\n    {\n        Environment = new ConfluentCloud.Inputs.GetKafkaClustersEnvironmentInputArgs\n        {\n            Id = \"env-123abc\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.GetKafkaClusters(ctx, \u0026confluentcloud.GetKafkaClustersArgs{\n\t\t\tEnvironment: confluentcloud.GetKafkaClustersEnvironment{\n\t\t\t\tId: \"env-123abc\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetKafkaClustersArgs;\nimport com.pulumi.confluentcloud.inputs.GetKafkaClustersEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getKafkaClusters(GetKafkaClustersArgs.builder()\n            .environment(GetKafkaClustersEnvironmentArgs.builder()\n                .id(\"env-123abc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getKafkaClusters\n      arguments:\n        environment:\n          id: env-123abc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getKafkaClusters.\n","properties":{"environment":{"$ref":"#/types/confluentcloud:index/getKafkaClustersEnvironment:getKafkaClustersEnvironment","description":"(Required Object) exports the following attributes:\n"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getKafkaClusters.\n","properties":{"clusters":{"description":"(Required List of Object) List of Kafka clusters. Each Kafka cluster object exports the following attributes:\n","items":{"$ref":"#/types/confluentcloud:index/getKafkaClustersCluster:getKafkaClustersCluster"},"type":"array"},"environment":{"$ref":"#/types/confluentcloud:index/getKafkaClustersEnvironment:getKafkaClustersEnvironment","description":"(Required Object) exports the following attributes:\n"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"}},"required":["clusters","environment","id"],"type":"object"}},"confluentcloud:index/getKafkaTopic:getKafkaTopic":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.KafkaTopic`\" pulumi-lang-dotnet=\"`confluentcloud.KafkaTopic`\" pulumi-lang-go=\"`KafkaTopic`\" pulumi-lang-python=\"`KafkaTopic`\" pulumi-lang-yaml=\"`confluentcloud.KafkaTopic`\" pulumi-lang-java=\"`confluentcloud.KafkaTopic`\"\u003e`confluentcloud.KafkaTopic`\u003c/span\u003e describes a Kafka Topic data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Kafka clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst orders = confluentcloud.getKafkaTopic({\n    kafkaCluster: {\n        id: basic_cluster.id,\n    },\n    topicName: \"orders\",\n    restEndpoint: basic_cluster.restEndpoint,\n    credentials: {\n        key: \"\u003cKafka API Key for confluent_kafka_cluster.basic-cluster\u003e\",\n        secret: \"\u003cKafka API Secret for confluent_kafka_cluster.basic-cluster\u003e\",\n    },\n});\nexport const config = orders.then(orders =\u003e orders.config);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\norders = confluentcloud.get_kafka_topic(kafka_cluster={\n        \"id\": basic_cluster[\"id\"],\n    },\n    topic_name=\"orders\",\n    rest_endpoint=basic_cluster[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cKafka API Key for confluent_kafka_cluster.basic-cluster\u003e\",\n        \"secret\": \"\u003cKafka API Secret for confluent_kafka_cluster.basic-cluster\u003e\",\n    })\npulumi.export(\"config\", orders.config)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var orders = ConfluentCloud.GetKafkaTopic.Invoke(new()\n    {\n        KafkaCluster = new ConfluentCloud.Inputs.GetKafkaTopicKafkaClusterInputArgs\n        {\n            Id = basic_cluster.Id,\n        },\n        TopicName = \"orders\",\n        RestEndpoint = basic_cluster.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.GetKafkaTopicCredentialsInputArgs\n        {\n            Key = \"\u003cKafka API Key for confluent_kafka_cluster.basic-cluster\u003e\",\n            Secret = \"\u003cKafka API Secret for confluent_kafka_cluster.basic-cluster\u003e\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"config\"] = orders.Apply(getKafkaTopicResult =\u003e getKafkaTopicResult.Config),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\torders, err := confluentcloud.LookupKafkaTopic(ctx, \u0026confluentcloud.LookupKafkaTopicArgs{\n\t\t\tKafkaCluster: confluentcloud.GetKafkaTopicKafkaCluster{\n\t\t\t\tId: basic_cluster.Id,\n\t\t\t},\n\t\t\tTopicName:    \"orders\",\n\t\t\tRestEndpoint: basic_cluster.RestEndpoint,\n\t\t\tCredentials: confluentcloud.GetKafkaTopicCredentials{\n\t\t\t\tKey:    \"\u003cKafka API Key for confluent_kafka_cluster.basic-cluster\u003e\",\n\t\t\t\tSecret: \"\u003cKafka API Secret for confluent_kafka_cluster.basic-cluster\u003e\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"config\", orders.Config)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetKafkaTopicArgs;\nimport com.pulumi.confluentcloud.inputs.GetKafkaTopicKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetKafkaTopicCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var orders = ConfluentcloudFunctions.getKafkaTopic(GetKafkaTopicArgs.builder()\n            .kafkaCluster(GetKafkaTopicKafkaClusterArgs.builder()\n                .id(basic_cluster.id())\n                .build())\n            .topicName(\"orders\")\n            .restEndpoint(basic_cluster.restEndpoint())\n            .credentials(GetKafkaTopicCredentialsArgs.builder()\n                .key(\"\u003cKafka API Key for confluent_kafka_cluster.basic-cluster\u003e\")\n                .secret(\"\u003cKafka API Secret for confluent_kafka_cluster.basic-cluster\u003e\")\n                .build())\n            .build());\n\n        ctx.export(\"config\", orders.config());\n    }\n}\n```\n```yaml\nvariables:\n  orders:\n    fn::invoke:\n      function: confluentcloud:getKafkaTopic\n      arguments:\n        kafkaCluster:\n          id: ${[\"basic-cluster\"].id}\n        topicName: orders\n        restEndpoint: ${[\"basic-cluster\"].restEndpoint}\n        credentials:\n          key: \u003cKafka API Key for confluent_kafka_cluster.basic-cluster\u003e\n          secret: \u003cKafka API Secret for confluent_kafka_cluster.basic-cluster\u003e\noutputs:\n  config: ${orders.config}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Kafka cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst orders = confluentcloud.getKafkaTopic({\n    topicName: \"orders\",\n});\nexport const config = orders.then(orders =\u003e orders.config);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\norders = confluentcloud.get_kafka_topic(topic_name=\"orders\")\npulumi.export(\"config\", orders.config)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var orders = ConfluentCloud.GetKafkaTopic.Invoke(new()\n    {\n        TopicName = \"orders\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"config\"] = orders.Apply(getKafkaTopicResult =\u003e getKafkaTopicResult.Config),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\torders, err := confluentcloud.LookupKafkaTopic(ctx, \u0026confluentcloud.LookupKafkaTopicArgs{\n\t\t\tTopicName: \"orders\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"config\", orders.Config)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetKafkaTopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var orders = ConfluentcloudFunctions.getKafkaTopic(GetKafkaTopicArgs.builder()\n            .topicName(\"orders\")\n            .build());\n\n        ctx.export(\"config\", orders.config());\n    }\n}\n```\n```yaml\nvariables:\n  orders:\n    fn::invoke:\n      function: confluentcloud:getKafkaTopic\n      arguments:\n        topicName: orders\noutputs:\n  config: ${orders.config}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getKafkaTopic.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getKafkaTopicCredentials:getKafkaTopicCredentials","secret":true},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/getKafkaTopicKafkaCluster:getKafkaTopicKafkaCluster"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Kafka cluster, for example, `https://pkc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"topicName":{"type":"string","description":"The name of the topic, for example, `orders-1`. The topic name can be up to 255 characters in length and can contain only alphanumeric characters, hyphens, and underscores.\n"}},"type":"object","required":["restEndpoint","topicName"]},"outputs":{"description":"A collection of values returned by getKafkaTopic.\n","properties":{"config":{"additionalProperties":{"type":"string"},"description":"(Optional Map) The custom topic settings:\n","type":"object"},"credentials":{"$ref":"#/types/confluentcloud:index/getKafkaTopicCredentials:getKafkaTopicCredentials","secret":true},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/getKafkaTopicKafkaCluster:getKafkaTopicKafkaCluster"},"partitionsCount":{"description":"(Required Number) The number of partitions to create in the topic. Defaults to \u003cspan pulumi-lang-nodejs=\"`6`\" pulumi-lang-dotnet=\"`6`\" pulumi-lang-go=\"`6`\" pulumi-lang-python=\"`6`\" pulumi-lang-yaml=\"`6`\" pulumi-lang-java=\"`6`\"\u003e`6`\u003c/span\u003e.\n","type":"integer"},"restEndpoint":{"type":"string"},"topicName":{"type":"string"}},"required":["config","partitionsCount","restEndpoint","topicName","id"],"type":"object"}},"confluentcloud:index/getKsqlCluster:getKsqlCluster":{"description":"## #\u003cspan pulumi-lang-nodejs=\" confluentcloud.KsqlCluster \" pulumi-lang-dotnet=\" confluentcloud.KsqlCluster \" pulumi-lang-go=\" KsqlCluster \" pulumi-lang-python=\" KsqlCluster \" pulumi-lang-yaml=\" confluentcloud.KsqlCluster \" pulumi-lang-java=\" confluentcloud.KsqlCluster \"\u003e confluentcloud.KsqlCluster \u003c/span\u003eData Source\n\n[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.KsqlCluster`\" pulumi-lang-dotnet=\"`confluentcloud.KsqlCluster`\" pulumi-lang-go=\"`KsqlCluster`\" pulumi-lang-python=\"`KsqlCluster`\" pulumi-lang-yaml=\"`confluentcloud.KsqlCluster`\" pulumi-lang-java=\"`confluentcloud.KsqlCluster`\"\u003e`confluentcloud.KsqlCluster`\u003c/span\u003e describes a ksqlDB cluster data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getKsqlCluster({\n        id: \"lksqlc-abc123\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    const exampleUsingName = await confluentcloud.getKsqlCluster({\n        displayName: \"ksqldb_cluster\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    return {\n        exampleUsingId: exampleUsingId,\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_ksql_cluster(id=\"lksqlc-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_ksql_cluster(display_name=\"ksqldb_cluster\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetKsqlCluster.Invoke(new()\n    {\n        Id = \"lksqlc-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetKsqlClusterEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    var exampleUsingName = ConfluentCloud.GetKsqlCluster.Invoke(new()\n    {\n        DisplayName = \"ksqldb_cluster\",\n        Environment = new ConfluentCloud.Inputs.GetKsqlClusterEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupKsqlCluster(ctx, \u0026confluentcloud.LookupKsqlClusterArgs{\n\t\t\tId: pulumi.StringRef(\"lksqlc-abc123\"),\n\t\t\tEnvironment: confluentcloud.GetKsqlClusterEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\texampleUsingName, err := confluentcloud.LookupKsqlCluster(ctx, \u0026confluentcloud.LookupKsqlClusterArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"ksqldb_cluster\"),\n\t\t\tEnvironment: confluentcloud.GetKsqlClusterEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetKsqlClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetKsqlClusterEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getKsqlCluster(GetKsqlClusterArgs.builder()\n            .id(\"lksqlc-abc123\")\n            .environment(GetKsqlClusterEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getKsqlCluster(GetKsqlClusterArgs.builder()\n            .displayName(\"ksqldb_cluster\")\n            .environment(GetKsqlClusterEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getKsqlCluster\n      arguments:\n        id: lksqlc-abc123\n        environment:\n          id: env-xyz456\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getKsqlCluster\n      arguments:\n        displayName: ksqldb_cluster\n        environment:\n          id: env-xyz456\noutputs:\n  exampleUsingId: ${exampleUsingId}\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getKsqlCluster.\n","properties":{"displayName":{"type":"string","description":"The name of the ksqlDB cluster.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getKsqlClusterEnvironment:getKsqlClusterEnvironment"},"id":{"type":"string","description":"The ID of the ksqlDB cluster, for example, `lksqlc-abc123`.\n"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getKsqlCluster.\n","properties":{"apiVersion":{"description":"(Required String) An API Version of the schema version of the ksqlDB cluster, for example, `ksqldbcm/v2`.\n","type":"string"},"credentialIdentities":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getKsqlClusterCredentialIdentity:getKsqlClusterCredentialIdentity"},"type":"array"},"csu":{"description":"(Required Number) The number of CSUs (Confluent Streaming Units) in the ksqlDB cluster.\n","type":"integer"},"displayName":{"type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getKsqlClusterEnvironment:getKsqlClusterEnvironment"},"id":{"description":"(Required String) The ID of the service or user account that the ksqlDB cluster belongs to, for example, `sa-abc123`.\n","type":"string"},"kafkaClusters":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getKsqlClusterKafkaCluster:getKsqlClusterKafkaCluster"},"type":"array"},"kind":{"description":"(Required String) A kind of the ksqlDB cluster, for example, `Cluster`.\n","type":"string"},"resourceName":{"description":"(Required String) The Confluent Resource Name of the ksqlDB cluster.\n","type":"string"},"restEndpoint":{"description":"(Required String) The API endpoint of the ksqlDB cluster, for example, `https://pksqlc-00000.us-central1.gcp.glb.confluent.cloud`.\n","type":"string"},"storage":{"description":"(Required Integer) The amount of storage (in GB) provisioned to this cluster.\n","type":"integer"},"topicPrefix":{"description":"(Required String) Topic name prefix used by this ksqlDB cluster. Used to assign ACLs for this ksqlDB cluster to use, for example, `pksqlc-00000`.\n","type":"string"},"useDetailedProcessingLog":{"description":"(Optional Boolean) Controls whether the row data should be included in the processing log topic.\n","type":"boolean"}},"required":["apiVersion","credentialIdentities","csu","displayName","environment","id","kafkaClusters","kind","resourceName","restEndpoint","storage","topicPrefix","useDetailedProcessingLog"],"type":"object"}},"confluentcloud:index/getNetwork:getNetwork":{"description":"## \n\n---\n# generated by https://github.com/hashicorp/terraform-plugin-docs\npage_title: \u003cspan pulumi-lang-nodejs=\"\"confluentcloud.Network \" pulumi-lang-dotnet=\"\"confluentcloud.Network \" pulumi-lang-go=\"\"Network \" pulumi-lang-python=\"\"Network \" pulumi-lang-yaml=\"\"confluentcloud.Network \" pulumi-lang-java=\"\"confluentcloud.Network \"\u003e\"confluentcloud.Network \u003c/span\u003eData Source - terraform-provider-confluent\"\nsubcategory: \"\"\ndescription: |-\n  \n---\n\n#\u003cspan pulumi-lang-nodejs=\" confluentcloud.Network \" pulumi-lang-dotnet=\" confluentcloud.Network \" pulumi-lang-go=\" Network \" pulumi-lang-python=\" Network \" pulumi-lang-yaml=\" confluentcloud.Network \" pulumi-lang-java=\" confluentcloud.Network \"\u003e confluentcloud.Network \u003c/span\u003eData Source\n\n[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Network`\" pulumi-lang-dotnet=\"`confluentcloud.Network`\" pulumi-lang-go=\"`Network`\" pulumi-lang-python=\"`Network`\" pulumi-lang-yaml=\"`confluentcloud.Network`\" pulumi-lang-java=\"`confluentcloud.Network`\"\u003e`confluentcloud.Network`\u003c/span\u003e describes a Network data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getNetwork({\n        id: \"n-abc123\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    const test_sa = new confluentcloud.ServiceAccount(\"test-sa\", {\n        displayName: \"test_sa\",\n        description: `test_sa for ${exampleUsingId.displayName}`,\n    });\n    const exampleUsingName = await confluentcloud.getNetwork({\n        displayName: \"my_network\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    return {\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_network(id=\"n-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\ntest_sa = confluentcloud.ServiceAccount(\"test-sa\",\n    display_name=\"test_sa\",\n    description=f\"test_sa for {example_using_id.display_name}\")\nexample_using_name = confluentcloud.get_network(display_name=\"my_network\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetNetwork.Invoke(new()\n    {\n        Id = \"n-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetNetworkEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    var test_sa = new ConfluentCloud.ServiceAccount(\"test-sa\", new()\n    {\n        DisplayName = \"test_sa\",\n        Description = $\"test_sa for {exampleUsingId.Apply(getNetworkResult =\u003e getNetworkResult.DisplayName)}\",\n    });\n\n    var exampleUsingName = ConfluentCloud.GetNetwork.Invoke(new()\n    {\n        DisplayName = \"my_network\",\n        Environment = new ConfluentCloud.Inputs.GetNetworkEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupNetwork(ctx, \u0026confluentcloud.LookupNetworkArgs{\n\t\t\tId: pulumi.StringRef(\"n-abc123\"),\n\t\t\tEnvironment: confluentcloud.GetNetworkEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewServiceAccount(ctx, \"test-sa\", \u0026confluentcloud.ServiceAccountArgs{\n\t\t\tDisplayName: pulumi.String(\"test_sa\"),\n\t\t\tDescription: pulumi.Sprintf(\"test_sa for %v\", exampleUsingId.DisplayName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUsingName, err := confluentcloud.LookupNetwork(ctx, \u0026confluentcloud.LookupNetworkArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"my_network\"),\n\t\t\tEnvironment: confluentcloud.GetNetworkEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetNetworkArgs;\nimport com.pulumi.confluentcloud.inputs.GetNetworkEnvironmentArgs;\nimport com.pulumi.confluentcloud.ServiceAccount;\nimport com.pulumi.confluentcloud.ServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getNetwork(GetNetworkArgs.builder()\n            .id(\"n-abc123\")\n            .environment(GetNetworkEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        var test_sa = new ServiceAccount(\"test-sa\", ServiceAccountArgs.builder()\n            .displayName(\"test_sa\")\n            .description(String.format(\"test_sa for %s\", exampleUsingId.displayName()))\n            .build());\n\n        final var exampleUsingName = ConfluentcloudFunctions.getNetwork(GetNetworkArgs.builder()\n            .displayName(\"my_network\")\n            .environment(GetNetworkEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nresources:\n  test-sa:\n    type: confluentcloud:ServiceAccount\n    properties:\n      displayName: test_sa\n      description: test_sa for ${exampleUsingId.displayName}\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getNetwork\n      arguments:\n        id: n-abc123\n        environment:\n          id: env-xyz456\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getNetwork\n      arguments:\n        displayName: my_network\n        environment:\n          id: env-xyz456\noutputs:\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNetwork.\n","properties":{"aws":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getNetworkAw:getNetworkAw"},"description":"(Optional Configuration Block) The AWS-specific network details if available. It supports the following:\n"},"azures":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getNetworkAzure:getNetworkAzure"},"description":"(Optional Configuration Block) The Azure-specific network details if available. It supports the following:\n"},"displayName":{"type":"string","description":"A human-readable name for the Network.\n"},"dnsConfigs":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getNetworkDnsConfig:getNetworkDnsConfig"},"description":"(Optional Configuration Block) Network DNS config. It applies only to the PRIVATELINK network connection type. It supports the following:\n"},"environment":{"$ref":"#/types/confluentcloud:index/getNetworkEnvironment:getNetworkEnvironment"},"gcps":{"type":"array","items":{"$ref":"#/types/confluentcloud:index/getNetworkGcp:getNetworkGcp"},"description":"(Optional Configuration Block) The GCP-specific network details if available. It supports the following:\n"},"id":{"type":"string","description":"The ID of the Network, for example, `n-abc123`.\n"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getNetwork.\n","properties":{"aws":{"description":"(Optional Configuration Block) The AWS-specific network details if available. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getNetworkAw:getNetworkAw"},"type":"array"},"azures":{"description":"(Optional Configuration Block) The Azure-specific network details if available. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getNetworkAzure:getNetworkAzure"},"type":"array"},"cidr":{"description":"(Required String) The IPv4 CIDR block to be used for the network. Must be `/27`. Required for VPC peering and AWS TransitGateway.\n","type":"string"},"cloud":{"description":"(Required String) The cloud service provider in which the network exists. Accepted values are: `AWS`, `AZURE`, and `GCP`.\n","type":"string"},"connectionTypes":{"description":"(Required List of String) The list of connection types that may be used with the network. Accepted connection types are: `PEERING`, `TRANSITGATEWAY`, and `PRIVATELINK`.\n","items":{"type":"string"},"type":"array"},"displayName":{"description":"(Required String) The name of the Network.\n","type":"string"},"dnsConfigs":{"description":"(Optional Configuration Block) Network DNS config. It applies only to the PRIVATELINK network connection type. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getNetworkDnsConfig:getNetworkDnsConfig"},"type":"array"},"dnsDomain":{"type":"string"},"endpointSuffix":{"description":"(Optional String) The endpoint suffix for the network, if applicable. It can take various forms (for example, `.pr1jy6.us-east-2.aws.confluent.cloud` or `-pr1jy6.us-east-2.aws.confluent.cloud`). Full service endpoints can be constructed by appending the service identifier to the beginning of the endpoint suffix. For example, the Flink REST endpoint can be constructed by adding \u003cspan pulumi-lang-nodejs=\"`flink`\" pulumi-lang-dotnet=\"`Flink`\" pulumi-lang-go=\"`flink`\" pulumi-lang-python=\"`flink`\" pulumi-lang-yaml=\"`flink`\" pulumi-lang-java=\"`flink`\"\u003e`flink`\u003c/span\u003e — that is, `https://flink` + \u003cspan pulumi-lang-nodejs=\"`endpointSuffix`\" pulumi-lang-dotnet=\"`EndpointSuffix`\" pulumi-lang-go=\"`endpointSuffix`\" pulumi-lang-python=\"`endpoint_suffix`\" pulumi-lang-yaml=\"`endpointSuffix`\" pulumi-lang-java=\"`endpointSuffix`\"\u003e`endpoint_suffix`\u003c/span\u003e; namely, `https://flink.pr1jy6.us-east-2.aws.confluent.cloud`.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getNetworkEnvironment:getNetworkEnvironment"},"gateways":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getNetworkGateway:getNetworkGateway"},"type":"array"},"gcps":{"description":"(Optional Configuration Block) The GCP-specific network details if available. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getNetworkGcp:getNetworkGcp"},"type":"array"},"id":{"description":"(Optional String) The ID of the Gateway, for example, `gw-abc123`.\n","type":"string"},"region":{"description":"(Required String) The cloud provider region where the network exists.\n","type":"string"},"reservedCidr":{"description":"(Required String) The reserved IPv4 CIDR block to be used for the network. Must be `/24`. If not specified, Confluent Cloud Network uses `172.20.255.0/24`.\n","type":"string"},"resourceName":{"description":"(Required String) The Confluent Resource Name of the Network.\n","type":"string"},"zonalSubdomains":{"additionalProperties":{"type":"string"},"type":"object"},"zoneInfos":{"description":"(Required Configuration Blocks) Each item represents information related to a single zone. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getNetworkZoneInfo:getNetworkZoneInfo"},"type":"array"},"zones":{"description":"(Optional List of String) The 3 availability zones for this network. They can optionally be specified for AWS networks\nused with PrivateLink, for GCP networks used with Private Service Connect, and for AWS and GCP\nnetworks used with Peering. Otherwise, they are automatically chosen by Confluent Cloud.\nOn AWS, zones are AWS [AZ IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html), for example, `use1-az3`.\nOn GCP, zones are GCP [zones](https://cloud.google.com/compute/docs/regions-zones), for example, `us-central1-c`.\nOn Azure, zones are Confluent-chosen names (for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e) since Azure does not have universal zone identifiers.\n","items":{"type":"string"},"type":"array"}},"required":["aws","azures","cidr","cloud","connectionTypes","displayName","dnsConfigs","dnsDomain","endpointSuffix","environment","gateways","gcps","id","region","reservedCidr","resourceName","zonalSubdomains","zoneInfos","zones"],"type":"object"}},"confluentcloud:index/getNetworkLinkEndpoint:getNetworkLinkEndpoint":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.NetworkLinkEndpoint`\" pulumi-lang-dotnet=\"`confluentcloud.NetworkLinkEndpoint`\" pulumi-lang-go=\"`NetworkLinkEndpoint`\" pulumi-lang-python=\"`NetworkLinkEndpoint`\" pulumi-lang-yaml=\"`confluentcloud.NetworkLinkEndpoint`\" pulumi-lang-java=\"`confluentcloud.NetworkLinkEndpoint`\"\u003e`confluentcloud.NetworkLinkEndpoint`\u003c/span\u003e describes a Network Link Endpoint data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst nle = confluentcloud.getNetworkLinkEndpoint({\n    id: \"nle-1357\",\n    environment: {\n        id: \"env-1234\",\n    },\n});\nexport const networkLinkEndpoint = nle;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nnle = confluentcloud.get_network_link_endpoint(id=\"nle-1357\",\n    environment={\n        \"id\": \"env-1234\",\n    })\npulumi.export(\"networkLinkEndpoint\", nle)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var nle = ConfluentCloud.GetNetworkLinkEndpoint.Invoke(new()\n    {\n        Id = \"nle-1357\",\n        Environment = new ConfluentCloud.Inputs.GetNetworkLinkEndpointEnvironmentInputArgs\n        {\n            Id = \"env-1234\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"networkLinkEndpoint\"] = nle,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnle, err := confluentcloud.LookupNetworkLinkEndpoint(ctx, \u0026confluentcloud.LookupNetworkLinkEndpointArgs{\n\t\t\tId: \"nle-1357\",\n\t\t\tEnvironment: confluentcloud.GetNetworkLinkEndpointEnvironment{\n\t\t\t\tId: \"env-1234\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"networkLinkEndpoint\", nle)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetNetworkLinkEndpointArgs;\nimport com.pulumi.confluentcloud.inputs.GetNetworkLinkEndpointEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var nle = ConfluentcloudFunctions.getNetworkLinkEndpoint(GetNetworkLinkEndpointArgs.builder()\n            .id(\"nle-1357\")\n            .environment(GetNetworkLinkEndpointEnvironmentArgs.builder()\n                .id(\"env-1234\")\n                .build())\n            .build());\n\n        ctx.export(\"networkLinkEndpoint\", nle);\n    }\n}\n```\n```yaml\nvariables:\n  nle:\n    fn::invoke:\n      function: confluentcloud:getNetworkLinkEndpoint\n      arguments:\n        id: nle-1357\n        environment:\n          id: env-1234\noutputs:\n  networkLinkEndpoint: ${nle}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNetworkLinkEndpoint.\n","properties":{"environment":{"$ref":"#/types/confluentcloud:index/getNetworkLinkEndpointEnvironment:getNetworkLinkEndpointEnvironment"},"id":{"type":"string","description":"The ID of the Network Link Endpoint, for example, `nle-zyw30`.\n"}},"type":"object","required":["environment","id"]},"outputs":{"description":"A collection of values returned by getNetworkLinkEndpoint.\n","properties":{"description":{"description":"(Optional String) The description of the Network Link Endpoint.\n","type":"string"},"displayName":{"description":"(Optional String) The name of the Network Link Endpoint.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getNetworkLinkEndpointEnvironment:getNetworkLinkEndpointEnvironment"},"id":{"description":"(Required String) The ID of the Network Link Service\n","type":"string"},"networkLinkServices":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getNetworkLinkEndpointNetworkLinkService:getNetworkLinkEndpointNetworkLinkService"},"type":"array"},"networks":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getNetworkLinkEndpointNetwork:getNetworkLinkEndpointNetwork"},"type":"array"},"resourceName":{"description":"(Required String) The Confluent Resource Name of the Network Link Endpoint.\n","type":"string"}},"required":["description","displayName","environment","id","networks","networkLinkServices","resourceName"],"type":"object"}},"confluentcloud:index/getNetworkLinkService:getNetworkLinkService":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.NetworkLinkService`\" pulumi-lang-dotnet=\"`confluentcloud.NetworkLinkService`\" pulumi-lang-go=\"`NetworkLinkService`\" pulumi-lang-python=\"`NetworkLinkService`\" pulumi-lang-yaml=\"`confluentcloud.NetworkLinkService`\" pulumi-lang-java=\"`confluentcloud.NetworkLinkService`\"\u003e`confluentcloud.NetworkLinkService`\u003c/span\u003e describes a Network Link Service data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst nls = confluentcloud.getNetworkLinkService({\n    id: \"nls-zyw30\",\n    environment: {\n        id: \"env-1234\",\n    },\n});\nexport const networkLinkService = nls;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nnls = confluentcloud.get_network_link_service(id=\"nls-zyw30\",\n    environment={\n        \"id\": \"env-1234\",\n    })\npulumi.export(\"networkLinkService\", nls)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var nls = ConfluentCloud.GetNetworkLinkService.Invoke(new()\n    {\n        Id = \"nls-zyw30\",\n        Environment = new ConfluentCloud.Inputs.GetNetworkLinkServiceEnvironmentInputArgs\n        {\n            Id = \"env-1234\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"networkLinkService\"] = nls,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnls, err := confluentcloud.LookupNetworkLinkService(ctx, \u0026confluentcloud.LookupNetworkLinkServiceArgs{\n\t\t\tId: pulumi.StringRef(\"nls-zyw30\"),\n\t\t\tEnvironment: confluentcloud.GetNetworkLinkServiceEnvironment{\n\t\t\t\tId: \"env-1234\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"networkLinkService\", nls)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetNetworkLinkServiceArgs;\nimport com.pulumi.confluentcloud.inputs.GetNetworkLinkServiceEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var nls = ConfluentcloudFunctions.getNetworkLinkService(GetNetworkLinkServiceArgs.builder()\n            .id(\"nls-zyw30\")\n            .environment(GetNetworkLinkServiceEnvironmentArgs.builder()\n                .id(\"env-1234\")\n                .build())\n            .build());\n\n        ctx.export(\"networkLinkService\", nls);\n    }\n}\n```\n```yaml\nvariables:\n  nls:\n    fn::invoke:\n      function: confluentcloud:getNetworkLinkService\n      arguments:\n        id: nls-zyw30\n        environment:\n          id: env-1234\noutputs:\n  networkLinkService: ${nls}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNetworkLinkService.\n","properties":{"accept":{"$ref":"#/types/confluentcloud:index/getNetworkLinkServiceAccept:getNetworkLinkServiceAccept","description":"(Optional Configuration Block) supports the following:\n"},"displayName":{"type":"string","description":"The Display Name of the Network Link Service, for example, `DR Link`\n"},"environment":{"$ref":"#/types/confluentcloud:index/getNetworkLinkServiceEnvironment:getNetworkLinkServiceEnvironment"},"id":{"type":"string","description":"The ID of the Network Link Service, for example, `nls-zyw30`.\n"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getNetworkLinkService.\n","properties":{"accept":{"$ref":"#/types/confluentcloud:index/getNetworkLinkServiceAccept:getNetworkLinkServiceAccept","description":"(Optional Configuration Block) supports the following:\n"},"description":{"description":"(Optional String) The description of the Network Link Service.\n","type":"string"},"displayName":{"description":"(Optional String) The name of the Network Link Service.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getNetworkLinkServiceEnvironment:getNetworkLinkServiceEnvironment"},"id":{"description":"(Required String) The ID of the Network that the Network Link Service belongs to, for example, `n-abc123`.\n","type":"string"},"networks":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getNetworkLinkServiceNetwork:getNetworkLinkServiceNetwork"},"type":"array"},"resourceName":{"description":"(Required String) The Confluent Resource Name of the Network Link Service.\n","type":"string"}},"required":["accept","description","displayName","environment","id","networks","resourceName"],"type":"object"}},"confluentcloud:index/getOrganization:getOrganization":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.getOrganization`\" pulumi-lang-dotnet=\"`confluentcloud.getOrganization`\" pulumi-lang-go=\"`getOrganization`\" pulumi-lang-python=\"`get_organization`\" pulumi-lang-yaml=\"`confluentcloud.getOrganization`\" pulumi-lang-java=\"`confluentcloud.getOrganization`\"\u003e`confluentcloud.getOrganization`\u003c/span\u003e describes an Organization data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const example = await confluentcloud.getOrganization({});\n    return {\n        example: example,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_organization()\npulumi.export(\"example\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetOrganization.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"example\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.GetOrganization(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"example\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getOrganization(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"example\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getOrganization\n      arguments: {}\noutputs:\n  example: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getOrganization.\n","properties":{"id":{"description":"(Required String) The ID of the Organization, for example, `1111aaaa-11aa-11aa-11aa-111111aaaaaa`.\n","type":"string"},"resourceName":{"description":"(Required String) The Confluent Resource Name of the Organization, for example, `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa`.\n","type":"string"}},"required":["id","resourceName"],"type":"object"}},"confluentcloud:index/getPeering:getPeering":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Peering`\" pulumi-lang-dotnet=\"`confluentcloud.Peering`\" pulumi-lang-go=\"`Peering`\" pulumi-lang-python=\"`Peering`\" pulumi-lang-yaml=\"`confluentcloud.Peering`\" pulumi-lang-java=\"`confluentcloud.Peering`\"\u003e`confluentcloud.Peering`\u003c/span\u003e describes a Peering data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getPeering({\n        id: \"peer-abc123\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    const exampleUsingName = await confluentcloud.getPeering({\n        displayName: \"my_peering\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    return {\n        exampleUsingId: exampleUsingId,\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_peering(id=\"peer-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_peering(display_name=\"my_peering\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetPeering.Invoke(new()\n    {\n        Id = \"peer-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetPeeringEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    var exampleUsingName = ConfluentCloud.GetPeering.Invoke(new()\n    {\n        DisplayName = \"my_peering\",\n        Environment = new ConfluentCloud.Inputs.GetPeeringEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupPeering(ctx, \u0026confluentcloud.LookupPeeringArgs{\n\t\t\tId: pulumi.StringRef(\"peer-abc123\"),\n\t\t\tEnvironment: confluentcloud.GetPeeringEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\texampleUsingName, err := confluentcloud.LookupPeering(ctx, \u0026confluentcloud.LookupPeeringArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"my_peering\"),\n\t\t\tEnvironment: confluentcloud.GetPeeringEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetPeeringArgs;\nimport com.pulumi.confluentcloud.inputs.GetPeeringEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getPeering(GetPeeringArgs.builder()\n            .id(\"peer-abc123\")\n            .environment(GetPeeringEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getPeering(GetPeeringArgs.builder()\n            .displayName(\"my_peering\")\n            .environment(GetPeeringEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getPeering\n      arguments:\n        id: peer-abc123\n        environment:\n          id: env-xyz456\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getPeering\n      arguments:\n        displayName: my_peering\n        environment:\n          id: env-xyz456\noutputs:\n  exampleUsingId: ${exampleUsingId}\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPeering.\n","properties":{"displayName":{"type":"string","description":"A human-readable name for the Peering.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getPeeringEnvironment:getPeeringEnvironment","description":"(Required Configuration Block) supports the following:\n"},"id":{"type":"string","description":"The ID of the Peering, for example, `peer-abc123`.\n"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getPeering.\n","properties":{"aws":{"description":"(Optional Configuration Block) The AWS-specific Peering details if available. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPeeringAw:getPeeringAw"},"type":"array"},"azures":{"description":"(Optional Configuration Block) The Azure-specific Peering details if available. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPeeringAzure:getPeeringAzure"},"type":"array"},"displayName":{"description":"(Optional String) The name of the Peering.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getPeeringEnvironment:getPeeringEnvironment","description":"(Required Configuration Block) supports the following:\n"},"gcps":{"description":"(Optional Configuration Block) The Azure-specific Peering details if available. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPeeringGcp:getPeeringGcp"},"type":"array"},"id":{"description":"(Required String) The ID of the Network that the Peering belongs to, for example, `n-abc123`.\n","type":"string"},"networks":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPeeringNetwork:getPeeringNetwork"},"type":"array"}},"required":["aws","azures","displayName","environment","gcps","id","networks"],"type":"object"}},"confluentcloud:index/getPrivateLinkAccess:getPrivateLinkAccess":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.PrivateLinkAccess`\" pulumi-lang-dotnet=\"`confluentcloud.PrivateLinkAccess`\" pulumi-lang-go=\"`PrivateLinkAccess`\" pulumi-lang-python=\"`PrivateLinkAccess`\" pulumi-lang-yaml=\"`confluentcloud.PrivateLinkAccess`\" pulumi-lang-java=\"`confluentcloud.PrivateLinkAccess`\"\u003e`confluentcloud.PrivateLinkAccess`\u003c/span\u003e describes a Private Link Access data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getPrivateLinkAccess({\n        id: \"pla-abc123\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    const exampleUsingName = await confluentcloud.getPrivateLinkAccess({\n        displayName: \"my_pla\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    return {\n        exampleUsingId: exampleUsingId,\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_private_link_access(id=\"pla-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_private_link_access(display_name=\"my_pla\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetPrivateLinkAccess.Invoke(new()\n    {\n        Id = \"pla-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetPrivateLinkAccessEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    var exampleUsingName = ConfluentCloud.GetPrivateLinkAccess.Invoke(new()\n    {\n        DisplayName = \"my_pla\",\n        Environment = new ConfluentCloud.Inputs.GetPrivateLinkAccessEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupPrivateLinkAccess(ctx, \u0026confluentcloud.LookupPrivateLinkAccessArgs{\n\t\t\tId: pulumi.StringRef(\"pla-abc123\"),\n\t\t\tEnvironment: confluentcloud.GetPrivateLinkAccessEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\texampleUsingName, err := confluentcloud.LookupPrivateLinkAccess(ctx, \u0026confluentcloud.LookupPrivateLinkAccessArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"my_pla\"),\n\t\t\tEnvironment: confluentcloud.GetPrivateLinkAccessEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetPrivateLinkAccessArgs;\nimport com.pulumi.confluentcloud.inputs.GetPrivateLinkAccessEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getPrivateLinkAccess(GetPrivateLinkAccessArgs.builder()\n            .id(\"pla-abc123\")\n            .environment(GetPrivateLinkAccessEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getPrivateLinkAccess(GetPrivateLinkAccessArgs.builder()\n            .displayName(\"my_pla\")\n            .environment(GetPrivateLinkAccessEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getPrivateLinkAccess\n      arguments:\n        id: pla-abc123\n        environment:\n          id: env-xyz456\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getPrivateLinkAccess\n      arguments:\n        displayName: my_pla\n        environment:\n          id: env-xyz456\noutputs:\n  exampleUsingId: ${exampleUsingId}\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPrivateLinkAccess.\n","properties":{"displayName":{"type":"string","description":"A human-readable name for the Private Link Access.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAccessEnvironment:getPrivateLinkAccessEnvironment","description":"(Required Configuration Block) supports the following:\n"},"id":{"type":"string","description":"The ID of the Private Link Access, for example, `pla-abc123`.\n"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getPrivateLinkAccess.\n","properties":{"aws":{"description":"(Optional Configuration Block) The AWS-specific Private Link Access details if available. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAccessAw:getPrivateLinkAccessAw"},"type":"array"},"azures":{"description":"(Optional Configuration Block) The Azure-specific Private Link Access details if available. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAccessAzure:getPrivateLinkAccessAzure"},"type":"array"},"displayName":{"description":"(Optional String) The name of the Private Link Access.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAccessEnvironment:getPrivateLinkAccessEnvironment","description":"(Required Configuration Block) supports the following:\n"},"gcps":{"description":"(Optional Configuration Block) The GCP-specific Private Service Connect details if available. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAccessGcp:getPrivateLinkAccessGcp"},"type":"array"},"id":{"description":"(Required String) The ID of the Network that the Private Link Access belongs to, for example, `n-abc123`.\n","type":"string"},"networks":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAccessNetwork:getPrivateLinkAccessNetwork"},"type":"array"}},"required":["aws","azures","displayName","environment","gcps","id","networks"],"type":"object"}},"confluentcloud:index/getPrivateLinkAttachment:getPrivateLinkAttachment":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.PrivateLinkAttachment`\" pulumi-lang-dotnet=\"`confluentcloud.PrivateLinkAttachment`\" pulumi-lang-go=\"`PrivateLinkAttachment`\" pulumi-lang-python=\"`PrivateLinkAttachment`\" pulumi-lang-yaml=\"`confluentcloud.PrivateLinkAttachment`\" pulumi-lang-java=\"`confluentcloud.PrivateLinkAttachment`\"\u003e`confluentcloud.PrivateLinkAttachment`\u003c/span\u003e describes a Private Link Attachment data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getPrivateLinkAttachment({\n    id: \"platt-abcde\",\n    environment: {\n        id: \"env-1234\",\n    },\n});\nexport const platt = main;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_private_link_attachment(id=\"platt-abcde\",\n    environment={\n        \"id\": \"env-1234\",\n    })\npulumi.export(\"platt\", main)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetPrivateLinkAttachment.Invoke(new()\n    {\n        Id = \"platt-abcde\",\n        Environment = new ConfluentCloud.Inputs.GetPrivateLinkAttachmentEnvironmentInputArgs\n        {\n            Id = \"env-1234\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"platt\"] = main,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupPrivateLinkAttachment(ctx, \u0026confluentcloud.LookupPrivateLinkAttachmentArgs{\n\t\t\tId: \"platt-abcde\",\n\t\t\tEnvironment: confluentcloud.GetPrivateLinkAttachmentEnvironment{\n\t\t\t\tId: \"env-1234\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"platt\", main)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetPrivateLinkAttachmentArgs;\nimport com.pulumi.confluentcloud.inputs.GetPrivateLinkAttachmentEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getPrivateLinkAttachment(GetPrivateLinkAttachmentArgs.builder()\n            .id(\"platt-abcde\")\n            .environment(GetPrivateLinkAttachmentEnvironmentArgs.builder()\n                .id(\"env-1234\")\n                .build())\n            .build());\n\n        ctx.export(\"platt\", main);\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getPrivateLinkAttachment\n      arguments:\n        id: platt-abcde\n        environment:\n          id: env-1234\noutputs:\n  platt: ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.PrivateLinkAttachment`\" pulumi-lang-dotnet=\"`confluentcloud.PrivateLinkAttachment`\" pulumi-lang-go=\"`PrivateLinkAttachment`\" pulumi-lang-python=\"`PrivateLinkAttachment`\" pulumi-lang-yaml=\"`confluentcloud.PrivateLinkAttachment`\" pulumi-lang-java=\"`confluentcloud.PrivateLinkAttachment`\"\u003e`confluentcloud.PrivateLinkAttachment`\u003c/span\u003e data source:\n* enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n* enterprise-privatelinkattachment-azure-kafka-acls: _Enterprise_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n","inputs":{"description":"A collection of arguments for invoking getPrivateLinkAttachment.\n","properties":{"environment":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAttachmentEnvironment:getPrivateLinkAttachmentEnvironment"},"id":{"type":"string","description":"The ID of the Private Link Attachment, for example, `platt-61ovvd`.\n"}},"type":"object","required":["environment","id"]},"outputs":{"description":"A collection of values returned by getPrivateLinkAttachment.\n","properties":{"aws":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAttachmentAw:getPrivateLinkAttachmentAw"},"type":"array"},"azures":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAttachmentAzure:getPrivateLinkAttachmentAzure"},"type":"array"},"cloud":{"description":"(Optional String) The cloud service provider that hosts the resources to access with the Private Link Attachment.\n","type":"string"},"displayName":{"description":"(Optional String) The name of the Private Link Attachment.\n","type":"string"},"dnsDomain":{"description":"(Required String) The root DNS domain for the Private Link Attachment, for example, `pr123a.us-east-2.aws.confluent.cloud`.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAttachmentEnvironment:getPrivateLinkAttachmentEnvironment"},"gcps":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAttachmentGcp:getPrivateLinkAttachmentGcp"},"type":"array"},"id":{"type":"string"},"region":{"description":"(Optional String) The cloud service provider region where the resources to be accessed using the Private Link Attachment are located.\n","type":"string"},"resourceName":{"description":"(Required String) The Confluent Resource Name of the Private Link Attachment, for example `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-75gxp2/private-link-attachment=platt-1q0ky0`.\n","type":"string"}},"required":["aws","azures","cloud","displayName","dnsDomain","environment","gcps","id","region","resourceName"],"type":"object"}},"confluentcloud:index/getPrivateLinkAttachmentConnection:getPrivateLinkAttachmentConnection":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.PrivateLinkAttachmentConnection`\" pulumi-lang-dotnet=\"`confluentcloud.PrivateLinkAttachmentConnection`\" pulumi-lang-go=\"`PrivateLinkAttachmentConnection`\" pulumi-lang-python=\"`PrivateLinkAttachmentConnection`\" pulumi-lang-yaml=\"`confluentcloud.PrivateLinkAttachmentConnection`\" pulumi-lang-java=\"`confluentcloud.PrivateLinkAttachmentConnection`\"\u003e`confluentcloud.PrivateLinkAttachmentConnection`\u003c/span\u003e describes a Private Link Attachment Connection data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getPrivateLinkAttachmentConnection({\n    id: \"plattc-p5j3ov\",\n    environment: {\n        id: \"env-8gv0v5\",\n    },\n});\nexport const plattc = main;\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_private_link_attachment_connection(id=\"plattc-p5j3ov\",\n    environment={\n        \"id\": \"env-8gv0v5\",\n    })\npulumi.export(\"plattc\", main)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetPrivateLinkAttachmentConnection.Invoke(new()\n    {\n        Id = \"plattc-p5j3ov\",\n        Environment = new ConfluentCloud.Inputs.GetPrivateLinkAttachmentConnectionEnvironmentInputArgs\n        {\n            Id = \"env-8gv0v5\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"plattc\"] = main,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupPrivateLinkAttachmentConnection(ctx, \u0026confluentcloud.LookupPrivateLinkAttachmentConnectionArgs{\n\t\t\tId: \"plattc-p5j3ov\",\n\t\t\tEnvironment: confluentcloud.GetPrivateLinkAttachmentConnectionEnvironment{\n\t\t\t\tId: \"env-8gv0v5\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"plattc\", main)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetPrivateLinkAttachmentConnectionArgs;\nimport com.pulumi.confluentcloud.inputs.GetPrivateLinkAttachmentConnectionEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getPrivateLinkAttachmentConnection(GetPrivateLinkAttachmentConnectionArgs.builder()\n            .id(\"plattc-p5j3ov\")\n            .environment(GetPrivateLinkAttachmentConnectionEnvironmentArgs.builder()\n                .id(\"env-8gv0v5\")\n                .build())\n            .build());\n\n        ctx.export(\"plattc\", main);\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getPrivateLinkAttachmentConnection\n      arguments:\n        id: plattc-p5j3ov\n        environment:\n          id: env-8gv0v5\noutputs:\n  plattc: ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.PrivateLinkAttachmentConnection`\" pulumi-lang-dotnet=\"`confluentcloud.PrivateLinkAttachmentConnection`\" pulumi-lang-go=\"`PrivateLinkAttachmentConnection`\" pulumi-lang-python=\"`PrivateLinkAttachmentConnection`\" pulumi-lang-yaml=\"`confluentcloud.PrivateLinkAttachmentConnection`\" pulumi-lang-java=\"`confluentcloud.PrivateLinkAttachmentConnection`\"\u003e`confluentcloud.PrivateLinkAttachmentConnection`\u003c/span\u003e data source:\n* enterprise-privatelinkattachment-aws-kafka-acls: _Enterprise_ Kafka cluster on AWS that is accessible via PrivateLink connections with authorization using ACLs\n* enterprise-privatelinkattachment-azure-kafka-acls: _Enterprise_ Kafka cluster on Azure that is accessible via PrivateLink connections with authorization using ACLs\n","inputs":{"description":"A collection of arguments for invoking getPrivateLinkAttachmentConnection.\n","properties":{"environment":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAttachmentConnectionEnvironment:getPrivateLinkAttachmentConnectionEnvironment"},"id":{"type":"string","description":"The ID of the Private Link Attachment Connection, for example, `plattc-p5j3ov`.\n"}},"type":"object","required":["environment","id"]},"outputs":{"description":"A collection of values returned by getPrivateLinkAttachmentConnection.\n","properties":{"aws":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAttachmentConnectionAw:getPrivateLinkAttachmentConnectionAw"},"type":"array"},"azures":{"description":"(Optional Configuration Blocks) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAttachmentConnectionAzure:getPrivateLinkAttachmentConnectionAzure"},"type":"array"},"displayName":{"description":"(Optional String) The name of the Private Link Attachment Connection.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAttachmentConnectionEnvironment:getPrivateLinkAttachmentConnectionEnvironment"},"gcps":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAttachmentConnectionGcp:getPrivateLinkAttachmentConnectionGcp"},"type":"array"},"id":{"description":"(Required String) The unique identifier for the private link attachment.\n","type":"string"},"privateLinkAttachments":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getPrivateLinkAttachmentConnectionPrivateLinkAttachment:getPrivateLinkAttachmentConnectionPrivateLinkAttachment"},"type":"array"},"resourceName":{"description":"(Required String) The Confluent Resource Name of the Private Link Attachment Connection, for example `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-75gxp2/private-link-attachment=platt-1q0ky0/private-link-attachment-connection=plattc-77zq2w`.\n","type":"string"}},"required":["aws","azures","displayName","environment","gcps","id","privateLinkAttachments","resourceName"],"type":"object"}},"confluentcloud:index/getProviderIntegration:getProviderIntegration":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegration`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegration`\" pulumi-lang-go=\"`ProviderIntegration`\" pulumi-lang-python=\"`ProviderIntegration`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegration`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegration`\"\u003e`confluentcloud.ProviderIntegration`\u003c/span\u003e describes a Confluent Provider Integration data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getProviderIntegration({\n        id: \"cspi-4xg0q\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    const exampleUsingName = await confluentcloud.getProviderIntegration({\n        displayName: \"provider_integration_main\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    return {\n        exampleUsingId: exampleUsingId,\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_provider_integration(id=\"cspi-4xg0q\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_provider_integration(display_name=\"provider_integration_main\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetProviderIntegration.Invoke(new()\n    {\n        Id = \"cspi-4xg0q\",\n        Environment = new ConfluentCloud.Inputs.GetProviderIntegrationEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    var exampleUsingName = ConfluentCloud.GetProviderIntegration.Invoke(new()\n    {\n        DisplayName = \"provider_integration_main\",\n        Environment = new ConfluentCloud.Inputs.GetProviderIntegrationEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupProviderIntegration(ctx, \u0026confluentcloud.LookupProviderIntegrationArgs{\n\t\t\tId: pulumi.StringRef(\"cspi-4xg0q\"),\n\t\t\tEnvironment: confluentcloud.GetProviderIntegrationEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\texampleUsingName, err := confluentcloud.LookupProviderIntegration(ctx, \u0026confluentcloud.LookupProviderIntegrationArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"provider_integration_main\"),\n\t\t\tEnvironment: confluentcloud.GetProviderIntegrationEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getProviderIntegration(GetProviderIntegrationArgs.builder()\n            .id(\"cspi-4xg0q\")\n            .environment(GetProviderIntegrationEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getProviderIntegration(GetProviderIntegrationArgs.builder()\n            .displayName(\"provider_integration_main\")\n            .environment(GetProviderIntegrationEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getProviderIntegration\n      arguments:\n        id: cspi-4xg0q\n        environment:\n          id: env-xyz456\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getProviderIntegration\n      arguments:\n        displayName: provider_integration_main\n        environment:\n          id: env-xyz456\noutputs:\n  exampleUsingId: ${exampleUsingId}\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegration`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegration`\" pulumi-lang-go=\"`ProviderIntegration`\" pulumi-lang-python=\"`ProviderIntegration`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegration`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegration`\"\u003e`confluentcloud.ProviderIntegration`\u003c/span\u003e data source:\n* s3-sink-connector-assume-role: Amazon S3 Sink Connector with IAM role-based authorization using a Provider Integration\n","inputs":{"description":"A collection of arguments for invoking getProviderIntegration.\n","properties":{"displayName":{"type":"string","description":"A human-readable name for the Provider Integration.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getProviderIntegrationEnvironment:getProviderIntegrationEnvironment","description":"(Required Configuration Block) supports the following:\n"},"id":{"type":"string","description":"The ID of the Provider Integration, for example, `cspi-4xg0q`.\n"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getProviderIntegration.\n","properties":{"aws":{"description":"(Required Configuration Block) The AWS-specific Provider Integration config details. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getProviderIntegrationAw:getProviderIntegrationAw"},"type":"array"},"displayName":{"description":"(Required String) A human-readable name for the Provider Integration.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getProviderIntegrationEnvironment:getProviderIntegrationEnvironment","description":"(Required Configuration Block) supports the following:\n"},"id":{"description":"(Required String) The ID of the Environment that the Provider Integration belongs to, for example, `env-abc123`.\n","type":"string"},"usages":{"description":"(Required List of Strings) List of resource CRNs where this provider integration is being used.\n","items":{"type":"string"},"type":"array"}},"required":["aws","displayName","environment","id","usages"],"type":"object"}},"confluentcloud:index/getProviderIntegrationAuthorization:getProviderIntegrationAuthorization":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-go=\"`ProviderIntegrationAuthorization`\" pulumi-lang-python=\"`ProviderIntegrationAuthorization`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegrationAuthorization`\"\u003e`confluentcloud.ProviderIntegrationAuthorization`\u003c/span\u003e describes the authorization configuration for a Cloud Service Provider (CSP) integration, including cloud-specific setup information like Azure multi-tenant app IDs or GCP service accounts.\n\n## Example Usage\n\n### Azure Provider Integration Authorization\n\nYou can use the authorization data source with either approach:\n\n### Option 1: With Azure Terraform Provider\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\n// Get the authorization data\nconst azure = confluentcloud.getProviderIntegrationAuthorization({\n    id: \"cspi-abc123\",\n    environment: {\n        id: \"env-xyz456\",\n    },\n});\n// Create the service principal using Azure Terraform Provider\nconst confluent = new azuread.index.ServicePrincipal(\"confluent\", {clientId: azure.azures?.[0]?.confluentMultiTenantAppId});\nexport const azureAppId = azure.then(azure =\u003e azure.azures?.[0]?.confluentMultiTenantAppId);\nexport const servicePrincipalObjectId = confluent.objectId;\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\nimport pulumi_confluentcloud as confluentcloud\n\n# Get the authorization data\nazure = confluentcloud.get_provider_integration_authorization(id=\"cspi-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\n# Create the service principal using Azure Terraform Provider\nconfluent = azuread.index.ServicePrincipal(\"confluent\", client_id=azure.azures[0].confluent_multi_tenant_app_id)\npulumi.export(\"azureAppId\", azure.azures[0].confluent_multi_tenant_app_id)\npulumi.export(\"servicePrincipalObjectId\", confluent[\"objectId\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azuread = Pulumi.Azuread;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Get the authorization data\n    var azure = ConfluentCloud.GetProviderIntegrationAuthorization.Invoke(new()\n    {\n        Id = \"cspi-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetProviderIntegrationAuthorizationEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    // Create the service principal using Azure Terraform Provider\n    var confluent = new Azuread.Index.ServicePrincipal(\"confluent\", new()\n    {\n        ClientId = azure.Apply(getProviderIntegrationAuthorizationResult =\u003e getProviderIntegrationAuthorizationResult.Azures[0]?.ConfluentMultiTenantAppId),\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"azureAppId\"] = azure.Apply(getProviderIntegrationAuthorizationResult =\u003e getProviderIntegrationAuthorizationResult.Azures[0]?.ConfluentMultiTenantAppId),\n        [\"servicePrincipalObjectId\"] = confluent.ObjectId,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/go/azuread\"\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Get the authorization data\n\t\tazure, err := confluentcloud.LookupProviderIntegrationAuthorization(ctx, \u0026confluentcloud.LookupProviderIntegrationAuthorizationArgs{\n\t\t\tId: \"cspi-abc123\",\n\t\t\tEnvironment: confluentcloud.GetProviderIntegrationAuthorizationEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create the service principal using Azure Terraform Provider\n\t\tconfluent, err := azuread.NewServicePrincipal(ctx, \"confluent\", \u0026azuread.ServicePrincipalArgs{\n\t\t\tClientId: azure.Azures[0].ConfluentMultiTenantAppId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"azureAppId\", azure.Azures[0].ConfluentMultiTenantAppId)\n\t\tctx.Export(\"servicePrincipalObjectId\", confluent.ObjectId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationAuthorizationArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationAuthorizationEnvironmentArgs;\nimport com.pulumi.azuread.ServicePrincipal;\nimport com.pulumi.azuread.ServicePrincipalArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Get the authorization data\n        final var azure = ConfluentcloudFunctions.getProviderIntegrationAuthorization(GetProviderIntegrationAuthorizationArgs.builder()\n            .id(\"cspi-abc123\")\n            .environment(GetProviderIntegrationAuthorizationEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        // Create the service principal using Azure Terraform Provider\n        var confluent = new ServicePrincipal(\"confluent\", ServicePrincipalArgs.builder()\n            .clientId(azure.azures()[0].confluentMultiTenantAppId())\n            .build());\n\n        ctx.export(\"azureAppId\", azure.azures()[0].confluentMultiTenantAppId());\n        ctx.export(\"servicePrincipalObjectId\", confluent.objectId());\n    }\n}\n```\n```yaml\nresources:\n  # Create the service principal using Azure Terraform Provider\n  confluent:\n    type: azuread:ServicePrincipal\n    properties:\n      clientId: ${azure.azures[0].confluentMultiTenantAppId}\nvariables:\n  # Get the authorization data\n  azure:\n    fn::invoke:\n      function: confluentcloud:getProviderIntegrationAuthorization\n      arguments:\n        id: cspi-abc123\n        environment:\n          id: env-xyz456\noutputs:\n  # Output the setup information\n  azureAppId: ${azure.azures[0].confluentMultiTenantAppId}\n  servicePrincipalObjectId: ${confluent.objectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option 2: With CLI Commands\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\n// Get the authorization data\nconst azure = confluentcloud.getProviderIntegrationAuthorization({\n    id: \"cspi-abc123\",\n    environment: {\n        id: \"env-xyz456\",\n    },\n});\nexport const azureSetupCommand = azure.then(azure =\u003e `az ad sp create --id ${azure.azures?.[0]?.confluentMultiTenantAppId}`);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\n# Get the authorization data\nazure = confluentcloud.get_provider_integration_authorization(id=\"cspi-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"azureSetupCommand\", f\"az ad sp create --id {azure.azures[0].confluent_multi_tenant_app_id}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Get the authorization data\n    var azure = ConfluentCloud.GetProviderIntegrationAuthorization.Invoke(new()\n    {\n        Id = \"cspi-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetProviderIntegrationAuthorizationEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"azureSetupCommand\"] = $\"az ad sp create --id {azure.Apply(getProviderIntegrationAuthorizationResult =\u003e getProviderIntegrationAuthorizationResult.Azures[0]?.ConfluentMultiTenantAppId)}\",\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Get the authorization data\n\t\tazure, err := confluentcloud.LookupProviderIntegrationAuthorization(ctx, \u0026confluentcloud.LookupProviderIntegrationAuthorizationArgs{\n\t\t\tId: \"cspi-abc123\",\n\t\t\tEnvironment: confluentcloud.GetProviderIntegrationAuthorizationEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"azureSetupCommand\", pulumi.Sprintf(\"az ad sp create --id %v\", azure.Azures[0].ConfluentMultiTenantAppId))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationAuthorizationArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationAuthorizationEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Get the authorization data\n        final var azure = ConfluentcloudFunctions.getProviderIntegrationAuthorization(GetProviderIntegrationAuthorizationArgs.builder()\n            .id(\"cspi-abc123\")\n            .environment(GetProviderIntegrationAuthorizationEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"azureSetupCommand\", String.format(\"az ad sp create --id %s\", azure.azures()[0].confluentMultiTenantAppId()));\n    }\n}\n```\n```yaml\nvariables:\n  # Get the authorization data\n  azure:\n    fn::invoke:\n      function: confluentcloud:getProviderIntegrationAuthorization\n      arguments:\n        id: cspi-abc123\n        environment:\n          id: env-xyz456\noutputs:\n  # Output CLI commands for manual setup\n  azureSetupCommand: az ad sp create --id ${azure.azures[0].confluentMultiTenantAppId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### GCP Provider Integration Authorization\n\nYou can use the authorization data source with either approach:\n\n### Option 1: With Google Terraform Provider\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\nimport * as google from \"@pulumi/google\";\n\n// Get the authorization data\nconst gcp = confluentcloud.getProviderIntegrationAuthorization({\n    id: \"cspi-def456\",\n    environment: {\n        id: \"env-xyz456\",\n    },\n});\n// Grant IAM permissions using Google Terraform Provider\nconst confluentTokenCreator = new google.index.ProjectIamMember(\"confluent_token_creator\", {\n    project: gcpProjectId,\n    role: \"roles/iam.serviceAccountTokenCreator\",\n    member: `serviceAccount:${gcp.gcps?.[0]?.googleServiceAccount}`,\n    condition: [{\n        title: \"Confluent Cloud Access\",\n        description: \"Allow Confluent Cloud to impersonate the customer service account\",\n        expression: `request.auth.claims.sub == '${gcp.gcps?.[0]?.googleServiceAccount}'`,\n    }],\n});\nexport const confluentServiceAccount = gcp.then(gcp =\u003e gcp.gcps?.[0]?.googleServiceAccount);\nexport const customerServiceAccount = gcp.then(gcp =\u003e gcp.gcps?.[0]?.customerGoogleServiceAccount);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\nimport pulumi_google as google\n\n# Get the authorization data\ngcp = confluentcloud.get_provider_integration_authorization(id=\"cspi-def456\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\n# Grant IAM permissions using Google Terraform Provider\nconfluent_token_creator = google.index.ProjectIamMember(\"confluent_token_creator\",\n    project=gcp_project_id,\n    role=roles/iam.serviceAccountTokenCreator,\n    member=fserviceAccount:{gcp.gcps[0].google_service_account},\n    condition=[{\n        title: Confluent Cloud Access,\n        description: Allow Confluent Cloud to impersonate the customer service account,\n        expression: frequest.auth.claims.sub == '{gcp.gcps[0].google_service_account}',\n    }])\npulumi.export(\"confluentServiceAccount\", gcp.gcps[0].google_service_account)\npulumi.export(\"customerServiceAccount\", gcp.gcps[0].customer_google_service_account)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\nusing Google = Pulumi.Google;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Get the authorization data\n    var gcp = ConfluentCloud.GetProviderIntegrationAuthorization.Invoke(new()\n    {\n        Id = \"cspi-def456\",\n        Environment = new ConfluentCloud.Inputs.GetProviderIntegrationAuthorizationEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    // Grant IAM permissions using Google Terraform Provider\n    var confluentTokenCreator = new Google.Index.ProjectIamMember(\"confluent_token_creator\", new()\n    {\n        Project = gcpProjectId,\n        Role = \"roles/iam.serviceAccountTokenCreator\",\n        Member = $\"serviceAccount:{gcp.Apply(getProviderIntegrationAuthorizationResult =\u003e getProviderIntegrationAuthorizationResult.Gcps[0]?.GoogleServiceAccount)}\",\n        Condition = new[]\n        {\n            \n            {\n                { \"title\", \"Confluent Cloud Access\" },\n                { \"description\", \"Allow Confluent Cloud to impersonate the customer service account\" },\n                { \"expression\", $\"request.auth.claims.sub == '{gcp.Apply(getProviderIntegrationAuthorizationResult =\u003e getProviderIntegrationAuthorizationResult.Gcps[0]?.GoogleServiceAccount)}'\" },\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"confluentServiceAccount\"] = gcp.Apply(getProviderIntegrationAuthorizationResult =\u003e getProviderIntegrationAuthorizationResult.Gcps[0]?.GoogleServiceAccount),\n        [\"customerServiceAccount\"] = gcp.Apply(getProviderIntegrationAuthorizationResult =\u003e getProviderIntegrationAuthorizationResult.Gcps[0]?.CustomerGoogleServiceAccount),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi-google/sdk/go/google\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Get the authorization data\n\t\tgcp, err := confluentcloud.LookupProviderIntegrationAuthorization(ctx, \u0026confluentcloud.LookupProviderIntegrationAuthorizationArgs{\n\t\t\tId: \"cspi-def456\",\n\t\t\tEnvironment: confluentcloud.GetProviderIntegrationAuthorizationEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Grant IAM permissions using Google Terraform Provider\n\t\t_, err = google.NewProjectIamMember(ctx, \"confluent_token_creator\", \u0026google.ProjectIamMemberArgs{\n\t\t\tProject: gcpProjectId,\n\t\t\tRole:    \"roles/iam.serviceAccountTokenCreator\",\n\t\t\tMember:  fmt.Sprintf(\"serviceAccount:%v\", gcp.Gcps[0].GoogleServiceAccount),\n\t\t\tCondition: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"title\":       \"Confluent Cloud Access\",\n\t\t\t\t\t\"description\": \"Allow Confluent Cloud to impersonate the customer service account\",\n\t\t\t\t\t\"expression\":  fmt.Sprintf(\"request.auth.claims.sub == '%v'\", gcp.Gcps[0].GoogleServiceAccount),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"confluentServiceAccount\", gcp.Gcps[0].GoogleServiceAccount)\n\t\tctx.Export(\"customerServiceAccount\", gcp.Gcps[0].CustomerGoogleServiceAccount)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationAuthorizationArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationAuthorizationEnvironmentArgs;\nimport com.pulumi.google.ProjectIamMember;\nimport com.pulumi.google.ProjectIamMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Get the authorization data\n        final var gcp = ConfluentcloudFunctions.getProviderIntegrationAuthorization(GetProviderIntegrationAuthorizationArgs.builder()\n            .id(\"cspi-def456\")\n            .environment(GetProviderIntegrationAuthorizationEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        // Grant IAM permissions using Google Terraform Provider\n        var confluentTokenCreator = new ProjectIamMember(\"confluentTokenCreator\", ProjectIamMemberArgs.builder()\n            .project(gcpProjectId)\n            .role(\"roles/iam.serviceAccountTokenCreator\")\n            .member(String.format(\"serviceAccount:%s\", gcp.gcps()[0].googleServiceAccount()))\n            .condition(List.of(Map.ofEntries(\n                Map.entry(\"title\", \"Confluent Cloud Access\"),\n                Map.entry(\"description\", \"Allow Confluent Cloud to impersonate the customer service account\"),\n                Map.entry(\"expression\", String.format(\"request.auth.claims.sub == '%s'\", gcp.gcps()[0].googleServiceAccount()))\n            )))\n            .build());\n\n        ctx.export(\"confluentServiceAccount\", gcp.gcps()[0].googleServiceAccount());\n        ctx.export(\"customerServiceAccount\", gcp.gcps()[0].customerGoogleServiceAccount());\n    }\n}\n```\n```yaml\nresources:\n  # Grant IAM permissions using Google Terraform Provider\n  confluentTokenCreator:\n    type: google:ProjectIamMember\n    name: confluent_token_creator\n    properties:\n      project: ${gcpProjectId}\n      role: roles/iam.serviceAccountTokenCreator\n      member: serviceAccount:${gcp.gcps[0].googleServiceAccount}\n      condition:\n        - title: Confluent Cloud Access\n          description: Allow Confluent Cloud to impersonate the customer service account\n          expression: request.auth.claims.sub == '${gcp.gcps[0].googleServiceAccount}'\nvariables:\n  # Get the authorization data\n  gcp:\n    fn::invoke:\n      function: confluentcloud:getProviderIntegrationAuthorization\n      arguments:\n        id: cspi-def456\n        environment:\n          id: env-xyz456\noutputs:\n  # Output the setup information\n  confluentServiceAccount: ${gcp.gcps[0].googleServiceAccount}\n  customerServiceAccount: ${gcp.gcps[0].customerGoogleServiceAccount}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option 2: With gcloud CLI Commands\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\n// Get the authorization data\nconst gcp = confluentcloud.getProviderIntegrationAuthorization({\n    id: \"cspi-def456\",\n    environment: {\n        id: \"env-xyz456\",\n    },\n});\nexport const gcpIamCommand = Promise.all([gcp, gcp]).then(([gcp, gcp1]) =\u003e `gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member=\"serviceAccount:${gcp.gcps?.[0]?.googleServiceAccount}\" --role=\"roles/iam.serviceAccountTokenCreator\" --condition=\"expression=request.auth.claims.sub=='${gcp1.gcps?.[0]?.googleServiceAccount}'\"`);\nexport const confluentServiceAccount = gcp.then(gcp =\u003e gcp.gcps?.[0]?.googleServiceAccount);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\n# Get the authorization data\ngcp = confluentcloud.get_provider_integration_authorization(id=\"cspi-def456\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"gcpIamCommand\", f\"gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member=\\\"serviceAccount:{gcp.gcps[0].google_service_account}\\\" --role=\\\"roles/iam.serviceAccountTokenCreator\\\" --condition=\\\"expression=request.auth.claims.sub=='{gcp.gcps[0].google_service_account}'\\\"\")\npulumi.export(\"confluentServiceAccount\", gcp.gcps[0].google_service_account)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Get the authorization data\n    var gcp = ConfluentCloud.GetProviderIntegrationAuthorization.Invoke(new()\n    {\n        Id = \"cspi-def456\",\n        Environment = new ConfluentCloud.Inputs.GetProviderIntegrationAuthorizationEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"gcpIamCommand\"] = Output.Tuple(gcp, gcp).Apply(values =\u003e\n        {\n            var gcp = values.Item1;\n            var gcp1 = values.Item2;\n            return $\"gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member=\\\"serviceAccount:{gcp.Apply(getProviderIntegrationAuthorizationResult =\u003e getProviderIntegrationAuthorizationResult.Gcps[0]?.GoogleServiceAccount)}\\\" --role=\\\"roles/iam.serviceAccountTokenCreator\\\" --condition=\\\"expression=request.auth.claims.sub=='{gcp1.Gcps[0]?.GoogleServiceAccount}'\\\"\";\n        }),\n        [\"confluentServiceAccount\"] = gcp.Apply(getProviderIntegrationAuthorizationResult =\u003e getProviderIntegrationAuthorizationResult.Gcps[0]?.GoogleServiceAccount),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Get the authorization data\n\t\tgcp, err := confluentcloud.LookupProviderIntegrationAuthorization(ctx, \u0026confluentcloud.LookupProviderIntegrationAuthorizationArgs{\n\t\t\tId: \"cspi-def456\",\n\t\t\tEnvironment: confluentcloud.GetProviderIntegrationAuthorizationEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"gcpIamCommand\", pulumi.Sprintf(\"gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member=\\\"serviceAccount:%v\\\" --role=\\\"roles/iam.serviceAccountTokenCreator\\\" --condition=\\\"expression=request.auth.claims.sub=='%v'\\\"\", gcp.Gcps[0].GoogleServiceAccount, gcp.Gcps[0].GoogleServiceAccount))\n\t\tctx.Export(\"confluentServiceAccount\", gcp.Gcps[0].GoogleServiceAccount)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationAuthorizationArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationAuthorizationEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Get the authorization data\n        final var gcp = ConfluentcloudFunctions.getProviderIntegrationAuthorization(GetProviderIntegrationAuthorizationArgs.builder()\n            .id(\"cspi-def456\")\n            .environment(GetProviderIntegrationAuthorizationEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"gcpIamCommand\", String.format(\"gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member=\\\"serviceAccount:%s\\\" --role=\\\"roles/iam.serviceAccountTokenCreator\\\" --condition=\\\"expression=request.auth.claims.sub=='%s'\\\"\", gcp.gcps()[0].googleServiceAccount(),gcp.gcps()[0].googleServiceAccount()));\n        ctx.export(\"confluentServiceAccount\", gcp.gcps()[0].googleServiceAccount());\n    }\n}\n```\n```yaml\nvariables:\n  # Get the authorization data\n  gcp:\n    fn::invoke:\n      function: confluentcloud:getProviderIntegrationAuthorization\n      arguments:\n        id: cspi-def456\n        environment:\n          id: env-xyz456\noutputs:\n  # Output gcloud commands for manual setup\n  gcpIamCommand: gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member=\"serviceAccount:${gcp.gcps[0].googleServiceAccount}\" --role=\"roles/iam.serviceAccountTokenCreator\" --condition=\"expression=request.auth.claims.sub=='${gcp.gcps[0].googleServiceAccount}'\"\n  confluentServiceAccount: ${gcp.gcps[0].googleServiceAccount}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using with Integration Data Source\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getProviderIntegrationSetup({\n    displayName: \"my-integration\",\n    environment: {\n        id: \"env-xyz456\",\n    },\n});\nconst mainGetProviderIntegrationAuthorization = main.then(main =\u003e confluentcloud.getProviderIntegrationAuthorization({\n    id: main.id,\n    environment: {\n        id: \"env-xyz456\",\n    },\n}));\nexport const setupInfo = Promise.all([main, mainGetProviderIntegrationAuthorization, mainGetProviderIntegrationAuthorization, mainGetProviderIntegrationAuthorization, mainGetProviderIntegrationAuthorization]).then(([main, mainGetProviderIntegrationAuthorization, mainGetProviderIntegrationAuthorization1, mainGetProviderIntegrationAuthorization2, mainGetProviderIntegrationAuthorization3]) =\u003e main.cloud == \"AZURE\" ? {\n    appId: mainGetProviderIntegrationAuthorization.azures?.[0]?.confluentMultiTenantAppId,\n    command: `az ad sp create --id ${mainGetProviderIntegrationAuthorization1.azures?.[0]?.confluentMultiTenantAppId}`,\n} : {\n    confluentSa: mainGetProviderIntegrationAuthorization2.gcps?.[0]?.googleServiceAccount,\n    customerSa: mainGetProviderIntegrationAuthorization3.gcps?.[0]?.customerGoogleServiceAccount,\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_provider_integration_setup(display_name=\"my-integration\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\nmain_get_provider_integration_authorization = confluentcloud.get_provider_integration_authorization(id=main.id,\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"setupInfo\", {\n    \"appId\": main_get_provider_integration_authorization.azures[0].confluent_multi_tenant_app_id,\n    \"command\": f\"az ad sp create --id {main_get_provider_integration_authorization.azures[0].confluent_multi_tenant_app_id}\",\n} if main.cloud == \"AZURE\" else {\n    \"confluentSa\": main_get_provider_integration_authorization.gcps[0].google_service_account,\n    \"customerSa\": main_get_provider_integration_authorization.gcps[0].customer_google_service_account,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetProviderIntegrationSetup.Invoke(new()\n    {\n        DisplayName = \"my-integration\",\n        Environment = new ConfluentCloud.Inputs.GetProviderIntegrationSetupEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    var mainGetProviderIntegrationAuthorization = ConfluentCloud.GetProviderIntegrationAuthorization.Invoke(new()\n    {\n        Id = main.Apply(getProviderIntegrationSetupResult =\u003e getProviderIntegrationSetupResult.Id),\n        Environment = new ConfluentCloud.Inputs.GetProviderIntegrationAuthorizationEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"setupInfo\"] = Output.Tuple(main, mainGetProviderIntegrationAuthorization, mainGetProviderIntegrationAuthorization, mainGetProviderIntegrationAuthorization, mainGetProviderIntegrationAuthorization).Apply(values =\u003e\n        {\n            var main = values.Item1;\n            var mainGetProviderIntegrationAuthorization = values.Item2;\n            var mainGetProviderIntegrationAuthorization1 = values.Item3;\n            var mainGetProviderIntegrationAuthorization2 = values.Item4;\n            var mainGetProviderIntegrationAuthorization3 = values.Item5;\n            return main.Apply(getProviderIntegrationSetupResult =\u003e getProviderIntegrationSetupResult.Cloud) == \"AZURE\" ? \n            {\n                { \"appId\", mainGetProviderIntegrationAuthorization.Apply(getProviderIntegrationAuthorizationResult =\u003e getProviderIntegrationAuthorizationResult.Azures[0]?.ConfluentMultiTenantAppId) },\n                { \"command\", $\"az ad sp create --id {mainGetProviderIntegrationAuthorization1.Azures[0]?.ConfluentMultiTenantAppId}\" },\n            } : \n            {\n                { \"confluentSa\", mainGetProviderIntegrationAuthorization2.Gcps[0]?.GoogleServiceAccount },\n                { \"customerSa\", mainGetProviderIntegrationAuthorization3.Gcps[0]?.CustomerGoogleServiceAccount },\n            };\n        }),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupProviderIntegrationSetup(ctx, \u0026confluentcloud.LookupProviderIntegrationSetupArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"my-integration\"),\n\t\t\tEnvironment: confluentcloud.GetProviderIntegrationSetupEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainGetProviderIntegrationAuthorization, err := confluentcloud.LookupProviderIntegrationAuthorization(ctx, \u0026confluentcloud.LookupProviderIntegrationAuthorizationArgs{\n\t\t\tId: main.Id,\n\t\t\tEnvironment: confluentcloud.GetProviderIntegrationAuthorizationEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar tmp0 map[string]interface{}\n\t\tif main.Cloud == \"AZURE\" {\n\t\t\ttmp0 = map[string]interface{}{\n\t\t\t\t\"appId\":   mainGetProviderIntegrationAuthorization.Azures[0].ConfluentMultiTenantAppId,\n\t\t\t\t\"command\": fmt.Sprintf(\"az ad sp create --id %v\", mainGetProviderIntegrationAuthorization.Azures[0].ConfluentMultiTenantAppId),\n\t\t\t}\n\t\t} else {\n\t\t\ttmp0 = map[string]interface{}{\n\t\t\t\t\"confluentSa\": mainGetProviderIntegrationAuthorization.Gcps[0].GoogleServiceAccount,\n\t\t\t\t\"customerSa\":  mainGetProviderIntegrationAuthorization.Gcps[0].CustomerGoogleServiceAccount,\n\t\t\t}\n\t\t}\n\t\tctx.Export(\"setupInfo\", tmp0)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationSetupArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationSetupEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationAuthorizationArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationAuthorizationEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getProviderIntegrationSetup(GetProviderIntegrationSetupArgs.builder()\n            .displayName(\"my-integration\")\n            .environment(GetProviderIntegrationSetupEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        final var mainGetProviderIntegrationAuthorization = ConfluentcloudFunctions.getProviderIntegrationAuthorization(GetProviderIntegrationAuthorizationArgs.builder()\n            .id(main.id())\n            .environment(GetProviderIntegrationAuthorizationEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"setupInfo\", main.cloud() == \"AZURE\" ? Map.ofEntries(\n            Map.entry(\"appId\", mainGetProviderIntegrationAuthorization.azures()[0].confluentMultiTenantAppId()),\n            Map.entry(\"command\", String.format(\"az ad sp create --id %s\", mainGetProviderIntegrationAuthorization.azures()[0].confluentMultiTenantAppId()))\n        ) : Map.ofEntries(\n            Map.entry(\"confluentSa\", mainGetProviderIntegrationAuthorization.gcps()[0].googleServiceAccount()),\n            Map.entry(\"customerSa\", mainGetProviderIntegrationAuthorization.gcps()[0].customerGoogleServiceAccount())\n        ));\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-go=\"`ProviderIntegrationAuthorization`\" pulumi-lang-python=\"`ProviderIntegrationAuthorization`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegrationAuthorization`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegrationAuthorization`\"\u003e`confluentcloud.ProviderIntegrationAuthorization`\u003c/span\u003e data source:\n* provider-integration-azure: Complete Azure Provider Integration setup\n* provider-integration-gcp: Complete GCP Provider Integration setup\n","inputs":{"description":"A collection of arguments for invoking getProviderIntegrationAuthorization.\n","properties":{"environment":{"$ref":"#/types/confluentcloud:index/getProviderIntegrationAuthorizationEnvironment:getProviderIntegrationAuthorizationEnvironment","description":"(Required Configuration Block) supports the following:\n"},"id":{"type":"string","description":"The ID of the Provider Integration Authorization, for example, `cspi-4xg0q`.\n"}},"type":"object","required":["environment","id"]},"outputs":{"description":"A collection of values returned by getProviderIntegrationAuthorization.\n","properties":{"azures":{"description":"(Optional Configuration Block) Azure-specific configuration details. Present for Azure integrations. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getProviderIntegrationAuthorizationAzure:getProviderIntegrationAuthorizationAzure"},"type":"array"},"environment":{"$ref":"#/types/confluentcloud:index/getProviderIntegrationAuthorizationEnvironment:getProviderIntegrationAuthorizationEnvironment","description":"(Required Configuration Block) supports the following:\n"},"gcps":{"description":"(Optional Configuration Block) GCP-specific configuration details. Present for GCP integrations. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getProviderIntegrationAuthorizationGcp:getProviderIntegrationAuthorizationGcp"},"type":"array"},"id":{"description":"(Required String) The ID of the Environment that the Provider Integration belongs to, for example, `env-abc123`.\n","type":"string"},"providerIntegrationId":{"description":"(Required String) The ID of the provider integration.\n","type":"string"}},"required":["azures","environment","gcps","id","providerIntegrationId"],"type":"object"}},"confluentcloud:index/getProviderIntegrationSetup:getProviderIntegrationSetup":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-go=\"`ProviderIntegrationSetup`\" pulumi-lang-python=\"`ProviderIntegrationSetup`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegrationSetup`\"\u003e`confluentcloud.ProviderIntegrationSetup`\u003c/span\u003e describes a Cloud Service Provider (CSP) integration that allows Confluent Cloud to access resources in your cloud provider account.\n\n## Example Usage\n\n### Azure Provider Integration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst azure = confluentcloud.getProviderIntegrationSetup({\n    id: \"cspi-abc123\",\n    environment: {\n        id: \"env-xyz456\",\n    },\n});\nexport const azureIntegrationStatus = azure.then(azure =\u003e azure.status);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nazure = confluentcloud.get_provider_integration_setup(id=\"cspi-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"azureIntegrationStatus\", azure.status)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var azure = ConfluentCloud.GetProviderIntegrationSetup.Invoke(new()\n    {\n        Id = \"cspi-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetProviderIntegrationSetupEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"azureIntegrationStatus\"] = azure.Apply(getProviderIntegrationSetupResult =\u003e getProviderIntegrationSetupResult.Status),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tazure, err := confluentcloud.LookupProviderIntegrationSetup(ctx, \u0026confluentcloud.LookupProviderIntegrationSetupArgs{\n\t\t\tId: pulumi.StringRef(\"cspi-abc123\"),\n\t\t\tEnvironment: confluentcloud.GetProviderIntegrationSetupEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"azureIntegrationStatus\", azure.Status)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationSetupArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationSetupEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var azure = ConfluentcloudFunctions.getProviderIntegrationSetup(GetProviderIntegrationSetupArgs.builder()\n            .id(\"cspi-abc123\")\n            .environment(GetProviderIntegrationSetupEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"azureIntegrationStatus\", azure.status());\n    }\n}\n```\n```yaml\nvariables:\n  azure:\n    fn::invoke:\n      function: confluentcloud:getProviderIntegrationSetup\n      arguments:\n        id: cspi-abc123\n        environment:\n          id: env-xyz456\noutputs:\n  azureIntegrationStatus: ${azure.status}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### GCP Provider Integration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst gcp = confluentcloud.getProviderIntegrationSetup({\n    displayName: \"my-gcp-integration\",\n    environment: {\n        id: \"env-xyz456\",\n    },\n});\nexport const gcpIntegrationId = gcp.then(gcp =\u003e gcp.id);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\ngcp = confluentcloud.get_provider_integration_setup(display_name=\"my-gcp-integration\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"gcpIntegrationId\", gcp.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var gcp = ConfluentCloud.GetProviderIntegrationSetup.Invoke(new()\n    {\n        DisplayName = \"my-gcp-integration\",\n        Environment = new ConfluentCloud.Inputs.GetProviderIntegrationSetupEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"gcpIntegrationId\"] = gcp.Apply(getProviderIntegrationSetupResult =\u003e getProviderIntegrationSetupResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgcp, err := confluentcloud.LookupProviderIntegrationSetup(ctx, \u0026confluentcloud.LookupProviderIntegrationSetupArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"my-gcp-integration\"),\n\t\t\tEnvironment: confluentcloud.GetProviderIntegrationSetupEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"gcpIntegrationId\", gcp.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationSetupArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationSetupEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var gcp = ConfluentcloudFunctions.getProviderIntegrationSetup(GetProviderIntegrationSetupArgs.builder()\n            .displayName(\"my-gcp-integration\")\n            .environment(GetProviderIntegrationSetupEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"gcpIntegrationId\", gcp.id());\n    }\n}\n```\n```yaml\nvariables:\n  gcp:\n    fn::invoke:\n      function: confluentcloud:getProviderIntegrationSetup\n      arguments:\n        displayName: my-gcp-integration\n        environment:\n          id: env-xyz456\noutputs:\n  gcpIntegrationId: ${gcp.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using with Authorization Resource\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getProviderIntegrationSetup({\n    id: \"cspi-abc123\",\n    environment: {\n        id: \"env-xyz456\",\n    },\n});\n// Use the integration with authorization data source\nconst mainGetProviderIntegrationAuthorization = main.then(main =\u003e confluentcloud.getProviderIntegrationAuthorization({\n    id: main.id,\n    environment: {\n        id: \"env-xyz456\",\n    },\n}));\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_provider_integration_setup(id=\"cspi-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\n# Use the integration with authorization data source\nmain_get_provider_integration_authorization = confluentcloud.get_provider_integration_authorization(id=main.id,\n    environment={\n        \"id\": \"env-xyz456\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetProviderIntegrationSetup.Invoke(new()\n    {\n        Id = \"cspi-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetProviderIntegrationSetupEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    // Use the integration with authorization data source\n    var mainGetProviderIntegrationAuthorization = ConfluentCloud.GetProviderIntegrationAuthorization.Invoke(new()\n    {\n        Id = main.Apply(getProviderIntegrationSetupResult =\u003e getProviderIntegrationSetupResult.Id),\n        Environment = new ConfluentCloud.Inputs.GetProviderIntegrationAuthorizationEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.LookupProviderIntegrationSetup(ctx, \u0026confluentcloud.LookupProviderIntegrationSetupArgs{\n\t\t\tId: pulumi.StringRef(\"cspi-abc123\"),\n\t\t\tEnvironment: confluentcloud.GetProviderIntegrationSetupEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Use the integration with authorization data source\n\t\t_, err = confluentcloud.LookupProviderIntegrationAuthorization(ctx, \u0026confluentcloud.LookupProviderIntegrationAuthorizationArgs{\n\t\t\tId: main.Id,\n\t\t\tEnvironment: confluentcloud.GetProviderIntegrationAuthorizationEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationSetupArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationSetupEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationAuthorizationArgs;\nimport com.pulumi.confluentcloud.inputs.GetProviderIntegrationAuthorizationEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getProviderIntegrationSetup(GetProviderIntegrationSetupArgs.builder()\n            .id(\"cspi-abc123\")\n            .environment(GetProviderIntegrationSetupEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        // Use the integration with authorization data source\n        final var mainGetProviderIntegrationAuthorization = ConfluentcloudFunctions.getProviderIntegrationAuthorization(GetProviderIntegrationAuthorizationArgs.builder()\n            .id(main.id())\n            .environment(GetProviderIntegrationAuthorizationEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getProviderIntegrationSetup\n      arguments:\n        id: cspi-abc123\n        environment:\n          id: env-xyz456\n  # Use the integration with authorization data source\n  mainGetProviderIntegrationAuthorization:\n    fn::invoke:\n      function: confluentcloud:getProviderIntegrationAuthorization\n      arguments:\n        id: ${main.id}\n        environment:\n          id: env-xyz456\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Getting Started\n\nThe following end-to-end examples might help to get started with \u003cspan pulumi-lang-nodejs=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-dotnet=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-go=\"`ProviderIntegrationSetup`\" pulumi-lang-python=\"`ProviderIntegrationSetup`\" pulumi-lang-yaml=\"`confluentcloud.ProviderIntegrationSetup`\" pulumi-lang-java=\"`confluentcloud.ProviderIntegrationSetup`\"\u003e`confluentcloud.ProviderIntegrationSetup`\u003c/span\u003e data source:\n* provider-integration-azure: Complete Azure Provider Integration setup\n* provider-integration-gcp: Complete GCP Provider Integration setup\n","inputs":{"description":"A collection of arguments for invoking getProviderIntegrationSetup.\n","properties":{"displayName":{"type":"string","description":"The display name of the Provider Integration. Exactly one of \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e must be specified.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getProviderIntegrationSetupEnvironment:getProviderIntegrationSetupEnvironment","description":"(Required Configuration Block) supports the following:\n"},"id":{"type":"string","description":"The ID of the Provider Integration, for example, `cspi-4xg0q`. Exactly one of \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e must be specified.\n"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getProviderIntegrationSetup.\n","properties":{"cloud":{"description":"(Computed String) The cloud service provider. Values are `AZURE` and `GCP`.\n","type":"string"},"displayName":{"description":"(Required String) The display name of the Provider Integration.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getProviderIntegrationSetupEnvironment:getProviderIntegrationSetupEnvironment","description":"(Required Configuration Block) supports the following:\n"},"id":{"description":"(Required String) The ID of the Environment that the Provider Integration belongs to, for example, `env-abc123`.\n","type":"string"},"status":{"description":"(Required String) The status of the Provider Integration. Values are `DRAFT` and `CREATED`.\n","type":"string"},"usages":{"description":"(Required List of Strings) List of resource CRNs where this provider integration is being used.\n","items":{"type":"string"},"type":"array"}},"required":["cloud","displayName","environment","id","status","usages"],"type":"object"}},"confluentcloud:index/getRoleBinding:getRoleBinding":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.RoleBinding`\" pulumi-lang-dotnet=\"`confluentcloud.RoleBinding`\" pulumi-lang-go=\"`RoleBinding`\" pulumi-lang-python=\"`RoleBinding`\" pulumi-lang-yaml=\"`confluentcloud.RoleBinding`\" pulumi-lang-java=\"`confluentcloud.RoleBinding`\"\u003e`confluentcloud.RoleBinding`\u003c/span\u003e describes a Role Binding.\n\n\u003e **Note:** For more information on the Role Bindings, see [Predefined RBAC roles in Confluent Cloud](https://docs.confluent.io/cloud/current/access-management/access-control/rbac/predefined-rbac-roles.html).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const example = await confluentcloud.getRoleBinding({\n        id: \"rb-abc123\",\n    });\n    return {\n        example: example,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_role_binding(id=\"rb-abc123\")\npulumi.export(\"example\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetRoleBinding.Invoke(new()\n    {\n        Id = \"rb-abc123\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"example\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupRoleBinding(ctx, \u0026confluentcloud.LookupRoleBindingArgs{\n\t\t\tId: \"rb-abc123\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"example\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetRoleBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getRoleBinding(GetRoleBindingArgs.builder()\n            .id(\"rb-abc123\")\n            .build());\n\n        ctx.export(\"example\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getRoleBinding\n      arguments:\n        id: rb-abc123\noutputs:\n  example: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRoleBinding.\n","properties":{"id":{"type":"string","description":"The ID of the Role Binding (for example, `rb-abc123`).\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getRoleBinding.\n","properties":{"crnPattern":{"description":"(Required String) A [Confluent Resource Name(CRN)](https://docs.confluent.io/cloud/current/api.html#section/Identifiers-and-URLs/Confluent-Resource-Names-(CRNs)) that specifies the scope and resource patterns necessary for the role to bind.\n","type":"string"},"id":{"type":"string"},"principal":{"description":"(Required String) A principal User to bind the role to, for example, \"User:u-111aaa\" for binding to a user \"u-111aaa\", or \"User:sa-111aaa\" for binding to a service account \"sa-111aaa\".\n","type":"string"},"roleName":{"description":"(Required String) A name of the role to bind to the principal. See [Confluent Cloud RBAC Roles](https://docs.confluent.io/cloud/current/access-management/access-control/cloud-rbac.html#ccloud-rbac-roles) for a full list of supported role names.\n","type":"string"}},"required":["crnPattern","id","principal","roleName"],"type":"object"}},"confluentcloud:index/getSchema:getSchema":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Schema`\" pulumi-lang-dotnet=\"`confluentcloud.Schema`\" pulumi-lang-go=\"`Schema`\" pulumi-lang-python=\"`Schema`\" pulumi-lang-yaml=\"`confluentcloud.Schema`\" pulumi-lang-java=\"`confluentcloud.Schema`\"\u003e`confluentcloud.Schema`\u003c/span\u003e describes a Schema data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst purchase_v1 = confluentcloud.getSchema({\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    subjectName: \"proto-purchase-value\",\n    schemaIdentifier: 10001,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n});\nexport const schema = purchase_v1.then(purchase_v1 =\u003e purchase_v1.schema);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npurchase_v1 = confluentcloud.get_schema(schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    subject_name=\"proto-purchase-value\",\n    schema_identifier=10001,\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    })\npulumi.export(\"schema\", purchase_v1.schema)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var purchase_v1 = ConfluentCloud.GetSchema.Invoke(new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.GetSchemaSchemaRegistryClusterInputArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        SubjectName = \"proto-purchase-value\",\n        SchemaIdentifier = 10001,\n        Credentials = new ConfluentCloud.Inputs.GetSchemaCredentialsInputArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"schema\"] = purchase_v1.Apply(purchase_v1 =\u003e purchase_v1.Apply(getSchemaResult =\u003e getSchemaResult.Schema)),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpurchase_v1, err := confluentcloud.LookupSchema(ctx, \u0026confluentcloud.LookupSchemaArgs{\n\t\t\tSchemaRegistryCluster: confluentcloud.GetSchemaSchemaRegistryCluster{\n\t\t\t\tId: essentials.Id,\n\t\t\t},\n\t\t\tRestEndpoint:     pulumi.StringRef(essentials.RestEndpoint),\n\t\t\tSubjectName:      \"proto-purchase-value\",\n\t\t\tSchemaIdentifier: 10001,\n\t\t\tCredentials: confluentcloud.GetSchemaCredentials{\n\t\t\t\tKey:    \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t\tSecret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"schema\", purchase_v1.Schema)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemaArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemaSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemaCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var purchase-v1 = ConfluentcloudFunctions.getSchema(GetSchemaArgs.builder()\n            .schemaRegistryCluster(GetSchemaSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .subjectName(\"proto-purchase-value\")\n            .schemaIdentifier(10001)\n            .credentials(GetSchemaCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .build());\n\n        ctx.export(\"schema\", purchase_v1.schema());\n    }\n}\n```\n```yaml\nvariables:\n  purchase-v1:\n    fn::invoke:\n      function: confluentcloud:getSchema\n      arguments:\n        schemaRegistryCluster:\n          id: ${essentials.id}\n        restEndpoint: ${essentials.restEndpoint}\n        subjectName: proto-purchase-value\n        schemaIdentifier: 10001\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\noutputs:\n  schema: ${[\"purchase-v1\"].schema}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst purchase_v1 = confluentcloud.getSchema({\n    subjectName: \"proto-purchase-value\",\n    schemaIdentifier: 10001,\n});\nexport const schema = purchase_v1.then(purchase_v1 =\u003e purchase_v1.schema);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npurchase_v1 = confluentcloud.get_schema(subject_name=\"proto-purchase-value\",\n    schema_identifier=10001)\npulumi.export(\"schema\", purchase_v1.schema)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var purchase_v1 = ConfluentCloud.GetSchema.Invoke(new()\n    {\n        SubjectName = \"proto-purchase-value\",\n        SchemaIdentifier = 10001,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"schema\"] = purchase_v1.Apply(purchase_v1 =\u003e purchase_v1.Apply(getSchemaResult =\u003e getSchemaResult.Schema)),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpurchase_v1, err := confluentcloud.LookupSchema(ctx, \u0026confluentcloud.LookupSchemaArgs{\n\t\t\tSubjectName:      \"proto-purchase-value\",\n\t\t\tSchemaIdentifier: 10001,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"schema\", purchase_v1.Schema)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var purchase-v1 = ConfluentcloudFunctions.getSchema(GetSchemaArgs.builder()\n            .subjectName(\"proto-purchase-value\")\n            .schemaIdentifier(10001)\n            .build());\n\n        ctx.export(\"schema\", purchase_v1.schema());\n    }\n}\n```\n```yaml\nvariables:\n  purchase-v1:\n    fn::invoke:\n      function: confluentcloud:getSchema\n      arguments:\n        subjectName: proto-purchase-value\n        schemaIdentifier: 10001\noutputs:\n  schema: ${[\"purchase-v1\"].schema}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSchema.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getSchemaCredentials:getSchemaCredentials","secret":true},"metadata":{"$ref":"#/types/confluentcloud:index/getSchemaMetadata:getSchemaMetadata","description":"(Optional Block) See [here](https://docs.confluent.io/platform/7.5/schema-registry/fundamentals/data-contracts.html) for more details. Supports the following:\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"ruleset":{"$ref":"#/types/confluentcloud:index/getSchemaRuleset:getSchemaRuleset","description":"(Optional Block) The list of schema rules. See [Data Contracts for Schema Registry](https://docs.confluent.io/platform/7.5/schema-registry/fundamentals/data-contracts.html#rules) for more details. For example, these rules can enforce that a field that contains sensitive information must be encrypted, or that a message containing an invalid age must be sent to a dead letter queue.\n"},"schemaIdentifier":{"type":"integer","description":"The globally unique ID of the Schema, for example, \u003cspan pulumi-lang-nodejs=\"`100003`\" pulumi-lang-dotnet=\"`100003`\" pulumi-lang-go=\"`100003`\" pulumi-lang-python=\"`100003`\" pulumi-lang-yaml=\"`100003`\" pulumi-lang-java=\"`100003`\"\u003e`100003`\u003c/span\u003e. If the same schema is registered under a different subject, the same identifier will be returned. However, the \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e of the schema may be different under different subjects.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSchemaSchemaRegistryCluster:getSchemaSchemaRegistryCluster"},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`. Schemas evolve safely, following a compatibility mode defined, under a subject name.\n"}},"type":"object","required":["schemaIdentifier","subjectName"]},"outputs":{"description":"A collection of values returned by getSchema.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getSchemaCredentials:getSchemaCredentials","secret":true},"format":{"description":"(Required String) The format of the schema. Accepted values are: `AVRO`, `PROTOBUF`, and `JSON`.\n","type":"string"},"hardDelete":{"type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"metadata":{"$ref":"#/types/confluentcloud:index/getSchemaMetadata:getSchemaMetadata","description":"(Optional Block) See [here](https://docs.confluent.io/platform/7.5/schema-registry/fundamentals/data-contracts.html) for more details. Supports the following:\n"},"recreateOnUpdate":{"type":"boolean"},"restEndpoint":{"type":"string"},"ruleset":{"$ref":"#/types/confluentcloud:index/getSchemaRuleset:getSchemaRuleset","description":"(Optional Block) The list of schema rules. See [Data Contracts for Schema Registry](https://docs.confluent.io/platform/7.5/schema-registry/fundamentals/data-contracts.html#rules) for more details. For example, these rules can enforce that a field that contains sensitive information must be encrypted, or that a message containing an invalid age must be sent to a dead letter queue.\n"},"schema":{"description":"(Required String) The schema string, for example, `file(\"./schema_version_1.avsc\")`.\n","type":"string"},"schemaIdentifier":{"type":"integer"},"schemaReferences":{"description":"(Optional List) The list of referenced schemas (see [Schema References](https://docs.confluent.io/platform/current/schema-registry/serdes-develop/index.html#schema-references) for more details):\n","items":{"$ref":"#/types/confluentcloud:index/getSchemaSchemaReference:getSchemaSchemaReference"},"type":"array"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSchemaSchemaRegistryCluster:getSchemaSchemaRegistryCluster"},"skipValidationDuringPlan":{"type":"boolean"},"subjectName":{"description":"(Required String) The name for the reference. (For Avro Schema, the reference name is the fully qualified schema name, for JSON Schema it is a URL, and for Protobuf Schema, it is the name of another Protobuf file.)\n","type":"string"},"version":{"description":"(Required Integer) The version of the Schema, for example, \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e.\n","type":"integer"}},"required":["format","hardDelete","metadata","recreateOnUpdate","schema","schemaIdentifier","schemaReferences","skipValidationDuringPlan","subjectName","version","id"],"type":"object"}},"confluentcloud:index/getSchemaRegistryCluster:getSchemaRegistryCluster":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n`data.confluent_schema_registry_cluster` describes a Schema Registry cluster data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    // Loads the only Schema Registry cluster in the target environment\n    const exampleUsingEnvId = await confluentcloud.getSchemaRegistryCluster({\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    const exampleUsingId = await confluentcloud.getSchemaRegistryCluster({\n        id: \"lsrc-abc123\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    const exampleUsingName = await confluentcloud.getSchemaRegistryCluster({\n        displayName: \"Stream Governance Package\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    return {\n        exampleUsingEnvId: exampleUsingEnvId,\n        exampleUsingId: exampleUsingId,\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\n# Loads the only Schema Registry cluster in the target environment\nexample_using_env_id = confluentcloud.get_schema_registry_cluster(environment={\n    \"id\": \"env-xyz456\",\n})\npulumi.export(\"exampleUsingEnvId\", example_using_env_id)\nexample_using_id = confluentcloud.get_schema_registry_cluster(id=\"lsrc-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_schema_registry_cluster(display_name=\"Stream Governance Package\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Loads the only Schema Registry cluster in the target environment\n    var exampleUsingEnvId = ConfluentCloud.GetSchemaRegistryCluster.Invoke(new()\n    {\n        Environment = new ConfluentCloud.Inputs.GetSchemaRegistryClusterEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    var exampleUsingId = ConfluentCloud.GetSchemaRegistryCluster.Invoke(new()\n    {\n        Id = \"lsrc-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetSchemaRegistryClusterEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    var exampleUsingName = ConfluentCloud.GetSchemaRegistryCluster.Invoke(new()\n    {\n        DisplayName = \"Stream Governance Package\",\n        Environment = new ConfluentCloud.Inputs.GetSchemaRegistryClusterEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingEnvId\"] = exampleUsingEnvId,\n        [\"exampleUsingId\"] = exampleUsingId,\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Loads the only Schema Registry cluster in the target environment\n\t\texampleUsingEnvId, err := confluentcloud.GetSchemaRegistryCluster(ctx, \u0026confluentcloud.GetSchemaRegistryClusterArgs{\n\t\t\tEnvironment: confluentcloud.GetSchemaRegistryClusterEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingEnvId\", exampleUsingEnvId)\n\t\texampleUsingId, err := confluentcloud.GetSchemaRegistryCluster(ctx, \u0026confluentcloud.GetSchemaRegistryClusterArgs{\n\t\t\tId: pulumi.StringRef(\"lsrc-abc123\"),\n\t\t\tEnvironment: confluentcloud.GetSchemaRegistryClusterEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\texampleUsingName, err := confluentcloud.GetSchemaRegistryCluster(ctx, \u0026confluentcloud.GetSchemaRegistryClusterArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"Stream Governance Package\"),\n\t\t\tEnvironment: confluentcloud.GetSchemaRegistryClusterEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryClusterEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Loads the only Schema Registry cluster in the target environment\n        final var exampleUsingEnvId = ConfluentcloudFunctions.getSchemaRegistryCluster(GetSchemaRegistryClusterArgs.builder()\n            .environment(GetSchemaRegistryClusterEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingEnvId\", exampleUsingEnvId);\n        final var exampleUsingId = ConfluentcloudFunctions.getSchemaRegistryCluster(GetSchemaRegistryClusterArgs.builder()\n            .id(\"lsrc-abc123\")\n            .environment(GetSchemaRegistryClusterEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getSchemaRegistryCluster(GetSchemaRegistryClusterArgs.builder()\n            .displayName(\"Stream Governance Package\")\n            .environment(GetSchemaRegistryClusterEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nvariables:\n  # Loads the only Schema Registry cluster in the target environment\n  exampleUsingEnvId:\n    fn::invoke:\n      function: confluentcloud:getSchemaRegistryCluster\n      arguments:\n        environment:\n          id: env-xyz456\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getSchemaRegistryCluster\n      arguments:\n        id: lsrc-abc123\n        environment:\n          id: env-xyz456\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getSchemaRegistryCluster\n      arguments:\n        displayName: Stream Governance Package\n        environment:\n          id: env-xyz456\noutputs:\n  exampleUsingEnvId: ${exampleUsingEnvId}\n  exampleUsingId: ${exampleUsingId}\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSchemaRegistryCluster.\n","properties":{"displayName":{"type":"string","description":"The name for the Schema Registry cluster.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClusterEnvironment:getSchemaRegistryClusterEnvironment"},"id":{"type":"string","description":"The ID of the Schema Registry cluster (for example, `lsrc-abc123`).\n"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getSchemaRegistryCluster.\n","properties":{"apiVersion":{"description":"(Required String) An API Version of the schema version of the Schema Registry cluster, for example, `stream-governance/v2`.\n","type":"string"},"catalogEndpoint":{"description":"(Required String) The Catalog endpoint of the Schema Registry cluster, for example, `https://psrc-y1113.us-west-2.aws.confluent.cloud`.\n","type":"string"},"cloud":{"description":"(Required String) The cloud service provider that the Schema Registry cluster belongs to, for example, `AWS`.\n","type":"string"},"displayName":{"description":"(Required String) The name of the Schema Registry cluster, for example, `Stream Governance Package`.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClusterEnvironment:getSchemaRegistryClusterEnvironment"},"id":{"description":"(Required String) The ID of the Schema Registry cluster, for example, `lsrc-abc123`.\n","type":"string"},"kind":{"description":"(Required String) A kind of the Schema Registry cluster, for example, `Cluster`.\n","type":"string"},"package":{"description":"(Required String) The type of the billing package. Accepted values are: `ESSENTIALS` and `ADVANCED`.\n","type":"string"},"privateRegionalRestEndpoints":{"additionalProperties":{"type":"string"},"description":"(Required Map) The private regional HTTP endpoint map of the Schema Registry cluster. For example, to reference the endpoint corresponding to the us-central-1 region, use `private_regional_rest_endpoints[\"us-central-1\"]`.\n","type":"object"},"privateRestEndpoint":{"deprecationMessage":"Please use the\u003cspan pulumi-lang-nodejs=\" privateRegionalRestEndpoints \" pulumi-lang-dotnet=\" PrivateRegionalRestEndpoints \" pulumi-lang-go=\" privateRegionalRestEndpoints \" pulumi-lang-python=\" private_regional_rest_endpoints \" pulumi-lang-yaml=\" privateRegionalRestEndpoints \" pulumi-lang-java=\" privateRegionalRestEndpoints \"\u003e private_regional_rest_endpoints \u003c/span\u003eattribute instead, which supersedes the\u003cspan pulumi-lang-nodejs=\" privateRestEndpoint \" pulumi-lang-dotnet=\" PrivateRestEndpoint \" pulumi-lang-go=\" privateRestEndpoint \" pulumi-lang-python=\" private_rest_endpoint \" pulumi-lang-yaml=\" privateRestEndpoint \" pulumi-lang-java=\" privateRestEndpoint \"\u003e private_rest_endpoint \u003c/span\u003eattribute.","description":"(Required String, **Deprecated**) The private HTTP endpoint of the Schema Registry cluster, for example, `https://lsrc.us-west-2.aws.private.confluent.cloud`. Please use the \u003cspan pulumi-lang-nodejs=\"`privateRegionalRestEndpoints`\" pulumi-lang-dotnet=\"`PrivateRegionalRestEndpoints`\" pulumi-lang-go=\"`privateRegionalRestEndpoints`\" pulumi-lang-python=\"`private_regional_rest_endpoints`\" pulumi-lang-yaml=\"`privateRegionalRestEndpoints`\" pulumi-lang-java=\"`privateRegionalRestEndpoints`\"\u003e`private_regional_rest_endpoints`\u003c/span\u003e attribute instead, which supersedes the \u003cspan pulumi-lang-nodejs=\"`privateRestEndpoint`\" pulumi-lang-dotnet=\"`PrivateRestEndpoint`\" pulumi-lang-go=\"`privateRestEndpoint`\" pulumi-lang-python=\"`private_rest_endpoint`\" pulumi-lang-yaml=\"`privateRestEndpoint`\" pulumi-lang-java=\"`privateRestEndpoint`\"\u003e`private_rest_endpoint`\u003c/span\u003e attribute.\n","type":"string"},"region":{"description":"(Required String) The ID of the Schema Registry region that the Schema Registry cluster belongs to, for example, `us-east4`.\n","type":"string"},"resourceName":{"description":"(Required String) The Confluent Resource Name of the Schema Registry cluster, for example, `crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123/schema-registry=lsrc-abc123`.\n","type":"string"},"restEndpoint":{"description":"(Required String) The HTTP endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-west-2.aws.confluent.cloud`.\n","type":"string"}},"required":["apiVersion","catalogEndpoint","cloud","displayName","environment","id","kind","package","privateRegionalRestEndpoints","privateRestEndpoint","region","resourceName","restEndpoint"],"type":"object"}},"confluentcloud:index/getSchemaRegistryClusterConfig:getSchemaRegistryClusterConfig":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryClusterConfig`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryClusterConfig`\" pulumi-lang-go=\"`SchemaRegistryClusterConfig`\" pulumi-lang-python=\"`SchemaRegistryClusterConfig`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryClusterConfig`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryClusterConfig`\"\u003e`confluentcloud.SchemaRegistryClusterConfig`\u003c/span\u003e describes a Schema Registry Cluster Config data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = confluentcloud.getSchemaRegistryClusterConfig({\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n});\nexport const compatibilityLevel = example.then(example =\u003e example.compatibilityLevel);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_schema_registry_cluster_config(schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    })\npulumi.export(\"compatibilityLevel\", example.compatibility_level)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetSchemaRegistryClusterConfig.Invoke(new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.GetSchemaRegistryClusterConfigSchemaRegistryClusterInputArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.GetSchemaRegistryClusterConfigCredentialsInputArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"compatibilityLevel\"] = example.Apply(getSchemaRegistryClusterConfigResult =\u003e getSchemaRegistryClusterConfigResult.CompatibilityLevel),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupSchemaRegistryClusterConfig(ctx, \u0026confluentcloud.LookupSchemaRegistryClusterConfigArgs{\n\t\t\tSchemaRegistryCluster: confluentcloud.GetSchemaRegistryClusterConfigSchemaRegistryCluster{\n\t\t\t\tId: essentials.Id,\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.StringRef(essentials.RestEndpoint),\n\t\t\tCredentials: confluentcloud.GetSchemaRegistryClusterConfigCredentials{\n\t\t\t\tKey:    \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t\tSecret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"compatibilityLevel\", example.CompatibilityLevel)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryClusterConfigArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryClusterConfigSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryClusterConfigCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getSchemaRegistryClusterConfig(GetSchemaRegistryClusterConfigArgs.builder()\n            .schemaRegistryCluster(GetSchemaRegistryClusterConfigSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(GetSchemaRegistryClusterConfigCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .build());\n\n        ctx.export(\"compatibilityLevel\", example.compatibilityLevel());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getSchemaRegistryClusterConfig\n      arguments:\n        schemaRegistryCluster:\n          id: ${essentials.id}\n        restEndpoint: ${essentials.restEndpoint}\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\noutputs:\n  compatibilityLevel: ${example.compatibilityLevel}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = confluentcloud.getSchemaRegistryClusterConfig({});\nexport const compatibilityLevel = example.then(example =\u003e example.compatibilityLevel);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_schema_registry_cluster_config()\npulumi.export(\"compatibilityLevel\", example.compatibility_level)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetSchemaRegistryClusterConfig.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"compatibilityLevel\"] = example.Apply(getSchemaRegistryClusterConfigResult =\u003e getSchemaRegistryClusterConfigResult.CompatibilityLevel),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupSchemaRegistryClusterConfig(ctx, \u0026confluentcloud.LookupSchemaRegistryClusterConfigArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"compatibilityLevel\", example.CompatibilityLevel)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryClusterConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getSchemaRegistryClusterConfig(GetSchemaRegistryClusterConfigArgs.builder()\n            .build());\n\n        ctx.export(\"compatibilityLevel\", example.compatibilityLevel());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getSchemaRegistryClusterConfig\n      arguments: {}\noutputs:\n  compatibilityLevel: ${example.compatibilityLevel}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSchemaRegistryClusterConfig.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClusterConfigCredentials:getSchemaRegistryClusterConfigCredentials","secret":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClusterConfigSchemaRegistryCluster:getSchemaRegistryClusterConfigSchemaRegistryCluster"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSchemaRegistryClusterConfig.\n","properties":{"compatibilityGroup":{"description":"(Optional String) The global Schema Registry compatibility group.\n","type":"string"},"compatibilityLevel":{"description":"(Optional String) The global Schema Registry compatibility level. Accepted values are: `BACKWARD`, `BACKWARD_TRANSITIVE`, `FORWARD`, `FORWARD_TRANSITIVE`, `FULL`, `FULL_TRANSITIVE`, and `NONE`. See the [Compatibility Types](https://docs.confluent.io/platform/current/schema-registry/avro.html#compatibility-types) for more details.\n","type":"string"},"credentials":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClusterConfigCredentials:getSchemaRegistryClusterConfigCredentials","secret":true},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"normalize":{"description":"(Optional Boolean) Whether schemas are automatically normalized when registered or passed during lookups.\n","type":"boolean"},"restEndpoint":{"type":"string"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClusterConfigSchemaRegistryCluster:getSchemaRegistryClusterConfigSchemaRegistryCluster"}},"required":["compatibilityGroup","compatibilityLevel","normalize","id"],"type":"object"}},"confluentcloud:index/getSchemaRegistryClusterMode:getSchemaRegistryClusterMode":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryClusterMode`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryClusterMode`\" pulumi-lang-go=\"`SchemaRegistryClusterMode`\" pulumi-lang-python=\"`SchemaRegistryClusterMode`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryClusterMode`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryClusterMode`\"\u003e`confluentcloud.SchemaRegistryClusterMode`\u003c/span\u003e describes a Mode data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = confluentcloud.getSchemaRegistryClusterMode({\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n});\nexport const mode = example.then(example =\u003e example.mode);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_schema_registry_cluster_mode(schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    })\npulumi.export(\"mode\", example.mode)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetSchemaRegistryClusterMode.Invoke(new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.GetSchemaRegistryClusterModeSchemaRegistryClusterInputArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.GetSchemaRegistryClusterModeCredentialsInputArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"mode\"] = example.Apply(getSchemaRegistryClusterModeResult =\u003e getSchemaRegistryClusterModeResult.Mode),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupSchemaRegistryClusterMode(ctx, \u0026confluentcloud.LookupSchemaRegistryClusterModeArgs{\n\t\t\tSchemaRegistryCluster: confluentcloud.GetSchemaRegistryClusterModeSchemaRegistryCluster{\n\t\t\t\tId: essentials.Id,\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.StringRef(essentials.RestEndpoint),\n\t\t\tCredentials: confluentcloud.GetSchemaRegistryClusterModeCredentials{\n\t\t\t\tKey:    \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t\tSecret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"mode\", example.Mode)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryClusterModeArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryClusterModeSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryClusterModeCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getSchemaRegistryClusterMode(GetSchemaRegistryClusterModeArgs.builder()\n            .schemaRegistryCluster(GetSchemaRegistryClusterModeSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(GetSchemaRegistryClusterModeCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .build());\n\n        ctx.export(\"mode\", example.mode());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getSchemaRegistryClusterMode\n      arguments:\n        schemaRegistryCluster:\n          id: ${essentials.id}\n        restEndpoint: ${essentials.restEndpoint}\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\noutputs:\n  mode: ${example.mode}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst example = confluentcloud.getSchemaRegistryClusterMode({});\nexport const mode = example.then(example =\u003e example.mode);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_schema_registry_cluster_mode()\npulumi.export(\"mode\", example.mode)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetSchemaRegistryClusterMode.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"mode\"] = example.Apply(getSchemaRegistryClusterModeResult =\u003e getSchemaRegistryClusterModeResult.Mode),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupSchemaRegistryClusterMode(ctx, \u0026confluentcloud.LookupSchemaRegistryClusterModeArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"mode\", example.Mode)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryClusterModeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getSchemaRegistryClusterMode(GetSchemaRegistryClusterModeArgs.builder()\n            .build());\n\n        ctx.export(\"mode\", example.mode());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getSchemaRegistryClusterMode\n      arguments: {}\noutputs:\n  mode: ${example.mode}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSchemaRegistryClusterMode.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClusterModeCredentials:getSchemaRegistryClusterModeCredentials","secret":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClusterModeSchemaRegistryCluster:getSchemaRegistryClusterModeSchemaRegistryCluster"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSchemaRegistryClusterMode.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClusterModeCredentials:getSchemaRegistryClusterModeCredentials","secret":true},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"mode":{"description":"(Optional String) The global Schema Registry mode. Accepted values are: `READWRITE`, `READONLY`, `READONLY_OVERRIDE`, and `IMPORT`.\n","type":"string"},"restEndpoint":{"type":"string"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClusterModeSchemaRegistryCluster:getSchemaRegistryClusterModeSchemaRegistryCluster"}},"required":["mode","id"],"type":"object"}},"confluentcloud:index/getSchemaRegistryClusters:getSchemaRegistryClusters":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n`data.confluent_schema_registry_clusters` describes a data source for Schema Registry Clusters.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getSchemaRegistryClusters({\n    environment: {\n        id: \"env-xyz456\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_schema_registry_clusters(environment={\n    \"id\": \"env-xyz456\",\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetSchemaRegistryClusters.Invoke(new()\n    {\n        Environment = new ConfluentCloud.Inputs.GetSchemaRegistryClustersEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.GetSchemaRegistryClusters(ctx, \u0026confluentcloud.GetSchemaRegistryClustersArgs{\n\t\t\tEnvironment: confluentcloud.GetSchemaRegistryClustersEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryClustersArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryClustersEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getSchemaRegistryClusters(GetSchemaRegistryClustersArgs.builder()\n            .environment(GetSchemaRegistryClustersEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getSchemaRegistryClusters\n      arguments:\n        environment:\n          id: env-xyz456\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSchemaRegistryClusters.\n","properties":{"environment":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClustersEnvironment:getSchemaRegistryClustersEnvironment","description":"(Required Object) exports the following attributes:\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSchemaRegistryClusters.\n","properties":{"clusters":{"description":"(Required List of Object) List of Schema Registry clusters. Each Schema Registry cluster object exports the following attributes:\n","items":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClustersCluster:getSchemaRegistryClustersCluster"},"type":"array"},"environment":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryClustersEnvironment:getSchemaRegistryClustersEnvironment","description":"(Required Object) exports the following attributes:\n"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"}},"required":["clusters","environment","id"],"type":"object"}},"confluentcloud:index/getSchemaRegistryDek:getSchemaRegistryDek":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-go=\"`SchemaRegistryDek`\" pulumi-lang-python=\"`SchemaRegistryDek`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryDek`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryDek`\"\u003e`confluentcloud.SchemaRegistryDek`\u003c/span\u003e describes a Schema Registry Data Encryption Key (DEK) data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst myKey = confluentcloud.getSchemaRegistryDek({\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    kekName: \"my_kek\",\n    subjectName: \"my_subject\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmy_key = confluentcloud.get_schema_registry_dek(schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    kek_name=\"my_kek\",\n    subject_name=\"my_subject\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myKey = ConfluentCloud.GetSchemaRegistryDek.Invoke(new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.GetSchemaRegistryDekSchemaRegistryClusterInputArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.GetSchemaRegistryDekCredentialsInputArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        KekName = \"my_kek\",\n        SubjectName = \"my_subject\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.LookupSchemaRegistryDek(ctx, \u0026confluentcloud.LookupSchemaRegistryDekArgs{\n\t\t\tSchemaRegistryCluster: confluentcloud.GetSchemaRegistryDekSchemaRegistryCluster{\n\t\t\t\tId: essentials.Id,\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.StringRef(essentials.RestEndpoint),\n\t\t\tCredentials: confluentcloud.GetSchemaRegistryDekCredentials{\n\t\t\t\tKey:    \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t\tSecret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t},\n\t\t\tKekName:     \"my_kek\",\n\t\t\tSubjectName: \"my_subject\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryDekArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryDekSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryDekCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var myKey = ConfluentcloudFunctions.getSchemaRegistryDek(GetSchemaRegistryDekArgs.builder()\n            .schemaRegistryCluster(GetSchemaRegistryDekSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(GetSchemaRegistryDekCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .kekName(\"my_kek\")\n            .subjectName(\"my_subject\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  myKey:\n    fn::invoke:\n      function: confluentcloud:getSchemaRegistryDek\n      arguments:\n        schemaRegistryCluster:\n          id: ${essentials.id}\n        restEndpoint: ${essentials.restEndpoint}\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n        kekName: my_kek\n        subjectName: my_subject\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst myKey = confluentcloud.getSchemaRegistryDek({\n    kekName: \"my_kek\",\n    subjectName: \"my_subject\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmy_key = confluentcloud.get_schema_registry_dek(kek_name=\"my_kek\",\n    subject_name=\"my_subject\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myKey = ConfluentCloud.GetSchemaRegistryDek.Invoke(new()\n    {\n        KekName = \"my_kek\",\n        SubjectName = \"my_subject\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.LookupSchemaRegistryDek(ctx, \u0026confluentcloud.LookupSchemaRegistryDekArgs{\n\t\t\tKekName:     \"my_kek\",\n\t\t\tSubjectName: \"my_subject\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryDekArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var myKey = ConfluentcloudFunctions.getSchemaRegistryDek(GetSchemaRegistryDekArgs.builder()\n            .kekName(\"my_kek\")\n            .subjectName(\"my_subject\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  myKey:\n    fn::invoke:\n      function: confluentcloud:getSchemaRegistryDek\n      arguments:\n        kekName: my_kek\n        subjectName: my_subject\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSchemaRegistryDek.\n","properties":{"algorithm":{"type":"string","description":"Accepted values are: `AES128_GCM`, `AES256_GCM`, and `AES256_SIV`. Defaults to `AES256_GCM`.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n"},"credentials":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryDekCredentials:getSchemaRegistryDekCredentials","secret":true},"kekName":{"type":"string","description":"The name of the KEK used to encrypt this DEK.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryDekSchemaRegistryCluster:getSchemaRegistryDekSchemaRegistryCluster"},"subjectName":{"type":"string","description":"The subject for this DEK.\n"},"version":{"type":"integer","description":"The version of this DEK. Defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n"}},"type":"object","required":["kekName","subjectName"]},"outputs":{"description":"A collection of values returned by getSchemaRegistryDek.\n","properties":{"algorithm":{"type":"string"},"credentials":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryDekCredentials:getSchemaRegistryDekCredentials","secret":true},"encryptedKeyMaterial":{"description":"(Optional String) The encrypted key material for the DEK.\n","type":"string"},"hardDelete":{"description":"(Optional Boolean) An optional flag to control whether a dek should be soft or hard deleted.\n","type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"kekName":{"type":"string"},"keyMaterial":{"description":"(Optional String) The decrypted version of encrypted key material.\n","type":"string"},"restEndpoint":{"type":"string"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryDekSchemaRegistryCluster:getSchemaRegistryDekSchemaRegistryCluster"},"subjectName":{"type":"string"},"version":{"type":"integer"}},"required":["encryptedKeyMaterial","hardDelete","kekName","keyMaterial","subjectName","id"],"type":"object"}},"confluentcloud:index/getSchemaRegistryKek:getSchemaRegistryKek":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-dotnet=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-go=\"`SchemaRegistryKek`\" pulumi-lang-python=\"`SchemaRegistryKek`\" pulumi-lang-yaml=\"`confluentcloud.SchemaRegistryKek`\" pulumi-lang-java=\"`confluentcloud.SchemaRegistryKek`\"\u003e`confluentcloud.SchemaRegistryKek`\u003c/span\u003e describes a Schema Registry Key Encryption Key (KEK) data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst myKey = confluentcloud.getSchemaRegistryKek({\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name: \"my_key\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmy_key = confluentcloud.get_schema_registry_kek(schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name=\"my_key\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myKey = ConfluentCloud.GetSchemaRegistryKek.Invoke(new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.GetSchemaRegistryKekSchemaRegistryClusterInputArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.GetSchemaRegistryKekCredentialsInputArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        Name = \"my_key\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.LookupSchemaRegistryKek(ctx, \u0026confluentcloud.LookupSchemaRegistryKekArgs{\n\t\t\tSchemaRegistryCluster: confluentcloud.GetSchemaRegistryKekSchemaRegistryCluster{\n\t\t\t\tId: essentials.Id,\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.StringRef(essentials.RestEndpoint),\n\t\t\tCredentials: confluentcloud.GetSchemaRegistryKekCredentials{\n\t\t\t\tKey:    \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t\tSecret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t},\n\t\t\tName: \"my_key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryKekArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryKekSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryKekCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var myKey = ConfluentcloudFunctions.getSchemaRegistryKek(GetSchemaRegistryKekArgs.builder()\n            .schemaRegistryCluster(GetSchemaRegistryKekSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(GetSchemaRegistryKekCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .name(\"my_key\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  myKey:\n    fn::invoke:\n      function: confluentcloud:getSchemaRegistryKek\n      arguments:\n        schemaRegistryCluster:\n          id: ${essentials.id}\n        restEndpoint: ${essentials.restEndpoint}\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n        name: my_key\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst myKey = confluentcloud.getSchemaRegistryKek({\n    name: \"my_key\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmy_key = confluentcloud.get_schema_registry_kek(name=\"my_key\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myKey = ConfluentCloud.GetSchemaRegistryKek.Invoke(new()\n    {\n        Name = \"my_key\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.LookupSchemaRegistryKek(ctx, \u0026confluentcloud.LookupSchemaRegistryKekArgs{\n\t\t\tName: \"my_key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemaRegistryKekArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var myKey = ConfluentcloudFunctions.getSchemaRegistryKek(GetSchemaRegistryKekArgs.builder()\n            .name(\"my_key\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  myKey:\n    fn::invoke:\n      function: confluentcloud:getSchemaRegistryKek\n      arguments:\n        name: my_key\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSchemaRegistryKek.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryKekCredentials:getSchemaRegistryKekCredentials","secret":true},"name":{"type":"string","description":"The name for the KEK.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryKekSchemaRegistryCluster:getSchemaRegistryKekSchemaRegistryCluster"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getSchemaRegistryKek.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryKekCredentials:getSchemaRegistryKekCredentials","secret":true},"doc":{"description":"(Optional String) The optional description for the KEK.\n","type":"string"},"hardDelete":{"description":"(Optional Boolean) The optional flag to control whether a kek should be soft or hard deleted. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n","type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"kmsKeyId":{"description":"(Required String) The ID of the key from KMS.\n- When using the AWS KMS, this is an ARN, for example, `arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789abc`.\n- When using the Azure Key Vault, this is a Key Identifier (URI), for example, `https://test-keyvault1.vault.azure.net/keys/test-key1/1234567890abcdef1234567890abcdef`.\n- When using the GCP KMS, this is a resource name, for example, `projects/test-project1/locations/us-central1/keyRings/test-keyRing1/cryptoKeys/test-key1`.\n","type":"string"},"kmsType":{"description":"(Required String) The type of Key Management Service (KMS). The supported values include `aws-kms`, `azure-kms`, and `gcp-kms`. Additionally, custom KMS types are supported as well.\n","type":"string"},"name":{"description":"(Required String) The custom property name (for example, `KeyUsage`).\n","type":"string"},"properties":{"additionalProperties":{"type":"string"},"description":"(Optional Map) The custom properties to set (for example, `KeyUsage=ENCRYPT_DECRYPT`, `KeyState=Enabled`):\n","type":"object"},"restEndpoint":{"type":"string"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSchemaRegistryKekSchemaRegistryCluster:getSchemaRegistryKekSchemaRegistryCluster"},"shared":{"description":"(Optional Boolean) The optional flag to control whether the DEK Registry has shared access to the KMS. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n","type":"boolean"}},"required":["doc","hardDelete","kmsKeyId","kmsType","name","properties","shared","id"],"type":"object"}},"confluentcloud:index/getSchemas:getSchemas":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.getSchemas`\" pulumi-lang-dotnet=\"`confluentcloud.getSchemas`\" pulumi-lang-go=\"`getSchemas`\" pulumi-lang-python=\"`get_schemas`\" pulumi-lang-yaml=\"`confluentcloud.getSchemas`\" pulumi-lang-java=\"`confluentcloud.getSchemas`\"\u003e`confluentcloud.getSchemas`\u003c/span\u003e describes a Schema data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getSchemas({\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    filter: {\n        subjectPrefix: \"examples.record\",\n        latestOnly: false,\n        deleted: true,\n    },\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n});\nexport const schemas = main.then(main =\u003e main.schemas);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_schemas(schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    filter={\n        \"subject_prefix\": \"examples.record\",\n        \"latest_only\": False,\n        \"deleted\": True,\n    },\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    })\npulumi.export(\"schemas\", main.schemas)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetSchemas.Invoke(new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.GetSchemasSchemaRegistryClusterInputArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Filter = new ConfluentCloud.Inputs.GetSchemasFilterInputArgs\n        {\n            SubjectPrefix = \"examples.record\",\n            LatestOnly = false,\n            Deleted = true,\n        },\n        Credentials = new ConfluentCloud.Inputs.GetSchemasCredentialsInputArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"schemas\"] = main.Apply(getSchemasResult =\u003e getSchemasResult.Schemas),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.GetSchemas(ctx, \u0026confluentcloud.GetSchemasArgs{\n\t\t\tSchemaRegistryCluster: confluentcloud.GetSchemasSchemaRegistryCluster{\n\t\t\t\tId: essentials.Id,\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.StringRef(essentials.RestEndpoint),\n\t\t\tFilter: confluentcloud.GetSchemasFilter{\n\t\t\t\tSubjectPrefix: pulumi.StringRef(\"examples.record\"),\n\t\t\t\tLatestOnly:    pulumi.BoolRef(false),\n\t\t\t\tDeleted:       pulumi.BoolRef(true),\n\t\t\t},\n\t\t\tCredentials: confluentcloud.GetSchemasCredentials{\n\t\t\t\tKey:    \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t\tSecret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"schemas\", main.Schemas)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemasArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemasSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemasFilterArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemasCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getSchemas(GetSchemasArgs.builder()\n            .schemaRegistryCluster(GetSchemasSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .filter(GetSchemasFilterArgs.builder()\n                .subjectPrefix(\"examples.record\")\n                .latestOnly(false)\n                .deleted(true)\n                .build())\n            .credentials(GetSchemasCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .build());\n\n        ctx.export(\"schemas\", main.schemas());\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getSchemas\n      arguments:\n        schemaRegistryCluster:\n          id: ${essentials.id}\n        restEndpoint: ${essentials.restEndpoint}\n        filter:\n          subjectPrefix: examples.record\n          latestOnly: false\n          deleted: true\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\noutputs:\n  schemas: ${main.schemas}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getSchemas({\n    filter: {\n        subjectPrefix: \"examples.record\",\n        latestOnly: false,\n        deleted: true,\n    },\n});\nexport const schemas = main.then(main =\u003e main.schemas);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_schemas(filter={\n    \"subject_prefix\": \"examples.record\",\n    \"latest_only\": False,\n    \"deleted\": True,\n})\npulumi.export(\"schemas\", main.schemas)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetSchemas.Invoke(new()\n    {\n        Filter = new ConfluentCloud.Inputs.GetSchemasFilterInputArgs\n        {\n            SubjectPrefix = \"examples.record\",\n            LatestOnly = false,\n            Deleted = true,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"schemas\"] = main.Apply(getSchemasResult =\u003e getSchemasResult.Schemas),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.GetSchemas(ctx, \u0026confluentcloud.GetSchemasArgs{\n\t\t\tFilter: confluentcloud.GetSchemasFilter{\n\t\t\t\tSubjectPrefix: pulumi.StringRef(\"examples.record\"),\n\t\t\t\tLatestOnly:    pulumi.BoolRef(false),\n\t\t\t\tDeleted:       pulumi.BoolRef(true),\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"schemas\", main.Schemas)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSchemasArgs;\nimport com.pulumi.confluentcloud.inputs.GetSchemasFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getSchemas(GetSchemasArgs.builder()\n            .filter(GetSchemasFilterArgs.builder()\n                .subjectPrefix(\"examples.record\")\n                .latestOnly(false)\n                .deleted(true)\n                .build())\n            .build());\n\n        ctx.export(\"schemas\", main.schemas());\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getSchemas\n      arguments:\n        filter:\n          subjectPrefix: examples.record\n          latestOnly: false\n          deleted: true\noutputs:\n  schemas: ${main.schemas}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSchemas.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getSchemasCredentials:getSchemasCredentials","secret":true},"filter":{"$ref":"#/types/confluentcloud:index/getSchemasFilter:getSchemasFilter"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSchemasSchemaRegistryCluster:getSchemasSchemaRegistryCluster"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSchemas.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getSchemasCredentials:getSchemasCredentials","secret":true},"filter":{"$ref":"#/types/confluentcloud:index/getSchemasFilter:getSchemasFilter"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"restEndpoint":{"type":"string"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSchemasSchemaRegistryCluster:getSchemasSchemaRegistryCluster"},"schemas":{"description":"(List of Object) List of schemas. Each schema object exports the following attributes:\n","items":{"$ref":"#/types/confluentcloud:index/getSchemasSchema:getSchemasSchema"},"type":"array"}},"required":["schemas","id"],"type":"object"}},"confluentcloud:index/getServiceAccount:getServiceAccount":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.ServiceAccount`\" pulumi-lang-dotnet=\"`confluentcloud.ServiceAccount`\" pulumi-lang-go=\"`ServiceAccount`\" pulumi-lang-python=\"`ServiceAccount`\" pulumi-lang-yaml=\"`confluentcloud.ServiceAccount`\" pulumi-lang-java=\"`confluentcloud.ServiceAccount`\"\u003e`confluentcloud.ServiceAccount`\u003c/span\u003e describes a Service Account data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getServiceAccount({\n        id: \"sa-abc123\",\n    });\n    const exampleUsingName = await confluentcloud.getServiceAccount({\n        displayName: \"test_sa\",\n    });\n    const test_env = new confluentcloud.Environment(\"test-env\", {displayName: `env_for_${exampleUsingId.displayName}`});\n    return {\n        exampleUsingId: exampleUsingId,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_service_account(id=\"sa-abc123\")\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_service_account(display_name=\"test_sa\")\ntest_env = confluentcloud.Environment(\"test-env\", display_name=f\"env_for_{example_using_id.display_name}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetServiceAccount.Invoke(new()\n    {\n        Id = \"sa-abc123\",\n    });\n\n    var exampleUsingName = ConfluentCloud.GetServiceAccount.Invoke(new()\n    {\n        DisplayName = \"test_sa\",\n    });\n\n    var test_env = new ConfluentCloud.Environment(\"test-env\", new()\n    {\n        DisplayName = $\"env_for_{exampleUsingId.Apply(getServiceAccountResult =\u003e getServiceAccountResult.DisplayName)}\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupServiceAccount(ctx, \u0026confluentcloud.LookupServiceAccountArgs{\n\t\t\tId: pulumi.StringRef(\"sa-abc123\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\t_, err = confluentcloud.LookupServiceAccount(ctx, \u0026confluentcloud.LookupServiceAccountArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"test_sa\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewEnvironment(ctx, \"test-env\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.Sprintf(\"env_for_%v\", exampleUsingId.DisplayName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetServiceAccountArgs;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getServiceAccount(GetServiceAccountArgs.builder()\n            .id(\"sa-abc123\")\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getServiceAccount(GetServiceAccountArgs.builder()\n            .displayName(\"test_sa\")\n            .build());\n\n        var test_env = new Environment(\"test-env\", EnvironmentArgs.builder()\n            .displayName(String.format(\"env_for_%s\", exampleUsingId.displayName()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test-env:\n    type: confluentcloud:Environment\n    properties:\n      displayName: env_for_${exampleUsingId.displayName}\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getServiceAccount\n      arguments:\n        id: sa-abc123\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getServiceAccount\n      arguments:\n        displayName: test_sa\noutputs:\n  exampleUsingId: ${exampleUsingId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getServiceAccount.\n","properties":{"displayName":{"type":"string","description":"A human-readable name for the Service Account. Limited to 64 characters in length.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`display_name`\u003c/span\u003e attributes must be specified.\n"},"id":{"type":"string","description":"The ID of the Service Account (e.g., `sa-abc123`).\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getServiceAccount.\n","properties":{"apiVersion":{"description":"(Required String) An API Version of the schema version of the Service Account.\n","type":"string"},"description":{"description":"(Required String) A free-form description of the Service Account.\n","type":"string"},"displayName":{"description":"(Required String) A human-readable name for the Service Account. Limited to 64 characters in length.\n","type":"string"},"id":{"description":"(Required String) The ID of the Service Account (e.g., `sa-abc123`).\n","type":"string"},"kind":{"description":"(Required String) A kind of the Service Account.\n","type":"string"}},"required":["apiVersion","description","displayName","id","kind"],"type":"object"}},"confluentcloud:index/getSubjectConfig:getSubjectConfig":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentSubjectCompatibilityLevel`\" pulumi-lang-dotnet=\"`ConfluentSubjectCompatibilityLevel`\" pulumi-lang-go=\"`confluentSubjectCompatibilityLevel`\" pulumi-lang-python=\"`confluent_subject_compatibility_level`\" pulumi-lang-yaml=\"`confluentSubjectCompatibilityLevel`\" pulumi-lang-java=\"`confluentSubjectCompatibilityLevel`\"\u003e`confluent_subject_compatibility_level`\u003c/span\u003e describes a Subject Config data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluent from \"@pulumi/confluent\";\n\nconst example = confluent.index.SubjectCompatibilityLevel({\n    schemaRegistryCluster: [{\n        id: essentials.id,\n    }],\n    restEndpoint: essentials.restEndpoint,\n    subjectName: \"proto-purchase-value\",\n    credentials: [{\n        key: \"\u003cSchema Registry API Key for confluent_schema_registry_region.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for confluent_schema_registry_region.essentials\u003e\",\n    }],\n});\nexport const compatibilityLevel = example.compatibilityLevel;\n```\n```python\nimport pulumi\nimport pulumi_confluent as confluent\n\nexample = confluent.index.subject_compatibility_level(schema_registry_cluster=[{\n        \"id\": essentials[\"id\"],\n    }],\n    rest_endpoint=essentials[\"restEndpoint\"],\n    subject_name=\"proto-purchase-value\",\n    credentials=[{\n        \"key\": \"\u003cSchema Registry API Key for confluent_schema_registry_region.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for confluent_schema_registry_region.essentials\u003e\",\n    }])\npulumi.export(\"compatibilityLevel\", example[\"compatibilityLevel\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Confluent = Pulumi.Confluent;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Confluent.Index.SubjectCompatibilityLevel.Invoke(new()\n    {\n        SchemaRegistryCluster = new[]\n        {\n            \n            {\n                { \"id\", essentials.Id },\n            },\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        SubjectName = \"proto-purchase-value\",\n        Credentials = new[]\n        {\n            \n            {\n                { \"key\", \"\u003cSchema Registry API Key for confluent_schema_registry_region.essentials\u003e\" },\n                { \"secret\", \"\u003cSchema Registry API Secret for confluent_schema_registry_region.essentials\u003e\" },\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"compatibilityLevel\"] = example.CompatibilityLevel,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluent/sdk/go/confluent\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluent.SubjectCompatibilityLevel(ctx, map[string]interface{}{\n\t\t\t\"schemaRegistryCluster\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"id\": essentials.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"restEndpoint\": essentials.RestEndpoint,\n\t\t\t\"subjectName\":  \"proto-purchase-value\",\n\t\t\t\"credentials\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"key\":    \"\u003cSchema Registry API Key for confluent_schema_registry_region.essentials\u003e\",\n\t\t\t\t\t\"secret\": \"\u003cSchema Registry API Secret for confluent_schema_registry_region.essentials\u003e\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"compatibilityLevel\", example.CompatibilityLevel)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluent.ConfluentFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentFunctions.SubjectCompatibilityLevel(Map.ofEntries(\n            Map.entry(\"schemaRegistryCluster\", List.of(Map.of(\"id\", essentials.id()))),\n            Map.entry(\"restEndpoint\", essentials.restEndpoint()),\n            Map.entry(\"subjectName\", \"proto-purchase-value\"),\n            Map.entry(\"credentials\", List.of(Map.ofEntries(\n                Map.entry(\"key\", \"\u003cSchema Registry API Key for confluent_schema_registry_region.essentials\u003e\"),\n                Map.entry(\"secret\", \"\u003cSchema Registry API Secret for confluent_schema_registry_region.essentials\u003e\")\n            )))\n        ));\n\n        ctx.export(\"compatibilityLevel\", example.compatibilityLevel());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluent:SubjectCompatibilityLevel\n      arguments:\n        schemaRegistryCluster:\n          - id: ${essentials.id}\n        restEndpoint: ${essentials.restEndpoint}\n        subjectName: proto-purchase-value\n        credentials:\n          - key: \u003cSchema Registry API Key for confluent_schema_registry_region.essentials\u003e\n            secret: \u003cSchema Registry API Secret for confluent_schema_registry_region.essentials\u003e\noutputs:\n  compatibilityLevel: ${example.compatibilityLevel}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluent from \"@pulumi/confluent\";\n\nconst example = confluent.index.SubjectCompatibilityLevel({\n    subjectName: \"proto-purchase-value\",\n});\nexport const compatibilityLevel = example.compatibilityLevel;\n```\n```python\nimport pulumi\nimport pulumi_confluent as confluent\n\nexample = confluent.index.subject_compatibility_level(subject_name=\"proto-purchase-value\")\npulumi.export(\"compatibilityLevel\", example[\"compatibilityLevel\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Confluent = Pulumi.Confluent;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Confluent.Index.SubjectCompatibilityLevel.Invoke(new()\n    {\n        SubjectName = \"proto-purchase-value\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"compatibilityLevel\"] = example.CompatibilityLevel,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluent/sdk/go/confluent\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluent.SubjectCompatibilityLevel(ctx, map[string]interface{}{\n\t\t\t\"subjectName\": \"proto-purchase-value\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"compatibilityLevel\", example.CompatibilityLevel)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluent.ConfluentFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentFunctions.SubjectCompatibilityLevel(Map.of(\"subjectName\", \"proto-purchase-value\"));\n\n        ctx.export(\"compatibilityLevel\", example.compatibilityLevel());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluent:SubjectCompatibilityLevel\n      arguments:\n        subjectName: proto-purchase-value\noutputs:\n  compatibilityLevel: ${example.compatibilityLevel}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSubjectConfig.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getSubjectConfigCredentials:getSubjectConfigCredentials","secret":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSubjectConfigSchemaRegistryCluster:getSubjectConfigSchemaRegistryCluster"},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`.\n"}},"type":"object","required":["subjectName"]},"outputs":{"description":"A collection of values returned by getSubjectConfig.\n","properties":{"alias":{"description":"(Optional String) The subject name that this subject is an alias for.\n","type":"string"},"compatibilityGroup":{"description":"(Optional String) The Compatibility Group of the specified subject.\n","type":"string"},"compatibilityLevel":{"description":"(Optional String) The Compatibility Level of the specified subject. Accepted values are: `BACKWARD`, `BACKWARD_TRANSITIVE`, `FORWARD`, `FORWARD_TRANSITIVE`, `FULL`, `FULL_TRANSITIVE`, and `NONE`. See the [Compatibility Types](https://docs.confluent.io/platform/current/schema-registry/avro.html#compatibility-types) for more details.\n","type":"string"},"credentials":{"$ref":"#/types/confluentcloud:index/getSubjectConfigCredentials:getSubjectConfigCredentials","secret":true},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"normalize":{"description":"(Optional Boolean) Whether schemas are automatically normalized when registered or passed during lookups.\n","type":"boolean"},"restEndpoint":{"type":"string"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSubjectConfigSchemaRegistryCluster:getSubjectConfigSchemaRegistryCluster"},"subjectName":{"type":"string"}},"required":["alias","compatibilityGroup","compatibilityLevel","normalize","subjectName","id"],"type":"object"}},"confluentcloud:index/getSubjectMode:getSubjectMode":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.SubjectMode`\" pulumi-lang-dotnet=\"`confluentcloud.SubjectMode`\" pulumi-lang-go=\"`SubjectMode`\" pulumi-lang-python=\"`SubjectMode`\" pulumi-lang-yaml=\"`confluentcloud.SubjectMode`\" pulumi-lang-java=\"`confluentcloud.SubjectMode`\"\u003e`confluentcloud.SubjectMode`\u003c/span\u003e describes a Subject Mode data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst purchase_v1 = confluentcloud.getSubjectMode({\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    subjectName: \"proto-purchase-value\",\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n});\nexport const mode = purchase_v1.then(purchase_v1 =\u003e purchase_v1.mode);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npurchase_v1 = confluentcloud.get_subject_mode(schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    subject_name=\"proto-purchase-value\",\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    })\npulumi.export(\"mode\", purchase_v1.mode)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var purchase_v1 = ConfluentCloud.GetSubjectMode.Invoke(new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.GetSubjectModeSchemaRegistryClusterInputArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        SubjectName = \"proto-purchase-value\",\n        Credentials = new ConfluentCloud.Inputs.GetSubjectModeCredentialsInputArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"mode\"] = purchase_v1.Apply(purchase_v1 =\u003e purchase_v1.Apply(getSubjectModeResult =\u003e getSubjectModeResult.Mode)),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpurchase_v1, err := confluentcloud.LookupSubjectMode(ctx, \u0026confluentcloud.LookupSubjectModeArgs{\n\t\t\tSchemaRegistryCluster: confluentcloud.GetSubjectModeSchemaRegistryCluster{\n\t\t\t\tId: essentials.Id,\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.StringRef(essentials.RestEndpoint),\n\t\t\tSubjectName:  \"proto-purchase-value\",\n\t\t\tCredentials: confluentcloud.GetSubjectModeCredentials{\n\t\t\t\tKey:    \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t\tSecret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"mode\", purchase_v1.Mode)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSubjectModeArgs;\nimport com.pulumi.confluentcloud.inputs.GetSubjectModeSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetSubjectModeCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var purchase-v1 = ConfluentcloudFunctions.getSubjectMode(GetSubjectModeArgs.builder()\n            .schemaRegistryCluster(GetSubjectModeSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .subjectName(\"proto-purchase-value\")\n            .credentials(GetSubjectModeCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .build());\n\n        ctx.export(\"mode\", purchase_v1.mode());\n    }\n}\n```\n```yaml\nvariables:\n  purchase-v1:\n    fn::invoke:\n      function: confluentcloud:getSubjectMode\n      arguments:\n        schemaRegistryCluster:\n          id: ${essentials.id}\n        restEndpoint: ${essentials.restEndpoint}\n        subjectName: proto-purchase-value\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\noutputs:\n  mode: ${[\"purchase-v1\"].mode}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst purchase_v1 = confluentcloud.getSubjectMode({\n    subjectName: \"proto-purchase-value\",\n});\nexport const mode = purchase_v1.then(purchase_v1 =\u003e purchase_v1.mode);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npurchase_v1 = confluentcloud.get_subject_mode(subject_name=\"proto-purchase-value\")\npulumi.export(\"mode\", purchase_v1.mode)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var purchase_v1 = ConfluentCloud.GetSubjectMode.Invoke(new()\n    {\n        SubjectName = \"proto-purchase-value\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"mode\"] = purchase_v1.Apply(purchase_v1 =\u003e purchase_v1.Apply(getSubjectModeResult =\u003e getSubjectModeResult.Mode)),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpurchase_v1, err := confluentcloud.LookupSubjectMode(ctx, \u0026confluentcloud.LookupSubjectModeArgs{\n\t\t\tSubjectName: \"proto-purchase-value\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"mode\", purchase_v1.Mode)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetSubjectModeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var purchase-v1 = ConfluentcloudFunctions.getSubjectMode(GetSubjectModeArgs.builder()\n            .subjectName(\"proto-purchase-value\")\n            .build());\n\n        ctx.export(\"mode\", purchase_v1.mode());\n    }\n}\n```\n```yaml\nvariables:\n  purchase-v1:\n    fn::invoke:\n      function: confluentcloud:getSubjectMode\n      arguments:\n        subjectName: proto-purchase-value\noutputs:\n  mode: ${[\"purchase-v1\"].mode}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSubjectMode.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getSubjectModeCredentials:getSubjectModeCredentials","secret":true},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n","willReplaceOnChanges":true},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSubjectModeSchemaRegistryCluster:getSubjectModeSchemaRegistryCluster"},"subjectName":{"type":"string","description":"The name of the subject (in other words, the namespace), representing the subject under which the schema will be registered, for example, `test-subject`.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n"}},"type":"object","required":["subjectName"]},"outputs":{"description":"A collection of values returned by getSubjectMode.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getSubjectModeCredentials:getSubjectModeCredentials","secret":true},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"mode":{"description":"(Required String) The mode of the specified subject. Accepted values are: `READWRITE`, `READONLY`, `READONLY_OVERRIDE`, and `IMPORT`.\n","type":"string"},"restEndpoint":{"type":"string"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getSubjectModeSchemaRegistryCluster:getSubjectModeSchemaRegistryCluster"},"subjectName":{"type":"string"}},"required":["mode","subjectName","id"],"type":"object"}},"confluentcloud:index/getTableflowTopic:getTableflowTopic":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.TableflowTopic`\" pulumi-lang-dotnet=\"`confluentcloud.TableflowTopic`\" pulumi-lang-go=\"`TableflowTopic`\" pulumi-lang-python=\"`TableflowTopic`\" pulumi-lang-yaml=\"`confluentcloud.TableflowTopic`\" pulumi-lang-java=\"`confluentcloud.TableflowTopic`\"\u003e`confluentcloud.TableflowTopic`\u003c/span\u003e describes a Tableflow Topic data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Tableflow Topics in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const example = await confluentcloud.getTableflowTopic({\n        environment: {\n            id: staging.id,\n        },\n        kafkaCluster: {\n            id: stagingConfluentKafkaCluster.id,\n        },\n        displayName: \"tableflow-example\",\n        credentials: {\n            key: env_admin_tableflow_api_key.id,\n            secret: env_admin_tableflow_api_key.secret,\n        },\n    });\n    return {\n        \"retention-ms\": example.retentionMs,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_tableflow_topic(environment={\n        \"id\": staging[\"id\"],\n    },\n    kafka_cluster={\n        \"id\": staging_confluent_kafka_cluster[\"id\"],\n    },\n    display_name=\"tableflow-example\",\n    credentials={\n        \"key\": env_admin_tableflow_api_key[\"id\"],\n        \"secret\": env_admin_tableflow_api_key[\"secret\"],\n    })\npulumi.export(\"retention-ms\", example.retention_ms)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetTableflowTopic.Invoke(new()\n    {\n        Environment = new ConfluentCloud.Inputs.GetTableflowTopicEnvironmentInputArgs\n        {\n            Id = staging.Id,\n        },\n        KafkaCluster = new ConfluentCloud.Inputs.GetTableflowTopicKafkaClusterInputArgs\n        {\n            Id = stagingConfluentKafkaCluster.Id,\n        },\n        DisplayName = \"tableflow-example\",\n        Credentials = new ConfluentCloud.Inputs.GetTableflowTopicCredentialsInputArgs\n        {\n            Key = env_admin_tableflow_api_key.Id,\n            Secret = env_admin_tableflow_api_key.Secret,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"retention-ms\"] = example.Apply(getTableflowTopicResult =\u003e getTableflowTopicResult.RetentionMs),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupTableflowTopic(ctx, \u0026confluentcloud.LookupTableflowTopicArgs{\n\t\t\tEnvironment: confluentcloud.GetTableflowTopicEnvironment{\n\t\t\t\tId: staging.Id,\n\t\t\t},\n\t\t\tKafkaCluster: confluentcloud.GetTableflowTopicKafkaCluster{\n\t\t\t\tId: stagingConfluentKafkaCluster.Id,\n\t\t\t},\n\t\t\tDisplayName: \"tableflow-example\",\n\t\t\tCredentials: confluentcloud.GetTableflowTopicCredentials{\n\t\t\t\tKey:    env_admin_tableflow_api_key.Id,\n\t\t\t\tSecret: env_admin_tableflow_api_key.Secret,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"retention-ms\", example.RetentionMs)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetTableflowTopicArgs;\nimport com.pulumi.confluentcloud.inputs.GetTableflowTopicEnvironmentArgs;\nimport com.pulumi.confluentcloud.inputs.GetTableflowTopicKafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetTableflowTopicCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getTableflowTopic(GetTableflowTopicArgs.builder()\n            .environment(GetTableflowTopicEnvironmentArgs.builder()\n                .id(staging.id())\n                .build())\n            .kafkaCluster(GetTableflowTopicKafkaClusterArgs.builder()\n                .id(stagingConfluentKafkaCluster.id())\n                .build())\n            .displayName(\"tableflow-example\")\n            .credentials(GetTableflowTopicCredentialsArgs.builder()\n                .key(env_admin_tableflow_api_key.id())\n                .secret(env_admin_tableflow_api_key.secret())\n                .build())\n            .build());\n\n        ctx.export(\"retention-ms\", example.retentionMs());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getTableflowTopic\n      arguments:\n        environment:\n          id: ${staging.id}\n        kafkaCluster:\n          id: ${stagingConfluentKafkaCluster.id}\n        displayName: tableflow-example\n        credentials:\n          key: ${[\"env-admin-tableflow-api-key\"].id}\n          secret: ${[\"env-admin-tableflow-api-key\"].secret}\noutputs:\n  retention-ms: ${example.retentionMs}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Tableflow Topic in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const example = await confluentcloud.getTableflowTopic({\n        displayName: \"tableflow-example\",\n    });\n    return {\n        \"retention-ms\": example.retentionMs,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample = confluentcloud.get_tableflow_topic(display_name=\"tableflow-example\")\npulumi.export(\"retention-ms\", example.retention_ms)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ConfluentCloud.GetTableflowTopic.Invoke(new()\n    {\n        DisplayName = \"tableflow-example\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"retention-ms\"] = example.Apply(getTableflowTopicResult =\u003e getTableflowTopicResult.RetentionMs),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := confluentcloud.LookupTableflowTopic(ctx, \u0026confluentcloud.LookupTableflowTopicArgs{\n\t\t\tDisplayName: \"tableflow-example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"retention-ms\", example.RetentionMs)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetTableflowTopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ConfluentcloudFunctions.getTableflowTopic(GetTableflowTopicArgs.builder()\n            .displayName(\"tableflow-example\")\n            .build());\n\n        ctx.export(\"retention-ms\", example.retentionMs());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: confluentcloud:getTableflowTopic\n      arguments:\n        displayName: tableflow-example\noutputs:\n  retention-ms: ${example.retentionMs}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getTableflowTopic.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getTableflowTopicCredentials:getTableflowTopicCredentials","secret":true},"displayName":{"type":"string","description":"The name of the Tableflow Topic.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getTableflowTopicEnvironment:getTableflowTopicEnvironment"},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/getTableflowTopicKafkaCluster:getTableflowTopicKafkaCluster"}},"type":"object","required":["displayName","environment","kafkaCluster"]},"outputs":{"description":"A collection of values returned by getTableflowTopic.\n","properties":{"azureDataLakeStorageGen2s":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getTableflowTopicAzureDataLakeStorageGen2:getTableflowTopicAzureDataLakeStorageGen2"},"type":"array"},"byobAws":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getTableflowTopicByobAw:getTableflowTopicByobAw"},"type":"array"},"credentials":{"$ref":"#/types/confluentcloud:index/getTableflowTopicCredentials:getTableflowTopicCredentials","secret":true},"displayName":{"type":"string"},"enableCompaction":{"description":"(Optional Boolean) This flag determines whether to enable compaction for the Tableflow enabled topic.\n","type":"boolean"},"enablePartitioning":{"description":"(Optional Boolean) This flag determines whether to enable partitioning for the Tableflow enabled topic.\n","type":"boolean"},"environment":{"$ref":"#/types/confluentcloud:index/getTableflowTopicEnvironment:getTableflowTopicEnvironment"},"errorHandlings":{"description":"(Optional Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getTableflowTopicErrorHandling:getTableflowTopicErrorHandling"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"kafkaCluster":{"$ref":"#/types/confluentcloud:index/getTableflowTopicKafkaCluster:getTableflowTopicKafkaCluster"},"managedStorages":{"description":"(Optional Configuration Block) The configuration of the Confluent managed bucket.\n","items":{"$ref":"#/types/confluentcloud:index/getTableflowTopicManagedStorage:getTableflowTopicManagedStorage"},"type":"array"},"recordFailureStrategy":{"description":"(Optional String, **Deprecated**) The strategy to handle record failures in the Tableflow enabled topic during materialization. For `SKIP`, we skip the bad records and move to the next record. For `SUSPEND`, we suspend the materialization of the topic.\n","type":"string"},"retentionMs":{"description":"(Optional String) The max age of snapshots (Iceberg) or versions (Delta) (snapshot/version expiration) to keep on the table in milliseconds for the Tableflow enabled topic.\n","type":"string"},"suspended":{"description":"(Optional Boolean) Indicates whether the Tableflow should be suspended.\n","type":"boolean"},"tableFormats":{"description":"(Optional List) The supported table formats for the Tableflow-enabled topic.\n","items":{"type":"string"},"type":"array"},"tablePath":{"description":"(Optional String) The current storage path where the data and metadata is stored for this table.\n","type":"string"},"writeMode":{"description":"(Optional String) Indicates the write mode of the Tableflow topic.\n","type":"string"}},"required":["azureDataLakeStorageGen2s","byobAws","displayName","enableCompaction","enablePartitioning","environment","errorHandlings","kafkaCluster","managedStorages","recordFailureStrategy","retentionMs","suspended","tableFormats","tablePath","writeMode","id"],"type":"object"}},"confluentcloud:index/getTag:getTag":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.Tag`\" pulumi-lang-dotnet=\"`confluentcloud.Tag`\" pulumi-lang-go=\"`Tag`\" pulumi-lang-python=\"`Tag`\" pulumi-lang-yaml=\"`confluentcloud.Tag`\" pulumi-lang-java=\"`confluentcloud.Tag`\"\u003e`confluentcloud.Tag`\u003c/span\u003e describes a Tag data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst pii = confluentcloud.getTag({\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name: \"PII\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npii = confluentcloud.get_tag(schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    name=\"PII\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pii = ConfluentCloud.GetTag.Invoke(new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.GetTagSchemaRegistryClusterInputArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.GetTagCredentialsInputArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        Name = \"PII\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.LookupTag(ctx, \u0026confluentcloud.LookupTagArgs{\n\t\t\tSchemaRegistryCluster: confluentcloud.GetTagSchemaRegistryCluster{\n\t\t\t\tId: essentials.Id,\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.StringRef(essentials.RestEndpoint),\n\t\t\tCredentials: confluentcloud.GetTagCredentials{\n\t\t\t\tKey:    \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t\tSecret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t},\n\t\t\tName: \"PII\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetTagArgs;\nimport com.pulumi.confluentcloud.inputs.GetTagSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetTagCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var pii = ConfluentcloudFunctions.getTag(GetTagArgs.builder()\n            .schemaRegistryCluster(GetTagSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(GetTagCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .name(\"PII\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  pii:\n    fn::invoke:\n      function: confluentcloud:getTag\n      arguments:\n        schemaRegistryCluster:\n          id: ${essentials.id}\n        restEndpoint: ${essentials.restEndpoint}\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n        name: PII\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst pii = confluentcloud.getTag({\n    name: \"PII\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\npii = confluentcloud.get_tag(name=\"PII\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pii = ConfluentCloud.GetTag.Invoke(new()\n    {\n        Name = \"PII\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.LookupTag(ctx, \u0026confluentcloud.LookupTagArgs{\n\t\t\tName: \"PII\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetTagArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var pii = ConfluentcloudFunctions.getTag(GetTagArgs.builder()\n            .name(\"PII\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  pii:\n    fn::invoke:\n      function: confluentcloud:getTag\n      arguments:\n        name: PII\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\u003e **Note:** We also support \u003cspan pulumi-lang-nodejs=\"`schemaRegistryRestEndpoint`\" pulumi-lang-dotnet=\"`SchemaRegistryRestEndpoint`\" pulumi-lang-go=\"`schemaRegistryRestEndpoint`\" pulumi-lang-python=\"`schema_registry_rest_endpoint`\" pulumi-lang-yaml=\"`schemaRegistryRestEndpoint`\" pulumi-lang-java=\"`schemaRegistryRestEndpoint`\"\u003e`schema_registry_rest_endpoint`\u003c/span\u003e instead of \u003cspan pulumi-lang-nodejs=\"`catalogRestEndpoint`\" pulumi-lang-dotnet=\"`CatalogRestEndpoint`\" pulumi-lang-go=\"`catalogRestEndpoint`\" pulumi-lang-python=\"`catalog_rest_endpoint`\" pulumi-lang-yaml=\"`catalogRestEndpoint`\" pulumi-lang-java=\"`catalogRestEndpoint`\"\u003e`catalog_rest_endpoint`\u003c/span\u003e for the time being.\n","inputs":{"description":"A collection of arguments for invoking getTag.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getTagCredentials:getTagCredentials","secret":true},"name":{"type":"string","description":"The name of the tag, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getTagSchemaRegistryCluster:getTagSchemaRegistryCluster"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getTag.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getTagCredentials:getTagCredentials","secret":true},"description":{"description":"(Optional String) The description of the tag.\n","type":"string"},"entityTypes":{"description":"(Optional List of String) The entity types of the tag, this always returns `[\u003cspan pulumi-lang-nodejs=\"\"cfEntity\"\" pulumi-lang-dotnet=\"\"CfEntity\"\" pulumi-lang-go=\"\"cfEntity\"\" pulumi-lang-python=\"\"cf_entity\"\" pulumi-lang-yaml=\"\"cfEntity\"\" pulumi-lang-java=\"\"cfEntity\"\"\u003e\"cf_entity\"\u003c/span\u003e]`.\n","items":{"type":"string"},"type":"array"},"id":{"description":"(Required String) The ID of the Tag, in the format `\u003cSchema Registry cluster ID\u003e/\u003cTag name\u003e`, for example, `lsrc-8wrx70/PII`.\n","type":"string"},"name":{"type":"string"},"restEndpoint":{"type":"string"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getTagSchemaRegistryCluster:getTagSchemaRegistryCluster"},"version":{"description":"(Optional Integer) The version, for example, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n","type":"integer"}},"required":["description","entityTypes","id","name","version"],"type":"object"}},"confluentcloud:index/getTagBinding:getTagBinding":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.TagBinding`\" pulumi-lang-dotnet=\"`confluentcloud.TagBinding`\" pulumi-lang-go=\"`TagBinding`\" pulumi-lang-python=\"`TagBinding`\" pulumi-lang-yaml=\"`confluentcloud.TagBinding`\" pulumi-lang-java=\"`confluentcloud.TagBinding`\"\u003e`confluentcloud.TagBinding`\u003c/span\u003e describes a Tag Binding data source.\n\n## Example Usage\n\n### Option #1: Manage multiple Schema Registry clusters in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getTagBinding({\n    schemaRegistryCluster: {\n        id: essentials.id,\n    },\n    restEndpoint: essentials.restEndpoint,\n    credentials: {\n        key: \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        secret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    tagName: \"PII\",\n    entityName: \"lsrc-8wrx70:.:100001\",\n    entityType: \"sr_schema\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_tag_binding(schema_registry_cluster={\n        \"id\": essentials[\"id\"],\n    },\n    rest_endpoint=essentials[\"restEndpoint\"],\n    credentials={\n        \"key\": \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n        \"secret\": \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n    },\n    tag_name=\"PII\",\n    entity_name=\"lsrc-8wrx70:.:100001\",\n    entity_type=\"sr_schema\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetTagBinding.Invoke(new()\n    {\n        SchemaRegistryCluster = new ConfluentCloud.Inputs.GetTagBindingSchemaRegistryClusterInputArgs\n        {\n            Id = essentials.Id,\n        },\n        RestEndpoint = essentials.RestEndpoint,\n        Credentials = new ConfluentCloud.Inputs.GetTagBindingCredentialsInputArgs\n        {\n            Key = \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n            Secret = \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n        },\n        TagName = \"PII\",\n        EntityName = \"lsrc-8wrx70:.:100001\",\n        EntityType = \"sr_schema\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.LookupTagBinding(ctx, \u0026confluentcloud.LookupTagBindingArgs{\n\t\t\tSchemaRegistryCluster: confluentcloud.GetTagBindingSchemaRegistryCluster{\n\t\t\t\tId: essentials.Id,\n\t\t\t},\n\t\t\tRestEndpoint: pulumi.StringRef(essentials.RestEndpoint),\n\t\t\tCredentials: confluentcloud.GetTagBindingCredentials{\n\t\t\t\tKey:    \"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t\tSecret: \"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\",\n\t\t\t},\n\t\t\tTagName:    \"PII\",\n\t\t\tEntityName: \"lsrc-8wrx70:.:100001\",\n\t\t\tEntityType: \"sr_schema\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetTagBindingArgs;\nimport com.pulumi.confluentcloud.inputs.GetTagBindingSchemaRegistryClusterArgs;\nimport com.pulumi.confluentcloud.inputs.GetTagBindingCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getTagBinding(GetTagBindingArgs.builder()\n            .schemaRegistryCluster(GetTagBindingSchemaRegistryClusterArgs.builder()\n                .id(essentials.id())\n                .build())\n            .restEndpoint(essentials.restEndpoint())\n            .credentials(GetTagBindingCredentialsArgs.builder()\n                .key(\"\u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .secret(\"\u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\")\n                .build())\n            .tagName(\"PII\")\n            .entityName(\"lsrc-8wrx70:.:100001\")\n            .entityType(\"sr_schema\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getTagBinding\n      arguments:\n        schemaRegistryCluster:\n          id: ${essentials.id}\n        restEndpoint: ${essentials.restEndpoint}\n        credentials:\n          key: \u003cSchema Registry API Key for data.confluent_schema_registry_cluster.essentials\u003e\n          secret: \u003cSchema Registry API Secret for data.confluent_schema_registry_cluster.essentials\u003e\n        tagName: PII\n        entityName: lsrc-8wrx70:.:100001\n        entityType: sr_schema\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Option #2: Manage a single Schema Registry cluster in the same Pulumi Stack\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getTagBinding({\n    tagName: \"PII\",\n    entityName: \"lsrc-8wrx70:.:100001\",\n    entityType: \"sr_schema\",\n});\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_tag_binding(tag_name=\"PII\",\n    entity_name=\"lsrc-8wrx70:.:100001\",\n    entity_type=\"sr_schema\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetTagBinding.Invoke(new()\n    {\n        TagName = \"PII\",\n        EntityName = \"lsrc-8wrx70:.:100001\",\n        EntityType = \"sr_schema\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := confluentcloud.LookupTagBinding(ctx, \u0026confluentcloud.LookupTagBindingArgs{\n\t\t\tTagName:    \"PII\",\n\t\t\tEntityName: \"lsrc-8wrx70:.:100001\",\n\t\t\tEntityType: \"sr_schema\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetTagBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getTagBinding(GetTagBindingArgs.builder()\n            .tagName(\"PII\")\n            .entityName(\"lsrc-8wrx70:.:100001\")\n            .entityType(\"sr_schema\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getTagBinding\n      arguments:\n        tagName: PII\n        entityName: lsrc-8wrx70:.:100001\n        entityType: sr_schema\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\u003e **Note:** We also support \u003cspan pulumi-lang-nodejs=\"`schemaRegistryRestEndpoint`\" pulumi-lang-dotnet=\"`SchemaRegistryRestEndpoint`\" pulumi-lang-go=\"`schemaRegistryRestEndpoint`\" pulumi-lang-python=\"`schema_registry_rest_endpoint`\" pulumi-lang-yaml=\"`schemaRegistryRestEndpoint`\" pulumi-lang-java=\"`schemaRegistryRestEndpoint`\"\u003e`schema_registry_rest_endpoint`\u003c/span\u003e instead of \u003cspan pulumi-lang-nodejs=\"`catalogRestEndpoint`\" pulumi-lang-dotnet=\"`CatalogRestEndpoint`\" pulumi-lang-go=\"`catalogRestEndpoint`\" pulumi-lang-python=\"`catalog_rest_endpoint`\" pulumi-lang-yaml=\"`catalogRestEndpoint`\" pulumi-lang-java=\"`catalogRestEndpoint`\"\u003e`catalog_rest_endpoint`\u003c/span\u003e for the time being.\n","inputs":{"description":"A collection of arguments for invoking getTagBinding.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getTagBindingCredentials:getTagBindingCredentials","secret":true},"entityName":{"type":"string","description":"The qualified name of the entity, for example, `${data.confluent_schema_registry_cluster.essentials.id}:.:${confluent_schema.purchase.schema_identifier}`, `${data.confluent_schema_registry_cluster.essentials.id}:${confluent_kafka_cluster.basic.id}:${confluent_kafka_topic.purchase.topic_name}`. Refer to the [Examples of qualified names](https://docs.confluent.io/cloud/current/stream-governance/stream-catalog-rest-apis.html#examples-of-qualified-names) to see the full list of supported values for the \u003cspan pulumi-lang-nodejs=\"`entityName`\" pulumi-lang-dotnet=\"`EntityName`\" pulumi-lang-go=\"`entityName`\" pulumi-lang-python=\"`entity_name`\" pulumi-lang-yaml=\"`entityName`\" pulumi-lang-java=\"`entityName`\"\u003e`entity_name`\u003c/span\u003e attribute.\n"},"entityType":{"type":"string","description":"The entity type, for example, \u003cspan pulumi-lang-nodejs=\"`srSchema`\" pulumi-lang-dotnet=\"`SrSchema`\" pulumi-lang-go=\"`srSchema`\" pulumi-lang-python=\"`sr_schema`\" pulumi-lang-yaml=\"`srSchema`\" pulumi-lang-java=\"`srSchema`\"\u003e`sr_schema`\u003c/span\u003e.\n\n\u003e **Note:** A Schema Registry API key consists of a key and a secret. Schema Registry API keys are required to interact with Schema Registry clusters in Confluent Cloud. Each Schema Registry API key is valid for one specific Schema Registry cluster.\n"},"restEndpoint":{"type":"string","description":"The REST endpoint of the Schema Registry cluster, for example, `https://psrc-00000.us-central1.gcp.confluent.cloud:443`).\n"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getTagBindingSchemaRegistryCluster:getTagBindingSchemaRegistryCluster"},"tagName":{"type":"string","description":"The name of the tag to be applied, for example, `PII`. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.\n"}},"type":"object","required":["entityName","entityType","tagName"]},"outputs":{"description":"A collection of values returned by getTagBinding.\n","properties":{"credentials":{"$ref":"#/types/confluentcloud:index/getTagBindingCredentials:getTagBindingCredentials","secret":true},"entityName":{"type":"string"},"entityType":{"type":"string"},"id":{"description":"(Required String) The ID of the Tag Binding, in the format `\u003cSchema Registry Cluster Id\u003e/\u003cTag Name\u003e/\u003cEntity Name\u003e/\u003cEntity Type\u003e`, for example, `lsrc-8wrx70/PII/lsrc-8wrx70:.:100001/sr_schema`.\n","type":"string"},"restEndpoint":{"type":"string"},"schemaRegistryCluster":{"$ref":"#/types/confluentcloud:index/getTagBindingSchemaRegistryCluster:getTagBindingSchemaRegistryCluster"},"tagName":{"type":"string"}},"required":["entityName","entityType","id","tagName"],"type":"object"}},"confluentcloud:index/getTransitGatewayAttachment:getTransitGatewayAttachment":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.TransitGatewayAttachment`\" pulumi-lang-dotnet=\"`confluentcloud.TransitGatewayAttachment`\" pulumi-lang-go=\"`TransitGatewayAttachment`\" pulumi-lang-python=\"`TransitGatewayAttachment`\" pulumi-lang-yaml=\"`confluentcloud.TransitGatewayAttachment`\" pulumi-lang-java=\"`confluentcloud.TransitGatewayAttachment`\"\u003e`confluentcloud.TransitGatewayAttachment`\u003c/span\u003e describes a Transit Gateway Attachment data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getTransitGatewayAttachment({\n        id: \"tgwa-abc123\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    const exampleUsingName = await confluentcloud.getTransitGatewayAttachment({\n        displayName: \"my_tgwa\",\n        environment: {\n            id: \"env-xyz456\",\n        },\n    });\n    return {\n        exampleUsingId: exampleUsingId,\n        exampleUsingName: exampleUsingName,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_transit_gateway_attachment(id=\"tgwa-abc123\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_name = confluentcloud.get_transit_gateway_attachment(display_name=\"my_tgwa\",\n    environment={\n        \"id\": \"env-xyz456\",\n    })\npulumi.export(\"exampleUsingName\", example_using_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetTransitGatewayAttachment.Invoke(new()\n    {\n        Id = \"tgwa-abc123\",\n        Environment = new ConfluentCloud.Inputs.GetTransitGatewayAttachmentEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    var exampleUsingName = ConfluentCloud.GetTransitGatewayAttachment.Invoke(new()\n    {\n        DisplayName = \"my_tgwa\",\n        Environment = new ConfluentCloud.Inputs.GetTransitGatewayAttachmentEnvironmentInputArgs\n        {\n            Id = \"env-xyz456\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n        [\"exampleUsingName\"] = exampleUsingName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.LookupTransitGatewayAttachment(ctx, \u0026confluentcloud.LookupTransitGatewayAttachmentArgs{\n\t\t\tId: pulumi.StringRef(\"tgwa-abc123\"),\n\t\t\tEnvironment: confluentcloud.GetTransitGatewayAttachmentEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\texampleUsingName, err := confluentcloud.LookupTransitGatewayAttachment(ctx, \u0026confluentcloud.LookupTransitGatewayAttachmentArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"my_tgwa\"),\n\t\t\tEnvironment: confluentcloud.GetTransitGatewayAttachmentEnvironment{\n\t\t\t\tId: \"env-xyz456\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingName\", exampleUsingName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetTransitGatewayAttachmentArgs;\nimport com.pulumi.confluentcloud.inputs.GetTransitGatewayAttachmentEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getTransitGatewayAttachment(GetTransitGatewayAttachmentArgs.builder()\n            .id(\"tgwa-abc123\")\n            .environment(GetTransitGatewayAttachmentEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingName = ConfluentcloudFunctions.getTransitGatewayAttachment(GetTransitGatewayAttachmentArgs.builder()\n            .displayName(\"my_tgwa\")\n            .environment(GetTransitGatewayAttachmentEnvironmentArgs.builder()\n                .id(\"env-xyz456\")\n                .build())\n            .build());\n\n        ctx.export(\"exampleUsingName\", exampleUsingName);\n    }\n}\n```\n```yaml\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getTransitGatewayAttachment\n      arguments:\n        id: tgwa-abc123\n        environment:\n          id: env-xyz456\n  exampleUsingName:\n    fn::invoke:\n      function: confluentcloud:getTransitGatewayAttachment\n      arguments:\n        displayName: my_tgwa\n        environment:\n          id: env-xyz456\noutputs:\n  exampleUsingId: ${exampleUsingId}\n  exampleUsingName: ${exampleUsingName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getTransitGatewayAttachment.\n","properties":{"displayName":{"type":"string","description":"A human-readable name for the Transit Gateway Attachment.\n"},"environment":{"$ref":"#/types/confluentcloud:index/getTransitGatewayAttachmentEnvironment:getTransitGatewayAttachmentEnvironment","description":"(Required Configuration Block) supports the following:\n"},"id":{"type":"string","description":"The ID of the Peering, for example, `tgwa-abc123`.\n"}},"type":"object","required":["environment"]},"outputs":{"description":"A collection of values returned by getTransitGatewayAttachment.\n","properties":{"aws":{"description":"(Required Configuration Block) The AWS-specific Transit Gateway Attachment details. It supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getTransitGatewayAttachmentAw:getTransitGatewayAttachmentAw"},"type":"array"},"displayName":{"description":"(Required String) The name of the Transit Gateway Attachment.\n","type":"string"},"environment":{"$ref":"#/types/confluentcloud:index/getTransitGatewayAttachmentEnvironment:getTransitGatewayAttachmentEnvironment","description":"(Required Configuration Block) supports the following:\n"},"id":{"description":"(Required String) The ID of the Network that the Transit Gateway Attachment belongs to, for example, `n-abc123`.\n","type":"string"},"networks":{"description":"(Required Configuration Block) supports the following:\n","items":{"$ref":"#/types/confluentcloud:index/getTransitGatewayAttachmentNetwork:getTransitGatewayAttachmentNetwork"},"type":"array"}},"required":["aws","displayName","environment","id","networks"],"type":"object"}},"confluentcloud:index/getUser:getUser":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.getUser`\" pulumi-lang-dotnet=\"`confluentcloud.getUser`\" pulumi-lang-go=\"`getUser`\" pulumi-lang-python=\"`get_user`\" pulumi-lang-yaml=\"`confluentcloud.getUser`\" pulumi-lang-java=\"`confluentcloud.getUser`\"\u003e`confluentcloud.getUser`\u003c/span\u003e describes a User data source.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nexport = async () =\u003e {\n    const exampleUsingId = await confluentcloud.getUser({\n        id: \"u-abc123\",\n    });\n    const exampleUsingEmail = await confluentcloud.getUser({\n        email: \"test123@gmail.com\",\n    });\n    const test_env = new confluentcloud.Environment(\"test-env\", {displayName: `env_for_${exampleUsingId.fullName}`});\n    const standard_cluster_on_aws = new confluentcloud.KafkaCluster(\"standard-cluster-on-aws\", {\n        displayName: \"standard_kafka_cluster_on_aws\",\n        availability: \"SINGLE_ZONE\",\n        cloud: \"AWS\",\n        region: \"us-west-2\",\n        standard: {},\n        environment: {\n            id: test_env.id,\n        },\n    });\n    const test_role_binding = new confluentcloud.RoleBinding(\"test-role-binding\", {\n        principal: `User:${exampleUsingEmail.id}`,\n        roleName: \"CloudClusterAdmin\",\n        crnPattern: standard_cluster_on_aws.rbacCrn,\n    });\n    const exampleUsingFullName = await confluentcloud.getUser({\n        fullName: \"John Doe\",\n    });\n    return {\n        exampleUsingId: exampleUsingId,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nexample_using_id = confluentcloud.get_user(id=\"u-abc123\")\npulumi.export(\"exampleUsingId\", example_using_id)\nexample_using_email = confluentcloud.get_user(email=\"test123@gmail.com\")\ntest_env = confluentcloud.Environment(\"test-env\", display_name=f\"env_for_{example_using_id.full_name}\")\nstandard_cluster_on_aws = confluentcloud.KafkaCluster(\"standard-cluster-on-aws\",\n    display_name=\"standard_kafka_cluster_on_aws\",\n    availability=\"SINGLE_ZONE\",\n    cloud=\"AWS\",\n    region=\"us-west-2\",\n    standard={},\n    environment={\n        \"id\": test_env.id,\n    })\ntest_role_binding = confluentcloud.RoleBinding(\"test-role-binding\",\n    principal=f\"User:{example_using_email.id}\",\n    role_name=\"CloudClusterAdmin\",\n    crn_pattern=standard_cluster_on_aws.rbac_crn)\nexample_using_full_name = confluentcloud.get_user(full_name=\"John Doe\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleUsingId = ConfluentCloud.GetUser.Invoke(new()\n    {\n        Id = \"u-abc123\",\n    });\n\n    var exampleUsingEmail = ConfluentCloud.GetUser.Invoke(new()\n    {\n        Email = \"test123@gmail.com\",\n    });\n\n    var test_env = new ConfluentCloud.Environment(\"test-env\", new()\n    {\n        DisplayName = $\"env_for_{exampleUsingId.Apply(getUserResult =\u003e getUserResult.FullName)}\",\n    });\n\n    var standard_cluster_on_aws = new ConfluentCloud.KafkaCluster(\"standard-cluster-on-aws\", new()\n    {\n        DisplayName = \"standard_kafka_cluster_on_aws\",\n        Availability = \"SINGLE_ZONE\",\n        Cloud = \"AWS\",\n        Region = \"us-west-2\",\n        Standard = null,\n        Environment = new ConfluentCloud.Inputs.KafkaClusterEnvironmentArgs\n        {\n            Id = test_env.Id,\n        },\n    });\n\n    var test_role_binding = new ConfluentCloud.RoleBinding(\"test-role-binding\", new()\n    {\n        Principal = $\"User:{exampleUsingEmail.Apply(getUserResult =\u003e getUserResult.Id)}\",\n        RoleName = \"CloudClusterAdmin\",\n        CrnPattern = standard_cluster_on_aws.RbacCrn,\n    });\n\n    var exampleUsingFullName = ConfluentCloud.GetUser.Invoke(new()\n    {\n        FullName = \"John Doe\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleUsingId\"] = exampleUsingId,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUsingId, err := confluentcloud.GetUser(ctx, \u0026confluentcloud.GetUserArgs{\n\t\t\tId: pulumi.StringRef(\"u-abc123\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleUsingId\", exampleUsingId)\n\t\texampleUsingEmail, err := confluentcloud.GetUser(ctx, \u0026confluentcloud.GetUserArgs{\n\t\t\tEmail: pulumi.StringRef(\"test123@gmail.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest_env, err := confluentcloud.NewEnvironment(ctx, \"test-env\", \u0026confluentcloud.EnvironmentArgs{\n\t\t\tDisplayName: pulumi.Sprintf(\"env_for_%v\", exampleUsingId.FullName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstandard_cluster_on_aws, err := confluentcloud.NewKafkaCluster(ctx, \"standard-cluster-on-aws\", \u0026confluentcloud.KafkaClusterArgs{\n\t\t\tDisplayName:  pulumi.String(\"standard_kafka_cluster_on_aws\"),\n\t\t\tAvailability: pulumi.String(\"SINGLE_ZONE\"),\n\t\t\tCloud:        pulumi.String(\"AWS\"),\n\t\t\tRegion:       pulumi.String(\"us-west-2\"),\n\t\t\tStandard:     \u0026confluentcloud.KafkaClusterStandardArgs{},\n\t\t\tEnvironment: \u0026confluentcloud.KafkaClusterEnvironmentArgs{\n\t\t\t\tId: test_env.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.NewRoleBinding(ctx, \"test-role-binding\", \u0026confluentcloud.RoleBindingArgs{\n\t\t\tPrincipal:  pulumi.Sprintf(\"User:%v\", exampleUsingEmail.Id),\n\t\t\tRoleName:   pulumi.String(\"CloudClusterAdmin\"),\n\t\t\tCrnPattern: standard_cluster_on_aws.RbacCrn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = confluentcloud.GetUser(ctx, \u0026confluentcloud.GetUserArgs{\n\t\t\tFullName: pulumi.StringRef(\"John Doe\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport com.pulumi.confluentcloud.inputs.GetUserArgs;\nimport com.pulumi.confluentcloud.Environment;\nimport com.pulumi.confluentcloud.EnvironmentArgs;\nimport com.pulumi.confluentcloud.KafkaCluster;\nimport com.pulumi.confluentcloud.KafkaClusterArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterStandardArgs;\nimport com.pulumi.confluentcloud.inputs.KafkaClusterEnvironmentArgs;\nimport com.pulumi.confluentcloud.RoleBinding;\nimport com.pulumi.confluentcloud.RoleBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var exampleUsingId = ConfluentcloudFunctions.getUser(GetUserArgs.builder()\n            .id(\"u-abc123\")\n            .build());\n\n        ctx.export(\"exampleUsingId\", exampleUsingId);\n        final var exampleUsingEmail = ConfluentcloudFunctions.getUser(GetUserArgs.builder()\n            .email(\"test123@gmail.com\")\n            .build());\n\n        var test_env = new Environment(\"test-env\", EnvironmentArgs.builder()\n            .displayName(String.format(\"env_for_%s\", exampleUsingId.fullName()))\n            .build());\n\n        var standard_cluster_on_aws = new KafkaCluster(\"standard-cluster-on-aws\", KafkaClusterArgs.builder()\n            .displayName(\"standard_kafka_cluster_on_aws\")\n            .availability(\"SINGLE_ZONE\")\n            .cloud(\"AWS\")\n            .region(\"us-west-2\")\n            .standard(KafkaClusterStandardArgs.builder()\n                .build())\n            .environment(KafkaClusterEnvironmentArgs.builder()\n                .id(test_env.id())\n                .build())\n            .build());\n\n        var test_role_binding = new RoleBinding(\"test-role-binding\", RoleBindingArgs.builder()\n            .principal(String.format(\"User:%s\", exampleUsingEmail.id()))\n            .roleName(\"CloudClusterAdmin\")\n            .crnPattern(standard_cluster_on_aws.rbacCrn())\n            .build());\n\n        final var exampleUsingFullName = ConfluentcloudFunctions.getUser(GetUserArgs.builder()\n            .fullName(\"John Doe\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test-env:\n    type: confluentcloud:Environment\n    properties:\n      displayName: env_for_${exampleUsingId.fullName}\n  standard-cluster-on-aws:\n    type: confluentcloud:KafkaCluster\n    properties:\n      displayName: standard_kafka_cluster_on_aws\n      availability: SINGLE_ZONE\n      cloud: AWS\n      region: us-west-2\n      standard: {}\n      environment:\n        id: ${[\"test-env\"].id}\n  test-role-binding:\n    type: confluentcloud:RoleBinding\n    properties:\n      principal: User:${exampleUsingEmail.id}\n      roleName: CloudClusterAdmin\n      crnPattern: ${[\"standard-cluster-on-aws\"].rbacCrn}\nvariables:\n  exampleUsingId:\n    fn::invoke:\n      function: confluentcloud:getUser\n      arguments:\n        id: u-abc123\n  exampleUsingEmail:\n    fn::invoke:\n      function: confluentcloud:getUser\n      arguments:\n        email: test123@gmail.com\n  exampleUsingFullName:\n    fn::invoke:\n      function: confluentcloud:getUser\n      arguments:\n        fullName: John Doe\noutputs:\n  exampleUsingId: ${exampleUsingId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getUser.\n","properties":{"email":{"type":"string","description":"The email address of the User.\n\n\u003e **Note:** Exactly one from the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`fullName`\" pulumi-lang-dotnet=\"`FullName`\" pulumi-lang-go=\"`fullName`\" pulumi-lang-python=\"`full_name`\" pulumi-lang-yaml=\"`fullName`\" pulumi-lang-java=\"`fullName`\"\u003e`full_name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e attributes must be specified.\n"},"fullName":{"type":"string","description":"The full name of the User.\n"},"id":{"type":"string","description":"The ID of the User (e.g., `u-abc123`).\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getUser.\n","properties":{"apiVersion":{"description":"(Required String) An API Version of the schema version of the User.\n","type":"string"},"email":{"description":"(Required String) The email address of the User.\n","type":"string"},"fullName":{"description":"(Required String) The full name of the User.\n","type":"string"},"id":{"description":"(Required String) The ID of the User, for example, `u-abc123`.\n","type":"string"},"kind":{"description":"(Required String) A kind of the User.\n","type":"string"}},"required":["apiVersion","email","fullName","id","kind"],"type":"object"}},"confluentcloud:index/getUsers:getUsers":{"description":"[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)\n\n\u003cspan pulumi-lang-nodejs=\"`confluentcloud.getUsers`\" pulumi-lang-dotnet=\"`confluentcloud.getUsers`\" pulumi-lang-go=\"`getUsers`\" pulumi-lang-python=\"`get_users`\" pulumi-lang-yaml=\"`confluentcloud.getUsers`\" pulumi-lang-java=\"`confluentcloud.getUsers`\"\u003e`confluentcloud.getUsers`\u003c/span\u003e describes a data source for Users.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as confluentcloud from \"@pulumi/confluentcloud\";\n\nconst main = confluentcloud.getUsers({});\nexport const users = main.then(main =\u003e main.ids);\n```\n```python\nimport pulumi\nimport pulumi_confluentcloud as confluentcloud\n\nmain = confluentcloud.get_users()\npulumi.export(\"users\", main.ids)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ConfluentCloud = Pulumi.ConfluentCloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ConfluentCloud.GetUsers.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"users\"] = main.Apply(getUsersResult =\u003e getUsersResult.Ids),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-confluentcloud/sdk/v2/go/confluentcloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := confluentcloud.GetUsers(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"users\", main.Ids)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.confluentcloud.ConfluentcloudFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = ConfluentcloudFunctions.getUsers(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"users\", main.ids());\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: confluentcloud:getUsers\n      arguments: {}\noutputs:\n  users: ${main.ids}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getUsers.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ids":{"description":"(Required List of Strings) The list of User IDs, for example: `[\"u-abc123\", \"u-abc124\"]`.\n","items":{"type":"string"},"type":"array"}},"required":["ids","id"],"type":"object"}},"pulumi:providers:confluentcloud/terraformConfig":{"description":"This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.","inputs":{"properties":{"__self__":{"type":"ref","$ref":"#/provider"}},"type":"pulumi:providers:confluentcloud/terraformConfig","required":["__self__"]},"outputs":{"properties":{"result":{"additionalProperties":{"$ref":"pulumi.json#/Any"},"type":"object"}},"required":["result"],"type":"object"}}}}