1. Packages
  2. Packages
  3. Redpanda Provider
  4. API Docs
  5. Cluster
Viewing docs for redpanda 2.0.0
published on Wednesday, Jun 3, 2026 by redpanda-data
Viewing docs for redpanda 2.0.0
published on Wednesday, Jun 3, 2026 by redpanda-data

    Cluster resource

    Enables the provisioning and management of Redpanda clusters on AWS and GCP. A cluster must always have a network and resource group.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as redpanda from "@pulumi/redpanda";
    
    const example = new redpanda.ResourceGroup("example", {name: "example-resource-group"});
    const exampleNetwork = new redpanda.Network("example", {
        name: "example-network",
        resourceGroupId: example.id,
        cloudProvider: "aws",
        region: "us-west-2",
        clusterType: "dedicated",
        cidrBlock: "10.0.0.0/20",
    });
    const exampleCluster = new redpanda.Cluster("example", {
        name: "example-cluster",
        resourceGroupId: example.id,
        networkId: exampleNetwork.id,
        cloudProvider: "aws",
        region: "us-west-2",
        clusterType: "dedicated",
        connectionType: "public",
        throughputTier: "tier-1-aws-v2-arm",
        zones: [
            "us-west-2a",
            "us-west-2b",
            "us-west-2c",
        ],
    });
    
    import pulumi
    import pulumi_redpanda as redpanda
    
    example = redpanda.ResourceGroup("example", name="example-resource-group")
    example_network = redpanda.Network("example",
        name="example-network",
        resource_group_id=example.id,
        cloud_provider="aws",
        region="us-west-2",
        cluster_type="dedicated",
        cidr_block="10.0.0.0/20")
    example_cluster = redpanda.Cluster("example",
        name="example-cluster",
        resource_group_id=example.id,
        network_id=example_network.id,
        cloud_provider="aws",
        region="us-west-2",
        cluster_type="dedicated",
        connection_type="public",
        throughput_tier="tier-1-aws-v2-arm",
        zones=[
            "us-west-2a",
            "us-west-2b",
            "us-west-2c",
        ])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-terraform-provider/sdks/go/redpanda/v2/redpanda"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		example, err := redpanda.NewResourceGroup(ctx, "example", &redpanda.ResourceGroupArgs{
    			Name: pulumi.String("example-resource-group"),
    		})
    		if err != nil {
    			return err
    		}
    		exampleNetwork, err := redpanda.NewNetwork(ctx, "example", &redpanda.NetworkArgs{
    			Name:            pulumi.String("example-network"),
    			ResourceGroupId: example.ID(),
    			CloudProvider:   pulumi.String("aws"),
    			Region:          pulumi.String("us-west-2"),
    			ClusterType:     pulumi.String("dedicated"),
    			CidrBlock:       pulumi.String("10.0.0.0/20"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewCluster(ctx, "example", &redpanda.ClusterArgs{
    			Name:            pulumi.String("example-cluster"),
    			ResourceGroupId: example.ID(),
    			NetworkId:       exampleNetwork.ID(),
    			CloudProvider:   pulumi.String("aws"),
    			Region:          pulumi.String("us-west-2"),
    			ClusterType:     pulumi.String("dedicated"),
    			ConnectionType:  pulumi.String("public"),
    			ThroughputTier:  pulumi.String("tier-1-aws-v2-arm"),
    			Zones: pulumi.StringArray{
    				pulumi.String("us-west-2a"),
    				pulumi.String("us-west-2b"),
    				pulumi.String("us-west-2c"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Redpanda = Pulumi.Redpanda;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Redpanda.ResourceGroup("example", new()
        {
            Name = "example-resource-group",
        });
    
        var exampleNetwork = new Redpanda.Network("example", new()
        {
            Name = "example-network",
            ResourceGroupId = example.Id,
            CloudProvider = "aws",
            Region = "us-west-2",
            ClusterType = "dedicated",
            CidrBlock = "10.0.0.0/20",
        });
    
        var exampleCluster = new Redpanda.Cluster("example", new()
        {
            Name = "example-cluster",
            ResourceGroupId = example.Id,
            NetworkId = exampleNetwork.Id,
            CloudProvider = "aws",
            Region = "us-west-2",
            ClusterType = "dedicated",
            ConnectionType = "public",
            ThroughputTier = "tier-1-aws-v2-arm",
            Zones = new[]
            {
                "us-west-2a",
                "us-west-2b",
                "us-west-2c",
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.redpanda.ResourceGroup;
    import com.pulumi.redpanda.ResourceGroupArgs;
    import com.pulumi.redpanda.Network;
    import com.pulumi.redpanda.NetworkArgs;
    import com.pulumi.redpanda.Cluster;
    import com.pulumi.redpanda.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new ResourceGroup("example", ResourceGroupArgs.builder()
                .name("example-resource-group")
                .build());
    
            var exampleNetwork = new Network("exampleNetwork", NetworkArgs.builder()
                .name("example-network")
                .resourceGroupId(example.id())
                .cloudProvider("aws")
                .region("us-west-2")
                .clusterType("dedicated")
                .cidrBlock("10.0.0.0/20")
                .build());
    
            var exampleCluster = new Cluster("exampleCluster", ClusterArgs.builder()
                .name("example-cluster")
                .resourceGroupId(example.id())
                .networkId(exampleNetwork.id())
                .cloudProvider("aws")
                .region("us-west-2")
                .clusterType("dedicated")
                .connectionType("public")
                .throughputTier("tier-1-aws-v2-arm")
                .zones(            
                    "us-west-2a",
                    "us-west-2b",
                    "us-west-2c")
                .build());
    
        }
    }
    
    resources:
      example:
        type: redpanda:ResourceGroup
        properties:
          name: example-resource-group
      exampleNetwork:
        type: redpanda:Network
        name: example
        properties:
          name: example-network
          resourceGroupId: ${example.id}
          cloudProvider: aws
          region: us-west-2
          clusterType: dedicated
          cidrBlock: 10.0.0.0/20
      exampleCluster:
        type: redpanda:Cluster
        name: example
        properties:
          name: example-cluster
          resourceGroupId: ${example.id}
          networkId: ${exampleNetwork.id}
          cloudProvider: aws
          region: us-west-2
          clusterType: dedicated
          connectionType: public
          throughputTier: tier-1-aws-v2-arm
          zones:
            - us-west-2a
            - us-west-2b
            - us-west-2c
    
    Example coming soon!
    

    Advanced Usage

    On AWS

    import * as pulumi from "@pulumi/pulumi";
    import * as redpanda from "@pulumi/redpanda";
    
    const test = new redpanda.ResourceGroup("test", {name: resourceGroupName});
    const testNetwork = new redpanda.Network("test", {
        name: networkName,
        resourceGroupId: test.id,
        cloudProvider: cloudProvider,
        region: region,
        clusterType: "dedicated",
        cidrBlock: "10.0.0.0/20",
        timeouts: {
            create: "20m",
            "delete": "20m",
        },
    });
    const testCluster = new redpanda.Cluster("test", {
        name: clusterName,
        resourceGroupId: test.id,
        networkId: testNetwork.id,
        cloudProvider: cloudProvider,
        region: region,
        clusterType: "dedicated",
        connectionType: "public",
        throughputTier: throughputTier,
        zones: zones,
        allowDeletion: clusterAllowDeletion,
        clusterConfiguration: {
            customPropertiesJson: JSON.stringify({
                enable_shadow_linking: clusterEnableShadowLinking,
                schema_registry_enable_authorization: true,
            }),
        },
        maintenanceWindowConfig: {
            dayHour: {
                dayOfWeek: maintenanceDayOfWeek,
                hourOfDay: maintenanceHourOfDay,
            },
        },
        tags: clusterTags,
        timeouts: {
            create: "90m",
        },
    });
    const testUser = new redpanda.User("test", {
        name: userName,
        password: userPasswordWo != null ? null : userPw,
        passwordWo: userPasswordWo,
        passwordWoVersion: userPasswordWoVersion,
        mechanism: mechanism,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: userAllowDeletion,
    });
    const testTopic = new redpanda.Topic("test", {
        name: topicName,
        partitionCount: partitionCount,
        replicationFactor: replicationFactor,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: true,
        configuration: topicConfiguration != null ? topicConfiguration : {
            "cleanup.policy": "delete",
            "retention.ms": topicRetentionMs,
        },
    }, {
        dependsOn: [testUser],
    });
    // Bootstrap SR ACL grants for the provider's own Bearer-token principal.
    // Two grants are required: the SUBJECT-scope grant authorizes
    // POST /subjects/<subj>/versions; the REGISTRY-scope grant authorizes the
    // follow-up GET /schemas/ids/<id>/versions that the SR client (franz-go) makes
    // to fetch the full schema metadata after create. Without the REGISTRY grant,
    // the schema is created but the follow-up GET 403s and the resource fails.
    // User:* is broader than necessary; tighten once the exact principal is
    // documented as discoverable.
    const providerBootstrapSubject = new redpanda.SchemaRegistryAcl("provider_bootstrap_subject", {
        clusterId: testCluster.id,
        principal: "User:*",
        resourceType: "SUBJECT",
        resourceName: topicName,
        patternType: "PREFIXED",
        host: "*",
        operation: "ALL",
        permission: "ALLOW",
        allowDeletion: true,
    });
    const providerBootstrapRegistry = new redpanda.SchemaRegistryAcl("provider_bootstrap_registry", {
        clusterId: testCluster.id,
        principal: "User:*",
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "ALL",
        permission: "ALLOW",
        allowDeletion: true,
    });
    const clusterAdmin = new redpanda.Acl("cluster_admin", {
        resourceType: "CLUSTER",
        resourceName: "kafka-cluster",
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "ALL",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const schemaRegistryAdmin = new redpanda.Acl("schema_registry_admin", {
        resourceType: "CLUSTER",
        resourceName: "kafka-cluster",
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "ALTER",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const clusterAction = new redpanda.Acl("cluster_action", {
        resourceType: "CLUSTER",
        resourceName: "kafka-cluster",
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "CLUSTER_ACTION",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const topicAccess = new redpanda.Acl("topic_access", {
        resourceType: "TOPIC",
        resourceName: testTopic.name,
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "ALL",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const allTestTopic = new redpanda.SchemaRegistryAcl("all_test_topic", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "SUBJECT",
        resourceName: `${topicName}-`,
        patternType: "PREFIXED",
        host: "*",
        operation: "ALL",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const describeRegistry = new redpanda.SchemaRegistryAcl("describe_registry", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "DESCRIBE",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const alterConfigsRegistry = new redpanda.SchemaRegistryAcl("alter_configs_registry", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "ALTER_CONFIGS",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const readRegistry = new redpanda.SchemaRegistryAcl("read_registry", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "READ",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const writeRegistry = new redpanda.SchemaRegistryAcl("write_registry", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "WRITE",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const userSchema = new redpanda.Schema("user_schema", {
        clusterId: testCluster.id,
        subject: `${topicName}-value`,
        schemaType: schemaType,
        schema: userSchemaDefinition,
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
            clusterAction,
            topicAccess,
            providerBootstrapSubject,
            providerBootstrapRegistry,
            allTestTopic,
            describeRegistry,
            alterConfigsRegistry,
            readRegistry,
            writeRegistry,
        ],
    });
    const userEventSchema = new redpanda.Schema("user_event_schema", {
        clusterId: testCluster.id,
        subject: `${topicName}-events-value`,
        schemaType: schemaType,
        schema: userEventSchemaDefinition,
        allowDeletion: true,
        references: [{
            name: "User",
            subject: userSchema.subject,
            version: userSchema.version,
        }],
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
            clusterAction,
            topicAccess,
            providerBootstrapSubject,
            providerBootstrapRegistry,
            allTestTopic,
            describeRegistry,
            alterConfigsRegistry,
            readRegistry,
            writeRegistry,
        ],
    });
    const productSchema = new redpanda.Schema("product_schema", {
        clusterId: testCluster.id,
        subject: `${topicName}-product-value`,
        schemaType: schemaType,
        schema: productSchemaDefinition,
        compatibility: compatibilityLevel,
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
            clusterAction,
            topicAccess,
            providerBootstrapSubject,
            providerBootstrapRegistry,
            allTestTopic,
            describeRegistry,
            alterConfigsRegistry,
            readRegistry,
            writeRegistry,
        ],
    });
    const developer = new redpanda.Role("developer", {
        name: roleName,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: roleAllowDeletion,
    });
    const roleTopicRead = new redpanda.Acl("role_topic_read", {
        resourceType: "TOPIC",
        resourceName: testTopic.name,
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`RedpandaRole:${developer.name}`,
        host: "*",
        operation: "READ",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const readProduct = new redpanda.SchemaRegistryAcl("read_product", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "SUBJECT",
        resourceName: "product-",
        patternType: "PREFIXED",
        host: "*",
        operation: "READ",
        permission: "ALLOW",
        allowDeletion: srAclAllowDeletion,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const writeOrders = new redpanda.SchemaRegistryAcl("write_orders", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "SUBJECT",
        resourceName: "orders-value",
        patternType: "LITERAL",
        host: "*",
        operation: "WRITE",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const developerAssignment = new redpanda.RoleAssignment("developer_assignment", {
        roleName: developer.name,
        principal: pulumi.interpolate`User:${testUser.name}`,
        clusterApiUrl: testCluster.clusterApiUrl,
    }, {
        dependsOn: [testUser],
    });
    export const userSchemaInfo = {
        id: userSchema.schemaId,
        subject: userSchema.subject,
        version: userSchema.version,
        type: userSchema.schemaType,
    };
    export const userEventSchemaInfo = {
        id: userEventSchema.schemaId,
        subject: userEventSchema.subject,
        version: userEventSchema.version,
        type: userEventSchema.schemaType,
        references: userEventSchema.references,
    };
    export const productSchemaInfo = {
        id: productSchema.schemaId,
        subject: productSchema.subject,
        version: productSchema.version,
        type: productSchema.schemaType,
        compatibility: productSchema.compatibility,
    };
    
    import pulumi
    import json
    import pulumi_redpanda as redpanda
    
    test = redpanda.ResourceGroup("test", name=resource_group_name)
    test_network = redpanda.Network("test",
        name=network_name,
        resource_group_id=test.id,
        cloud_provider=cloud_provider,
        region=region,
        cluster_type="dedicated",
        cidr_block="10.0.0.0/20",
        timeouts={
            "create": "20m",
            "delete": "20m",
        })
    test_cluster = redpanda.Cluster("test",
        name=cluster_name,
        resource_group_id=test.id,
        network_id=test_network.id,
        cloud_provider=cloud_provider,
        region=region,
        cluster_type="dedicated",
        connection_type="public",
        throughput_tier=throughput_tier,
        zones=zones,
        allow_deletion=cluster_allow_deletion,
        cluster_configuration={
            "custom_properties_json": json.dumps({
                "enable_shadow_linking": cluster_enable_shadow_linking,
                "schema_registry_enable_authorization": True,
            }),
        },
        maintenance_window_config={
            "day_hour": {
                "day_of_week": maintenance_day_of_week,
                "hour_of_day": maintenance_hour_of_day,
            },
        },
        tags=cluster_tags,
        timeouts={
            "create": "90m",
        })
    test_user = redpanda.User("test",
        name=user_name,
        password=None if user_password_wo != None else user_pw,
        password_wo=user_password_wo,
        password_wo_version=user_password_wo_version,
        mechanism=mechanism,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=user_allow_deletion)
    test_topic = redpanda.Topic("test",
        name=topic_name,
        partition_count=partition_count,
        replication_factor=replication_factor,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=True,
        configuration=topic_configuration if topic_configuration != None else {
            "cleanup.policy": "delete",
            "retention.ms": topic_retention_ms,
        },
        opts = pulumi.ResourceOptions(depends_on=[test_user]))
    # Bootstrap SR ACL grants for the provider's own Bearer-token principal.
    # Two grants are required: the SUBJECT-scope grant authorizes
    # POST /subjects/<subj>/versions; the REGISTRY-scope grant authorizes the
    # follow-up GET /schemas/ids/<id>/versions that the SR client (franz-go) makes
    # to fetch the full schema metadata after create. Without the REGISTRY grant,
    # the schema is created but the follow-up GET 403s and the resource fails.
    # User:* is broader than necessary; tighten once the exact principal is
    # documented as discoverable.
    provider_bootstrap_subject = redpanda.SchemaRegistryAcl("provider_bootstrap_subject",
        cluster_id=test_cluster.id,
        principal="User:*",
        resource_type="SUBJECT",
        resource_name_=topic_name,
        pattern_type="PREFIXED",
        host="*",
        operation="ALL",
        permission="ALLOW",
        allow_deletion=True)
    provider_bootstrap_registry = redpanda.SchemaRegistryAcl("provider_bootstrap_registry",
        cluster_id=test_cluster.id,
        principal="User:*",
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="ALL",
        permission="ALLOW",
        allow_deletion=True)
    cluster_admin = redpanda.Acl("cluster_admin",
        resource_type="CLUSTER",
        resource_name_="kafka-cluster",
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="ALL",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    schema_registry_admin = redpanda.Acl("schema_registry_admin",
        resource_type="CLUSTER",
        resource_name_="kafka-cluster",
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="ALTER",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    cluster_action = redpanda.Acl("cluster_action",
        resource_type="CLUSTER",
        resource_name_="kafka-cluster",
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="CLUSTER_ACTION",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    topic_access = redpanda.Acl("topic_access",
        resource_type="TOPIC",
        resource_name_=test_topic.name,
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="ALL",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    all_test_topic = redpanda.SchemaRegistryAcl("all_test_topic",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="SUBJECT",
        resource_name_=f"{topic_name}-",
        pattern_type="PREFIXED",
        host="*",
        operation="ALL",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    describe_registry = redpanda.SchemaRegistryAcl("describe_registry",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="DESCRIBE",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    alter_configs_registry = redpanda.SchemaRegistryAcl("alter_configs_registry",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="ALTER_CONFIGS",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    read_registry = redpanda.SchemaRegistryAcl("read_registry",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="READ",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    write_registry = redpanda.SchemaRegistryAcl("write_registry",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="WRITE",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    user_schema = redpanda.Schema("user_schema",
        cluster_id=test_cluster.id,
        subject=f"{topic_name}-value",
        schema_type=schema_type,
        schema=user_schema_definition,
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
                cluster_action,
                topic_access,
                provider_bootstrap_subject,
                provider_bootstrap_registry,
                all_test_topic,
                describe_registry,
                alter_configs_registry,
                read_registry,
                write_registry,
            ]))
    user_event_schema = redpanda.Schema("user_event_schema",
        cluster_id=test_cluster.id,
        subject=f"{topic_name}-events-value",
        schema_type=schema_type,
        schema=user_event_schema_definition,
        allow_deletion=True,
        references=[{
            "name": "User",
            "subject": user_schema.subject,
            "version": user_schema.version,
        }],
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
                cluster_action,
                topic_access,
                provider_bootstrap_subject,
                provider_bootstrap_registry,
                all_test_topic,
                describe_registry,
                alter_configs_registry,
                read_registry,
                write_registry,
            ]))
    product_schema = redpanda.Schema("product_schema",
        cluster_id=test_cluster.id,
        subject=f"{topic_name}-product-value",
        schema_type=schema_type,
        schema=product_schema_definition,
        compatibility=compatibility_level,
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
                cluster_action,
                topic_access,
                provider_bootstrap_subject,
                provider_bootstrap_registry,
                all_test_topic,
                describe_registry,
                alter_configs_registry,
                read_registry,
                write_registry,
            ]))
    developer = redpanda.Role("developer",
        name=role_name,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=role_allow_deletion)
    role_topic_read = redpanda.Acl("role_topic_read",
        resource_type="TOPIC",
        resource_name_=test_topic.name,
        resource_pattern_type="LITERAL",
        principal=developer.name.apply(lambda name: f"RedpandaRole:{name}"),
        host="*",
        operation="READ",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    read_product = redpanda.SchemaRegistryAcl("read_product",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="SUBJECT",
        resource_name_="product-",
        pattern_type="PREFIXED",
        host="*",
        operation="READ",
        permission="ALLOW",
        allow_deletion=sr_acl_allow_deletion,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    write_orders = redpanda.SchemaRegistryAcl("write_orders",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="SUBJECT",
        resource_name_="orders-value",
        pattern_type="LITERAL",
        host="*",
        operation="WRITE",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    developer_assignment = redpanda.RoleAssignment("developer_assignment",
        role_name=developer.name,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        cluster_api_url=test_cluster.cluster_api_url,
        opts = pulumi.ResourceOptions(depends_on=[test_user]))
    pulumi.export("userSchemaInfo", {
        "id": user_schema.schema_id,
        "subject": user_schema.subject,
        "version": user_schema.version,
        "type": user_schema.schema_type,
    })
    pulumi.export("userEventSchemaInfo", {
        "id": user_event_schema.schema_id,
        "subject": user_event_schema.subject,
        "version": user_event_schema.version,
        "type": user_event_schema.schema_type,
        "references": user_event_schema.references,
    })
    pulumi.export("productSchemaInfo", {
        "id": product_schema.schema_id,
        "subject": product_schema.subject,
        "version": product_schema.version,
        "type": product_schema.schema_type,
        "compatibility": product_schema.compatibility,
    })
    
    package main
    
    import (
    	"encoding/json"
    	"fmt"
    
    	"github.com/pulumi/pulumi-terraform-provider/sdks/go/redpanda/v2/redpanda"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		test, err := redpanda.NewResourceGroup(ctx, "test", &redpanda.ResourceGroupArgs{
    			Name: pulumi.Any(resourceGroupName),
    		})
    		if err != nil {
    			return err
    		}
    		testNetwork, err := redpanda.NewNetwork(ctx, "test", &redpanda.NetworkArgs{
    			Name:            pulumi.Any(networkName),
    			ResourceGroupId: test.ID(),
    			CloudProvider:   pulumi.Any(cloudProvider),
    			Region:          pulumi.Any(region),
    			ClusterType:     pulumi.String("dedicated"),
    			CidrBlock:       pulumi.String("10.0.0.0/20"),
    			Timeouts: &redpanda.NetworkTimeoutsArgs{
    				Create: pulumi.String("20m"),
    				Delete: pulumi.String("20m"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		tmpJSON0, err := json.Marshal(map[string]interface{}{
    			"enable_shadow_linking":                clusterEnableShadowLinking,
    			"schema_registry_enable_authorization": true,
    		})
    		if err != nil {
    			return err
    		}
    		json0 := string(tmpJSON0)
    		testCluster, err := redpanda.NewCluster(ctx, "test", &redpanda.ClusterArgs{
    			Name:            pulumi.Any(clusterName),
    			ResourceGroupId: test.ID(),
    			NetworkId:       testNetwork.ID(),
    			CloudProvider:   pulumi.Any(cloudProvider),
    			Region:          pulumi.Any(region),
    			ClusterType:     pulumi.String("dedicated"),
    			ConnectionType:  pulumi.String("public"),
    			ThroughputTier:  pulumi.Any(throughputTier),
    			Zones:           pulumi.Any(zones),
    			AllowDeletion:   pulumi.Any(clusterAllowDeletion),
    			ClusterConfiguration: &redpanda.ClusterClusterConfigurationArgs{
    				CustomPropertiesJson: pulumi.String(json0),
    			},
    			MaintenanceWindowConfig: &redpanda.ClusterMaintenanceWindowConfigArgs{
    				DayHour: &redpanda.ClusterMaintenanceWindowConfigDayHourArgs{
    					DayOfWeek: pulumi.Any(maintenanceDayOfWeek),
    					HourOfDay: pulumi.Any(maintenanceHourOfDay),
    				},
    			},
    			Tags: pulumi.Any(clusterTags),
    			Timeouts: &redpanda.ClusterTimeoutsArgs{
    				Create: pulumi.String("90m"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		var tmp0 pulumi.String
    		if userPasswordWo != nil {
    			tmp0 = nil
    		} else {
    			tmp0 = pulumi.Any(userPw)
    		}
    		testUser, err := redpanda.NewUser(ctx, "test", &redpanda.UserArgs{
    			Name:              pulumi.Any(userName),
    			Password:          pulumi.String(tmp0),
    			PasswordWo:        pulumi.Any(userPasswordWo),
    			PasswordWoVersion: pulumi.Any(userPasswordWoVersion),
    			Mechanism:         pulumi.Any(mechanism),
    			ClusterApiUrl:     testCluster.ClusterApiUrl,
    			AllowDeletion:     pulumi.Any(userAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		var tmp1 pulumi.StringMap
    		if topicConfiguration != nil {
    			tmp1 = pulumi.Any(topicConfiguration)
    		} else {
    			tmp1 = pulumi.StringMap{
    				"cleanup.policy": pulumi.String("delete"),
    				"retention.ms":   pulumi.Any(topicRetentionMs),
    			}
    		}
    		testTopic, err := redpanda.NewTopic(ctx, "test", &redpanda.TopicArgs{
    			Name:              pulumi.Any(topicName),
    			PartitionCount:    pulumi.Any(partitionCount),
    			ReplicationFactor: pulumi.Any(replicationFactor),
    			ClusterApiUrl:     testCluster.ClusterApiUrl,
    			AllowDeletion:     pulumi.Bool(true),
    			Configuration:     pulumi.StringMap(tmp1),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			testUser,
    		}))
    		if err != nil {
    			return err
    		}
    		// Bootstrap SR ACL grants for the provider's own Bearer-token principal.
    		// Two grants are required: the SUBJECT-scope grant authorizes
    		// POST /subjects/<subj>/versions; the REGISTRY-scope grant authorizes the
    		// follow-up GET /schemas/ids/<id>/versions that the SR client (franz-go) makes
    		// to fetch the full schema metadata after create. Without the REGISTRY grant,
    		// the schema is created but the follow-up GET 403s and the resource fails.
    		// User:* is broader than necessary; tighten once the exact principal is
    		// documented as discoverable.
    		providerBootstrapSubject, err := redpanda.NewSchemaRegistryAcl(ctx, "provider_bootstrap_subject", &redpanda.SchemaRegistryAclArgs{
    			ClusterId:     testCluster.ID(),
    			Principal:     pulumi.String("User:*"),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.Any(topicName),
    			PatternType:   pulumi.String("PREFIXED"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("ALL"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		providerBootstrapRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "provider_bootstrap_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId:     testCluster.ID(),
    			Principal:     pulumi.String("User:*"),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("ALL"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		clusterAdmin, err := redpanda.NewAcl(ctx, "cluster_admin", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("CLUSTER"),
    			ResourceName:        pulumi.String("kafka-cluster"),
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("ALL"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		schemaRegistryAdmin, err := redpanda.NewAcl(ctx, "schema_registry_admin", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("CLUSTER"),
    			ResourceName:        pulumi.String("kafka-cluster"),
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("ALTER"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		clusterAction, err := redpanda.NewAcl(ctx, "cluster_action", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("CLUSTER"),
    			ResourceName:        pulumi.String("kafka-cluster"),
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("CLUSTER_ACTION"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		topicAccess, err := redpanda.NewAcl(ctx, "topic_access", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("TOPIC"),
    			ResourceName:        testTopic.Name,
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("ALL"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		allTestTopic, err := redpanda.NewSchemaRegistryAcl(ctx, "all_test_topic", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.Sprintf("%v-", topicName),
    			PatternType:   pulumi.String("PREFIXED"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("ALL"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		describeRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "describe_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("DESCRIBE"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		alterConfigsRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "alter_configs_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("ALTER_CONFIGS"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		readRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "read_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("READ"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		writeRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "write_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("WRITE"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		userSchema, err := redpanda.NewSchema(ctx, "user_schema", &redpanda.SchemaArgs{
    			ClusterId:     testCluster.ID(),
    			Subject:       pulumi.Sprintf("%v-value", topicName),
    			SchemaType:    pulumi.Any(schemaType),
    			Schema:        pulumi.Any(userSchemaDefinition),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    			clusterAction,
    			topicAccess,
    			providerBootstrapSubject,
    			providerBootstrapRegistry,
    			allTestTopic,
    			describeRegistry,
    			alterConfigsRegistry,
    			readRegistry,
    			writeRegistry,
    		}))
    		if err != nil {
    			return err
    		}
    		userEventSchema, err := redpanda.NewSchema(ctx, "user_event_schema", &redpanda.SchemaArgs{
    			ClusterId:     testCluster.ID(),
    			Subject:       pulumi.Sprintf("%v-events-value", topicName),
    			SchemaType:    pulumi.Any(schemaType),
    			Schema:        pulumi.Any(userEventSchemaDefinition),
    			AllowDeletion: pulumi.Bool(true),
    			References: redpanda.SchemaReferenceArray{
    				&redpanda.SchemaReferenceArgs{
    					Name:    pulumi.String("User"),
    					Subject: userSchema.Subject,
    					Version: userSchema.Version,
    				},
    			},
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    			clusterAction,
    			topicAccess,
    			providerBootstrapSubject,
    			providerBootstrapRegistry,
    			allTestTopic,
    			describeRegistry,
    			alterConfigsRegistry,
    			readRegistry,
    			writeRegistry,
    		}))
    		if err != nil {
    			return err
    		}
    		productSchema, err := redpanda.NewSchema(ctx, "product_schema", &redpanda.SchemaArgs{
    			ClusterId:     testCluster.ID(),
    			Subject:       pulumi.Sprintf("%v-product-value", topicName),
    			SchemaType:    pulumi.Any(schemaType),
    			Schema:        pulumi.Any(productSchemaDefinition),
    			Compatibility: pulumi.Any(compatibilityLevel),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    			clusterAction,
    			topicAccess,
    			providerBootstrapSubject,
    			providerBootstrapRegistry,
    			allTestTopic,
    			describeRegistry,
    			alterConfigsRegistry,
    			readRegistry,
    			writeRegistry,
    		}))
    		if err != nil {
    			return err
    		}
    		developer, err := redpanda.NewRole(ctx, "developer", &redpanda.RoleArgs{
    			Name:          pulumi.Any(roleName),
    			ClusterApiUrl: testCluster.ClusterApiUrl,
    			AllowDeletion: pulumi.Any(roleAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewAcl(ctx, "role_topic_read", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("TOPIC"),
    			ResourceName:        testTopic.Name,
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: developer.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("RedpandaRole:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("READ"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewSchemaRegistryAcl(ctx, "read_product", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.String("product-"),
    			PatternType:   pulumi.String("PREFIXED"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("READ"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Any(srAclAllowDeletion),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewSchemaRegistryAcl(ctx, "write_orders", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.String("orders-value"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("WRITE"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewRoleAssignment(ctx, "developer_assignment", &redpanda.RoleAssignmentArgs{
    			RoleName: developer.Name,
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ClusterApiUrl: testCluster.ClusterApiUrl,
    		}, pulumi.DependsOn([]pulumi.Resource{
    			testUser,
    		}))
    		if err != nil {
    			return err
    		}
    		ctx.Export("userSchemaInfo", pulumi.Map{
    			"id":      userSchema.SchemaId,
    			"subject": userSchema.Subject,
    			"version": userSchema.Version,
    			"type":    userSchema.SchemaType,
    		})
    		ctx.Export("userEventSchemaInfo", pulumi.Map{
    			"id":         userEventSchema.SchemaId,
    			"subject":    userEventSchema.Subject,
    			"version":    userEventSchema.Version,
    			"type":       userEventSchema.SchemaType,
    			"references": userEventSchema.References,
    		})
    		ctx.Export("productSchemaInfo", pulumi.Map{
    			"id":            productSchema.SchemaId,
    			"subject":       productSchema.Subject,
    			"version":       productSchema.Version,
    			"type":          productSchema.SchemaType,
    			"compatibility": productSchema.Compatibility,
    		})
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using System.Text.Json;
    using Pulumi;
    using Redpanda = Pulumi.Redpanda;
    
    return await Deployment.RunAsync(() => 
    {
        var test = new Redpanda.ResourceGroup("test", new()
        {
            Name = resourceGroupName,
        });
    
        var testNetwork = new Redpanda.Network("test", new()
        {
            Name = networkName,
            ResourceGroupId = test.Id,
            CloudProvider = cloudProvider,
            Region = region,
            ClusterType = "dedicated",
            CidrBlock = "10.0.0.0/20",
            Timeouts = new Redpanda.Inputs.NetworkTimeoutsArgs
            {
                Create = "20m",
                Delete = "20m",
            },
        });
    
        var testCluster = new Redpanda.Cluster("test", new()
        {
            Name = clusterName,
            ResourceGroupId = test.Id,
            NetworkId = testNetwork.Id,
            CloudProvider = cloudProvider,
            Region = region,
            ClusterType = "dedicated",
            ConnectionType = "public",
            ThroughputTier = throughputTier,
            Zones = zones,
            AllowDeletion = clusterAllowDeletion,
            ClusterConfiguration = new Redpanda.Inputs.ClusterClusterConfigurationArgs
            {
                CustomPropertiesJson = JsonSerializer.Serialize(new Dictionary<string, object?>
                {
                    ["enable_shadow_linking"] = clusterEnableShadowLinking,
                    ["schema_registry_enable_authorization"] = true,
                }),
            },
            MaintenanceWindowConfig = new Redpanda.Inputs.ClusterMaintenanceWindowConfigArgs
            {
                DayHour = new Redpanda.Inputs.ClusterMaintenanceWindowConfigDayHourArgs
                {
                    DayOfWeek = maintenanceDayOfWeek,
                    HourOfDay = maintenanceHourOfDay,
                },
            },
            Tags = clusterTags,
            Timeouts = new Redpanda.Inputs.ClusterTimeoutsArgs
            {
                Create = "90m",
            },
        });
    
        var testUser = new Redpanda.User("test", new()
        {
            Name = userName,
            Password = userPasswordWo != null ? null : userPw,
            PasswordWo = userPasswordWo,
            PasswordWoVersion = userPasswordWoVersion,
            Mechanism = mechanism,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = userAllowDeletion,
        });
    
        var testTopic = new Redpanda.Topic("test", new()
        {
            Name = topicName,
            PartitionCount = partitionCount,
            ReplicationFactor = replicationFactor,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = true,
            Configuration = topicConfiguration != null ? topicConfiguration : 
            {
                { "cleanup.policy", "delete" },
                { "retention.ms", topicRetentionMs },
            },
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                testUser,
            },
        });
    
        // Bootstrap SR ACL grants for the provider's own Bearer-token principal.
        // Two grants are required: the SUBJECT-scope grant authorizes
        // POST /subjects/<subj>/versions; the REGISTRY-scope grant authorizes the
        // follow-up GET /schemas/ids/<id>/versions that the SR client (franz-go) makes
        // to fetch the full schema metadata after create. Without the REGISTRY grant,
        // the schema is created but the follow-up GET 403s and the resource fails.
        // User:* is broader than necessary; tighten once the exact principal is
        // documented as discoverable.
        var providerBootstrapSubject = new Redpanda.SchemaRegistryAcl("provider_bootstrap_subject", new()
        {
            ClusterId = testCluster.Id,
            Principal = "User:*",
            ResourceType = "SUBJECT",
            ResourceName = topicName,
            PatternType = "PREFIXED",
            Host = "*",
            Operation = "ALL",
            Permission = "ALLOW",
            AllowDeletion = true,
        });
    
        var providerBootstrapRegistry = new Redpanda.SchemaRegistryAcl("provider_bootstrap_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = "User:*",
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "ALL",
            Permission = "ALLOW",
            AllowDeletion = true,
        });
    
        var clusterAdmin = new Redpanda.Acl("cluster_admin", new()
        {
            ResourceType = "CLUSTER",
            ResourceName = "kafka-cluster",
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "ALL",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var schemaRegistryAdmin = new Redpanda.Acl("schema_registry_admin", new()
        {
            ResourceType = "CLUSTER",
            ResourceName = "kafka-cluster",
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "ALTER",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var clusterAction = new Redpanda.Acl("cluster_action", new()
        {
            ResourceType = "CLUSTER",
            ResourceName = "kafka-cluster",
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "CLUSTER_ACTION",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var topicAccess = new Redpanda.Acl("topic_access", new()
        {
            ResourceType = "TOPIC",
            ResourceName = testTopic.Name,
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "ALL",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var allTestTopic = new Redpanda.SchemaRegistryAcl("all_test_topic", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "SUBJECT",
            ResourceName = $"{topicName}-",
            PatternType = "PREFIXED",
            Host = "*",
            Operation = "ALL",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var describeRegistry = new Redpanda.SchemaRegistryAcl("describe_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "DESCRIBE",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var alterConfigsRegistry = new Redpanda.SchemaRegistryAcl("alter_configs_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "ALTER_CONFIGS",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var readRegistry = new Redpanda.SchemaRegistryAcl("read_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "READ",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var writeRegistry = new Redpanda.SchemaRegistryAcl("write_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "WRITE",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var userSchema = new Redpanda.Schema("user_schema", new()
        {
            ClusterId = testCluster.Id,
            Subject = $"{topicName}-value",
            SchemaType = schemaType,
            Schema = userSchemaDefinition,
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
                clusterAction,
                topicAccess,
                providerBootstrapSubject,
                providerBootstrapRegistry,
                allTestTopic,
                describeRegistry,
                alterConfigsRegistry,
                readRegistry,
                writeRegistry,
            },
        });
    
        var userEventSchema = new Redpanda.Schema("user_event_schema", new()
        {
            ClusterId = testCluster.Id,
            Subject = $"{topicName}-events-value",
            SchemaType = schemaType,
            Schema = userEventSchemaDefinition,
            AllowDeletion = true,
            References = new[]
            {
                new Redpanda.Inputs.SchemaReferenceArgs
                {
                    Name = "User",
                    Subject = userSchema.Subject,
                    Version = userSchema.Version,
                },
            },
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
                clusterAction,
                topicAccess,
                providerBootstrapSubject,
                providerBootstrapRegistry,
                allTestTopic,
                describeRegistry,
                alterConfigsRegistry,
                readRegistry,
                writeRegistry,
            },
        });
    
        var productSchema = new Redpanda.Schema("product_schema", new()
        {
            ClusterId = testCluster.Id,
            Subject = $"{topicName}-product-value",
            SchemaType = schemaType,
            Schema = productSchemaDefinition,
            Compatibility = compatibilityLevel,
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
                clusterAction,
                topicAccess,
                providerBootstrapSubject,
                providerBootstrapRegistry,
                allTestTopic,
                describeRegistry,
                alterConfigsRegistry,
                readRegistry,
                writeRegistry,
            },
        });
    
        var developer = new Redpanda.Role("developer", new()
        {
            Name = roleName,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = roleAllowDeletion,
        });
    
        var roleTopicRead = new Redpanda.Acl("role_topic_read", new()
        {
            ResourceType = "TOPIC",
            ResourceName = testTopic.Name,
            ResourcePatternType = "LITERAL",
            Principal = developer.Name.Apply(name => $"RedpandaRole:{name}"),
            Host = "*",
            Operation = "READ",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var readProduct = new Redpanda.SchemaRegistryAcl("read_product", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "SUBJECT",
            ResourceName = "product-",
            PatternType = "PREFIXED",
            Host = "*",
            Operation = "READ",
            Permission = "ALLOW",
            AllowDeletion = srAclAllowDeletion,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var writeOrders = new Redpanda.SchemaRegistryAcl("write_orders", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "SUBJECT",
            ResourceName = "orders-value",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "WRITE",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var developerAssignment = new Redpanda.RoleAssignment("developer_assignment", new()
        {
            RoleName = developer.Name,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ClusterApiUrl = testCluster.ClusterApiUrl,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                testUser,
            },
        });
    
        return new Dictionary<string, object?>
        {
            ["userSchemaInfo"] = 
            {
                { "id", userSchema.SchemaId },
                { "subject", userSchema.Subject },
                { "version", userSchema.Version },
                { "type", userSchema.SchemaType },
            },
            ["userEventSchemaInfo"] = 
            {
                { "id", userEventSchema.SchemaId },
                { "subject", userEventSchema.Subject },
                { "version", userEventSchema.Version },
                { "type", userEventSchema.SchemaType },
                { "references", userEventSchema.References },
            },
            ["productSchemaInfo"] = 
            {
                { "id", productSchema.SchemaId },
                { "subject", productSchema.Subject },
                { "version", productSchema.Version },
                { "type", productSchema.SchemaType },
                { "compatibility", productSchema.Compatibility },
            },
        };
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.redpanda.ResourceGroup;
    import com.pulumi.redpanda.ResourceGroupArgs;
    import com.pulumi.redpanda.Network;
    import com.pulumi.redpanda.NetworkArgs;
    import com.pulumi.redpanda.inputs.NetworkTimeoutsArgs;
    import com.pulumi.redpanda.Cluster;
    import com.pulumi.redpanda.ClusterArgs;
    import com.pulumi.redpanda.inputs.ClusterClusterConfigurationArgs;
    import com.pulumi.redpanda.inputs.ClusterMaintenanceWindowConfigArgs;
    import com.pulumi.redpanda.inputs.ClusterMaintenanceWindowConfigDayHourArgs;
    import com.pulumi.redpanda.inputs.ClusterTimeoutsArgs;
    import com.pulumi.redpanda.User;
    import com.pulumi.redpanda.UserArgs;
    import com.pulumi.redpanda.Topic;
    import com.pulumi.redpanda.TopicArgs;
    import com.pulumi.redpanda.SchemaRegistryAcl;
    import com.pulumi.redpanda.SchemaRegistryAclArgs;
    import com.pulumi.redpanda.Acl;
    import com.pulumi.redpanda.AclArgs;
    import com.pulumi.redpanda.Schema;
    import com.pulumi.redpanda.SchemaArgs;
    import com.pulumi.redpanda.inputs.SchemaReferenceArgs;
    import com.pulumi.redpanda.Role;
    import com.pulumi.redpanda.RoleArgs;
    import com.pulumi.redpanda.RoleAssignment;
    import com.pulumi.redpanda.RoleAssignmentArgs;
    import static com.pulumi.codegen.internal.Serialization.*;
    import com.pulumi.resources.CustomResourceOptions;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var test = new ResourceGroup("test", ResourceGroupArgs.builder()
                .name(resourceGroupName)
                .build());
    
            var testNetwork = new Network("testNetwork", NetworkArgs.builder()
                .name(networkName)
                .resourceGroupId(test.id())
                .cloudProvider(cloudProvider)
                .region(region)
                .clusterType("dedicated")
                .cidrBlock("10.0.0.0/20")
                .timeouts(NetworkTimeoutsArgs.builder()
                    .create("20m")
                    .delete("20m")
                    .build())
                .build());
    
            var testCluster = new Cluster("testCluster", ClusterArgs.builder()
                .name(clusterName)
                .resourceGroupId(test.id())
                .networkId(testNetwork.id())
                .cloudProvider(cloudProvider)
                .region(region)
                .clusterType("dedicated")
                .connectionType("public")
                .throughputTier(throughputTier)
                .zones(zones)
                .allowDeletion(clusterAllowDeletion)
                .clusterConfiguration(ClusterClusterConfigurationArgs.builder()
                    .customPropertiesJson(serializeJson(
                        jsonObject(
                            jsonProperty("enable_shadow_linking", clusterEnableShadowLinking),
                            jsonProperty("schema_registry_enable_authorization", true)
                        )))
                    .build())
                .maintenanceWindowConfig(ClusterMaintenanceWindowConfigArgs.builder()
                    .dayHour(ClusterMaintenanceWindowConfigDayHourArgs.builder()
                        .dayOfWeek(maintenanceDayOfWeek)
                        .hourOfDay(maintenanceHourOfDay)
                        .build())
                    .build())
                .tags(clusterTags)
                .timeouts(ClusterTimeoutsArgs.builder()
                    .create("90m")
                    .build())
                .build());
    
            var testUser = new User("testUser", UserArgs.builder()
                .name(userName)
                .password(userPasswordWo != null ? null : userPw)
                .passwordWo(userPasswordWo)
                .passwordWoVersion(userPasswordWoVersion)
                .mechanism(mechanism)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(userAllowDeletion)
                .build());
    
            var testTopic = new Topic("testTopic", TopicArgs.builder()
                .name(topicName)
                .partitionCount(partitionCount)
                .replicationFactor(replicationFactor)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(true)
                .configuration(topicConfiguration != null ? topicConfiguration : Map.ofEntries(
                    Map.entry("cleanup.policy", "delete"),
                    Map.entry("retention.ms", topicRetentionMs)
                ))
                .build(), CustomResourceOptions.builder()
                    .dependsOn(testUser)
                    .build());
    
            // Bootstrap SR ACL grants for the provider's own Bearer-token principal.
            // Two grants are required: the SUBJECT-scope grant authorizes
            // POST /subjects/<subj>/versions; the REGISTRY-scope grant authorizes the
            // follow-up GET /schemas/ids/<id>/versions that the SR client (franz-go) makes
            // to fetch the full schema metadata after create. Without the REGISTRY grant,
            // the schema is created but the follow-up GET 403s and the resource fails.
            // User:* is broader than necessary; tighten once the exact principal is
            // documented as discoverable.
            var providerBootstrapSubject = new SchemaRegistryAcl("providerBootstrapSubject", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal("User:*")
                .resourceType("SUBJECT")
                .resourceName(topicName)
                .patternType("PREFIXED")
                .host("*")
                .operation("ALL")
                .permission("ALLOW")
                .allowDeletion(true)
                .build());
    
            var providerBootstrapRegistry = new SchemaRegistryAcl("providerBootstrapRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal("User:*")
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("ALL")
                .permission("ALLOW")
                .allowDeletion(true)
                .build());
    
            var clusterAdmin = new Acl("clusterAdmin", AclArgs.builder()
                .resourceType("CLUSTER")
                .resourceName("kafka-cluster")
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("ALL")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var schemaRegistryAdmin = new Acl("schemaRegistryAdmin", AclArgs.builder()
                .resourceType("CLUSTER")
                .resourceName("kafka-cluster")
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("ALTER")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var clusterAction = new Acl("clusterAction", AclArgs.builder()
                .resourceType("CLUSTER")
                .resourceName("kafka-cluster")
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("CLUSTER_ACTION")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var topicAccess = new Acl("topicAccess", AclArgs.builder()
                .resourceType("TOPIC")
                .resourceName(testTopic.name())
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("ALL")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var allTestTopic = new SchemaRegistryAcl("allTestTopic", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("SUBJECT")
                .resourceName(String.format("%s-", topicName))
                .patternType("PREFIXED")
                .host("*")
                .operation("ALL")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var describeRegistry = new SchemaRegistryAcl("describeRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("DESCRIBE")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var alterConfigsRegistry = new SchemaRegistryAcl("alterConfigsRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("ALTER_CONFIGS")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var readRegistry = new SchemaRegistryAcl("readRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("READ")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var writeRegistry = new SchemaRegistryAcl("writeRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("WRITE")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var userSchema = new Schema("userSchema", SchemaArgs.builder()
                .clusterId(testCluster.id())
                .subject(String.format("%s-value", topicName))
                .schemaType(schemaType)
                .schema(userSchemaDefinition)
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin,
                        clusterAction,
                        topicAccess,
                        providerBootstrapSubject,
                        providerBootstrapRegistry,
                        allTestTopic,
                        describeRegistry,
                        alterConfigsRegistry,
                        readRegistry,
                        writeRegistry)
                    .build());
    
            var userEventSchema = new Schema("userEventSchema", SchemaArgs.builder()
                .clusterId(testCluster.id())
                .subject(String.format("%s-events-value", topicName))
                .schemaType(schemaType)
                .schema(userEventSchemaDefinition)
                .allowDeletion(true)
                .references(SchemaReferenceArgs.builder()
                    .name("User")
                    .subject(userSchema.subject())
                    .version(userSchema.version())
                    .build())
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin,
                        clusterAction,
                        topicAccess,
                        providerBootstrapSubject,
                        providerBootstrapRegistry,
                        allTestTopic,
                        describeRegistry,
                        alterConfigsRegistry,
                        readRegistry,
                        writeRegistry)
                    .build());
    
            var productSchema = new Schema("productSchema", SchemaArgs.builder()
                .clusterId(testCluster.id())
                .subject(String.format("%s-product-value", topicName))
                .schemaType(schemaType)
                .schema(productSchemaDefinition)
                .compatibility(compatibilityLevel)
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin,
                        clusterAction,
                        topicAccess,
                        providerBootstrapSubject,
                        providerBootstrapRegistry,
                        allTestTopic,
                        describeRegistry,
                        alterConfigsRegistry,
                        readRegistry,
                        writeRegistry)
                    .build());
    
            var developer = new Role("developer", RoleArgs.builder()
                .name(roleName)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(roleAllowDeletion)
                .build());
    
            var roleTopicRead = new Acl("roleTopicRead", AclArgs.builder()
                .resourceType("TOPIC")
                .resourceName(testTopic.name())
                .resourcePatternType("LITERAL")
                .principal(developer.name().applyValue(_name -> String.format("RedpandaRole:%s", _name)))
                .host("*")
                .operation("READ")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var readProduct = new SchemaRegistryAcl("readProduct", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("SUBJECT")
                .resourceName("product-")
                .patternType("PREFIXED")
                .host("*")
                .operation("READ")
                .permission("ALLOW")
                .allowDeletion(srAclAllowDeletion)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var writeOrders = new SchemaRegistryAcl("writeOrders", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("SUBJECT")
                .resourceName("orders-value")
                .patternType("LITERAL")
                .host("*")
                .operation("WRITE")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var developerAssignment = new RoleAssignment("developerAssignment", RoleAssignmentArgs.builder()
                .roleName(developer.name())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .clusterApiUrl(testCluster.clusterApiUrl())
                .build(), CustomResourceOptions.builder()
                    .dependsOn(testUser)
                    .build());
    
            ctx.export("userSchemaInfo", Map.ofEntries(
                Map.entry("id", userSchema.schemaId()),
                Map.entry("subject", userSchema.subject()),
                Map.entry("version", userSchema.version()),
                Map.entry("type", userSchema.schemaType())
            ));
            ctx.export("userEventSchemaInfo", Map.ofEntries(
                Map.entry("id", userEventSchema.schemaId()),
                Map.entry("subject", userEventSchema.subject()),
                Map.entry("version", userEventSchema.version()),
                Map.entry("type", userEventSchema.schemaType()),
                Map.entry("references", userEventSchema.references())
            ));
            ctx.export("productSchemaInfo", Map.ofEntries(
                Map.entry("id", productSchema.schemaId()),
                Map.entry("subject", productSchema.subject()),
                Map.entry("version", productSchema.version()),
                Map.entry("type", productSchema.schemaType()),
                Map.entry("compatibility", productSchema.compatibility())
            ));
        }
    }
    
    Example coming soon!
    
    Example coming soon!
    

    On GCP

    import * as pulumi from "@pulumi/pulumi";
    import * as redpanda from "@pulumi/redpanda";
    
    const test = new redpanda.ResourceGroup("test", {name: resourceGroupName});
    const testNetwork = new redpanda.Network("test", {
        name: networkName,
        resourceGroupId: test.id,
        cloudProvider: cloudProvider,
        region: region,
        clusterType: "dedicated",
        cidrBlock: "10.0.0.0/20",
        timeouts: {
            create: "20m",
            "delete": "20m",
        },
    });
    const testCluster = new redpanda.Cluster("test", {
        name: clusterName,
        resourceGroupId: test.id,
        networkId: testNetwork.id,
        cloudProvider: cloudProvider,
        region: region,
        clusterType: "dedicated",
        connectionType: "public",
        throughputTier: throughputTier,
        zones: zones,
        allowDeletion: clusterAllowDeletion,
        clusterConfiguration: {
            customPropertiesJson: JSON.stringify({
                enable_shadow_linking: clusterEnableShadowLinking,
                schema_registry_enable_authorization: true,
            }),
        },
        maintenanceWindowConfig: {
            dayHour: {
                dayOfWeek: maintenanceDayOfWeek,
                hourOfDay: maintenanceHourOfDay,
            },
        },
        tags: clusterTags,
        timeouts: {
            create: "90m",
        },
    });
    const testUser = new redpanda.User("test", {
        name: userName,
        password: userPw,
        mechanism: mechanism,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: userAllowDeletion,
    });
    const testTopic = new redpanda.Topic("test", {
        name: topicName,
        partitionCount: partitionCount,
        replicationFactor: replicationFactor,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: true,
        configuration: topicConfiguration != null ? topicConfiguration : {
            "cleanup.policy": "delete",
            "retention.ms": topicRetentionMs,
        },
    }, {
        dependsOn: [testUser],
    });
    // Bootstrap SR ACL grants for the provider's own Bearer-token principal.
    // SUBJECT grant authorizes POST /subjects/<subj>/versions; REGISTRY grant
    // authorizes the franz-go follow-up GET /schemas/ids/<id>/versions.
    const providerBootstrapSubject = new redpanda.SchemaRegistryAcl("provider_bootstrap_subject", {
        clusterId: testCluster.id,
        principal: "User:*",
        resourceType: "SUBJECT",
        resourceName: topicName,
        patternType: "PREFIXED",
        host: "*",
        operation: "ALL",
        permission: "ALLOW",
        allowDeletion: true,
    });
    const providerBootstrapRegistry = new redpanda.SchemaRegistryAcl("provider_bootstrap_registry", {
        clusterId: testCluster.id,
        principal: "User:*",
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "ALL",
        permission: "ALLOW",
        allowDeletion: true,
    });
    const clusterAdmin = new redpanda.Acl("cluster_admin", {
        resourceType: "CLUSTER",
        resourceName: "kafka-cluster",
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "ALL",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const schemaRegistryAdmin = new redpanda.Acl("schema_registry_admin", {
        resourceType: "CLUSTER",
        resourceName: "kafka-cluster",
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "ALTER",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const clusterAction = new redpanda.Acl("cluster_action", {
        resourceType: "CLUSTER",
        resourceName: "kafka-cluster",
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "CLUSTER_ACTION",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const topicAccess = new redpanda.Acl("topic_access", {
        resourceType: "TOPIC",
        resourceName: testTopic.name,
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "ALL",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const allTestTopic = new redpanda.SchemaRegistryAcl("all_test_topic", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "SUBJECT",
        resourceName: `${topicName}-`,
        patternType: "PREFIXED",
        host: "*",
        operation: "ALL",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const describeRegistry = new redpanda.SchemaRegistryAcl("describe_registry", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "DESCRIBE",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const alterConfigsRegistry = new redpanda.SchemaRegistryAcl("alter_configs_registry", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "ALTER_CONFIGS",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const readRegistry = new redpanda.SchemaRegistryAcl("read_registry", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "READ",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const writeRegistry = new redpanda.SchemaRegistryAcl("write_registry", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "WRITE",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const userSchema = new redpanda.Schema("user_schema", {
        clusterId: testCluster.id,
        subject: `${topicName}-value`,
        schemaType: schemaType,
        schema: userSchemaDefinition,
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
            clusterAction,
            topicAccess,
            providerBootstrapSubject,
            providerBootstrapRegistry,
            allTestTopic,
            describeRegistry,
            alterConfigsRegistry,
            readRegistry,
            writeRegistry,
        ],
    });
    const userEventSchema = new redpanda.Schema("user_event_schema", {
        clusterId: testCluster.id,
        subject: `${topicName}-events-value`,
        schemaType: schemaType,
        schema: userEventSchemaDefinition,
        allowDeletion: true,
        references: [{
            name: "User",
            subject: userSchema.subject,
            version: userSchema.version,
        }],
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
            clusterAction,
            topicAccess,
            providerBootstrapSubject,
            providerBootstrapRegistry,
            allTestTopic,
            describeRegistry,
            alterConfigsRegistry,
            readRegistry,
            writeRegistry,
        ],
    });
    const productSchema = new redpanda.Schema("product_schema", {
        clusterId: testCluster.id,
        subject: `${topicName}-product-value`,
        schemaType: schemaType,
        schema: productSchemaDefinition,
        compatibility: compatibilityLevel,
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
            clusterAction,
            topicAccess,
            providerBootstrapSubject,
            providerBootstrapRegistry,
            allTestTopic,
            describeRegistry,
            alterConfigsRegistry,
            readRegistry,
            writeRegistry,
        ],
    });
    const developer = new redpanda.Role("developer", {
        name: roleName,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: roleAllowDeletion,
    });
    const roleTopicRead = new redpanda.Acl("role_topic_read", {
        resourceType: "TOPIC",
        resourceName: testTopic.name,
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`RedpandaRole:${developer.name}`,
        host: "*",
        operation: "READ",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const readProduct = new redpanda.SchemaRegistryAcl("read_product", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "SUBJECT",
        resourceName: "product-",
        patternType: "PREFIXED",
        host: "*",
        operation: "READ",
        permission: "ALLOW",
        allowDeletion: srAclAllowDeletion,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const writeOrders = new redpanda.SchemaRegistryAcl("write_orders", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "SUBJECT",
        resourceName: "orders-value",
        patternType: "LITERAL",
        host: "*",
        operation: "WRITE",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const describeTestTopic = new redpanda.SchemaRegistryAcl("describe_test_topic", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "SUBJECT",
        resourceName: `${topicName}-`,
        patternType: "PREFIXED",
        host: "*",
        operation: "DESCRIBE",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const developerAssignment = new redpanda.RoleAssignment("developer_assignment", {
        roleName: developer.name,
        principal: pulumi.interpolate`User:${testUser.name}`,
        clusterApiUrl: testCluster.clusterApiUrl,
    }, {
        dependsOn: [testUser],
    });
    export const userSchemaInfo = {
        id: userSchema.schemaId,
        subject: userSchema.subject,
        version: userSchema.version,
        type: userSchema.schemaType,
    };
    export const userEventSchemaInfo = {
        id: userEventSchema.schemaId,
        subject: userEventSchema.subject,
        version: userEventSchema.version,
        type: userEventSchema.schemaType,
        references: userEventSchema.references,
    };
    export const productSchemaInfo = {
        id: productSchema.schemaId,
        subject: productSchema.subject,
        version: productSchema.version,
        type: productSchema.schemaType,
        compatibility: productSchema.compatibility,
    };
    
    import pulumi
    import json
    import pulumi_redpanda as redpanda
    
    test = redpanda.ResourceGroup("test", name=resource_group_name)
    test_network = redpanda.Network("test",
        name=network_name,
        resource_group_id=test.id,
        cloud_provider=cloud_provider,
        region=region,
        cluster_type="dedicated",
        cidr_block="10.0.0.0/20",
        timeouts={
            "create": "20m",
            "delete": "20m",
        })
    test_cluster = redpanda.Cluster("test",
        name=cluster_name,
        resource_group_id=test.id,
        network_id=test_network.id,
        cloud_provider=cloud_provider,
        region=region,
        cluster_type="dedicated",
        connection_type="public",
        throughput_tier=throughput_tier,
        zones=zones,
        allow_deletion=cluster_allow_deletion,
        cluster_configuration={
            "custom_properties_json": json.dumps({
                "enable_shadow_linking": cluster_enable_shadow_linking,
                "schema_registry_enable_authorization": True,
            }),
        },
        maintenance_window_config={
            "day_hour": {
                "day_of_week": maintenance_day_of_week,
                "hour_of_day": maintenance_hour_of_day,
            },
        },
        tags=cluster_tags,
        timeouts={
            "create": "90m",
        })
    test_user = redpanda.User("test",
        name=user_name,
        password=user_pw,
        mechanism=mechanism,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=user_allow_deletion)
    test_topic = redpanda.Topic("test",
        name=topic_name,
        partition_count=partition_count,
        replication_factor=replication_factor,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=True,
        configuration=topic_configuration if topic_configuration != None else {
            "cleanup.policy": "delete",
            "retention.ms": topic_retention_ms,
        },
        opts = pulumi.ResourceOptions(depends_on=[test_user]))
    # Bootstrap SR ACL grants for the provider's own Bearer-token principal.
    # SUBJECT grant authorizes POST /subjects/<subj>/versions; REGISTRY grant
    # authorizes the franz-go follow-up GET /schemas/ids/<id>/versions.
    provider_bootstrap_subject = redpanda.SchemaRegistryAcl("provider_bootstrap_subject",
        cluster_id=test_cluster.id,
        principal="User:*",
        resource_type="SUBJECT",
        resource_name_=topic_name,
        pattern_type="PREFIXED",
        host="*",
        operation="ALL",
        permission="ALLOW",
        allow_deletion=True)
    provider_bootstrap_registry = redpanda.SchemaRegistryAcl("provider_bootstrap_registry",
        cluster_id=test_cluster.id,
        principal="User:*",
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="ALL",
        permission="ALLOW",
        allow_deletion=True)
    cluster_admin = redpanda.Acl("cluster_admin",
        resource_type="CLUSTER",
        resource_name_="kafka-cluster",
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="ALL",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    schema_registry_admin = redpanda.Acl("schema_registry_admin",
        resource_type="CLUSTER",
        resource_name_="kafka-cluster",
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="ALTER",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    cluster_action = redpanda.Acl("cluster_action",
        resource_type="CLUSTER",
        resource_name_="kafka-cluster",
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="CLUSTER_ACTION",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    topic_access = redpanda.Acl("topic_access",
        resource_type="TOPIC",
        resource_name_=test_topic.name,
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="ALL",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    all_test_topic = redpanda.SchemaRegistryAcl("all_test_topic",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="SUBJECT",
        resource_name_=f"{topic_name}-",
        pattern_type="PREFIXED",
        host="*",
        operation="ALL",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    describe_registry = redpanda.SchemaRegistryAcl("describe_registry",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="DESCRIBE",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    alter_configs_registry = redpanda.SchemaRegistryAcl("alter_configs_registry",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="ALTER_CONFIGS",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    read_registry = redpanda.SchemaRegistryAcl("read_registry",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="READ",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    write_registry = redpanda.SchemaRegistryAcl("write_registry",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="WRITE",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    user_schema = redpanda.Schema("user_schema",
        cluster_id=test_cluster.id,
        subject=f"{topic_name}-value",
        schema_type=schema_type,
        schema=user_schema_definition,
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
                cluster_action,
                topic_access,
                provider_bootstrap_subject,
                provider_bootstrap_registry,
                all_test_topic,
                describe_registry,
                alter_configs_registry,
                read_registry,
                write_registry,
            ]))
    user_event_schema = redpanda.Schema("user_event_schema",
        cluster_id=test_cluster.id,
        subject=f"{topic_name}-events-value",
        schema_type=schema_type,
        schema=user_event_schema_definition,
        allow_deletion=True,
        references=[{
            "name": "User",
            "subject": user_schema.subject,
            "version": user_schema.version,
        }],
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
                cluster_action,
                topic_access,
                provider_bootstrap_subject,
                provider_bootstrap_registry,
                all_test_topic,
                describe_registry,
                alter_configs_registry,
                read_registry,
                write_registry,
            ]))
    product_schema = redpanda.Schema("product_schema",
        cluster_id=test_cluster.id,
        subject=f"{topic_name}-product-value",
        schema_type=schema_type,
        schema=product_schema_definition,
        compatibility=compatibility_level,
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
                cluster_action,
                topic_access,
                provider_bootstrap_subject,
                provider_bootstrap_registry,
                all_test_topic,
                describe_registry,
                alter_configs_registry,
                read_registry,
                write_registry,
            ]))
    developer = redpanda.Role("developer",
        name=role_name,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=role_allow_deletion)
    role_topic_read = redpanda.Acl("role_topic_read",
        resource_type="TOPIC",
        resource_name_=test_topic.name,
        resource_pattern_type="LITERAL",
        principal=developer.name.apply(lambda name: f"RedpandaRole:{name}"),
        host="*",
        operation="READ",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    read_product = redpanda.SchemaRegistryAcl("read_product",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="SUBJECT",
        resource_name_="product-",
        pattern_type="PREFIXED",
        host="*",
        operation="READ",
        permission="ALLOW",
        allow_deletion=sr_acl_allow_deletion,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    write_orders = redpanda.SchemaRegistryAcl("write_orders",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="SUBJECT",
        resource_name_="orders-value",
        pattern_type="LITERAL",
        host="*",
        operation="WRITE",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    describe_test_topic = redpanda.SchemaRegistryAcl("describe_test_topic",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="SUBJECT",
        resource_name_=f"{topic_name}-",
        pattern_type="PREFIXED",
        host="*",
        operation="DESCRIBE",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    developer_assignment = redpanda.RoleAssignment("developer_assignment",
        role_name=developer.name,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        cluster_api_url=test_cluster.cluster_api_url,
        opts = pulumi.ResourceOptions(depends_on=[test_user]))
    pulumi.export("userSchemaInfo", {
        "id": user_schema.schema_id,
        "subject": user_schema.subject,
        "version": user_schema.version,
        "type": user_schema.schema_type,
    })
    pulumi.export("userEventSchemaInfo", {
        "id": user_event_schema.schema_id,
        "subject": user_event_schema.subject,
        "version": user_event_schema.version,
        "type": user_event_schema.schema_type,
        "references": user_event_schema.references,
    })
    pulumi.export("productSchemaInfo", {
        "id": product_schema.schema_id,
        "subject": product_schema.subject,
        "version": product_schema.version,
        "type": product_schema.schema_type,
        "compatibility": product_schema.compatibility,
    })
    
    package main
    
    import (
    	"encoding/json"
    	"fmt"
    
    	"github.com/pulumi/pulumi-terraform-provider/sdks/go/redpanda/v2/redpanda"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		test, err := redpanda.NewResourceGroup(ctx, "test", &redpanda.ResourceGroupArgs{
    			Name: pulumi.Any(resourceGroupName),
    		})
    		if err != nil {
    			return err
    		}
    		testNetwork, err := redpanda.NewNetwork(ctx, "test", &redpanda.NetworkArgs{
    			Name:            pulumi.Any(networkName),
    			ResourceGroupId: test.ID(),
    			CloudProvider:   pulumi.Any(cloudProvider),
    			Region:          pulumi.Any(region),
    			ClusterType:     pulumi.String("dedicated"),
    			CidrBlock:       pulumi.String("10.0.0.0/20"),
    			Timeouts: &redpanda.NetworkTimeoutsArgs{
    				Create: pulumi.String("20m"),
    				Delete: pulumi.String("20m"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		tmpJSON0, err := json.Marshal(map[string]interface{}{
    			"enable_shadow_linking":                clusterEnableShadowLinking,
    			"schema_registry_enable_authorization": true,
    		})
    		if err != nil {
    			return err
    		}
    		json0 := string(tmpJSON0)
    		testCluster, err := redpanda.NewCluster(ctx, "test", &redpanda.ClusterArgs{
    			Name:            pulumi.Any(clusterName),
    			ResourceGroupId: test.ID(),
    			NetworkId:       testNetwork.ID(),
    			CloudProvider:   pulumi.Any(cloudProvider),
    			Region:          pulumi.Any(region),
    			ClusterType:     pulumi.String("dedicated"),
    			ConnectionType:  pulumi.String("public"),
    			ThroughputTier:  pulumi.Any(throughputTier),
    			Zones:           pulumi.Any(zones),
    			AllowDeletion:   pulumi.Any(clusterAllowDeletion),
    			ClusterConfiguration: &redpanda.ClusterClusterConfigurationArgs{
    				CustomPropertiesJson: pulumi.String(json0),
    			},
    			MaintenanceWindowConfig: &redpanda.ClusterMaintenanceWindowConfigArgs{
    				DayHour: &redpanda.ClusterMaintenanceWindowConfigDayHourArgs{
    					DayOfWeek: pulumi.Any(maintenanceDayOfWeek),
    					HourOfDay: pulumi.Any(maintenanceHourOfDay),
    				},
    			},
    			Tags: pulumi.Any(clusterTags),
    			Timeouts: &redpanda.ClusterTimeoutsArgs{
    				Create: pulumi.String("90m"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		testUser, err := redpanda.NewUser(ctx, "test", &redpanda.UserArgs{
    			Name:          pulumi.Any(userName),
    			Password:      pulumi.Any(userPw),
    			Mechanism:     pulumi.Any(mechanism),
    			ClusterApiUrl: testCluster.ClusterApiUrl,
    			AllowDeletion: pulumi.Any(userAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		var tmp0 pulumi.StringMap
    		if topicConfiguration != nil {
    			tmp0 = pulumi.Any(topicConfiguration)
    		} else {
    			tmp0 = pulumi.StringMap{
    				"cleanup.policy": pulumi.String("delete"),
    				"retention.ms":   pulumi.Any(topicRetentionMs),
    			}
    		}
    		testTopic, err := redpanda.NewTopic(ctx, "test", &redpanda.TopicArgs{
    			Name:              pulumi.Any(topicName),
    			PartitionCount:    pulumi.Any(partitionCount),
    			ReplicationFactor: pulumi.Any(replicationFactor),
    			ClusterApiUrl:     testCluster.ClusterApiUrl,
    			AllowDeletion:     pulumi.Bool(true),
    			Configuration:     pulumi.StringMap(tmp0),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			testUser,
    		}))
    		if err != nil {
    			return err
    		}
    		// Bootstrap SR ACL grants for the provider's own Bearer-token principal.
    		// SUBJECT grant authorizes POST /subjects/<subj>/versions; REGISTRY grant
    		// authorizes the franz-go follow-up GET /schemas/ids/<id>/versions.
    		providerBootstrapSubject, err := redpanda.NewSchemaRegistryAcl(ctx, "provider_bootstrap_subject", &redpanda.SchemaRegistryAclArgs{
    			ClusterId:     testCluster.ID(),
    			Principal:     pulumi.String("User:*"),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.Any(topicName),
    			PatternType:   pulumi.String("PREFIXED"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("ALL"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		providerBootstrapRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "provider_bootstrap_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId:     testCluster.ID(),
    			Principal:     pulumi.String("User:*"),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("ALL"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		clusterAdmin, err := redpanda.NewAcl(ctx, "cluster_admin", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("CLUSTER"),
    			ResourceName:        pulumi.String("kafka-cluster"),
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("ALL"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		schemaRegistryAdmin, err := redpanda.NewAcl(ctx, "schema_registry_admin", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("CLUSTER"),
    			ResourceName:        pulumi.String("kafka-cluster"),
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("ALTER"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		clusterAction, err := redpanda.NewAcl(ctx, "cluster_action", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("CLUSTER"),
    			ResourceName:        pulumi.String("kafka-cluster"),
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("CLUSTER_ACTION"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		topicAccess, err := redpanda.NewAcl(ctx, "topic_access", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("TOPIC"),
    			ResourceName:        testTopic.Name,
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("ALL"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		allTestTopic, err := redpanda.NewSchemaRegistryAcl(ctx, "all_test_topic", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.Sprintf("%v-", topicName),
    			PatternType:   pulumi.String("PREFIXED"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("ALL"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		describeRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "describe_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("DESCRIBE"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		alterConfigsRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "alter_configs_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("ALTER_CONFIGS"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		readRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "read_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("READ"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		writeRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "write_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("WRITE"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		userSchema, err := redpanda.NewSchema(ctx, "user_schema", &redpanda.SchemaArgs{
    			ClusterId:     testCluster.ID(),
    			Subject:       pulumi.Sprintf("%v-value", topicName),
    			SchemaType:    pulumi.Any(schemaType),
    			Schema:        pulumi.Any(userSchemaDefinition),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    			clusterAction,
    			topicAccess,
    			providerBootstrapSubject,
    			providerBootstrapRegistry,
    			allTestTopic,
    			describeRegistry,
    			alterConfigsRegistry,
    			readRegistry,
    			writeRegistry,
    		}))
    		if err != nil {
    			return err
    		}
    		userEventSchema, err := redpanda.NewSchema(ctx, "user_event_schema", &redpanda.SchemaArgs{
    			ClusterId:     testCluster.ID(),
    			Subject:       pulumi.Sprintf("%v-events-value", topicName),
    			SchemaType:    pulumi.Any(schemaType),
    			Schema:        pulumi.Any(userEventSchemaDefinition),
    			AllowDeletion: pulumi.Bool(true),
    			References: redpanda.SchemaReferenceArray{
    				&redpanda.SchemaReferenceArgs{
    					Name:    pulumi.String("User"),
    					Subject: userSchema.Subject,
    					Version: userSchema.Version,
    				},
    			},
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    			clusterAction,
    			topicAccess,
    			providerBootstrapSubject,
    			providerBootstrapRegistry,
    			allTestTopic,
    			describeRegistry,
    			alterConfigsRegistry,
    			readRegistry,
    			writeRegistry,
    		}))
    		if err != nil {
    			return err
    		}
    		productSchema, err := redpanda.NewSchema(ctx, "product_schema", &redpanda.SchemaArgs{
    			ClusterId:     testCluster.ID(),
    			Subject:       pulumi.Sprintf("%v-product-value", topicName),
    			SchemaType:    pulumi.Any(schemaType),
    			Schema:        pulumi.Any(productSchemaDefinition),
    			Compatibility: pulumi.Any(compatibilityLevel),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    			clusterAction,
    			topicAccess,
    			providerBootstrapSubject,
    			providerBootstrapRegistry,
    			allTestTopic,
    			describeRegistry,
    			alterConfigsRegistry,
    			readRegistry,
    			writeRegistry,
    		}))
    		if err != nil {
    			return err
    		}
    		developer, err := redpanda.NewRole(ctx, "developer", &redpanda.RoleArgs{
    			Name:          pulumi.Any(roleName),
    			ClusterApiUrl: testCluster.ClusterApiUrl,
    			AllowDeletion: pulumi.Any(roleAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewAcl(ctx, "role_topic_read", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("TOPIC"),
    			ResourceName:        testTopic.Name,
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: developer.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("RedpandaRole:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("READ"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewSchemaRegistryAcl(ctx, "read_product", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.String("product-"),
    			PatternType:   pulumi.String("PREFIXED"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("READ"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Any(srAclAllowDeletion),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewSchemaRegistryAcl(ctx, "write_orders", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.String("orders-value"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("WRITE"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewSchemaRegistryAcl(ctx, "describe_test_topic", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.Sprintf("%v-", topicName),
    			PatternType:   pulumi.String("PREFIXED"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("DESCRIBE"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewRoleAssignment(ctx, "developer_assignment", &redpanda.RoleAssignmentArgs{
    			RoleName: developer.Name,
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ClusterApiUrl: testCluster.ClusterApiUrl,
    		}, pulumi.DependsOn([]pulumi.Resource{
    			testUser,
    		}))
    		if err != nil {
    			return err
    		}
    		ctx.Export("userSchemaInfo", pulumi.Map{
    			"id":      userSchema.SchemaId,
    			"subject": userSchema.Subject,
    			"version": userSchema.Version,
    			"type":    userSchema.SchemaType,
    		})
    		ctx.Export("userEventSchemaInfo", pulumi.Map{
    			"id":         userEventSchema.SchemaId,
    			"subject":    userEventSchema.Subject,
    			"version":    userEventSchema.Version,
    			"type":       userEventSchema.SchemaType,
    			"references": userEventSchema.References,
    		})
    		ctx.Export("productSchemaInfo", pulumi.Map{
    			"id":            productSchema.SchemaId,
    			"subject":       productSchema.Subject,
    			"version":       productSchema.Version,
    			"type":          productSchema.SchemaType,
    			"compatibility": productSchema.Compatibility,
    		})
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using System.Text.Json;
    using Pulumi;
    using Redpanda = Pulumi.Redpanda;
    
    return await Deployment.RunAsync(() => 
    {
        var test = new Redpanda.ResourceGroup("test", new()
        {
            Name = resourceGroupName,
        });
    
        var testNetwork = new Redpanda.Network("test", new()
        {
            Name = networkName,
            ResourceGroupId = test.Id,
            CloudProvider = cloudProvider,
            Region = region,
            ClusterType = "dedicated",
            CidrBlock = "10.0.0.0/20",
            Timeouts = new Redpanda.Inputs.NetworkTimeoutsArgs
            {
                Create = "20m",
                Delete = "20m",
            },
        });
    
        var testCluster = new Redpanda.Cluster("test", new()
        {
            Name = clusterName,
            ResourceGroupId = test.Id,
            NetworkId = testNetwork.Id,
            CloudProvider = cloudProvider,
            Region = region,
            ClusterType = "dedicated",
            ConnectionType = "public",
            ThroughputTier = throughputTier,
            Zones = zones,
            AllowDeletion = clusterAllowDeletion,
            ClusterConfiguration = new Redpanda.Inputs.ClusterClusterConfigurationArgs
            {
                CustomPropertiesJson = JsonSerializer.Serialize(new Dictionary<string, object?>
                {
                    ["enable_shadow_linking"] = clusterEnableShadowLinking,
                    ["schema_registry_enable_authorization"] = true,
                }),
            },
            MaintenanceWindowConfig = new Redpanda.Inputs.ClusterMaintenanceWindowConfigArgs
            {
                DayHour = new Redpanda.Inputs.ClusterMaintenanceWindowConfigDayHourArgs
                {
                    DayOfWeek = maintenanceDayOfWeek,
                    HourOfDay = maintenanceHourOfDay,
                },
            },
            Tags = clusterTags,
            Timeouts = new Redpanda.Inputs.ClusterTimeoutsArgs
            {
                Create = "90m",
            },
        });
    
        var testUser = new Redpanda.User("test", new()
        {
            Name = userName,
            Password = userPw,
            Mechanism = mechanism,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = userAllowDeletion,
        });
    
        var testTopic = new Redpanda.Topic("test", new()
        {
            Name = topicName,
            PartitionCount = partitionCount,
            ReplicationFactor = replicationFactor,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = true,
            Configuration = topicConfiguration != null ? topicConfiguration : 
            {
                { "cleanup.policy", "delete" },
                { "retention.ms", topicRetentionMs },
            },
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                testUser,
            },
        });
    
        // Bootstrap SR ACL grants for the provider's own Bearer-token principal.
        // SUBJECT grant authorizes POST /subjects/<subj>/versions; REGISTRY grant
        // authorizes the franz-go follow-up GET /schemas/ids/<id>/versions.
        var providerBootstrapSubject = new Redpanda.SchemaRegistryAcl("provider_bootstrap_subject", new()
        {
            ClusterId = testCluster.Id,
            Principal = "User:*",
            ResourceType = "SUBJECT",
            ResourceName = topicName,
            PatternType = "PREFIXED",
            Host = "*",
            Operation = "ALL",
            Permission = "ALLOW",
            AllowDeletion = true,
        });
    
        var providerBootstrapRegistry = new Redpanda.SchemaRegistryAcl("provider_bootstrap_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = "User:*",
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "ALL",
            Permission = "ALLOW",
            AllowDeletion = true,
        });
    
        var clusterAdmin = new Redpanda.Acl("cluster_admin", new()
        {
            ResourceType = "CLUSTER",
            ResourceName = "kafka-cluster",
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "ALL",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var schemaRegistryAdmin = new Redpanda.Acl("schema_registry_admin", new()
        {
            ResourceType = "CLUSTER",
            ResourceName = "kafka-cluster",
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "ALTER",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var clusterAction = new Redpanda.Acl("cluster_action", new()
        {
            ResourceType = "CLUSTER",
            ResourceName = "kafka-cluster",
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "CLUSTER_ACTION",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var topicAccess = new Redpanda.Acl("topic_access", new()
        {
            ResourceType = "TOPIC",
            ResourceName = testTopic.Name,
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "ALL",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var allTestTopic = new Redpanda.SchemaRegistryAcl("all_test_topic", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "SUBJECT",
            ResourceName = $"{topicName}-",
            PatternType = "PREFIXED",
            Host = "*",
            Operation = "ALL",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var describeRegistry = new Redpanda.SchemaRegistryAcl("describe_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "DESCRIBE",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var alterConfigsRegistry = new Redpanda.SchemaRegistryAcl("alter_configs_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "ALTER_CONFIGS",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var readRegistry = new Redpanda.SchemaRegistryAcl("read_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "READ",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var writeRegistry = new Redpanda.SchemaRegistryAcl("write_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "WRITE",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var userSchema = new Redpanda.Schema("user_schema", new()
        {
            ClusterId = testCluster.Id,
            Subject = $"{topicName}-value",
            SchemaType = schemaType,
            Schema = userSchemaDefinition,
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
                clusterAction,
                topicAccess,
                providerBootstrapSubject,
                providerBootstrapRegistry,
                allTestTopic,
                describeRegistry,
                alterConfigsRegistry,
                readRegistry,
                writeRegistry,
            },
        });
    
        var userEventSchema = new Redpanda.Schema("user_event_schema", new()
        {
            ClusterId = testCluster.Id,
            Subject = $"{topicName}-events-value",
            SchemaType = schemaType,
            Schema = userEventSchemaDefinition,
            AllowDeletion = true,
            References = new[]
            {
                new Redpanda.Inputs.SchemaReferenceArgs
                {
                    Name = "User",
                    Subject = userSchema.Subject,
                    Version = userSchema.Version,
                },
            },
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
                clusterAction,
                topicAccess,
                providerBootstrapSubject,
                providerBootstrapRegistry,
                allTestTopic,
                describeRegistry,
                alterConfigsRegistry,
                readRegistry,
                writeRegistry,
            },
        });
    
        var productSchema = new Redpanda.Schema("product_schema", new()
        {
            ClusterId = testCluster.Id,
            Subject = $"{topicName}-product-value",
            SchemaType = schemaType,
            Schema = productSchemaDefinition,
            Compatibility = compatibilityLevel,
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
                clusterAction,
                topicAccess,
                providerBootstrapSubject,
                providerBootstrapRegistry,
                allTestTopic,
                describeRegistry,
                alterConfigsRegistry,
                readRegistry,
                writeRegistry,
            },
        });
    
        var developer = new Redpanda.Role("developer", new()
        {
            Name = roleName,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = roleAllowDeletion,
        });
    
        var roleTopicRead = new Redpanda.Acl("role_topic_read", new()
        {
            ResourceType = "TOPIC",
            ResourceName = testTopic.Name,
            ResourcePatternType = "LITERAL",
            Principal = developer.Name.Apply(name => $"RedpandaRole:{name}"),
            Host = "*",
            Operation = "READ",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var readProduct = new Redpanda.SchemaRegistryAcl("read_product", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "SUBJECT",
            ResourceName = "product-",
            PatternType = "PREFIXED",
            Host = "*",
            Operation = "READ",
            Permission = "ALLOW",
            AllowDeletion = srAclAllowDeletion,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var writeOrders = new Redpanda.SchemaRegistryAcl("write_orders", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "SUBJECT",
            ResourceName = "orders-value",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "WRITE",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var describeTestTopic = new Redpanda.SchemaRegistryAcl("describe_test_topic", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "SUBJECT",
            ResourceName = $"{topicName}-",
            PatternType = "PREFIXED",
            Host = "*",
            Operation = "DESCRIBE",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var developerAssignment = new Redpanda.RoleAssignment("developer_assignment", new()
        {
            RoleName = developer.Name,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ClusterApiUrl = testCluster.ClusterApiUrl,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                testUser,
            },
        });
    
        return new Dictionary<string, object?>
        {
            ["userSchemaInfo"] = 
            {
                { "id", userSchema.SchemaId },
                { "subject", userSchema.Subject },
                { "version", userSchema.Version },
                { "type", userSchema.SchemaType },
            },
            ["userEventSchemaInfo"] = 
            {
                { "id", userEventSchema.SchemaId },
                { "subject", userEventSchema.Subject },
                { "version", userEventSchema.Version },
                { "type", userEventSchema.SchemaType },
                { "references", userEventSchema.References },
            },
            ["productSchemaInfo"] = 
            {
                { "id", productSchema.SchemaId },
                { "subject", productSchema.Subject },
                { "version", productSchema.Version },
                { "type", productSchema.SchemaType },
                { "compatibility", productSchema.Compatibility },
            },
        };
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.redpanda.ResourceGroup;
    import com.pulumi.redpanda.ResourceGroupArgs;
    import com.pulumi.redpanda.Network;
    import com.pulumi.redpanda.NetworkArgs;
    import com.pulumi.redpanda.inputs.NetworkTimeoutsArgs;
    import com.pulumi.redpanda.Cluster;
    import com.pulumi.redpanda.ClusterArgs;
    import com.pulumi.redpanda.inputs.ClusterClusterConfigurationArgs;
    import com.pulumi.redpanda.inputs.ClusterMaintenanceWindowConfigArgs;
    import com.pulumi.redpanda.inputs.ClusterMaintenanceWindowConfigDayHourArgs;
    import com.pulumi.redpanda.inputs.ClusterTimeoutsArgs;
    import com.pulumi.redpanda.User;
    import com.pulumi.redpanda.UserArgs;
    import com.pulumi.redpanda.Topic;
    import com.pulumi.redpanda.TopicArgs;
    import com.pulumi.redpanda.SchemaRegistryAcl;
    import com.pulumi.redpanda.SchemaRegistryAclArgs;
    import com.pulumi.redpanda.Acl;
    import com.pulumi.redpanda.AclArgs;
    import com.pulumi.redpanda.Schema;
    import com.pulumi.redpanda.SchemaArgs;
    import com.pulumi.redpanda.inputs.SchemaReferenceArgs;
    import com.pulumi.redpanda.Role;
    import com.pulumi.redpanda.RoleArgs;
    import com.pulumi.redpanda.RoleAssignment;
    import com.pulumi.redpanda.RoleAssignmentArgs;
    import static com.pulumi.codegen.internal.Serialization.*;
    import com.pulumi.resources.CustomResourceOptions;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var test = new ResourceGroup("test", ResourceGroupArgs.builder()
                .name(resourceGroupName)
                .build());
    
            var testNetwork = new Network("testNetwork", NetworkArgs.builder()
                .name(networkName)
                .resourceGroupId(test.id())
                .cloudProvider(cloudProvider)
                .region(region)
                .clusterType("dedicated")
                .cidrBlock("10.0.0.0/20")
                .timeouts(NetworkTimeoutsArgs.builder()
                    .create("20m")
                    .delete("20m")
                    .build())
                .build());
    
            var testCluster = new Cluster("testCluster", ClusterArgs.builder()
                .name(clusterName)
                .resourceGroupId(test.id())
                .networkId(testNetwork.id())
                .cloudProvider(cloudProvider)
                .region(region)
                .clusterType("dedicated")
                .connectionType("public")
                .throughputTier(throughputTier)
                .zones(zones)
                .allowDeletion(clusterAllowDeletion)
                .clusterConfiguration(ClusterClusterConfigurationArgs.builder()
                    .customPropertiesJson(serializeJson(
                        jsonObject(
                            jsonProperty("enable_shadow_linking", clusterEnableShadowLinking),
                            jsonProperty("schema_registry_enable_authorization", true)
                        )))
                    .build())
                .maintenanceWindowConfig(ClusterMaintenanceWindowConfigArgs.builder()
                    .dayHour(ClusterMaintenanceWindowConfigDayHourArgs.builder()
                        .dayOfWeek(maintenanceDayOfWeek)
                        .hourOfDay(maintenanceHourOfDay)
                        .build())
                    .build())
                .tags(clusterTags)
                .timeouts(ClusterTimeoutsArgs.builder()
                    .create("90m")
                    .build())
                .build());
    
            var testUser = new User("testUser", UserArgs.builder()
                .name(userName)
                .password(userPw)
                .mechanism(mechanism)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(userAllowDeletion)
                .build());
    
            var testTopic = new Topic("testTopic", TopicArgs.builder()
                .name(topicName)
                .partitionCount(partitionCount)
                .replicationFactor(replicationFactor)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(true)
                .configuration(topicConfiguration != null ? topicConfiguration : Map.ofEntries(
                    Map.entry("cleanup.policy", "delete"),
                    Map.entry("retention.ms", topicRetentionMs)
                ))
                .build(), CustomResourceOptions.builder()
                    .dependsOn(testUser)
                    .build());
    
            // Bootstrap SR ACL grants for the provider's own Bearer-token principal.
            // SUBJECT grant authorizes POST /subjects/<subj>/versions; REGISTRY grant
            // authorizes the franz-go follow-up GET /schemas/ids/<id>/versions.
            var providerBootstrapSubject = new SchemaRegistryAcl("providerBootstrapSubject", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal("User:*")
                .resourceType("SUBJECT")
                .resourceName(topicName)
                .patternType("PREFIXED")
                .host("*")
                .operation("ALL")
                .permission("ALLOW")
                .allowDeletion(true)
                .build());
    
            var providerBootstrapRegistry = new SchemaRegistryAcl("providerBootstrapRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal("User:*")
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("ALL")
                .permission("ALLOW")
                .allowDeletion(true)
                .build());
    
            var clusterAdmin = new Acl("clusterAdmin", AclArgs.builder()
                .resourceType("CLUSTER")
                .resourceName("kafka-cluster")
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("ALL")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var schemaRegistryAdmin = new Acl("schemaRegistryAdmin", AclArgs.builder()
                .resourceType("CLUSTER")
                .resourceName("kafka-cluster")
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("ALTER")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var clusterAction = new Acl("clusterAction", AclArgs.builder()
                .resourceType("CLUSTER")
                .resourceName("kafka-cluster")
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("CLUSTER_ACTION")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var topicAccess = new Acl("topicAccess", AclArgs.builder()
                .resourceType("TOPIC")
                .resourceName(testTopic.name())
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("ALL")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var allTestTopic = new SchemaRegistryAcl("allTestTopic", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("SUBJECT")
                .resourceName(String.format("%s-", topicName))
                .patternType("PREFIXED")
                .host("*")
                .operation("ALL")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var describeRegistry = new SchemaRegistryAcl("describeRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("DESCRIBE")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var alterConfigsRegistry = new SchemaRegistryAcl("alterConfigsRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("ALTER_CONFIGS")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var readRegistry = new SchemaRegistryAcl("readRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("READ")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var writeRegistry = new SchemaRegistryAcl("writeRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("WRITE")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var userSchema = new Schema("userSchema", SchemaArgs.builder()
                .clusterId(testCluster.id())
                .subject(String.format("%s-value", topicName))
                .schemaType(schemaType)
                .schema(userSchemaDefinition)
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin,
                        clusterAction,
                        topicAccess,
                        providerBootstrapSubject,
                        providerBootstrapRegistry,
                        allTestTopic,
                        describeRegistry,
                        alterConfigsRegistry,
                        readRegistry,
                        writeRegistry)
                    .build());
    
            var userEventSchema = new Schema("userEventSchema", SchemaArgs.builder()
                .clusterId(testCluster.id())
                .subject(String.format("%s-events-value", topicName))
                .schemaType(schemaType)
                .schema(userEventSchemaDefinition)
                .allowDeletion(true)
                .references(SchemaReferenceArgs.builder()
                    .name("User")
                    .subject(userSchema.subject())
                    .version(userSchema.version())
                    .build())
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin,
                        clusterAction,
                        topicAccess,
                        providerBootstrapSubject,
                        providerBootstrapRegistry,
                        allTestTopic,
                        describeRegistry,
                        alterConfigsRegistry,
                        readRegistry,
                        writeRegistry)
                    .build());
    
            var productSchema = new Schema("productSchema", SchemaArgs.builder()
                .clusterId(testCluster.id())
                .subject(String.format("%s-product-value", topicName))
                .schemaType(schemaType)
                .schema(productSchemaDefinition)
                .compatibility(compatibilityLevel)
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin,
                        clusterAction,
                        topicAccess,
                        providerBootstrapSubject,
                        providerBootstrapRegistry,
                        allTestTopic,
                        describeRegistry,
                        alterConfigsRegistry,
                        readRegistry,
                        writeRegistry)
                    .build());
    
            var developer = new Role("developer", RoleArgs.builder()
                .name(roleName)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(roleAllowDeletion)
                .build());
    
            var roleTopicRead = new Acl("roleTopicRead", AclArgs.builder()
                .resourceType("TOPIC")
                .resourceName(testTopic.name())
                .resourcePatternType("LITERAL")
                .principal(developer.name().applyValue(_name -> String.format("RedpandaRole:%s", _name)))
                .host("*")
                .operation("READ")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var readProduct = new SchemaRegistryAcl("readProduct", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("SUBJECT")
                .resourceName("product-")
                .patternType("PREFIXED")
                .host("*")
                .operation("READ")
                .permission("ALLOW")
                .allowDeletion(srAclAllowDeletion)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var writeOrders = new SchemaRegistryAcl("writeOrders", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("SUBJECT")
                .resourceName("orders-value")
                .patternType("LITERAL")
                .host("*")
                .operation("WRITE")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var describeTestTopic = new SchemaRegistryAcl("describeTestTopic", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("SUBJECT")
                .resourceName(String.format("%s-", topicName))
                .patternType("PREFIXED")
                .host("*")
                .operation("DESCRIBE")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var developerAssignment = new RoleAssignment("developerAssignment", RoleAssignmentArgs.builder()
                .roleName(developer.name())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .clusterApiUrl(testCluster.clusterApiUrl())
                .build(), CustomResourceOptions.builder()
                    .dependsOn(testUser)
                    .build());
    
            ctx.export("userSchemaInfo", Map.ofEntries(
                Map.entry("id", userSchema.schemaId()),
                Map.entry("subject", userSchema.subject()),
                Map.entry("version", userSchema.version()),
                Map.entry("type", userSchema.schemaType())
            ));
            ctx.export("userEventSchemaInfo", Map.ofEntries(
                Map.entry("id", userEventSchema.schemaId()),
                Map.entry("subject", userEventSchema.subject()),
                Map.entry("version", userEventSchema.version()),
                Map.entry("type", userEventSchema.schemaType()),
                Map.entry("references", userEventSchema.references())
            ));
            ctx.export("productSchemaInfo", Map.ofEntries(
                Map.entry("id", productSchema.schemaId()),
                Map.entry("subject", productSchema.subject()),
                Map.entry("version", productSchema.version()),
                Map.entry("type", productSchema.schemaType()),
                Map.entry("compatibility", productSchema.compatibility())
            ));
        }
    }
    
    Example coming soon!
    
    Example coming soon!
    

    On Azure

    import * as pulumi from "@pulumi/pulumi";
    import * as redpanda from "@pulumi/redpanda";
    
    const test = new redpanda.ResourceGroup("test", {name: resourceGroupName});
    const testNetwork = new redpanda.Network("test", {
        name: networkName,
        resourceGroupId: test.id,
        cloudProvider: cloudProvider,
        region: region,
        clusterType: "dedicated",
        cidrBlock: "10.0.0.0/20",
        timeouts: {
            create: "20m",
            "delete": "20m",
        },
    });
    const testCluster = new redpanda.Cluster("test", {
        name: clusterName,
        resourceGroupId: test.id,
        networkId: testNetwork.id,
        cloudProvider: cloudProvider,
        region: region,
        clusterType: "dedicated",
        connectionType: "public",
        throughputTier: throughputTier,
        zones: zones,
        allowDeletion: clusterAllowDeletion,
        clusterConfiguration: {
            customPropertiesJson: JSON.stringify({
                "auto.create.topics.enable": false,
                schema_registry_enable_authorization: true,
            }),
        },
        tags: clusterTags,
        timeouts: {
            create: "90m",
        },
    });
    const testUser = new redpanda.User("test", {
        name: userName,
        password: userPw,
        mechanism: mechanism,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: userAllowDeletion,
    });
    const testTopic = new redpanda.Topic("test", {
        name: topicName,
        partitionCount: partitionCount,
        replicationFactor: replicationFactor,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: true,
        configuration: {
            "cleanup.policy": "delete",
            "retention.ms": topicRetentionMs,
        },
    });
    // Bootstrap SR ACL grants for the provider's own Bearer-token principal.
    // SUBJECT grant authorizes POST /subjects/<subj>/versions; REGISTRY grant
    // authorizes the franz-go follow-up GET /schemas/ids/<id>/versions.
    const providerBootstrapSubject = new redpanda.SchemaRegistryAcl("provider_bootstrap_subject", {
        clusterId: testCluster.id,
        principal: "User:*",
        resourceType: "SUBJECT",
        resourceName: topicName,
        patternType: "PREFIXED",
        host: "*",
        operation: "ALL",
        permission: "ALLOW",
        allowDeletion: true,
    });
    const providerBootstrapRegistry = new redpanda.SchemaRegistryAcl("provider_bootstrap_registry", {
        clusterId: testCluster.id,
        principal: "User:*",
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "ALL",
        permission: "ALLOW",
        allowDeletion: true,
    });
    const clusterAdmin = new redpanda.Acl("cluster_admin", {
        resourceType: "CLUSTER",
        resourceName: "kafka-cluster",
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "ALL",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const schemaRegistryAdmin = new redpanda.Acl("schema_registry_admin", {
        resourceType: "CLUSTER",
        resourceName: "kafka-cluster",
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "ALTER",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const clusterAction = new redpanda.Acl("cluster_action", {
        resourceType: "CLUSTER",
        resourceName: "kafka-cluster",
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "CLUSTER_ACTION",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const topicAccess = new redpanda.Acl("topic_access", {
        resourceType: "TOPIC",
        resourceName: testTopic.name,
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "ALL",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const allTestTopic = new redpanda.SchemaRegistryAcl("all_test_topic", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "SUBJECT",
        resourceName: `${topicName}-`,
        patternType: "PREFIXED",
        host: "*",
        operation: "ALL",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const describeRegistry = new redpanda.SchemaRegistryAcl("describe_registry", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "DESCRIBE",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const alterConfigsRegistry = new redpanda.SchemaRegistryAcl("alter_configs_registry", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "ALTER_CONFIGS",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const readRegistry = new redpanda.SchemaRegistryAcl("read_registry", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "READ",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const writeRegistry = new redpanda.SchemaRegistryAcl("write_registry", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "REGISTRY",
        resourceName: "*",
        patternType: "LITERAL",
        host: "*",
        operation: "WRITE",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const userSchema = new redpanda.Schema("user_schema", {
        clusterId: testCluster.id,
        subject: `${topicName}-value`,
        schemaType: schemaType,
        schema: userSchemaDefinition,
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
            clusterAction,
            topicAccess,
            providerBootstrapSubject,
            providerBootstrapRegistry,
            allTestTopic,
            describeRegistry,
            alterConfigsRegistry,
            readRegistry,
            writeRegistry,
        ],
    });
    const userEventSchema = new redpanda.Schema("user_event_schema", {
        clusterId: testCluster.id,
        subject: `${topicName}-events-value`,
        schemaType: schemaType,
        schema: userEventSchemaDefinition,
        allowDeletion: true,
        references: [{
            name: "User",
            subject: userSchema.subject,
            version: userSchema.version,
        }],
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
            clusterAction,
            topicAccess,
            providerBootstrapSubject,
            providerBootstrapRegistry,
            allTestTopic,
            describeRegistry,
            alterConfigsRegistry,
            readRegistry,
            writeRegistry,
        ],
    });
    const productSchema = new redpanda.Schema("product_schema", {
        clusterId: testCluster.id,
        subject: `${topicName}-product-value`,
        schemaType: schemaType,
        schema: productSchemaDefinition,
        compatibility: compatibilityLevel,
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
            clusterAction,
            topicAccess,
            providerBootstrapSubject,
            providerBootstrapRegistry,
            allTestTopic,
            describeRegistry,
            alterConfigsRegistry,
            readRegistry,
            writeRegistry,
        ],
    });
    const developer = new redpanda.Role("developer", {
        name: roleName,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: roleAllowDeletion,
    });
    const roleTopicRead = new redpanda.Acl("role_topic_read", {
        resourceType: "TOPIC",
        resourceName: testTopic.name,
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`RedpandaRole:${developer.name}`,
        host: "*",
        operation: "READ",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    const readProduct = new redpanda.SchemaRegistryAcl("read_product", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "SUBJECT",
        resourceName: "product-",
        patternType: "PREFIXED",
        host: "*",
        operation: "READ",
        permission: "ALLOW",
        allowDeletion: srAclAllowDeletion,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const writeOrders = new redpanda.SchemaRegistryAcl("write_orders", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "SUBJECT",
        resourceName: "orders-value",
        patternType: "LITERAL",
        host: "*",
        operation: "WRITE",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const describeTestTopic = new redpanda.SchemaRegistryAcl("describe_test_topic", {
        clusterId: testCluster.id,
        principal: pulumi.interpolate`User:${testUser.name}`,
        resourceType: "SUBJECT",
        resourceName: `${topicName}-`,
        patternType: "PREFIXED",
        host: "*",
        operation: "DESCRIBE",
        permission: "ALLOW",
        allowDeletion: true,
    }, {
        dependsOn: [
            clusterAdmin,
            schemaRegistryAdmin,
        ],
    });
    const developerAssignment = new redpanda.RoleAssignment("developer_assignment", {
        roleName: developer.name,
        principal: pulumi.interpolate`User:${testUser.name}`,
        clusterApiUrl: testCluster.clusterApiUrl,
    }, {
        dependsOn: [testUser],
    });
    const testPipeline = new redpanda.Pipeline("test", {
        clusterApiUrl: testCluster.clusterApiUrl,
        displayName: pipelineName,
        description: pipelineDescription,
        configYaml: pipelineConfigYaml,
        state: pipelineState,
        allowDeletion: pipelineAllowDeletion,
        resources: {
            memoryShares: pipelineMemoryShares,
            cpuShares: pipelineCpuShares,
        },
        tags: {
            environment: "test",
            "managed-by": "terraform",
        },
    });
    export const pipelineInfo = {
        id: testPipeline.id,
        name: testPipeline.displayName,
        state: testPipeline.state,
        url: testPipeline.url,
    };
    export const userSchemaInfo = {
        id: userSchema.schemaId,
        subject: userSchema.subject,
        version: userSchema.version,
        type: userSchema.schemaType,
    };
    export const userEventSchemaInfo = {
        id: userEventSchema.schemaId,
        subject: userEventSchema.subject,
        version: userEventSchema.version,
        type: userEventSchema.schemaType,
        references: userEventSchema.references,
    };
    export const productSchemaInfo = {
        id: productSchema.schemaId,
        subject: productSchema.subject,
        version: productSchema.version,
        type: productSchema.schemaType,
        compatibility: productSchema.compatibility,
    };
    
    import pulumi
    import json
    import pulumi_redpanda as redpanda
    
    test = redpanda.ResourceGroup("test", name=resource_group_name)
    test_network = redpanda.Network("test",
        name=network_name,
        resource_group_id=test.id,
        cloud_provider=cloud_provider,
        region=region,
        cluster_type="dedicated",
        cidr_block="10.0.0.0/20",
        timeouts={
            "create": "20m",
            "delete": "20m",
        })
    test_cluster = redpanda.Cluster("test",
        name=cluster_name,
        resource_group_id=test.id,
        network_id=test_network.id,
        cloud_provider=cloud_provider,
        region=region,
        cluster_type="dedicated",
        connection_type="public",
        throughput_tier=throughput_tier,
        zones=zones,
        allow_deletion=cluster_allow_deletion,
        cluster_configuration={
            "custom_properties_json": json.dumps({
                "auto.create.topics.enable": False,
                "schema_registry_enable_authorization": True,
            }),
        },
        tags=cluster_tags,
        timeouts={
            "create": "90m",
        })
    test_user = redpanda.User("test",
        name=user_name,
        password=user_pw,
        mechanism=mechanism,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=user_allow_deletion)
    test_topic = redpanda.Topic("test",
        name=topic_name,
        partition_count=partition_count,
        replication_factor=replication_factor,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=True,
        configuration={
            "cleanup.policy": "delete",
            "retention.ms": topic_retention_ms,
        })
    # Bootstrap SR ACL grants for the provider's own Bearer-token principal.
    # SUBJECT grant authorizes POST /subjects/<subj>/versions; REGISTRY grant
    # authorizes the franz-go follow-up GET /schemas/ids/<id>/versions.
    provider_bootstrap_subject = redpanda.SchemaRegistryAcl("provider_bootstrap_subject",
        cluster_id=test_cluster.id,
        principal="User:*",
        resource_type="SUBJECT",
        resource_name_=topic_name,
        pattern_type="PREFIXED",
        host="*",
        operation="ALL",
        permission="ALLOW",
        allow_deletion=True)
    provider_bootstrap_registry = redpanda.SchemaRegistryAcl("provider_bootstrap_registry",
        cluster_id=test_cluster.id,
        principal="User:*",
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="ALL",
        permission="ALLOW",
        allow_deletion=True)
    cluster_admin = redpanda.Acl("cluster_admin",
        resource_type="CLUSTER",
        resource_name_="kafka-cluster",
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="ALL",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    schema_registry_admin = redpanda.Acl("schema_registry_admin",
        resource_type="CLUSTER",
        resource_name_="kafka-cluster",
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="ALTER",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    cluster_action = redpanda.Acl("cluster_action",
        resource_type="CLUSTER",
        resource_name_="kafka-cluster",
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="CLUSTER_ACTION",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    topic_access = redpanda.Acl("topic_access",
        resource_type="TOPIC",
        resource_name_=test_topic.name,
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="ALL",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    all_test_topic = redpanda.SchemaRegistryAcl("all_test_topic",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="SUBJECT",
        resource_name_=f"{topic_name}-",
        pattern_type="PREFIXED",
        host="*",
        operation="ALL",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    describe_registry = redpanda.SchemaRegistryAcl("describe_registry",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="DESCRIBE",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    alter_configs_registry = redpanda.SchemaRegistryAcl("alter_configs_registry",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="ALTER_CONFIGS",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    read_registry = redpanda.SchemaRegistryAcl("read_registry",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="READ",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    write_registry = redpanda.SchemaRegistryAcl("write_registry",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="REGISTRY",
        resource_name_="*",
        pattern_type="LITERAL",
        host="*",
        operation="WRITE",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    user_schema = redpanda.Schema("user_schema",
        cluster_id=test_cluster.id,
        subject=f"{topic_name}-value",
        schema_type=schema_type,
        schema=user_schema_definition,
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
                cluster_action,
                topic_access,
                provider_bootstrap_subject,
                provider_bootstrap_registry,
                all_test_topic,
                describe_registry,
                alter_configs_registry,
                read_registry,
                write_registry,
            ]))
    user_event_schema = redpanda.Schema("user_event_schema",
        cluster_id=test_cluster.id,
        subject=f"{topic_name}-events-value",
        schema_type=schema_type,
        schema=user_event_schema_definition,
        allow_deletion=True,
        references=[{
            "name": "User",
            "subject": user_schema.subject,
            "version": user_schema.version,
        }],
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
                cluster_action,
                topic_access,
                provider_bootstrap_subject,
                provider_bootstrap_registry,
                all_test_topic,
                describe_registry,
                alter_configs_registry,
                read_registry,
                write_registry,
            ]))
    product_schema = redpanda.Schema("product_schema",
        cluster_id=test_cluster.id,
        subject=f"{topic_name}-product-value",
        schema_type=schema_type,
        schema=product_schema_definition,
        compatibility=compatibility_level,
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
                cluster_action,
                topic_access,
                provider_bootstrap_subject,
                provider_bootstrap_registry,
                all_test_topic,
                describe_registry,
                alter_configs_registry,
                read_registry,
                write_registry,
            ]))
    developer = redpanda.Role("developer",
        name=role_name,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=role_allow_deletion)
    role_topic_read = redpanda.Acl("role_topic_read",
        resource_type="TOPIC",
        resource_name_=test_topic.name,
        resource_pattern_type="LITERAL",
        principal=developer.name.apply(lambda name: f"RedpandaRole:{name}"),
        host="*",
        operation="READ",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    read_product = redpanda.SchemaRegistryAcl("read_product",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="SUBJECT",
        resource_name_="product-",
        pattern_type="PREFIXED",
        host="*",
        operation="READ",
        permission="ALLOW",
        allow_deletion=sr_acl_allow_deletion,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    write_orders = redpanda.SchemaRegistryAcl("write_orders",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="SUBJECT",
        resource_name_="orders-value",
        pattern_type="LITERAL",
        host="*",
        operation="WRITE",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    describe_test_topic = redpanda.SchemaRegistryAcl("describe_test_topic",
        cluster_id=test_cluster.id,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        resource_type="SUBJECT",
        resource_name_=f"{topic_name}-",
        pattern_type="PREFIXED",
        host="*",
        operation="DESCRIBE",
        permission="ALLOW",
        allow_deletion=True,
        opts = pulumi.ResourceOptions(depends_on=[
                cluster_admin,
                schema_registry_admin,
            ]))
    developer_assignment = redpanda.RoleAssignment("developer_assignment",
        role_name=developer.name,
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        cluster_api_url=test_cluster.cluster_api_url,
        opts = pulumi.ResourceOptions(depends_on=[test_user]))
    test_pipeline = redpanda.Pipeline("test",
        cluster_api_url=test_cluster.cluster_api_url,
        display_name=pipeline_name,
        description=pipeline_description,
        config_yaml=pipeline_config_yaml,
        state=pipeline_state,
        allow_deletion=pipeline_allow_deletion,
        resources={
            "memory_shares": pipeline_memory_shares,
            "cpu_shares": pipeline_cpu_shares,
        },
        tags={
            "environment": "test",
            "managed-by": "terraform",
        })
    pulumi.export("pipelineInfo", {
        "id": test_pipeline.id,
        "name": test_pipeline.display_name,
        "state": test_pipeline.state,
        "url": test_pipeline.url,
    })
    pulumi.export("userSchemaInfo", {
        "id": user_schema.schema_id,
        "subject": user_schema.subject,
        "version": user_schema.version,
        "type": user_schema.schema_type,
    })
    pulumi.export("userEventSchemaInfo", {
        "id": user_event_schema.schema_id,
        "subject": user_event_schema.subject,
        "version": user_event_schema.version,
        "type": user_event_schema.schema_type,
        "references": user_event_schema.references,
    })
    pulumi.export("productSchemaInfo", {
        "id": product_schema.schema_id,
        "subject": product_schema.subject,
        "version": product_schema.version,
        "type": product_schema.schema_type,
        "compatibility": product_schema.compatibility,
    })
    
    package main
    
    import (
    	"encoding/json"
    	"fmt"
    
    	"github.com/pulumi/pulumi-terraform-provider/sdks/go/redpanda/v2/redpanda"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		test, err := redpanda.NewResourceGroup(ctx, "test", &redpanda.ResourceGroupArgs{
    			Name: pulumi.Any(resourceGroupName),
    		})
    		if err != nil {
    			return err
    		}
    		testNetwork, err := redpanda.NewNetwork(ctx, "test", &redpanda.NetworkArgs{
    			Name:            pulumi.Any(networkName),
    			ResourceGroupId: test.ID(),
    			CloudProvider:   pulumi.Any(cloudProvider),
    			Region:          pulumi.Any(region),
    			ClusterType:     pulumi.String("dedicated"),
    			CidrBlock:       pulumi.String("10.0.0.0/20"),
    			Timeouts: &redpanda.NetworkTimeoutsArgs{
    				Create: pulumi.String("20m"),
    				Delete: pulumi.String("20m"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		tmpJSON0, err := json.Marshal(map[string]interface{}{
    			"auto.create.topics.enable":            false,
    			"schema_registry_enable_authorization": true,
    		})
    		if err != nil {
    			return err
    		}
    		json0 := string(tmpJSON0)
    		testCluster, err := redpanda.NewCluster(ctx, "test", &redpanda.ClusterArgs{
    			Name:            pulumi.Any(clusterName),
    			ResourceGroupId: test.ID(),
    			NetworkId:       testNetwork.ID(),
    			CloudProvider:   pulumi.Any(cloudProvider),
    			Region:          pulumi.Any(region),
    			ClusterType:     pulumi.String("dedicated"),
    			ConnectionType:  pulumi.String("public"),
    			ThroughputTier:  pulumi.Any(throughputTier),
    			Zones:           pulumi.Any(zones),
    			AllowDeletion:   pulumi.Any(clusterAllowDeletion),
    			ClusterConfiguration: &redpanda.ClusterClusterConfigurationArgs{
    				CustomPropertiesJson: pulumi.String(json0),
    			},
    			Tags: pulumi.Any(clusterTags),
    			Timeouts: &redpanda.ClusterTimeoutsArgs{
    				Create: pulumi.String("90m"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		testUser, err := redpanda.NewUser(ctx, "test", &redpanda.UserArgs{
    			Name:          pulumi.Any(userName),
    			Password:      pulumi.Any(userPw),
    			Mechanism:     pulumi.Any(mechanism),
    			ClusterApiUrl: testCluster.ClusterApiUrl,
    			AllowDeletion: pulumi.Any(userAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		testTopic, err := redpanda.NewTopic(ctx, "test", &redpanda.TopicArgs{
    			Name:              pulumi.Any(topicName),
    			PartitionCount:    pulumi.Any(partitionCount),
    			ReplicationFactor: pulumi.Any(replicationFactor),
    			ClusterApiUrl:     testCluster.ClusterApiUrl,
    			AllowDeletion:     pulumi.Bool(true),
    			Configuration: pulumi.StringMap{
    				"cleanup.policy": pulumi.String("delete"),
    				"retention.ms":   pulumi.Any(topicRetentionMs),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		// Bootstrap SR ACL grants for the provider's own Bearer-token principal.
    		// SUBJECT grant authorizes POST /subjects/<subj>/versions; REGISTRY grant
    		// authorizes the franz-go follow-up GET /schemas/ids/<id>/versions.
    		providerBootstrapSubject, err := redpanda.NewSchemaRegistryAcl(ctx, "provider_bootstrap_subject", &redpanda.SchemaRegistryAclArgs{
    			ClusterId:     testCluster.ID(),
    			Principal:     pulumi.String("User:*"),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.Any(topicName),
    			PatternType:   pulumi.String("PREFIXED"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("ALL"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		providerBootstrapRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "provider_bootstrap_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId:     testCluster.ID(),
    			Principal:     pulumi.String("User:*"),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("ALL"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		clusterAdmin, err := redpanda.NewAcl(ctx, "cluster_admin", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("CLUSTER"),
    			ResourceName:        pulumi.String("kafka-cluster"),
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("ALL"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		schemaRegistryAdmin, err := redpanda.NewAcl(ctx, "schema_registry_admin", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("CLUSTER"),
    			ResourceName:        pulumi.String("kafka-cluster"),
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("ALTER"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		clusterAction, err := redpanda.NewAcl(ctx, "cluster_action", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("CLUSTER"),
    			ResourceName:        pulumi.String("kafka-cluster"),
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("CLUSTER_ACTION"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		topicAccess, err := redpanda.NewAcl(ctx, "topic_access", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("TOPIC"),
    			ResourceName:        testTopic.Name,
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("ALL"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		allTestTopic, err := redpanda.NewSchemaRegistryAcl(ctx, "all_test_topic", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.Sprintf("%v-", topicName),
    			PatternType:   pulumi.String("PREFIXED"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("ALL"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		describeRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "describe_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("DESCRIBE"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		alterConfigsRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "alter_configs_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("ALTER_CONFIGS"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		readRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "read_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("READ"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		writeRegistry, err := redpanda.NewSchemaRegistryAcl(ctx, "write_registry", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("REGISTRY"),
    			ResourceName:  pulumi.String("*"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("WRITE"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		userSchema, err := redpanda.NewSchema(ctx, "user_schema", &redpanda.SchemaArgs{
    			ClusterId:     testCluster.ID(),
    			Subject:       pulumi.Sprintf("%v-value", topicName),
    			SchemaType:    pulumi.Any(schemaType),
    			Schema:        pulumi.Any(userSchemaDefinition),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    			clusterAction,
    			topicAccess,
    			providerBootstrapSubject,
    			providerBootstrapRegistry,
    			allTestTopic,
    			describeRegistry,
    			alterConfigsRegistry,
    			readRegistry,
    			writeRegistry,
    		}))
    		if err != nil {
    			return err
    		}
    		userEventSchema, err := redpanda.NewSchema(ctx, "user_event_schema", &redpanda.SchemaArgs{
    			ClusterId:     testCluster.ID(),
    			Subject:       pulumi.Sprintf("%v-events-value", topicName),
    			SchemaType:    pulumi.Any(schemaType),
    			Schema:        pulumi.Any(userEventSchemaDefinition),
    			AllowDeletion: pulumi.Bool(true),
    			References: redpanda.SchemaReferenceArray{
    				&redpanda.SchemaReferenceArgs{
    					Name:    pulumi.String("User"),
    					Subject: userSchema.Subject,
    					Version: userSchema.Version,
    				},
    			},
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    			clusterAction,
    			topicAccess,
    			providerBootstrapSubject,
    			providerBootstrapRegistry,
    			allTestTopic,
    			describeRegistry,
    			alterConfigsRegistry,
    			readRegistry,
    			writeRegistry,
    		}))
    		if err != nil {
    			return err
    		}
    		productSchema, err := redpanda.NewSchema(ctx, "product_schema", &redpanda.SchemaArgs{
    			ClusterId:     testCluster.ID(),
    			Subject:       pulumi.Sprintf("%v-product-value", topicName),
    			SchemaType:    pulumi.Any(schemaType),
    			Schema:        pulumi.Any(productSchemaDefinition),
    			Compatibility: pulumi.Any(compatibilityLevel),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    			clusterAction,
    			topicAccess,
    			providerBootstrapSubject,
    			providerBootstrapRegistry,
    			allTestTopic,
    			describeRegistry,
    			alterConfigsRegistry,
    			readRegistry,
    			writeRegistry,
    		}))
    		if err != nil {
    			return err
    		}
    		developer, err := redpanda.NewRole(ctx, "developer", &redpanda.RoleArgs{
    			Name:          pulumi.Any(roleName),
    			ClusterApiUrl: testCluster.ClusterApiUrl,
    			AllowDeletion: pulumi.Any(roleAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewAcl(ctx, "role_topic_read", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("TOPIC"),
    			ResourceName:        testTopic.Name,
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: developer.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("RedpandaRole:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("READ"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewSchemaRegistryAcl(ctx, "read_product", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.String("product-"),
    			PatternType:   pulumi.String("PREFIXED"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("READ"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Any(srAclAllowDeletion),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewSchemaRegistryAcl(ctx, "write_orders", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.String("orders-value"),
    			PatternType:   pulumi.String("LITERAL"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("WRITE"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewSchemaRegistryAcl(ctx, "describe_test_topic", &redpanda.SchemaRegistryAclArgs{
    			ClusterId: testCluster.ID(),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ResourceType:  pulumi.String("SUBJECT"),
    			ResourceName:  pulumi.Sprintf("%v-", topicName),
    			PatternType:   pulumi.String("PREFIXED"),
    			Host:          pulumi.String("*"),
    			Operation:     pulumi.String("DESCRIBE"),
    			Permission:    pulumi.String("ALLOW"),
    			AllowDeletion: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			clusterAdmin,
    			schemaRegistryAdmin,
    		}))
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewRoleAssignment(ctx, "developer_assignment", &redpanda.RoleAssignmentArgs{
    			RoleName: developer.Name,
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			ClusterApiUrl: testCluster.ClusterApiUrl,
    		}, pulumi.DependsOn([]pulumi.Resource{
    			testUser,
    		}))
    		if err != nil {
    			return err
    		}
    		testPipeline, err := redpanda.NewPipeline(ctx, "test", &redpanda.PipelineArgs{
    			ClusterApiUrl: testCluster.ClusterApiUrl,
    			DisplayName:   pulumi.Any(pipelineName),
    			Description:   pulumi.Any(pipelineDescription),
    			ConfigYaml:    pulumi.Any(pipelineConfigYaml),
    			State:         pulumi.Any(pipelineState),
    			AllowDeletion: pulumi.Any(pipelineAllowDeletion),
    			Resources: &redpanda.PipelineResourcesArgs{
    				MemoryShares: pulumi.Any(pipelineMemoryShares),
    				CpuShares:    pulumi.Any(pipelineCpuShares),
    			},
    			Tags: pulumi.StringMap{
    				"environment": pulumi.String("test"),
    				"managed-by":  pulumi.String("terraform"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		ctx.Export("pipelineInfo", pulumi.StringMap{
    			"id":    testPipeline.ID(),
    			"name":  testPipeline.DisplayName,
    			"state": testPipeline.State,
    			"url":   testPipeline.Url,
    		})
    		ctx.Export("userSchemaInfo", pulumi.Map{
    			"id":      userSchema.SchemaId,
    			"subject": userSchema.Subject,
    			"version": userSchema.Version,
    			"type":    userSchema.SchemaType,
    		})
    		ctx.Export("userEventSchemaInfo", pulumi.Map{
    			"id":         userEventSchema.SchemaId,
    			"subject":    userEventSchema.Subject,
    			"version":    userEventSchema.Version,
    			"type":       userEventSchema.SchemaType,
    			"references": userEventSchema.References,
    		})
    		ctx.Export("productSchemaInfo", pulumi.Map{
    			"id":            productSchema.SchemaId,
    			"subject":       productSchema.Subject,
    			"version":       productSchema.Version,
    			"type":          productSchema.SchemaType,
    			"compatibility": productSchema.Compatibility,
    		})
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using System.Text.Json;
    using Pulumi;
    using Redpanda = Pulumi.Redpanda;
    
    return await Deployment.RunAsync(() => 
    {
        var test = new Redpanda.ResourceGroup("test", new()
        {
            Name = resourceGroupName,
        });
    
        var testNetwork = new Redpanda.Network("test", new()
        {
            Name = networkName,
            ResourceGroupId = test.Id,
            CloudProvider = cloudProvider,
            Region = region,
            ClusterType = "dedicated",
            CidrBlock = "10.0.0.0/20",
            Timeouts = new Redpanda.Inputs.NetworkTimeoutsArgs
            {
                Create = "20m",
                Delete = "20m",
            },
        });
    
        var testCluster = new Redpanda.Cluster("test", new()
        {
            Name = clusterName,
            ResourceGroupId = test.Id,
            NetworkId = testNetwork.Id,
            CloudProvider = cloudProvider,
            Region = region,
            ClusterType = "dedicated",
            ConnectionType = "public",
            ThroughputTier = throughputTier,
            Zones = zones,
            AllowDeletion = clusterAllowDeletion,
            ClusterConfiguration = new Redpanda.Inputs.ClusterClusterConfigurationArgs
            {
                CustomPropertiesJson = JsonSerializer.Serialize(new Dictionary<string, object?>
                {
                    ["auto.create.topics.enable"] = false,
                    ["schema_registry_enable_authorization"] = true,
                }),
            },
            Tags = clusterTags,
            Timeouts = new Redpanda.Inputs.ClusterTimeoutsArgs
            {
                Create = "90m",
            },
        });
    
        var testUser = new Redpanda.User("test", new()
        {
            Name = userName,
            Password = userPw,
            Mechanism = mechanism,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = userAllowDeletion,
        });
    
        var testTopic = new Redpanda.Topic("test", new()
        {
            Name = topicName,
            PartitionCount = partitionCount,
            ReplicationFactor = replicationFactor,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = true,
            Configuration = 
            {
                { "cleanup.policy", "delete" },
                { "retention.ms", topicRetentionMs },
            },
        });
    
        // Bootstrap SR ACL grants for the provider's own Bearer-token principal.
        // SUBJECT grant authorizes POST /subjects/<subj>/versions; REGISTRY grant
        // authorizes the franz-go follow-up GET /schemas/ids/<id>/versions.
        var providerBootstrapSubject = new Redpanda.SchemaRegistryAcl("provider_bootstrap_subject", new()
        {
            ClusterId = testCluster.Id,
            Principal = "User:*",
            ResourceType = "SUBJECT",
            ResourceName = topicName,
            PatternType = "PREFIXED",
            Host = "*",
            Operation = "ALL",
            Permission = "ALLOW",
            AllowDeletion = true,
        });
    
        var providerBootstrapRegistry = new Redpanda.SchemaRegistryAcl("provider_bootstrap_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = "User:*",
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "ALL",
            Permission = "ALLOW",
            AllowDeletion = true,
        });
    
        var clusterAdmin = new Redpanda.Acl("cluster_admin", new()
        {
            ResourceType = "CLUSTER",
            ResourceName = "kafka-cluster",
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "ALL",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var schemaRegistryAdmin = new Redpanda.Acl("schema_registry_admin", new()
        {
            ResourceType = "CLUSTER",
            ResourceName = "kafka-cluster",
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "ALTER",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var clusterAction = new Redpanda.Acl("cluster_action", new()
        {
            ResourceType = "CLUSTER",
            ResourceName = "kafka-cluster",
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "CLUSTER_ACTION",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var topicAccess = new Redpanda.Acl("topic_access", new()
        {
            ResourceType = "TOPIC",
            ResourceName = testTopic.Name,
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "ALL",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var allTestTopic = new Redpanda.SchemaRegistryAcl("all_test_topic", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "SUBJECT",
            ResourceName = $"{topicName}-",
            PatternType = "PREFIXED",
            Host = "*",
            Operation = "ALL",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var describeRegistry = new Redpanda.SchemaRegistryAcl("describe_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "DESCRIBE",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var alterConfigsRegistry = new Redpanda.SchemaRegistryAcl("alter_configs_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "ALTER_CONFIGS",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var readRegistry = new Redpanda.SchemaRegistryAcl("read_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "READ",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var writeRegistry = new Redpanda.SchemaRegistryAcl("write_registry", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "REGISTRY",
            ResourceName = "*",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "WRITE",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var userSchema = new Redpanda.Schema("user_schema", new()
        {
            ClusterId = testCluster.Id,
            Subject = $"{topicName}-value",
            SchemaType = schemaType,
            Schema = userSchemaDefinition,
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
                clusterAction,
                topicAccess,
                providerBootstrapSubject,
                providerBootstrapRegistry,
                allTestTopic,
                describeRegistry,
                alterConfigsRegistry,
                readRegistry,
                writeRegistry,
            },
        });
    
        var userEventSchema = new Redpanda.Schema("user_event_schema", new()
        {
            ClusterId = testCluster.Id,
            Subject = $"{topicName}-events-value",
            SchemaType = schemaType,
            Schema = userEventSchemaDefinition,
            AllowDeletion = true,
            References = new[]
            {
                new Redpanda.Inputs.SchemaReferenceArgs
                {
                    Name = "User",
                    Subject = userSchema.Subject,
                    Version = userSchema.Version,
                },
            },
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
                clusterAction,
                topicAccess,
                providerBootstrapSubject,
                providerBootstrapRegistry,
                allTestTopic,
                describeRegistry,
                alterConfigsRegistry,
                readRegistry,
                writeRegistry,
            },
        });
    
        var productSchema = new Redpanda.Schema("product_schema", new()
        {
            ClusterId = testCluster.Id,
            Subject = $"{topicName}-product-value",
            SchemaType = schemaType,
            Schema = productSchemaDefinition,
            Compatibility = compatibilityLevel,
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
                clusterAction,
                topicAccess,
                providerBootstrapSubject,
                providerBootstrapRegistry,
                allTestTopic,
                describeRegistry,
                alterConfigsRegistry,
                readRegistry,
                writeRegistry,
            },
        });
    
        var developer = new Redpanda.Role("developer", new()
        {
            Name = roleName,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = roleAllowDeletion,
        });
    
        var roleTopicRead = new Redpanda.Acl("role_topic_read", new()
        {
            ResourceType = "TOPIC",
            ResourceName = testTopic.Name,
            ResourcePatternType = "LITERAL",
            Principal = developer.Name.Apply(name => $"RedpandaRole:{name}"),
            Host = "*",
            Operation = "READ",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
        var readProduct = new Redpanda.SchemaRegistryAcl("read_product", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "SUBJECT",
            ResourceName = "product-",
            PatternType = "PREFIXED",
            Host = "*",
            Operation = "READ",
            Permission = "ALLOW",
            AllowDeletion = srAclAllowDeletion,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var writeOrders = new Redpanda.SchemaRegistryAcl("write_orders", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "SUBJECT",
            ResourceName = "orders-value",
            PatternType = "LITERAL",
            Host = "*",
            Operation = "WRITE",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var describeTestTopic = new Redpanda.SchemaRegistryAcl("describe_test_topic", new()
        {
            ClusterId = testCluster.Id,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ResourceType = "SUBJECT",
            ResourceName = $"{topicName}-",
            PatternType = "PREFIXED",
            Host = "*",
            Operation = "DESCRIBE",
            Permission = "ALLOW",
            AllowDeletion = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                clusterAdmin,
                schemaRegistryAdmin,
            },
        });
    
        var developerAssignment = new Redpanda.RoleAssignment("developer_assignment", new()
        {
            RoleName = developer.Name,
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            ClusterApiUrl = testCluster.ClusterApiUrl,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                testUser,
            },
        });
    
        var testPipeline = new Redpanda.Pipeline("test", new()
        {
            ClusterApiUrl = testCluster.ClusterApiUrl,
            DisplayName = pipelineName,
            Description = pipelineDescription,
            ConfigYaml = pipelineConfigYaml,
            State = pipelineState,
            AllowDeletion = pipelineAllowDeletion,
            Resources = new Redpanda.Inputs.PipelineResourcesArgs
            {
                MemoryShares = pipelineMemoryShares,
                CpuShares = pipelineCpuShares,
            },
            Tags = 
            {
                { "environment", "test" },
                { "managed-by", "terraform" },
            },
        });
    
        return new Dictionary<string, object?>
        {
            ["pipelineInfo"] = 
            {
                { "id", testPipeline.Id },
                { "name", testPipeline.DisplayName },
                { "state", testPipeline.State },
                { "url", testPipeline.Url },
            },
            ["userSchemaInfo"] = 
            {
                { "id", userSchema.SchemaId },
                { "subject", userSchema.Subject },
                { "version", userSchema.Version },
                { "type", userSchema.SchemaType },
            },
            ["userEventSchemaInfo"] = 
            {
                { "id", userEventSchema.SchemaId },
                { "subject", userEventSchema.Subject },
                { "version", userEventSchema.Version },
                { "type", userEventSchema.SchemaType },
                { "references", userEventSchema.References },
            },
            ["productSchemaInfo"] = 
            {
                { "id", productSchema.SchemaId },
                { "subject", productSchema.Subject },
                { "version", productSchema.Version },
                { "type", productSchema.SchemaType },
                { "compatibility", productSchema.Compatibility },
            },
        };
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.redpanda.ResourceGroup;
    import com.pulumi.redpanda.ResourceGroupArgs;
    import com.pulumi.redpanda.Network;
    import com.pulumi.redpanda.NetworkArgs;
    import com.pulumi.redpanda.inputs.NetworkTimeoutsArgs;
    import com.pulumi.redpanda.Cluster;
    import com.pulumi.redpanda.ClusterArgs;
    import com.pulumi.redpanda.inputs.ClusterClusterConfigurationArgs;
    import com.pulumi.redpanda.inputs.ClusterTimeoutsArgs;
    import com.pulumi.redpanda.User;
    import com.pulumi.redpanda.UserArgs;
    import com.pulumi.redpanda.Topic;
    import com.pulumi.redpanda.TopicArgs;
    import com.pulumi.redpanda.SchemaRegistryAcl;
    import com.pulumi.redpanda.SchemaRegistryAclArgs;
    import com.pulumi.redpanda.Acl;
    import com.pulumi.redpanda.AclArgs;
    import com.pulumi.redpanda.Schema;
    import com.pulumi.redpanda.SchemaArgs;
    import com.pulumi.redpanda.inputs.SchemaReferenceArgs;
    import com.pulumi.redpanda.Role;
    import com.pulumi.redpanda.RoleArgs;
    import com.pulumi.redpanda.RoleAssignment;
    import com.pulumi.redpanda.RoleAssignmentArgs;
    import com.pulumi.redpanda.Pipeline;
    import com.pulumi.redpanda.PipelineArgs;
    import com.pulumi.redpanda.inputs.PipelineResourcesArgs;
    import static com.pulumi.codegen.internal.Serialization.*;
    import com.pulumi.resources.CustomResourceOptions;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var test = new ResourceGroup("test", ResourceGroupArgs.builder()
                .name(resourceGroupName)
                .build());
    
            var testNetwork = new Network("testNetwork", NetworkArgs.builder()
                .name(networkName)
                .resourceGroupId(test.id())
                .cloudProvider(cloudProvider)
                .region(region)
                .clusterType("dedicated")
                .cidrBlock("10.0.0.0/20")
                .timeouts(NetworkTimeoutsArgs.builder()
                    .create("20m")
                    .delete("20m")
                    .build())
                .build());
    
            var testCluster = new Cluster("testCluster", ClusterArgs.builder()
                .name(clusterName)
                .resourceGroupId(test.id())
                .networkId(testNetwork.id())
                .cloudProvider(cloudProvider)
                .region(region)
                .clusterType("dedicated")
                .connectionType("public")
                .throughputTier(throughputTier)
                .zones(zones)
                .allowDeletion(clusterAllowDeletion)
                .clusterConfiguration(ClusterClusterConfigurationArgs.builder()
                    .customPropertiesJson(serializeJson(
                        jsonObject(
                            jsonProperty("auto.create.topics.enable", false),
                            jsonProperty("schema_registry_enable_authorization", true)
                        )))
                    .build())
                .tags(clusterTags)
                .timeouts(ClusterTimeoutsArgs.builder()
                    .create("90m")
                    .build())
                .build());
    
            var testUser = new User("testUser", UserArgs.builder()
                .name(userName)
                .password(userPw)
                .mechanism(mechanism)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(userAllowDeletion)
                .build());
    
            var testTopic = new Topic("testTopic", TopicArgs.builder()
                .name(topicName)
                .partitionCount(partitionCount)
                .replicationFactor(replicationFactor)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(true)
                .configuration(Map.ofEntries(
                    Map.entry("cleanup.policy", "delete"),
                    Map.entry("retention.ms", topicRetentionMs)
                ))
                .build());
    
            // Bootstrap SR ACL grants for the provider's own Bearer-token principal.
            // SUBJECT grant authorizes POST /subjects/<subj>/versions; REGISTRY grant
            // authorizes the franz-go follow-up GET /schemas/ids/<id>/versions.
            var providerBootstrapSubject = new SchemaRegistryAcl("providerBootstrapSubject", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal("User:*")
                .resourceType("SUBJECT")
                .resourceName(topicName)
                .patternType("PREFIXED")
                .host("*")
                .operation("ALL")
                .permission("ALLOW")
                .allowDeletion(true)
                .build());
    
            var providerBootstrapRegistry = new SchemaRegistryAcl("providerBootstrapRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal("User:*")
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("ALL")
                .permission("ALLOW")
                .allowDeletion(true)
                .build());
    
            var clusterAdmin = new Acl("clusterAdmin", AclArgs.builder()
                .resourceType("CLUSTER")
                .resourceName("kafka-cluster")
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("ALL")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var schemaRegistryAdmin = new Acl("schemaRegistryAdmin", AclArgs.builder()
                .resourceType("CLUSTER")
                .resourceName("kafka-cluster")
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("ALTER")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var clusterAction = new Acl("clusterAction", AclArgs.builder()
                .resourceType("CLUSTER")
                .resourceName("kafka-cluster")
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("CLUSTER_ACTION")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var topicAccess = new Acl("topicAccess", AclArgs.builder()
                .resourceType("TOPIC")
                .resourceName(testTopic.name())
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("ALL")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var allTestTopic = new SchemaRegistryAcl("allTestTopic", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("SUBJECT")
                .resourceName(String.format("%s-", topicName))
                .patternType("PREFIXED")
                .host("*")
                .operation("ALL")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var describeRegistry = new SchemaRegistryAcl("describeRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("DESCRIBE")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var alterConfigsRegistry = new SchemaRegistryAcl("alterConfigsRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("ALTER_CONFIGS")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var readRegistry = new SchemaRegistryAcl("readRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("READ")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var writeRegistry = new SchemaRegistryAcl("writeRegistry", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("REGISTRY")
                .resourceName("*")
                .patternType("LITERAL")
                .host("*")
                .operation("WRITE")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var userSchema = new Schema("userSchema", SchemaArgs.builder()
                .clusterId(testCluster.id())
                .subject(String.format("%s-value", topicName))
                .schemaType(schemaType)
                .schema(userSchemaDefinition)
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin,
                        clusterAction,
                        topicAccess,
                        providerBootstrapSubject,
                        providerBootstrapRegistry,
                        allTestTopic,
                        describeRegistry,
                        alterConfigsRegistry,
                        readRegistry,
                        writeRegistry)
                    .build());
    
            var userEventSchema = new Schema("userEventSchema", SchemaArgs.builder()
                .clusterId(testCluster.id())
                .subject(String.format("%s-events-value", topicName))
                .schemaType(schemaType)
                .schema(userEventSchemaDefinition)
                .allowDeletion(true)
                .references(SchemaReferenceArgs.builder()
                    .name("User")
                    .subject(userSchema.subject())
                    .version(userSchema.version())
                    .build())
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin,
                        clusterAction,
                        topicAccess,
                        providerBootstrapSubject,
                        providerBootstrapRegistry,
                        allTestTopic,
                        describeRegistry,
                        alterConfigsRegistry,
                        readRegistry,
                        writeRegistry)
                    .build());
    
            var productSchema = new Schema("productSchema", SchemaArgs.builder()
                .clusterId(testCluster.id())
                .subject(String.format("%s-product-value", topicName))
                .schemaType(schemaType)
                .schema(productSchemaDefinition)
                .compatibility(compatibilityLevel)
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin,
                        clusterAction,
                        topicAccess,
                        providerBootstrapSubject,
                        providerBootstrapRegistry,
                        allTestTopic,
                        describeRegistry,
                        alterConfigsRegistry,
                        readRegistry,
                        writeRegistry)
                    .build());
    
            var developer = new Role("developer", RoleArgs.builder()
                .name(roleName)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(roleAllowDeletion)
                .build());
    
            var roleTopicRead = new Acl("roleTopicRead", AclArgs.builder()
                .resourceType("TOPIC")
                .resourceName(testTopic.name())
                .resourcePatternType("LITERAL")
                .principal(developer.name().applyValue(_name -> String.format("RedpandaRole:%s", _name)))
                .host("*")
                .operation("READ")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
            var readProduct = new SchemaRegistryAcl("readProduct", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("SUBJECT")
                .resourceName("product-")
                .patternType("PREFIXED")
                .host("*")
                .operation("READ")
                .permission("ALLOW")
                .allowDeletion(srAclAllowDeletion)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var writeOrders = new SchemaRegistryAcl("writeOrders", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("SUBJECT")
                .resourceName("orders-value")
                .patternType("LITERAL")
                .host("*")
                .operation("WRITE")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var describeTestTopic = new SchemaRegistryAcl("describeTestTopic", SchemaRegistryAclArgs.builder()
                .clusterId(testCluster.id())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .resourceType("SUBJECT")
                .resourceName(String.format("%s-", topicName))
                .patternType("PREFIXED")
                .host("*")
                .operation("DESCRIBE")
                .permission("ALLOW")
                .allowDeletion(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        clusterAdmin,
                        schemaRegistryAdmin)
                    .build());
    
            var developerAssignment = new RoleAssignment("developerAssignment", RoleAssignmentArgs.builder()
                .roleName(developer.name())
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .clusterApiUrl(testCluster.clusterApiUrl())
                .build(), CustomResourceOptions.builder()
                    .dependsOn(testUser)
                    .build());
    
            var testPipeline = new Pipeline("testPipeline", PipelineArgs.builder()
                .clusterApiUrl(testCluster.clusterApiUrl())
                .displayName(pipelineName)
                .description(pipelineDescription)
                .configYaml(pipelineConfigYaml)
                .state(pipelineState)
                .allowDeletion(pipelineAllowDeletion)
                .resources(PipelineResourcesArgs.builder()
                    .memoryShares(pipelineMemoryShares)
                    .cpuShares(pipelineCpuShares)
                    .build())
                .tags(Map.ofEntries(
                    Map.entry("environment", "test"),
                    Map.entry("managed-by", "terraform")
                ))
                .build());
    
            ctx.export("pipelineInfo", Map.ofEntries(
                Map.entry("id", testPipeline.id()),
                Map.entry("name", testPipeline.displayName()),
                Map.entry("state", testPipeline.state()),
                Map.entry("url", testPipeline.url())
            ));
            ctx.export("userSchemaInfo", Map.ofEntries(
                Map.entry("id", userSchema.schemaId()),
                Map.entry("subject", userSchema.subject()),
                Map.entry("version", userSchema.version()),
                Map.entry("type", userSchema.schemaType())
            ));
            ctx.export("userEventSchemaInfo", Map.ofEntries(
                Map.entry("id", userEventSchema.schemaId()),
                Map.entry("subject", userEventSchema.subject()),
                Map.entry("version", userEventSchema.version()),
                Map.entry("type", userEventSchema.schemaType()),
                Map.entry("references", userEventSchema.references())
            ));
            ctx.export("productSchemaInfo", Map.ofEntries(
                Map.entry("id", productSchema.schemaId()),
                Map.entry("subject", productSchema.subject()),
                Map.entry("version", productSchema.version()),
                Map.entry("type", productSchema.schemaType()),
                Map.entry("compatibility", productSchema.compatibility())
            ));
        }
    }
    
    resources:
      test:
        type: redpanda:ResourceGroup
        properties:
          name: ${resourceGroupName}
      testNetwork:
        type: redpanda:Network
        name: test
        properties:
          name: ${networkName}
          resourceGroupId: ${test.id}
          cloudProvider: ${cloudProvider}
          region: ${region}
          clusterType: dedicated
          cidrBlock: 10.0.0.0/20
          timeouts:
            create: 20m
            delete: 20m
      testCluster:
        type: redpanda:Cluster
        name: test
        properties:
          name: ${clusterName}
          resourceGroupId: ${test.id}
          networkId: ${testNetwork.id}
          cloudProvider: ${cloudProvider}
          region: ${region}
          clusterType: dedicated
          connectionType: public
          throughputTier: ${throughputTier}
          zones: ${zones}
          allowDeletion: ${clusterAllowDeletion}
          clusterConfiguration:
            customPropertiesJson:
              fn::toJSON:
                auto.create.topics.enable: false
                schema_registry_enable_authorization: true
          tags: ${clusterTags}
          timeouts:
            create: 90m
      testUser:
        type: redpanda:User
        name: test
        properties:
          name: ${userName}
          password: ${userPw}
          mechanism: ${mechanism}
          clusterApiUrl: ${testCluster.clusterApiUrl}
          allowDeletion: ${userAllowDeletion}
      testTopic:
        type: redpanda:Topic
        name: test
        properties:
          name: ${topicName}
          partitionCount: ${partitionCount}
          replicationFactor: ${replicationFactor}
          clusterApiUrl: ${testCluster.clusterApiUrl}
          allowDeletion: true
          configuration:
            cleanup.policy: delete
            retention.ms: ${topicRetentionMs}
      # Bootstrap SR ACL grants for the provider's own Bearer-token principal.
      # SUBJECT grant authorizes POST /subjects/<subj>/versions; REGISTRY grant
      # authorizes the franz-go follow-up GET /schemas/ids/<id>/versions.
      providerBootstrapSubject:
        type: redpanda:SchemaRegistryAcl
        name: provider_bootstrap_subject
        properties:
          clusterId: ${testCluster.id}
          principal: User:*
          resourceType: SUBJECT
          resourceName: ${topicName}
          patternType: PREFIXED
          host: '*'
          operation: ALL
          permission: ALLOW
          allowDeletion: true
      providerBootstrapRegistry:
        type: redpanda:SchemaRegistryAcl
        name: provider_bootstrap_registry
        properties:
          clusterId: ${testCluster.id}
          principal: User:*
          resourceType: REGISTRY
          resourceName: '*'
          patternType: LITERAL
          host: '*'
          operation: ALL
          permission: ALLOW
          allowDeletion: true
      userSchema:
        type: redpanda:Schema
        name: user_schema
        properties:
          clusterId: ${testCluster.id}
          subject: ${topicName}-value
          schemaType: ${schemaType}
          schema: ${userSchemaDefinition}
          allowDeletion: true
        options:
          dependsOn:
            - ${clusterAdmin}
            - ${schemaRegistryAdmin}
            - ${clusterAction}
            - ${topicAccess}
            - ${providerBootstrapSubject}
            - ${providerBootstrapRegistry}
            - ${allTestTopic}
            - ${describeRegistry}
            - ${alterConfigsRegistry}
            - ${readRegistry}
            - ${writeRegistry}
      userEventSchema:
        type: redpanda:Schema
        name: user_event_schema
        properties:
          clusterId: ${testCluster.id}
          subject: ${topicName}-events-value
          schemaType: ${schemaType}
          schema: ${userEventSchemaDefinition}
          allowDeletion: true
          references:
            - name: User
              subject: ${userSchema.subject}
              version: ${userSchema.version}
        options:
          dependsOn:
            - ${clusterAdmin}
            - ${schemaRegistryAdmin}
            - ${clusterAction}
            - ${topicAccess}
            - ${providerBootstrapSubject}
            - ${providerBootstrapRegistry}
            - ${allTestTopic}
            - ${describeRegistry}
            - ${alterConfigsRegistry}
            - ${readRegistry}
            - ${writeRegistry}
      productSchema:
        type: redpanda:Schema
        name: product_schema
        properties:
          clusterId: ${testCluster.id}
          subject: ${topicName}-product-value
          schemaType: ${schemaType}
          schema: ${productSchemaDefinition}
          compatibility: ${compatibilityLevel}
          allowDeletion: true
        options:
          dependsOn:
            - ${clusterAdmin}
            - ${schemaRegistryAdmin}
            - ${clusterAction}
            - ${topicAccess}
            - ${providerBootstrapSubject}
            - ${providerBootstrapRegistry}
            - ${allTestTopic}
            - ${describeRegistry}
            - ${alterConfigsRegistry}
            - ${readRegistry}
            - ${writeRegistry}
      clusterAdmin:
        type: redpanda:Acl
        name: cluster_admin
        properties:
          resourceType: CLUSTER
          resourceName: kafka-cluster
          resourcePatternType: LITERAL
          principal: User:${testUser.name}
          host: '*'
          operation: ALL
          permissionType: ALLOW
          clusterApiUrl: ${testCluster.clusterApiUrl}
          allowDeletion: ${aclAllowDeletion}
      schemaRegistryAdmin:
        type: redpanda:Acl
        name: schema_registry_admin
        properties:
          resourceType: CLUSTER
          resourceName: kafka-cluster
          resourcePatternType: LITERAL
          principal: User:${testUser.name}
          host: '*'
          operation: ALTER
          permissionType: ALLOW
          clusterApiUrl: ${testCluster.clusterApiUrl}
          allowDeletion: ${aclAllowDeletion}
      clusterAction:
        type: redpanda:Acl
        name: cluster_action
        properties:
          resourceType: CLUSTER
          resourceName: kafka-cluster
          resourcePatternType: LITERAL
          principal: User:${testUser.name}
          host: '*'
          operation: CLUSTER_ACTION
          permissionType: ALLOW
          clusterApiUrl: ${testCluster.clusterApiUrl}
          allowDeletion: ${aclAllowDeletion}
      topicAccess:
        type: redpanda:Acl
        name: topic_access
        properties:
          resourceType: TOPIC
          resourceName: ${testTopic.name}
          resourcePatternType: LITERAL
          principal: User:${testUser.name}
          host: '*'
          operation: ALL
          permissionType: ALLOW
          clusterApiUrl: ${testCluster.clusterApiUrl}
          allowDeletion: ${aclAllowDeletion}
      roleTopicRead:
        type: redpanda:Acl
        name: role_topic_read
        properties:
          resourceType: TOPIC
          resourceName: ${testTopic.name}
          resourcePatternType: LITERAL
          principal: RedpandaRole:${developer.name}
          host: '*'
          operation: READ
          permissionType: ALLOW
          clusterApiUrl: ${testCluster.clusterApiUrl}
          allowDeletion: ${aclAllowDeletion}
      readProduct:
        type: redpanda:SchemaRegistryAcl
        name: read_product
        properties:
          clusterId: ${testCluster.id}
          principal: User:${testUser.name}
          resourceType: SUBJECT
          resourceName: product-
          patternType: PREFIXED
          host: '*'
          operation: READ
          permission: ALLOW
          allowDeletion: ${srAclAllowDeletion}
        options:
          dependsOn:
            - ${clusterAdmin}
            - ${schemaRegistryAdmin}
      writeOrders:
        type: redpanda:SchemaRegistryAcl
        name: write_orders
        properties:
          clusterId: ${testCluster.id}
          principal: User:${testUser.name}
          resourceType: SUBJECT
          resourceName: orders-value
          patternType: LITERAL
          host: '*'
          operation: WRITE
          permission: ALLOW
          allowDeletion: true
        options:
          dependsOn:
            - ${clusterAdmin}
            - ${schemaRegistryAdmin}
      allTestTopic:
        type: redpanda:SchemaRegistryAcl
        name: all_test_topic
        properties:
          clusterId: ${testCluster.id}
          principal: User:${testUser.name}
          resourceType: SUBJECT
          resourceName: ${topicName}-
          patternType: PREFIXED
          host: '*'
          operation: ALL
          permission: ALLOW
          allowDeletion: true
        options:
          dependsOn:
            - ${clusterAdmin}
            - ${schemaRegistryAdmin}
      describeTestTopic:
        type: redpanda:SchemaRegistryAcl
        name: describe_test_topic
        properties:
          clusterId: ${testCluster.id}
          principal: User:${testUser.name}
          resourceType: SUBJECT
          resourceName: ${topicName}-
          patternType: PREFIXED
          host: '*'
          operation: DESCRIBE
          permission: ALLOW
          allowDeletion: true
        options:
          dependsOn:
            - ${clusterAdmin}
            - ${schemaRegistryAdmin}
      describeRegistry:
        type: redpanda:SchemaRegistryAcl
        name: describe_registry
        properties:
          clusterId: ${testCluster.id}
          principal: User:${testUser.name}
          resourceType: REGISTRY
          resourceName: '*'
          patternType: LITERAL
          host: '*'
          operation: DESCRIBE
          permission: ALLOW
          allowDeletion: true
        options:
          dependsOn:
            - ${clusterAdmin}
            - ${schemaRegistryAdmin}
      alterConfigsRegistry:
        type: redpanda:SchemaRegistryAcl
        name: alter_configs_registry
        properties:
          clusterId: ${testCluster.id}
          principal: User:${testUser.name}
          resourceType: REGISTRY
          resourceName: '*'
          patternType: LITERAL
          host: '*'
          operation: ALTER_CONFIGS
          permission: ALLOW
          allowDeletion: true
        options:
          dependsOn:
            - ${clusterAdmin}
            - ${schemaRegistryAdmin}
      readRegistry:
        type: redpanda:SchemaRegistryAcl
        name: read_registry
        properties:
          clusterId: ${testCluster.id}
          principal: User:${testUser.name}
          resourceType: REGISTRY
          resourceName: '*'
          patternType: LITERAL
          host: '*'
          operation: READ
          permission: ALLOW
          allowDeletion: true
        options:
          dependsOn:
            - ${clusterAdmin}
            - ${schemaRegistryAdmin}
      writeRegistry:
        type: redpanda:SchemaRegistryAcl
        name: write_registry
        properties:
          clusterId: ${testCluster.id}
          principal: User:${testUser.name}
          resourceType: REGISTRY
          resourceName: '*'
          patternType: LITERAL
          host: '*'
          operation: WRITE
          permission: ALLOW
          allowDeletion: true
        options:
          dependsOn:
            - ${clusterAdmin}
            - ${schemaRegistryAdmin}
      developer:
        type: redpanda:Role
        properties:
          name: ${roleName}
          clusterApiUrl: ${testCluster.clusterApiUrl}
          allowDeletion: ${roleAllowDeletion}
      developerAssignment:
        type: redpanda:RoleAssignment
        name: developer_assignment
        properties:
          roleName: ${developer.name}
          principal: User:${testUser.name}
          clusterApiUrl: ${testCluster.clusterApiUrl}
        options:
          dependsOn:
            - ${testUser}
      testPipeline:
        type: redpanda:Pipeline
        name: test
        properties:
          clusterApiUrl: ${testCluster.clusterApiUrl}
          displayName: ${pipelineName}
          description: ${pipelineDescription}
          configYaml: ${pipelineConfigYaml}
          state: ${pipelineState}
          allowDeletion: ${pipelineAllowDeletion}
          resources:
            memoryShares: ${pipelineMemoryShares}
            cpuShares: ${pipelineCpuShares}
          tags:
            environment: test
            managed-by: terraform
    outputs:
      pipelineInfo:
        id: ${testPipeline.id}
        name: ${testPipeline.displayName}
        state: ${testPipeline.state}
        url: ${testPipeline.url}
      userSchemaInfo:
        id: ${userSchema.schemaId}
        subject: ${userSchema.subject}
        version: ${userSchema.version}
        type: ${userSchema.schemaType}
      userEventSchemaInfo:
        id: ${userEventSchema.schemaId}
        subject: ${userEventSchema.subject}
        version: ${userEventSchema.version}
        type: ${userEventSchema.schemaType}
        references: ${userEventSchema.references}
      productSchemaInfo:
        id: ${productSchema.schemaId}
        subject: ${productSchema.subject}
        version: ${productSchema.version}
        type: ${productSchema.schemaType}
        compatibility: ${productSchema.compatibility}
    
    Example coming soon!
    

    BYOC

    This configuration of cluster allows the end user to provide access to their cloud account to the provider so that it can create the necessary infrastructure in their account rather than in Redpanda’s Cloud.

    Additional Requirements

    To build a BYOC cluster you must provide credentials that enable the provider to authenticate to the relevant cloud provider. How this works will depend on which cloud provider you are using.

    AWS BYOC

    To create a BYOC AWS cluster you must provide an AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. The account must have fairly wide ranging permissions to create the necessary infrastructure.

    import * as pulumi from "@pulumi/pulumi";
    import * as redpanda from "@pulumi/redpanda";
    
    const test = new redpanda.ResourceGroup("test", {name: resourceGroupName});
    const testNetwork = new redpanda.Network("test", {
        name: networkName,
        resourceGroupId: test.id,
        cloudProvider: cloudProvider,
        region: region,
        clusterType: "byoc",
        cidrBlock: "10.0.0.0/20",
    });
    const testCluster = new redpanda.Cluster("test", {
        name: clusterName,
        resourceGroupId: test.id,
        networkId: testNetwork.id,
        cloudProvider: testNetwork.cloudProvider,
        region: testNetwork.region,
        clusterType: testNetwork.clusterType,
        connectionType: "public",
        throughputTier: throughputTier,
        zones: zones,
        allowDeletion: clusterAllowDeletion,
        tags: clusterTags,
        timeouts: {
            create: "90m",
        },
    });
    const testUser = new redpanda.User("test", {
        name: userName,
        password: userPw,
        mechanism: mechanism,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: userAllowDeletion,
    });
    const testTopic = new redpanda.Topic("test", {
        name: topicName,
        partitionCount: partitionCount,
        replicationFactor: replicationFactor,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: true,
        configuration: topicConfiguration != null ? topicConfiguration : {
            "cleanup.policy": "delete",
            "retention.ms": topicRetentionMs,
        },
    });
    const topicAccess = new redpanda.Acl("topic_access", {
        resourceType: "TOPIC",
        resourceName: testTopic.name,
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "READ",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    
    import pulumi
    import pulumi_redpanda as redpanda
    
    test = redpanda.ResourceGroup("test", name=resource_group_name)
    test_network = redpanda.Network("test",
        name=network_name,
        resource_group_id=test.id,
        cloud_provider=cloud_provider,
        region=region,
        cluster_type="byoc",
        cidr_block="10.0.0.0/20")
    test_cluster = redpanda.Cluster("test",
        name=cluster_name,
        resource_group_id=test.id,
        network_id=test_network.id,
        cloud_provider=test_network.cloud_provider,
        region=test_network.region,
        cluster_type=test_network.cluster_type,
        connection_type="public",
        throughput_tier=throughput_tier,
        zones=zones,
        allow_deletion=cluster_allow_deletion,
        tags=cluster_tags,
        timeouts={
            "create": "90m",
        })
    test_user = redpanda.User("test",
        name=user_name,
        password=user_pw,
        mechanism=mechanism,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=user_allow_deletion)
    test_topic = redpanda.Topic("test",
        name=topic_name,
        partition_count=partition_count,
        replication_factor=replication_factor,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=True,
        configuration=topic_configuration if topic_configuration != None else {
            "cleanup.policy": "delete",
            "retention.ms": topic_retention_ms,
        })
    topic_access = redpanda.Acl("topic_access",
        resource_type="TOPIC",
        resource_name_=test_topic.name,
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="READ",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-terraform-provider/sdks/go/redpanda/v2/redpanda"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		test, err := redpanda.NewResourceGroup(ctx, "test", &redpanda.ResourceGroupArgs{
    			Name: pulumi.Any(resourceGroupName),
    		})
    		if err != nil {
    			return err
    		}
    		testNetwork, err := redpanda.NewNetwork(ctx, "test", &redpanda.NetworkArgs{
    			Name:            pulumi.Any(networkName),
    			ResourceGroupId: test.ID(),
    			CloudProvider:   pulumi.Any(cloudProvider),
    			Region:          pulumi.Any(region),
    			ClusterType:     pulumi.String("byoc"),
    			CidrBlock:       pulumi.String("10.0.0.0/20"),
    		})
    		if err != nil {
    			return err
    		}
    		testCluster, err := redpanda.NewCluster(ctx, "test", &redpanda.ClusterArgs{
    			Name:            pulumi.Any(clusterName),
    			ResourceGroupId: test.ID(),
    			NetworkId:       testNetwork.ID(),
    			CloudProvider:   testNetwork.CloudProvider,
    			Region:          testNetwork.Region,
    			ClusterType:     testNetwork.ClusterType,
    			ConnectionType:  pulumi.String("public"),
    			ThroughputTier:  pulumi.Any(throughputTier),
    			Zones:           pulumi.Any(zones),
    			AllowDeletion:   pulumi.Any(clusterAllowDeletion),
    			Tags:            pulumi.Any(clusterTags),
    			Timeouts: &redpanda.ClusterTimeoutsArgs{
    				Create: pulumi.String("90m"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		testUser, err := redpanda.NewUser(ctx, "test", &redpanda.UserArgs{
    			Name:          pulumi.Any(userName),
    			Password:      pulumi.Any(userPw),
    			Mechanism:     pulumi.Any(mechanism),
    			ClusterApiUrl: testCluster.ClusterApiUrl,
    			AllowDeletion: pulumi.Any(userAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		var tmp0 pulumi.StringMap
    		if topicConfiguration != nil {
    			tmp0 = pulumi.Any(topicConfiguration)
    		} else {
    			tmp0 = pulumi.StringMap{
    				"cleanup.policy": pulumi.String("delete"),
    				"retention.ms":   pulumi.Any(topicRetentionMs),
    			}
    		}
    		testTopic, err := redpanda.NewTopic(ctx, "test", &redpanda.TopicArgs{
    			Name:              pulumi.Any(topicName),
    			PartitionCount:    pulumi.Any(partitionCount),
    			ReplicationFactor: pulumi.Any(replicationFactor),
    			ClusterApiUrl:     testCluster.ClusterApiUrl,
    			AllowDeletion:     pulumi.Bool(true),
    			Configuration:     pulumi.StringMap(tmp0),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewAcl(ctx, "topic_access", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("TOPIC"),
    			ResourceName:        testTopic.Name,
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("READ"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Redpanda = Pulumi.Redpanda;
    
    return await Deployment.RunAsync(() => 
    {
        var test = new Redpanda.ResourceGroup("test", new()
        {
            Name = resourceGroupName,
        });
    
        var testNetwork = new Redpanda.Network("test", new()
        {
            Name = networkName,
            ResourceGroupId = test.Id,
            CloudProvider = cloudProvider,
            Region = region,
            ClusterType = "byoc",
            CidrBlock = "10.0.0.0/20",
        });
    
        var testCluster = new Redpanda.Cluster("test", new()
        {
            Name = clusterName,
            ResourceGroupId = test.Id,
            NetworkId = testNetwork.Id,
            CloudProvider = testNetwork.CloudProvider,
            Region = testNetwork.Region,
            ClusterType = testNetwork.ClusterType,
            ConnectionType = "public",
            ThroughputTier = throughputTier,
            Zones = zones,
            AllowDeletion = clusterAllowDeletion,
            Tags = clusterTags,
            Timeouts = new Redpanda.Inputs.ClusterTimeoutsArgs
            {
                Create = "90m",
            },
        });
    
        var testUser = new Redpanda.User("test", new()
        {
            Name = userName,
            Password = userPw,
            Mechanism = mechanism,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = userAllowDeletion,
        });
    
        var testTopic = new Redpanda.Topic("test", new()
        {
            Name = topicName,
            PartitionCount = partitionCount,
            ReplicationFactor = replicationFactor,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = true,
            Configuration = topicConfiguration != null ? topicConfiguration : 
            {
                { "cleanup.policy", "delete" },
                { "retention.ms", topicRetentionMs },
            },
        });
    
        var topicAccess = new Redpanda.Acl("topic_access", new()
        {
            ResourceType = "TOPIC",
            ResourceName = testTopic.Name,
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "READ",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.redpanda.ResourceGroup;
    import com.pulumi.redpanda.ResourceGroupArgs;
    import com.pulumi.redpanda.Network;
    import com.pulumi.redpanda.NetworkArgs;
    import com.pulumi.redpanda.Cluster;
    import com.pulumi.redpanda.ClusterArgs;
    import com.pulumi.redpanda.inputs.ClusterTimeoutsArgs;
    import com.pulumi.redpanda.User;
    import com.pulumi.redpanda.UserArgs;
    import com.pulumi.redpanda.Topic;
    import com.pulumi.redpanda.TopicArgs;
    import com.pulumi.redpanda.Acl;
    import com.pulumi.redpanda.AclArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var test = new ResourceGroup("test", ResourceGroupArgs.builder()
                .name(resourceGroupName)
                .build());
    
            var testNetwork = new Network("testNetwork", NetworkArgs.builder()
                .name(networkName)
                .resourceGroupId(test.id())
                .cloudProvider(cloudProvider)
                .region(region)
                .clusterType("byoc")
                .cidrBlock("10.0.0.0/20")
                .build());
    
            var testCluster = new Cluster("testCluster", ClusterArgs.builder()
                .name(clusterName)
                .resourceGroupId(test.id())
                .networkId(testNetwork.id())
                .cloudProvider(testNetwork.cloudProvider())
                .region(testNetwork.region())
                .clusterType(testNetwork.clusterType())
                .connectionType("public")
                .throughputTier(throughputTier)
                .zones(zones)
                .allowDeletion(clusterAllowDeletion)
                .tags(clusterTags)
                .timeouts(ClusterTimeoutsArgs.builder()
                    .create("90m")
                    .build())
                .build());
    
            var testUser = new User("testUser", UserArgs.builder()
                .name(userName)
                .password(userPw)
                .mechanism(mechanism)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(userAllowDeletion)
                .build());
    
            var testTopic = new Topic("testTopic", TopicArgs.builder()
                .name(topicName)
                .partitionCount(partitionCount)
                .replicationFactor(replicationFactor)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(true)
                .configuration(topicConfiguration != null ? topicConfiguration : Map.ofEntries(
                    Map.entry("cleanup.policy", "delete"),
                    Map.entry("retention.ms", topicRetentionMs)
                ))
                .build());
    
            var topicAccess = new Acl("topicAccess", AclArgs.builder()
                .resourceType("TOPIC")
                .resourceName(testTopic.name())
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("READ")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
        }
    }
    
    Example coming soon!
    
    Example coming soon!
    

    GCP BYOC

    To create a GCP BYOC cluster you must provide a GCP_PROJECT_ID and GOOGLE_CREDENTIALS. We also accept the credentials encoded in base64 format if you use GOOGLE_CREDENTIALS_BASE64. The account must have fairly wide ranging permissions to create the necessary infrastructure.

    import * as pulumi from "@pulumi/pulumi";
    import * as redpanda from "@pulumi/redpanda";
    
    const test = new redpanda.ResourceGroup("test", {name: resourceGroupName});
    const testNetwork = new redpanda.Network("test", {
        name: networkName,
        resourceGroupId: test.id,
        cloudProvider: cloudProvider,
        region: region,
        clusterType: "byoc",
        cidrBlock: "10.0.0.0/20",
    });
    const testCluster = new redpanda.Cluster("test", {
        name: clusterName,
        resourceGroupId: test.id,
        networkId: testNetwork.id,
        cloudProvider: testNetwork.cloudProvider,
        region: testNetwork.region,
        clusterType: testNetwork.clusterType,
        connectionType: "public",
        throughputTier: throughputTier,
        zones: zones,
        allowDeletion: clusterAllowDeletion,
        tags: clusterTags,
    });
    const testUser = new redpanda.User("test", {
        name: userName,
        password: userPw,
        mechanism: mechanism,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: userAllowDeletion,
    });
    const testTopic = new redpanda.Topic("test", {
        name: topicName,
        partitionCount: partitionCount,
        replicationFactor: replicationFactor,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: true,
        configuration: topicConfiguration != null ? topicConfiguration : {
            "cleanup.policy": "delete",
            "retention.ms": topicRetentionMs,
        },
    });
    const topicAccess = new redpanda.Acl("topic_access", {
        resourceType: "TOPIC",
        resourceName: testTopic.name,
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "READ",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    
    import pulumi
    import pulumi_redpanda as redpanda
    
    test = redpanda.ResourceGroup("test", name=resource_group_name)
    test_network = redpanda.Network("test",
        name=network_name,
        resource_group_id=test.id,
        cloud_provider=cloud_provider,
        region=region,
        cluster_type="byoc",
        cidr_block="10.0.0.0/20")
    test_cluster = redpanda.Cluster("test",
        name=cluster_name,
        resource_group_id=test.id,
        network_id=test_network.id,
        cloud_provider=test_network.cloud_provider,
        region=test_network.region,
        cluster_type=test_network.cluster_type,
        connection_type="public",
        throughput_tier=throughput_tier,
        zones=zones,
        allow_deletion=cluster_allow_deletion,
        tags=cluster_tags)
    test_user = redpanda.User("test",
        name=user_name,
        password=user_pw,
        mechanism=mechanism,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=user_allow_deletion)
    test_topic = redpanda.Topic("test",
        name=topic_name,
        partition_count=partition_count,
        replication_factor=replication_factor,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=True,
        configuration=topic_configuration if topic_configuration != None else {
            "cleanup.policy": "delete",
            "retention.ms": topic_retention_ms,
        })
    topic_access = redpanda.Acl("topic_access",
        resource_type="TOPIC",
        resource_name_=test_topic.name,
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="READ",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-terraform-provider/sdks/go/redpanda/v2/redpanda"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		test, err := redpanda.NewResourceGroup(ctx, "test", &redpanda.ResourceGroupArgs{
    			Name: pulumi.Any(resourceGroupName),
    		})
    		if err != nil {
    			return err
    		}
    		testNetwork, err := redpanda.NewNetwork(ctx, "test", &redpanda.NetworkArgs{
    			Name:            pulumi.Any(networkName),
    			ResourceGroupId: test.ID(),
    			CloudProvider:   pulumi.Any(cloudProvider),
    			Region:          pulumi.Any(region),
    			ClusterType:     pulumi.String("byoc"),
    			CidrBlock:       pulumi.String("10.0.0.0/20"),
    		})
    		if err != nil {
    			return err
    		}
    		testCluster, err := redpanda.NewCluster(ctx, "test", &redpanda.ClusterArgs{
    			Name:            pulumi.Any(clusterName),
    			ResourceGroupId: test.ID(),
    			NetworkId:       testNetwork.ID(),
    			CloudProvider:   testNetwork.CloudProvider,
    			Region:          testNetwork.Region,
    			ClusterType:     testNetwork.ClusterType,
    			ConnectionType:  pulumi.String("public"),
    			ThroughputTier:  pulumi.Any(throughputTier),
    			Zones:           pulumi.Any(zones),
    			AllowDeletion:   pulumi.Any(clusterAllowDeletion),
    			Tags:            pulumi.Any(clusterTags),
    		})
    		if err != nil {
    			return err
    		}
    		testUser, err := redpanda.NewUser(ctx, "test", &redpanda.UserArgs{
    			Name:          pulumi.Any(userName),
    			Password:      pulumi.Any(userPw),
    			Mechanism:     pulumi.Any(mechanism),
    			ClusterApiUrl: testCluster.ClusterApiUrl,
    			AllowDeletion: pulumi.Any(userAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		var tmp0 pulumi.StringMap
    		if topicConfiguration != nil {
    			tmp0 = pulumi.Any(topicConfiguration)
    		} else {
    			tmp0 = pulumi.StringMap{
    				"cleanup.policy": pulumi.String("delete"),
    				"retention.ms":   pulumi.Any(topicRetentionMs),
    			}
    		}
    		testTopic, err := redpanda.NewTopic(ctx, "test", &redpanda.TopicArgs{
    			Name:              pulumi.Any(topicName),
    			PartitionCount:    pulumi.Any(partitionCount),
    			ReplicationFactor: pulumi.Any(replicationFactor),
    			ClusterApiUrl:     testCluster.ClusterApiUrl,
    			AllowDeletion:     pulumi.Bool(true),
    			Configuration:     pulumi.StringMap(tmp0),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewAcl(ctx, "topic_access", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("TOPIC"),
    			ResourceName:        testTopic.Name,
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("READ"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Redpanda = Pulumi.Redpanda;
    
    return await Deployment.RunAsync(() => 
    {
        var test = new Redpanda.ResourceGroup("test", new()
        {
            Name = resourceGroupName,
        });
    
        var testNetwork = new Redpanda.Network("test", new()
        {
            Name = networkName,
            ResourceGroupId = test.Id,
            CloudProvider = cloudProvider,
            Region = region,
            ClusterType = "byoc",
            CidrBlock = "10.0.0.0/20",
        });
    
        var testCluster = new Redpanda.Cluster("test", new()
        {
            Name = clusterName,
            ResourceGroupId = test.Id,
            NetworkId = testNetwork.Id,
            CloudProvider = testNetwork.CloudProvider,
            Region = testNetwork.Region,
            ClusterType = testNetwork.ClusterType,
            ConnectionType = "public",
            ThroughputTier = throughputTier,
            Zones = zones,
            AllowDeletion = clusterAllowDeletion,
            Tags = clusterTags,
        });
    
        var testUser = new Redpanda.User("test", new()
        {
            Name = userName,
            Password = userPw,
            Mechanism = mechanism,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = userAllowDeletion,
        });
    
        var testTopic = new Redpanda.Topic("test", new()
        {
            Name = topicName,
            PartitionCount = partitionCount,
            ReplicationFactor = replicationFactor,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = true,
            Configuration = topicConfiguration != null ? topicConfiguration : 
            {
                { "cleanup.policy", "delete" },
                { "retention.ms", topicRetentionMs },
            },
        });
    
        var topicAccess = new Redpanda.Acl("topic_access", new()
        {
            ResourceType = "TOPIC",
            ResourceName = testTopic.Name,
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "READ",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.redpanda.ResourceGroup;
    import com.pulumi.redpanda.ResourceGroupArgs;
    import com.pulumi.redpanda.Network;
    import com.pulumi.redpanda.NetworkArgs;
    import com.pulumi.redpanda.Cluster;
    import com.pulumi.redpanda.ClusterArgs;
    import com.pulumi.redpanda.User;
    import com.pulumi.redpanda.UserArgs;
    import com.pulumi.redpanda.Topic;
    import com.pulumi.redpanda.TopicArgs;
    import com.pulumi.redpanda.Acl;
    import com.pulumi.redpanda.AclArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var test = new ResourceGroup("test", ResourceGroupArgs.builder()
                .name(resourceGroupName)
                .build());
    
            var testNetwork = new Network("testNetwork", NetworkArgs.builder()
                .name(networkName)
                .resourceGroupId(test.id())
                .cloudProvider(cloudProvider)
                .region(region)
                .clusterType("byoc")
                .cidrBlock("10.0.0.0/20")
                .build());
    
            var testCluster = new Cluster("testCluster", ClusterArgs.builder()
                .name(clusterName)
                .resourceGroupId(test.id())
                .networkId(testNetwork.id())
                .cloudProvider(testNetwork.cloudProvider())
                .region(testNetwork.region())
                .clusterType(testNetwork.clusterType())
                .connectionType("public")
                .throughputTier(throughputTier)
                .zones(zones)
                .allowDeletion(clusterAllowDeletion)
                .tags(clusterTags)
                .build());
    
            var testUser = new User("testUser", UserArgs.builder()
                .name(userName)
                .password(userPw)
                .mechanism(mechanism)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(userAllowDeletion)
                .build());
    
            var testTopic = new Topic("testTopic", TopicArgs.builder()
                .name(topicName)
                .partitionCount(partitionCount)
                .replicationFactor(replicationFactor)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(true)
                .configuration(topicConfiguration != null ? topicConfiguration : Map.ofEntries(
                    Map.entry("cleanup.policy", "delete"),
                    Map.entry("retention.ms", topicRetentionMs)
                ))
                .build());
    
            var topicAccess = new Acl("topicAccess", AclArgs.builder()
                .resourceType("TOPIC")
                .resourceName(testTopic.name())
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("READ")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
        }
    }
    
    Example coming soon!
    
    Example coming soon!
    

    Azure BYOC

    To create a BYOC Azure cluster you must provide Azure credentials, be logged in to the Azure CLI, or specify an Azure authentication method. This provider supports the same authentication methods and environment variables as the official AzureRM provider. For example, to use a service principal and client certificate, you can pass the environment variables ARM_CLIENT_ID, ARM_CLIENT_SECRET, ARM_TENANT_ID, and ARM_SUBSCRIPTION_ID.

    The account must have fairly wide ranging permissions to create the necessary infrastructure.

    import * as pulumi from "@pulumi/pulumi";
    import * as redpanda from "@pulumi/redpanda";
    
    const test = new redpanda.ResourceGroup("test", {name: resourceGroupName});
    const testNetwork = new redpanda.Network("test", {
        name: networkName,
        resourceGroupId: test.id,
        cloudProvider: cloudProvider,
        region: region,
        clusterType: "byoc",
        cidrBlock: "10.0.0.0/20",
    });
    const testCluster = new redpanda.Cluster("test", {
        name: clusterName,
        resourceGroupId: test.id,
        networkId: testNetwork.id,
        cloudProvider: testNetwork.cloudProvider,
        region: testNetwork.region,
        clusterType: testNetwork.clusterType,
        connectionType: "public",
        throughputTier: throughputTier,
        zones: zones,
        allowDeletion: clusterAllowDeletion,
        tags: clusterTags,
    });
    const testUser = new redpanda.User("test", {
        name: userName,
        password: userPw,
        mechanism: mechanism,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: userAllowDeletion,
    });
    const testTopic = new redpanda.Topic("test", {
        name: topicName,
        partitionCount: partitionCount,
        replicationFactor: replicationFactor,
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: true,
        configuration: {
            "cleanup.policy": "delete",
            "retention.ms": topicRetentionMs,
        },
    });
    const topicAccess = new redpanda.Acl("topic_access", {
        resourceType: "TOPIC",
        resourceName: testTopic.name,
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "READ",
        permissionType: "ALLOW",
        clusterApiUrl: testCluster.clusterApiUrl,
        allowDeletion: aclAllowDeletion,
    });
    
    import pulumi
    import pulumi_redpanda as redpanda
    
    test = redpanda.ResourceGroup("test", name=resource_group_name)
    test_network = redpanda.Network("test",
        name=network_name,
        resource_group_id=test.id,
        cloud_provider=cloud_provider,
        region=region,
        cluster_type="byoc",
        cidr_block="10.0.0.0/20")
    test_cluster = redpanda.Cluster("test",
        name=cluster_name,
        resource_group_id=test.id,
        network_id=test_network.id,
        cloud_provider=test_network.cloud_provider,
        region=test_network.region,
        cluster_type=test_network.cluster_type,
        connection_type="public",
        throughput_tier=throughput_tier,
        zones=zones,
        allow_deletion=cluster_allow_deletion,
        tags=cluster_tags)
    test_user = redpanda.User("test",
        name=user_name,
        password=user_pw,
        mechanism=mechanism,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=user_allow_deletion)
    test_topic = redpanda.Topic("test",
        name=topic_name,
        partition_count=partition_count,
        replication_factor=replication_factor,
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=True,
        configuration={
            "cleanup.policy": "delete",
            "retention.ms": topic_retention_ms,
        })
    topic_access = redpanda.Acl("topic_access",
        resource_type="TOPIC",
        resource_name_=test_topic.name,
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="READ",
        permission_type="ALLOW",
        cluster_api_url=test_cluster.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-terraform-provider/sdks/go/redpanda/v2/redpanda"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		test, err := redpanda.NewResourceGroup(ctx, "test", &redpanda.ResourceGroupArgs{
    			Name: pulumi.Any(resourceGroupName),
    		})
    		if err != nil {
    			return err
    		}
    		testNetwork, err := redpanda.NewNetwork(ctx, "test", &redpanda.NetworkArgs{
    			Name:            pulumi.Any(networkName),
    			ResourceGroupId: test.ID(),
    			CloudProvider:   pulumi.Any(cloudProvider),
    			Region:          pulumi.Any(region),
    			ClusterType:     pulumi.String("byoc"),
    			CidrBlock:       pulumi.String("10.0.0.0/20"),
    		})
    		if err != nil {
    			return err
    		}
    		testCluster, err := redpanda.NewCluster(ctx, "test", &redpanda.ClusterArgs{
    			Name:            pulumi.Any(clusterName),
    			ResourceGroupId: test.ID(),
    			NetworkId:       testNetwork.ID(),
    			CloudProvider:   testNetwork.CloudProvider,
    			Region:          testNetwork.Region,
    			ClusterType:     testNetwork.ClusterType,
    			ConnectionType:  pulumi.String("public"),
    			ThroughputTier:  pulumi.Any(throughputTier),
    			Zones:           pulumi.Any(zones),
    			AllowDeletion:   pulumi.Any(clusterAllowDeletion),
    			Tags:            pulumi.Any(clusterTags),
    		})
    		if err != nil {
    			return err
    		}
    		testUser, err := redpanda.NewUser(ctx, "test", &redpanda.UserArgs{
    			Name:          pulumi.Any(userName),
    			Password:      pulumi.Any(userPw),
    			Mechanism:     pulumi.Any(mechanism),
    			ClusterApiUrl: testCluster.ClusterApiUrl,
    			AllowDeletion: pulumi.Any(userAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		testTopic, err := redpanda.NewTopic(ctx, "test", &redpanda.TopicArgs{
    			Name:              pulumi.Any(topicName),
    			PartitionCount:    pulumi.Any(partitionCount),
    			ReplicationFactor: pulumi.Any(replicationFactor),
    			ClusterApiUrl:     testCluster.ClusterApiUrl,
    			AllowDeletion:     pulumi.Bool(true),
    			Configuration: pulumi.StringMap{
    				"cleanup.policy": pulumi.String("delete"),
    				"retention.ms":   pulumi.Any(topicRetentionMs),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewAcl(ctx, "topic_access", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("TOPIC"),
    			ResourceName:        testTopic.Name,
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("READ"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  testCluster.ClusterApiUrl,
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Redpanda = Pulumi.Redpanda;
    
    return await Deployment.RunAsync(() => 
    {
        var test = new Redpanda.ResourceGroup("test", new()
        {
            Name = resourceGroupName,
        });
    
        var testNetwork = new Redpanda.Network("test", new()
        {
            Name = networkName,
            ResourceGroupId = test.Id,
            CloudProvider = cloudProvider,
            Region = region,
            ClusterType = "byoc",
            CidrBlock = "10.0.0.0/20",
        });
    
        var testCluster = new Redpanda.Cluster("test", new()
        {
            Name = clusterName,
            ResourceGroupId = test.Id,
            NetworkId = testNetwork.Id,
            CloudProvider = testNetwork.CloudProvider,
            Region = testNetwork.Region,
            ClusterType = testNetwork.ClusterType,
            ConnectionType = "public",
            ThroughputTier = throughputTier,
            Zones = zones,
            AllowDeletion = clusterAllowDeletion,
            Tags = clusterTags,
        });
    
        var testUser = new Redpanda.User("test", new()
        {
            Name = userName,
            Password = userPw,
            Mechanism = mechanism,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = userAllowDeletion,
        });
    
        var testTopic = new Redpanda.Topic("test", new()
        {
            Name = topicName,
            PartitionCount = partitionCount,
            ReplicationFactor = replicationFactor,
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = true,
            Configuration = 
            {
                { "cleanup.policy", "delete" },
                { "retention.ms", topicRetentionMs },
            },
        });
    
        var topicAccess = new Redpanda.Acl("topic_access", new()
        {
            ResourceType = "TOPIC",
            ResourceName = testTopic.Name,
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "READ",
            PermissionType = "ALLOW",
            ClusterApiUrl = testCluster.ClusterApiUrl,
            AllowDeletion = aclAllowDeletion,
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.redpanda.ResourceGroup;
    import com.pulumi.redpanda.ResourceGroupArgs;
    import com.pulumi.redpanda.Network;
    import com.pulumi.redpanda.NetworkArgs;
    import com.pulumi.redpanda.Cluster;
    import com.pulumi.redpanda.ClusterArgs;
    import com.pulumi.redpanda.User;
    import com.pulumi.redpanda.UserArgs;
    import com.pulumi.redpanda.Topic;
    import com.pulumi.redpanda.TopicArgs;
    import com.pulumi.redpanda.Acl;
    import com.pulumi.redpanda.AclArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var test = new ResourceGroup("test", ResourceGroupArgs.builder()
                .name(resourceGroupName)
                .build());
    
            var testNetwork = new Network("testNetwork", NetworkArgs.builder()
                .name(networkName)
                .resourceGroupId(test.id())
                .cloudProvider(cloudProvider)
                .region(region)
                .clusterType("byoc")
                .cidrBlock("10.0.0.0/20")
                .build());
    
            var testCluster = new Cluster("testCluster", ClusterArgs.builder()
                .name(clusterName)
                .resourceGroupId(test.id())
                .networkId(testNetwork.id())
                .cloudProvider(testNetwork.cloudProvider())
                .region(testNetwork.region())
                .clusterType(testNetwork.clusterType())
                .connectionType("public")
                .throughputTier(throughputTier)
                .zones(zones)
                .allowDeletion(clusterAllowDeletion)
                .tags(clusterTags)
                .build());
    
            var testUser = new User("testUser", UserArgs.builder()
                .name(userName)
                .password(userPw)
                .mechanism(mechanism)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(userAllowDeletion)
                .build());
    
            var testTopic = new Topic("testTopic", TopicArgs.builder()
                .name(topicName)
                .partitionCount(partitionCount)
                .replicationFactor(replicationFactor)
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(true)
                .configuration(Map.ofEntries(
                    Map.entry("cleanup.policy", "delete"),
                    Map.entry("retention.ms", topicRetentionMs)
                ))
                .build());
    
            var topicAccess = new Acl("topicAccess", AclArgs.builder()
                .resourceType("TOPIC")
                .resourceName(testTopic.name())
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("READ")
                .permissionType("ALLOW")
                .clusterApiUrl(testCluster.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
        }
    }
    
    resources:
      test:
        type: redpanda:ResourceGroup
        properties:
          name: ${resourceGroupName}
      testNetwork:
        type: redpanda:Network
        name: test
        properties:
          name: ${networkName}
          resourceGroupId: ${test.id}
          cloudProvider: ${cloudProvider}
          region: ${region}
          clusterType: byoc
          cidrBlock: 10.0.0.0/20
      testCluster:
        type: redpanda:Cluster
        name: test
        properties:
          name: ${clusterName}
          resourceGroupId: ${test.id}
          networkId: ${testNetwork.id}
          cloudProvider: ${testNetwork.cloudProvider}
          region: ${testNetwork.region}
          clusterType: ${testNetwork.clusterType}
          connectionType: public
          throughputTier: ${throughputTier}
          zones: ${zones}
          allowDeletion: ${clusterAllowDeletion}
          tags: ${clusterTags}
      testUser:
        type: redpanda:User
        name: test
        properties:
          name: ${userName}
          password: ${userPw}
          mechanism: ${mechanism}
          clusterApiUrl: ${testCluster.clusterApiUrl}
          allowDeletion: ${userAllowDeletion}
      testTopic:
        type: redpanda:Topic
        name: test
        properties:
          name: ${topicName}
          partitionCount: ${partitionCount}
          replicationFactor: ${replicationFactor}
          clusterApiUrl: ${testCluster.clusterApiUrl}
          allowDeletion: true
          configuration:
            cleanup.policy: delete
            retention.ms: ${topicRetentionMs}
      topicAccess:
        type: redpanda:Acl
        name: topic_access
        properties:
          resourceType: TOPIC
          resourceName: ${testTopic.name}
          resourcePatternType: LITERAL
          principal: User:${testUser.name}
          host: '*'
          operation: READ
          permissionType: ALLOW
          clusterApiUrl: ${testCluster.clusterApiUrl}
          allowDeletion: ${aclAllowDeletion}
    
    Example coming soon!
    

    BYOVPC

    This accepts a network and other elements created by the end user inside their cloud provider account (currently limited to AWS) and builds a Redpanda Cluster inside it.

    There is a module provided for convenience of the end user here that handles the necessary setup. It contains outputs for the inputs the provider requires.

    Example Usage of a data source BYOC to manage users and ACLs

    import * as pulumi from "@pulumi/pulumi";
    import * as redpanda from "@pulumi/redpanda";
    
    const test = redpanda.getCluster({
        id: clusterId,
    });
    const testTopic = new redpanda.Topic("test", {
        name: topicName,
        partitionCount: partitionCount,
        replicationFactor: replicationFactor,
        clusterApiUrl: test.then(test => test.clusterApiUrl),
        allowDeletion: true,
        configuration: topicConfig,
    });
    const testUser = new redpanda.User("test", {
        name: userName,
        password: userPw,
        mechanism: mechanism,
        clusterApiUrl: test.then(test => test.clusterApiUrl),
        allowDeletion: userAllowDeletion,
    });
    const testAcl = new redpanda.Acl("test", {
        resourceType: "CLUSTER",
        resourceName: "kafka-cluster",
        resourcePatternType: "LITERAL",
        principal: pulumi.interpolate`User:${testUser.name}`,
        host: "*",
        operation: "ALTER",
        permissionType: "ALLOW",
        clusterApiUrl: test.then(test => test.clusterApiUrl),
        allowDeletion: aclAllowDeletion,
    });
    
    import pulumi
    import pulumi_redpanda as redpanda
    
    test = redpanda.get_cluster(id=cluster_id)
    test_topic = redpanda.Topic("test",
        name=topic_name,
        partition_count=partition_count,
        replication_factor=replication_factor,
        cluster_api_url=test.cluster_api_url,
        allow_deletion=True,
        configuration=topic_config)
    test_user = redpanda.User("test",
        name=user_name,
        password=user_pw,
        mechanism=mechanism,
        cluster_api_url=test.cluster_api_url,
        allow_deletion=user_allow_deletion)
    test_acl = redpanda.Acl("test",
        resource_type="CLUSTER",
        resource_name_="kafka-cluster",
        resource_pattern_type="LITERAL",
        principal=test_user.name.apply(lambda name: f"User:{name}"),
        host="*",
        operation="ALTER",
        permission_type="ALLOW",
        cluster_api_url=test.cluster_api_url,
        allow_deletion=acl_allow_deletion)
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-terraform-provider/sdks/go/redpanda/v2/redpanda"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		test, err := redpanda.LookupCluster(ctx, &redpanda.LookupClusterArgs{
    			Id: clusterId,
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewTopic(ctx, "test", &redpanda.TopicArgs{
    			Name:              pulumi.Any(topicName),
    			PartitionCount:    pulumi.Any(partitionCount),
    			ReplicationFactor: pulumi.Any(replicationFactor),
    			ClusterApiUrl:     pulumi.String(test.ClusterApiUrl),
    			AllowDeletion:     pulumi.Bool(true),
    			Configuration:     pulumi.Any(topicConfig),
    		})
    		if err != nil {
    			return err
    		}
    		testUser, err := redpanda.NewUser(ctx, "test", &redpanda.UserArgs{
    			Name:          pulumi.Any(userName),
    			Password:      pulumi.Any(userPw),
    			Mechanism:     pulumi.Any(mechanism),
    			ClusterApiUrl: pulumi.String(test.ClusterApiUrl),
    			AllowDeletion: pulumi.Any(userAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = redpanda.NewAcl(ctx, "test", &redpanda.AclArgs{
    			ResourceType:        pulumi.String("CLUSTER"),
    			ResourceName:        pulumi.String("kafka-cluster"),
    			ResourcePatternType: pulumi.String("LITERAL"),
    			Principal: testUser.Name.ApplyT(func(name string) (string, error) {
    				return fmt.Sprintf("User:%v", name), nil
    			}).(pulumi.StringOutput),
    			Host:           pulumi.String("*"),
    			Operation:      pulumi.String("ALTER"),
    			PermissionType: pulumi.String("ALLOW"),
    			ClusterApiUrl:  pulumi.String(test.ClusterApiUrl),
    			AllowDeletion:  pulumi.Any(aclAllowDeletion),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Redpanda = Pulumi.Redpanda;
    
    return await Deployment.RunAsync(() => 
    {
        var test = Redpanda.GetCluster.Invoke(new()
        {
            Id = clusterId,
        });
    
        var testTopic = new Redpanda.Topic("test", new()
        {
            Name = topicName,
            PartitionCount = partitionCount,
            ReplicationFactor = replicationFactor,
            ClusterApiUrl = test.Apply(getClusterResult => getClusterResult.ClusterApiUrl),
            AllowDeletion = true,
            Configuration = topicConfig,
        });
    
        var testUser = new Redpanda.User("test", new()
        {
            Name = userName,
            Password = userPw,
            Mechanism = mechanism,
            ClusterApiUrl = test.Apply(getClusterResult => getClusterResult.ClusterApiUrl),
            AllowDeletion = userAllowDeletion,
        });
    
        var testAcl = new Redpanda.Acl("test", new()
        {
            ResourceType = "CLUSTER",
            ResourceName = "kafka-cluster",
            ResourcePatternType = "LITERAL",
            Principal = testUser.Name.Apply(name => $"User:{name}"),
            Host = "*",
            Operation = "ALTER",
            PermissionType = "ALLOW",
            ClusterApiUrl = test.Apply(getClusterResult => getClusterResult.ClusterApiUrl),
            AllowDeletion = aclAllowDeletion,
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.redpanda.RedpandaFunctions;
    import com.pulumi.redpanda.inputs.GetClusterArgs;
    import com.pulumi.redpanda.Topic;
    import com.pulumi.redpanda.TopicArgs;
    import com.pulumi.redpanda.User;
    import com.pulumi.redpanda.UserArgs;
    import com.pulumi.redpanda.Acl;
    import com.pulumi.redpanda.AclArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var test = RedpandaFunctions.getCluster(GetClusterArgs.builder()
                .id(clusterId)
                .build());
    
            var testTopic = new Topic("testTopic", TopicArgs.builder()
                .name(topicName)
                .partitionCount(partitionCount)
                .replicationFactor(replicationFactor)
                .clusterApiUrl(test.clusterApiUrl())
                .allowDeletion(true)
                .configuration(topicConfig)
                .build());
    
            var testUser = new User("testUser", UserArgs.builder()
                .name(userName)
                .password(userPw)
                .mechanism(mechanism)
                .clusterApiUrl(test.clusterApiUrl())
                .allowDeletion(userAllowDeletion)
                .build());
    
            var testAcl = new Acl("testAcl", AclArgs.builder()
                .resourceType("CLUSTER")
                .resourceName("kafka-cluster")
                .resourcePatternType("LITERAL")
                .principal(testUser.name().applyValue(_name -> String.format("User:%s", _name)))
                .host("*")
                .operation("ALTER")
                .permissionType("ALLOW")
                .clusterApiUrl(test.clusterApiUrl())
                .allowDeletion(aclAllowDeletion)
                .build());
    
        }
    }
    
    resources:
      testTopic:
        type: redpanda:Topic
        name: test
        properties:
          name: ${topicName}
          partitionCount: ${partitionCount}
          replicationFactor: ${replicationFactor}
          clusterApiUrl: ${test.clusterApiUrl}
          allowDeletion: true
          configuration: ${topicConfig}
      testUser:
        type: redpanda:User
        name: test
        properties:
          name: ${userName}
          password: ${userPw}
          mechanism: ${mechanism}
          clusterApiUrl: ${test.clusterApiUrl}
          allowDeletion: ${userAllowDeletion}
      testAcl:
        type: redpanda:Acl
        name: test
        properties:
          resourceType: CLUSTER
          resourceName: kafka-cluster
          resourcePatternType: LITERAL
          principal: User:${testUser.name}
          host: '*'
          operation: ALTER
          permissionType: ALLOW
          clusterApiUrl: ${test.clusterApiUrl}
          allowDeletion: ${aclAllowDeletion}
    variables:
      test:
        fn::invoke:
          function: redpanda:getCluster
          arguments:
            id: ${clusterId}
    
    Example coming soon!
    

    API Reference

    For more information, see the Redpanda Cloud Control Plane API documentation.

    Create Cluster Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new Cluster(name: string, args: ClusterArgs, opts?: CustomResourceOptions);
    @overload
    def Cluster(resource_name: str,
                args: ClusterArgs,
                opts: Optional[ResourceOptions] = None)
    
    @overload
    def Cluster(resource_name: str,
                opts: Optional[ResourceOptions] = None,
                connection_type: Optional[str] = None,
                zones: Optional[Sequence[str]] = None,
                throughput_tier: Optional[str] = None,
                resource_group_id: Optional[str] = None,
                cloud_provider: Optional[str] = None,
                region: Optional[str] = None,
                network_id: Optional[str] = None,
                cluster_type: Optional[str] = None,
                read_replica_cluster_ids: Optional[Sequence[str]] = None,
                customer_managed_resources: Optional[ClusterCustomerManagedResourcesArgs] = None,
                gcp_global_access_api_gateway_enabled: Optional[bool] = None,
                gcp_private_service_connect: Optional[ClusterGcpPrivateServiceConnectArgs] = None,
                http_proxy: Optional[ClusterHttpProxyArgs] = None,
                kafka_api: Optional[ClusterKafkaApiArgs] = None,
                kafka_connect: Optional[ClusterKafkaConnectArgs] = None,
                maintenance_window_config: Optional[ClusterMaintenanceWindowConfigArgs] = None,
                name: Optional[str] = None,
                cluster_configuration: Optional[ClusterClusterConfigurationArgs] = None,
                allow_deletion: Optional[bool] = None,
                redpanda_node_count: Optional[float] = None,
                redpanda_version: Optional[str] = None,
                cloud_storage: Optional[ClusterCloudStorageArgs] = None,
                azure_private_link: Optional[ClusterAzurePrivateLinkArgs] = None,
                rpsql: Optional[ClusterRpsqlArgs] = None,
                schema_registry: Optional[ClusterSchemaRegistryArgs] = None,
                tags: Optional[Mapping[str, str]] = None,
                aws_private_link: Optional[ClusterAwsPrivateLinkArgs] = None,
                timeouts: Optional[ClusterTimeoutsArgs] = None,
                api_gateway_access: Optional[str] = None)
    func NewCluster(ctx *Context, name string, args ClusterArgs, opts ...ResourceOption) (*Cluster, error)
    public Cluster(string name, ClusterArgs args, CustomResourceOptions? opts = null)
    public Cluster(String name, ClusterArgs args)
    public Cluster(String name, ClusterArgs args, CustomResourceOptions options)
    
    type: redpanda:Cluster
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    
    resource "redpanda_cluster" "name" {
        # resource properties
    }

    Parameters

    name string
    The unique name of the resource.
    args ClusterArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args ClusterArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args ClusterArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args ClusterArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args ClusterArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var clusterResource = new Redpanda.Cluster("clusterResource", new()
    {
        ConnectionType = "string",
        Zones = new[]
        {
            "string",
        },
        ThroughputTier = "string",
        ResourceGroupId = "string",
        CloudProvider = "string",
        Region = "string",
        NetworkId = "string",
        ClusterType = "string",
        ReadReplicaClusterIds = new[]
        {
            "string",
        },
        CustomerManagedResources = new Redpanda.Inputs.ClusterCustomerManagedResourcesArgs
        {
            Aws = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsArgs
            {
                NodeSecurityGroup = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsNodeSecurityGroupArgs
                {
                    Arn = "string",
                },
                PermissionsBoundaryPolicy = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsPermissionsBoundaryPolicyArgs
                {
                    Arn = "string",
                },
                ClusterSecurityGroup = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsClusterSecurityGroupArgs
                {
                    Arn = "string",
                },
                ConnectorsNodeGroupInstanceProfile = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsConnectorsNodeGroupInstanceProfileArgs
                {
                    Arn = "string",
                },
                ConnectorsSecurityGroup = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsConnectorsSecurityGroupArgs
                {
                    Arn = "string",
                },
                K8sClusterRole = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsK8sClusterRoleArgs
                {
                    Arn = "string",
                },
                CloudStorageBucket = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsCloudStorageBucketArgs
                {
                    Arn = "string",
                },
                UtilitySecurityGroup = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsUtilitySecurityGroupArgs
                {
                    Arn = "string",
                },
                AgentInstanceProfile = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsAgentInstanceProfileArgs
                {
                    Arn = "string",
                },
                UtilityNodeGroupInstanceProfile = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsUtilityNodeGroupInstanceProfileArgs
                {
                    Arn = "string",
                },
                RedpandaAgentSecurityGroup = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsRedpandaAgentSecurityGroupArgs
                {
                    Arn = "string",
                },
                RedpandaNodeGroupInstanceProfile = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsRedpandaNodeGroupInstanceProfileArgs
                {
                    Arn = "string",
                },
                RedpandaNodeGroupSecurityGroup = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsRedpandaNodeGroupSecurityGroupArgs
                {
                    Arn = "string",
                },
                RedpandaConnectNodeGroupInstanceProfile = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsRedpandaConnectNodeGroupInstanceProfileArgs
                {
                    Arn = "string",
                },
                RedpandaConnectSecurityGroup = new Redpanda.Inputs.ClusterCustomerManagedResourcesAwsRedpandaConnectSecurityGroupArgs
                {
                    Arn = "string",
                },
            },
            Gcp = new Redpanda.Inputs.ClusterCustomerManagedResourcesGcpArgs
            {
                AgentServiceAccount = new Redpanda.Inputs.ClusterCustomerManagedResourcesGcpAgentServiceAccountArgs
                {
                    Email = "string",
                },
                ConnectorServiceAccount = new Redpanda.Inputs.ClusterCustomerManagedResourcesGcpConnectorServiceAccountArgs
                {
                    Email = "string",
                },
                ConsoleServiceAccount = new Redpanda.Inputs.ClusterCustomerManagedResourcesGcpConsoleServiceAccountArgs
                {
                    Email = "string",
                },
                GkeServiceAccount = new Redpanda.Inputs.ClusterCustomerManagedResourcesGcpGkeServiceAccountArgs
                {
                    Email = "string",
                },
                RedpandaClusterServiceAccount = new Redpanda.Inputs.ClusterCustomerManagedResourcesGcpRedpandaClusterServiceAccountArgs
                {
                    Email = "string",
                },
                Subnet = new Redpanda.Inputs.ClusterCustomerManagedResourcesGcpSubnetArgs
                {
                    K8sMasterIpv4Range = "string",
                    Name = "string",
                    SecondaryIpv4RangePods = new Redpanda.Inputs.ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangePodsArgs
                    {
                        Name = "string",
                    },
                    SecondaryIpv4RangeServices = new Redpanda.Inputs.ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangeServicesArgs
                    {
                        Name = "string",
                    },
                },
                TieredStorageBucket = new Redpanda.Inputs.ClusterCustomerManagedResourcesGcpTieredStorageBucketArgs
                {
                    Name = "string",
                },
                PscNatSubnetName = "string",
            },
        },
        GcpGlobalAccessApiGatewayEnabled = false,
        GcpPrivateServiceConnect = new Redpanda.Inputs.ClusterGcpPrivateServiceConnectArgs
        {
            ConsumerAcceptLists = new[]
            {
                new Redpanda.Inputs.ClusterGcpPrivateServiceConnectConsumerAcceptListArgs
                {
                    Source = "string",
                },
            },
            Enabled = false,
            GlobalAccessEnabled = false,
            Status = new Redpanda.Inputs.ClusterGcpPrivateServiceConnectStatusArgs
            {
                ConnectedEndpoints = new[]
                {
                    new Redpanda.Inputs.ClusterGcpPrivateServiceConnectStatusConnectedEndpointArgs
                    {
                        ConnectionId = "string",
                        ConsumerNetwork = "string",
                        Endpoint = "string",
                        Status = "string",
                    },
                },
                DnsARecords = new[]
                {
                    "string",
                },
                KafkaApiNodeBasePort = 0,
                KafkaApiSeedPort = 0,
                RedpandaProxyNodeBasePort = 0,
                RedpandaProxySeedPort = 0,
                SchemaRegistrySeedPort = 0,
                SeedHostname = "string",
                ServiceAttachment = "string",
            },
        },
        HttpProxy = new Redpanda.Inputs.ClusterHttpProxyArgs
        {
            AllUrls = new Redpanda.Inputs.ClusterHttpProxyAllUrlsArgs
            {
                Mtls = "string",
                PrivateLinkMtls = "string",
                PrivateLinkSasl = "string",
                Sasl = "string",
            },
            Mtls = new Redpanda.Inputs.ClusterHttpProxyMtlsArgs
            {
                CaCertificatesPems = new[]
                {
                    "string",
                },
                Enabled = false,
                PrincipalMappingRules = new[]
                {
                    "string",
                },
            },
            Sasl = new Redpanda.Inputs.ClusterHttpProxySaslArgs
            {
                Enabled = false,
            },
            Url = "string",
        },
        KafkaApi = new Redpanda.Inputs.ClusterKafkaApiArgs
        {
            AllSeedBrokers = new Redpanda.Inputs.ClusterKafkaApiAllSeedBrokersArgs
            {
                Mtls = "string",
                PrivateLinkMtls = "string",
                PrivateLinkSasl = "string",
                Sasl = "string",
            },
            Mtls = new Redpanda.Inputs.ClusterKafkaApiMtlsArgs
            {
                CaCertificatesPems = new[]
                {
                    "string",
                },
                Enabled = false,
                PrincipalMappingRules = new[]
                {
                    "string",
                },
            },
            Sasl = new Redpanda.Inputs.ClusterKafkaApiSaslArgs
            {
                Enabled = false,
            },
            SeedBrokers = new[]
            {
                "string",
            },
        },
        KafkaConnect = new Redpanda.Inputs.ClusterKafkaConnectArgs
        {
            Enabled = false,
        },
        MaintenanceWindowConfig = new Redpanda.Inputs.ClusterMaintenanceWindowConfigArgs
        {
            Anytime = false,
            DayHour = new Redpanda.Inputs.ClusterMaintenanceWindowConfigDayHourArgs
            {
                DayOfWeek = "string",
                HourOfDay = 0,
            },
            Unspecified = false,
        },
        Name = "string",
        ClusterConfiguration = new Redpanda.Inputs.ClusterClusterConfigurationArgs
        {
            CustomPropertiesJson = "string",
        },
        AllowDeletion = false,
        RedpandaNodeCount = 0,
        RedpandaVersion = "string",
        CloudStorage = new Redpanda.Inputs.ClusterCloudStorageArgs
        {
            Aws = new Redpanda.Inputs.ClusterCloudStorageAwsArgs
            {
                Arn = "string",
            },
            Azure = new Redpanda.Inputs.ClusterCloudStorageAzureArgs
            {
                ContainerName = "string",
                StorageAccountName = "string",
            },
            Gcp = new Redpanda.Inputs.ClusterCloudStorageGcpArgs
            {
                Name = "string",
            },
            SkipDestroy = false,
        },
        AzurePrivateLink = new Redpanda.Inputs.ClusterAzurePrivateLinkArgs
        {
            AllowedSubscriptions = new[]
            {
                "string",
            },
            ConnectConsole = false,
            Enabled = false,
            Status = new Redpanda.Inputs.ClusterAzurePrivateLinkStatusArgs
            {
                ApprovedSubscriptions = new[]
                {
                    "string",
                },
                ConsolePort = 0,
                DnsARecord = "string",
                KafkaApiNodeBasePort = 0,
                KafkaApiSeedPort = 0,
                PrivateEndpointConnections = new[]
                {
                    new Redpanda.Inputs.ClusterAzurePrivateLinkStatusPrivateEndpointConnectionArgs
                    {
                        ConnectionId = "string",
                        ConnectionName = "string",
                        PrivateEndpointId = "string",
                        PrivateEndpointName = "string",
                        Status = "string",
                    },
                },
                RedpandaProxyNodeBasePort = 0,
                RedpandaProxySeedPort = 0,
                SchemaRegistrySeedPort = 0,
                ServiceId = "string",
                ServiceName = "string",
            },
        },
        Rpsql = new Redpanda.Inputs.ClusterRpsqlArgs
        {
            Enabled = false,
            Replicas = 0,
            Url = "string",
        },
        SchemaRegistry = new Redpanda.Inputs.ClusterSchemaRegistryArgs
        {
            AllUrls = new Redpanda.Inputs.ClusterSchemaRegistryAllUrlsArgs
            {
                Mtls = "string",
                PrivateLinkMtls = "string",
                PrivateLinkSasl = "string",
                Sasl = "string",
            },
            Mtls = new Redpanda.Inputs.ClusterSchemaRegistryMtlsArgs
            {
                CaCertificatesPems = new[]
                {
                    "string",
                },
                Enabled = false,
                PrincipalMappingRules = new[]
                {
                    "string",
                },
            },
            Url = "string",
        },
        Tags = 
        {
            { "string", "string" },
        },
        AwsPrivateLink = new Redpanda.Inputs.ClusterAwsPrivateLinkArgs
        {
            AllowedPrincipals = new[]
            {
                "string",
            },
            ConnectConsole = false,
            Enabled = false,
            Status = new Redpanda.Inputs.ClusterAwsPrivateLinkStatusArgs
            {
                ConsolePort = 0,
                KafkaApiNodeBasePort = 0,
                KafkaApiSeedPort = 0,
                RedpandaProxyNodeBasePort = 0,
                RedpandaProxySeedPort = 0,
                SchemaRegistrySeedPort = 0,
                ServiceId = "string",
                ServiceName = "string",
                ServiceState = "string",
                VpcEndpointConnections = new[]
                {
                    new Redpanda.Inputs.ClusterAwsPrivateLinkStatusVpcEndpointConnectionArgs
                    {
                        ConnectionId = "string",
                        DnsEntries = new[]
                        {
                            new Redpanda.Inputs.ClusterAwsPrivateLinkStatusVpcEndpointConnectionDnsEntryArgs
                            {
                                DnsName = "string",
                                HostedZoneId = "string",
                            },
                        },
                        Id = "string",
                        LoadBalancerArns = new[]
                        {
                            "string",
                        },
                        Owner = "string",
                        State = "string",
                    },
                },
            },
            SupportedRegions = new[]
            {
                "string",
            },
        },
        Timeouts = new Redpanda.Inputs.ClusterTimeoutsArgs
        {
            Create = "string",
            Delete = "string",
            Update = "string",
        },
        ApiGatewayAccess = "string",
    });
    
    example, err := redpanda.NewCluster(ctx, "clusterResource", &redpanda.ClusterArgs{
    	ConnectionType: pulumi.String("string"),
    	Zones: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	ThroughputTier:  pulumi.String("string"),
    	ResourceGroupId: pulumi.String("string"),
    	CloudProvider:   pulumi.String("string"),
    	Region:          pulumi.String("string"),
    	NetworkId:       pulumi.String("string"),
    	ClusterType:     pulumi.String("string"),
    	ReadReplicaClusterIds: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	CustomerManagedResources: &redpanda.ClusterCustomerManagedResourcesArgs{
    		Aws: &redpanda.ClusterCustomerManagedResourcesAwsArgs{
    			NodeSecurityGroup: &redpanda.ClusterCustomerManagedResourcesAwsNodeSecurityGroupArgs{
    				Arn: pulumi.String("string"),
    			},
    			PermissionsBoundaryPolicy: &redpanda.ClusterCustomerManagedResourcesAwsPermissionsBoundaryPolicyArgs{
    				Arn: pulumi.String("string"),
    			},
    			ClusterSecurityGroup: &redpanda.ClusterCustomerManagedResourcesAwsClusterSecurityGroupArgs{
    				Arn: pulumi.String("string"),
    			},
    			ConnectorsNodeGroupInstanceProfile: &redpanda.ClusterCustomerManagedResourcesAwsConnectorsNodeGroupInstanceProfileArgs{
    				Arn: pulumi.String("string"),
    			},
    			ConnectorsSecurityGroup: &redpanda.ClusterCustomerManagedResourcesAwsConnectorsSecurityGroupArgs{
    				Arn: pulumi.String("string"),
    			},
    			K8sClusterRole: &redpanda.ClusterCustomerManagedResourcesAwsK8sClusterRoleArgs{
    				Arn: pulumi.String("string"),
    			},
    			CloudStorageBucket: &redpanda.ClusterCustomerManagedResourcesAwsCloudStorageBucketArgs{
    				Arn: pulumi.String("string"),
    			},
    			UtilitySecurityGroup: &redpanda.ClusterCustomerManagedResourcesAwsUtilitySecurityGroupArgs{
    				Arn: pulumi.String("string"),
    			},
    			AgentInstanceProfile: &redpanda.ClusterCustomerManagedResourcesAwsAgentInstanceProfileArgs{
    				Arn: pulumi.String("string"),
    			},
    			UtilityNodeGroupInstanceProfile: &redpanda.ClusterCustomerManagedResourcesAwsUtilityNodeGroupInstanceProfileArgs{
    				Arn: pulumi.String("string"),
    			},
    			RedpandaAgentSecurityGroup: &redpanda.ClusterCustomerManagedResourcesAwsRedpandaAgentSecurityGroupArgs{
    				Arn: pulumi.String("string"),
    			},
    			RedpandaNodeGroupInstanceProfile: &redpanda.ClusterCustomerManagedResourcesAwsRedpandaNodeGroupInstanceProfileArgs{
    				Arn: pulumi.String("string"),
    			},
    			RedpandaNodeGroupSecurityGroup: &redpanda.ClusterCustomerManagedResourcesAwsRedpandaNodeGroupSecurityGroupArgs{
    				Arn: pulumi.String("string"),
    			},
    			RedpandaConnectNodeGroupInstanceProfile: &redpanda.ClusterCustomerManagedResourcesAwsRedpandaConnectNodeGroupInstanceProfileArgs{
    				Arn: pulumi.String("string"),
    			},
    			RedpandaConnectSecurityGroup: &redpanda.ClusterCustomerManagedResourcesAwsRedpandaConnectSecurityGroupArgs{
    				Arn: pulumi.String("string"),
    			},
    		},
    		Gcp: &redpanda.ClusterCustomerManagedResourcesGcpArgs{
    			AgentServiceAccount: &redpanda.ClusterCustomerManagedResourcesGcpAgentServiceAccountArgs{
    				Email: pulumi.String("string"),
    			},
    			ConnectorServiceAccount: &redpanda.ClusterCustomerManagedResourcesGcpConnectorServiceAccountArgs{
    				Email: pulumi.String("string"),
    			},
    			ConsoleServiceAccount: &redpanda.ClusterCustomerManagedResourcesGcpConsoleServiceAccountArgs{
    				Email: pulumi.String("string"),
    			},
    			GkeServiceAccount: &redpanda.ClusterCustomerManagedResourcesGcpGkeServiceAccountArgs{
    				Email: pulumi.String("string"),
    			},
    			RedpandaClusterServiceAccount: &redpanda.ClusterCustomerManagedResourcesGcpRedpandaClusterServiceAccountArgs{
    				Email: pulumi.String("string"),
    			},
    			Subnet: &redpanda.ClusterCustomerManagedResourcesGcpSubnetArgs{
    				K8sMasterIpv4Range: pulumi.String("string"),
    				Name:               pulumi.String("string"),
    				SecondaryIpv4RangePods: &redpanda.ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangePodsArgs{
    					Name: pulumi.String("string"),
    				},
    				SecondaryIpv4RangeServices: &redpanda.ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangeServicesArgs{
    					Name: pulumi.String("string"),
    				},
    			},
    			TieredStorageBucket: &redpanda.ClusterCustomerManagedResourcesGcpTieredStorageBucketArgs{
    				Name: pulumi.String("string"),
    			},
    			PscNatSubnetName: pulumi.String("string"),
    		},
    	},
    	GcpGlobalAccessApiGatewayEnabled: pulumi.Bool(false),
    	GcpPrivateServiceConnect: &redpanda.ClusterGcpPrivateServiceConnectArgs{
    		ConsumerAcceptLists: redpanda.ClusterGcpPrivateServiceConnectConsumerAcceptListArray{
    			&redpanda.ClusterGcpPrivateServiceConnectConsumerAcceptListArgs{
    				Source: pulumi.String("string"),
    			},
    		},
    		Enabled:             pulumi.Bool(false),
    		GlobalAccessEnabled: pulumi.Bool(false),
    		Status: &redpanda.ClusterGcpPrivateServiceConnectStatusArgs{
    			ConnectedEndpoints: redpanda.ClusterGcpPrivateServiceConnectStatusConnectedEndpointArray{
    				&redpanda.ClusterGcpPrivateServiceConnectStatusConnectedEndpointArgs{
    					ConnectionId:    pulumi.String("string"),
    					ConsumerNetwork: pulumi.String("string"),
    					Endpoint:        pulumi.String("string"),
    					Status:          pulumi.String("string"),
    				},
    			},
    			DnsARecords: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			KafkaApiNodeBasePort:      pulumi.Float64(0),
    			KafkaApiSeedPort:          pulumi.Float64(0),
    			RedpandaProxyNodeBasePort: pulumi.Float64(0),
    			RedpandaProxySeedPort:     pulumi.Float64(0),
    			SchemaRegistrySeedPort:    pulumi.Float64(0),
    			SeedHostname:              pulumi.String("string"),
    			ServiceAttachment:         pulumi.String("string"),
    		},
    	},
    	HttpProxy: &redpanda.ClusterHttpProxyArgs{
    		AllUrls: &redpanda.ClusterHttpProxyAllUrlsArgs{
    			Mtls:            pulumi.String("string"),
    			PrivateLinkMtls: pulumi.String("string"),
    			PrivateLinkSasl: pulumi.String("string"),
    			Sasl:            pulumi.String("string"),
    		},
    		Mtls: &redpanda.ClusterHttpProxyMtlsArgs{
    			CaCertificatesPems: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			Enabled: pulumi.Bool(false),
    			PrincipalMappingRules: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    		},
    		Sasl: &redpanda.ClusterHttpProxySaslArgs{
    			Enabled: pulumi.Bool(false),
    		},
    		Url: pulumi.String("string"),
    	},
    	KafkaApi: &redpanda.ClusterKafkaApiArgs{
    		AllSeedBrokers: &redpanda.ClusterKafkaApiAllSeedBrokersArgs{
    			Mtls:            pulumi.String("string"),
    			PrivateLinkMtls: pulumi.String("string"),
    			PrivateLinkSasl: pulumi.String("string"),
    			Sasl:            pulumi.String("string"),
    		},
    		Mtls: &redpanda.ClusterKafkaApiMtlsArgs{
    			CaCertificatesPems: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			Enabled: pulumi.Bool(false),
    			PrincipalMappingRules: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    		},
    		Sasl: &redpanda.ClusterKafkaApiSaslArgs{
    			Enabled: pulumi.Bool(false),
    		},
    		SeedBrokers: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    	},
    	KafkaConnect: &redpanda.ClusterKafkaConnectArgs{
    		Enabled: pulumi.Bool(false),
    	},
    	MaintenanceWindowConfig: &redpanda.ClusterMaintenanceWindowConfigArgs{
    		Anytime: pulumi.Bool(false),
    		DayHour: &redpanda.ClusterMaintenanceWindowConfigDayHourArgs{
    			DayOfWeek: pulumi.String("string"),
    			HourOfDay: pulumi.Float64(0),
    		},
    		Unspecified: pulumi.Bool(false),
    	},
    	Name: pulumi.String("string"),
    	ClusterConfiguration: &redpanda.ClusterClusterConfigurationArgs{
    		CustomPropertiesJson: pulumi.String("string"),
    	},
    	AllowDeletion:     pulumi.Bool(false),
    	RedpandaNodeCount: pulumi.Float64(0),
    	RedpandaVersion:   pulumi.String("string"),
    	CloudStorage: &redpanda.ClusterCloudStorageArgs{
    		Aws: &redpanda.ClusterCloudStorageAwsArgs{
    			Arn: pulumi.String("string"),
    		},
    		Azure: &redpanda.ClusterCloudStorageAzureArgs{
    			ContainerName:      pulumi.String("string"),
    			StorageAccountName: pulumi.String("string"),
    		},
    		Gcp: &redpanda.ClusterCloudStorageGcpArgs{
    			Name: pulumi.String("string"),
    		},
    		SkipDestroy: pulumi.Bool(false),
    	},
    	AzurePrivateLink: &redpanda.ClusterAzurePrivateLinkArgs{
    		AllowedSubscriptions: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    		ConnectConsole: pulumi.Bool(false),
    		Enabled:        pulumi.Bool(false),
    		Status: &redpanda.ClusterAzurePrivateLinkStatusArgs{
    			ApprovedSubscriptions: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			ConsolePort:          pulumi.Float64(0),
    			DnsARecord:           pulumi.String("string"),
    			KafkaApiNodeBasePort: pulumi.Float64(0),
    			KafkaApiSeedPort:     pulumi.Float64(0),
    			PrivateEndpointConnections: redpanda.ClusterAzurePrivateLinkStatusPrivateEndpointConnectionArray{
    				&redpanda.ClusterAzurePrivateLinkStatusPrivateEndpointConnectionArgs{
    					ConnectionId:        pulumi.String("string"),
    					ConnectionName:      pulumi.String("string"),
    					PrivateEndpointId:   pulumi.String("string"),
    					PrivateEndpointName: pulumi.String("string"),
    					Status:              pulumi.String("string"),
    				},
    			},
    			RedpandaProxyNodeBasePort: pulumi.Float64(0),
    			RedpandaProxySeedPort:     pulumi.Float64(0),
    			SchemaRegistrySeedPort:    pulumi.Float64(0),
    			ServiceId:                 pulumi.String("string"),
    			ServiceName:               pulumi.String("string"),
    		},
    	},
    	Rpsql: &redpanda.ClusterRpsqlArgs{
    		Enabled:  pulumi.Bool(false),
    		Replicas: pulumi.Float64(0),
    		Url:      pulumi.String("string"),
    	},
    	SchemaRegistry: &redpanda.ClusterSchemaRegistryArgs{
    		AllUrls: &redpanda.ClusterSchemaRegistryAllUrlsArgs{
    			Mtls:            pulumi.String("string"),
    			PrivateLinkMtls: pulumi.String("string"),
    			PrivateLinkSasl: pulumi.String("string"),
    			Sasl:            pulumi.String("string"),
    		},
    		Mtls: &redpanda.ClusterSchemaRegistryMtlsArgs{
    			CaCertificatesPems: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			Enabled: pulumi.Bool(false),
    			PrincipalMappingRules: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    		},
    		Url: pulumi.String("string"),
    	},
    	Tags: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	AwsPrivateLink: &redpanda.ClusterAwsPrivateLinkArgs{
    		AllowedPrincipals: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    		ConnectConsole: pulumi.Bool(false),
    		Enabled:        pulumi.Bool(false),
    		Status: &redpanda.ClusterAwsPrivateLinkStatusArgs{
    			ConsolePort:               pulumi.Float64(0),
    			KafkaApiNodeBasePort:      pulumi.Float64(0),
    			KafkaApiSeedPort:          pulumi.Float64(0),
    			RedpandaProxyNodeBasePort: pulumi.Float64(0),
    			RedpandaProxySeedPort:     pulumi.Float64(0),
    			SchemaRegistrySeedPort:    pulumi.Float64(0),
    			ServiceId:                 pulumi.String("string"),
    			ServiceName:               pulumi.String("string"),
    			ServiceState:              pulumi.String("string"),
    			VpcEndpointConnections: redpanda.ClusterAwsPrivateLinkStatusVpcEndpointConnectionArray{
    				&redpanda.ClusterAwsPrivateLinkStatusVpcEndpointConnectionArgs{
    					ConnectionId: pulumi.String("string"),
    					DnsEntries: redpanda.ClusterAwsPrivateLinkStatusVpcEndpointConnectionDnsEntryArray{
    						&redpanda.ClusterAwsPrivateLinkStatusVpcEndpointConnectionDnsEntryArgs{
    							DnsName:      pulumi.String("string"),
    							HostedZoneId: pulumi.String("string"),
    						},
    					},
    					Id: pulumi.String("string"),
    					LoadBalancerArns: pulumi.StringArray{
    						pulumi.String("string"),
    					},
    					Owner: pulumi.String("string"),
    					State: pulumi.String("string"),
    				},
    			},
    		},
    		SupportedRegions: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    	},
    	Timeouts: &redpanda.ClusterTimeoutsArgs{
    		Create: pulumi.String("string"),
    		Delete: pulumi.String("string"),
    		Update: pulumi.String("string"),
    	},
    	ApiGatewayAccess: pulumi.String("string"),
    })
    
    resource "redpanda_cluster" "clusterResource" {
      connection_type          = "string"
      zones                    = ["string"]
      throughput_tier          = "string"
      resource_group_id        = "string"
      cloud_provider           = "string"
      region                   = "string"
      network_id               = "string"
      cluster_type             = "string"
      read_replica_cluster_ids = ["string"]
      customer_managed_resources = {
        aws = {
          node_security_group = {
            arn = "string"
          }
          permissions_boundary_policy = {
            arn = "string"
          }
          cluster_security_group = {
            arn = "string"
          }
          connectors_node_group_instance_profile = {
            arn = "string"
          }
          connectors_security_group = {
            arn = "string"
          }
          k8s_cluster_role = {
            arn = "string"
          }
          cloud_storage_bucket = {
            arn = "string"
          }
          utility_security_group = {
            arn = "string"
          }
          agent_instance_profile = {
            arn = "string"
          }
          utility_node_group_instance_profile = {
            arn = "string"
          }
          redpanda_agent_security_group = {
            arn = "string"
          }
          redpanda_node_group_instance_profile = {
            arn = "string"
          }
          redpanda_node_group_security_group = {
            arn = "string"
          }
          redpanda_connect_node_group_instance_profile = {
            arn = "string"
          }
          redpanda_connect_security_group = {
            arn = "string"
          }
        }
        gcp = {
          agent_service_account = {
            email = "string"
          }
          connector_service_account = {
            email = "string"
          }
          console_service_account = {
            email = "string"
          }
          gke_service_account = {
            email = "string"
          }
          redpanda_cluster_service_account = {
            email = "string"
          }
          subnet = {
            k8s_master_ipv4_range = "string"
            name                  = "string"
            secondary_ipv4_range_pods = {
              name = "string"
            }
            secondary_ipv4_range_services = {
              name = "string"
            }
          }
          tiered_storage_bucket = {
            name = "string"
          }
          psc_nat_subnet_name = "string"
        }
      }
      gcp_global_access_api_gateway_enabled = false
      gcp_private_service_connect = {
        consumer_accept_lists = [{
          "source" = "string"
        }]
        enabled               = false
        global_access_enabled = false
        status = {
          connected_endpoints = [{
            "connectionId"    = "string"
            "consumerNetwork" = "string"
            "endpoint"        = "string"
            "status"          = "string"
          }]
          dns_a_records                 = ["string"]
          kafka_api_node_base_port      = 0
          kafka_api_seed_port           = 0
          redpanda_proxy_node_base_port = 0
          redpanda_proxy_seed_port      = 0
          schema_registry_seed_port     = 0
          seed_hostname                 = "string"
          service_attachment            = "string"
        }
      }
      http_proxy = {
        all_urls = {
          mtls              = "string"
          private_link_mtls = "string"
          private_link_sasl = "string"
          sasl              = "string"
        }
        mtls = {
          ca_certificates_pems    = ["string"]
          enabled                 = false
          principal_mapping_rules = ["string"]
        }
        sasl = {
          enabled = false
        }
        url = "string"
      }
      kafka_api = {
        all_seed_brokers = {
          mtls              = "string"
          private_link_mtls = "string"
          private_link_sasl = "string"
          sasl              = "string"
        }
        mtls = {
          ca_certificates_pems    = ["string"]
          enabled                 = false
          principal_mapping_rules = ["string"]
        }
        sasl = {
          enabled = false
        }
        seed_brokers = ["string"]
      }
      kafka_connect = {
        enabled = false
      }
      maintenance_window_config = {
        anytime = false
        day_hour = {
          day_of_week = "string"
          hour_of_day = 0
        }
        unspecified = false
      }
      name = "string"
      cluster_configuration = {
        custom_properties_json = "string"
      }
      allow_deletion      = false
      redpanda_node_count = 0
      redpanda_version    = "string"
      cloud_storage = {
        aws = {
          arn = "string"
        }
        azure = {
          container_name       = "string"
          storage_account_name = "string"
        }
        gcp = {
          name = "string"
        }
        skip_destroy = false
      }
      azure_private_link = {
        allowed_subscriptions = ["string"]
        connect_console       = false
        enabled               = false
        status = {
          approved_subscriptions   = ["string"]
          console_port             = 0
          dns_a_record             = "string"
          kafka_api_node_base_port = 0
          kafka_api_seed_port      = 0
          private_endpoint_connections = [{
            "connectionId"        = "string"
            "connectionName"      = "string"
            "privateEndpointId"   = "string"
            "privateEndpointName" = "string"
            "status"              = "string"
          }]
          redpanda_proxy_node_base_port = 0
          redpanda_proxy_seed_port      = 0
          schema_registry_seed_port     = 0
          service_id                    = "string"
          service_name                  = "string"
        }
      }
      rpsql = {
        enabled  = false
        replicas = 0
        url      = "string"
      }
      schema_registry = {
        all_urls = {
          mtls              = "string"
          private_link_mtls = "string"
          private_link_sasl = "string"
          sasl              = "string"
        }
        mtls = {
          ca_certificates_pems    = ["string"]
          enabled                 = false
          principal_mapping_rules = ["string"]
        }
        url = "string"
      }
      tags = {
        "string" = "string"
      }
      aws_private_link = {
        allowed_principals = ["string"]
        connect_console    = false
        enabled            = false
        status = {
          console_port                  = 0
          kafka_api_node_base_port      = 0
          kafka_api_seed_port           = 0
          redpanda_proxy_node_base_port = 0
          redpanda_proxy_seed_port      = 0
          schema_registry_seed_port     = 0
          service_id                    = "string"
          service_name                  = "string"
          service_state                 = "string"
          vpc_endpoint_connections = [{
            "connectionId" = "string"
            "dnsEntries" = [{
              "dnsName"      = "string"
              "hostedZoneId" = "string"
            }]
            "id"               = "string"
            "loadBalancerArns" = ["string"]
            "owner"            = "string"
            "state"            = "string"
          }]
        }
        supported_regions = ["string"]
      }
      timeouts = {
        create = "string"
        delete = "string"
        update = "string"
      }
      api_gateway_access = "string"
    }
    
    var clusterResource = new Cluster("clusterResource", ClusterArgs.builder()
        .connectionType("string")
        .zones("string")
        .throughputTier("string")
        .resourceGroupId("string")
        .cloudProvider("string")
        .region("string")
        .networkId("string")
        .clusterType("string")
        .readReplicaClusterIds("string")
        .customerManagedResources(ClusterCustomerManagedResourcesArgs.builder()
            .aws(ClusterCustomerManagedResourcesAwsArgs.builder()
                .nodeSecurityGroup(ClusterCustomerManagedResourcesAwsNodeSecurityGroupArgs.builder()
                    .arn("string")
                    .build())
                .permissionsBoundaryPolicy(ClusterCustomerManagedResourcesAwsPermissionsBoundaryPolicyArgs.builder()
                    .arn("string")
                    .build())
                .clusterSecurityGroup(ClusterCustomerManagedResourcesAwsClusterSecurityGroupArgs.builder()
                    .arn("string")
                    .build())
                .connectorsNodeGroupInstanceProfile(ClusterCustomerManagedResourcesAwsConnectorsNodeGroupInstanceProfileArgs.builder()
                    .arn("string")
                    .build())
                .connectorsSecurityGroup(ClusterCustomerManagedResourcesAwsConnectorsSecurityGroupArgs.builder()
                    .arn("string")
                    .build())
                .k8sClusterRole(ClusterCustomerManagedResourcesAwsK8sClusterRoleArgs.builder()
                    .arn("string")
                    .build())
                .cloudStorageBucket(ClusterCustomerManagedResourcesAwsCloudStorageBucketArgs.builder()
                    .arn("string")
                    .build())
                .utilitySecurityGroup(ClusterCustomerManagedResourcesAwsUtilitySecurityGroupArgs.builder()
                    .arn("string")
                    .build())
                .agentInstanceProfile(ClusterCustomerManagedResourcesAwsAgentInstanceProfileArgs.builder()
                    .arn("string")
                    .build())
                .utilityNodeGroupInstanceProfile(ClusterCustomerManagedResourcesAwsUtilityNodeGroupInstanceProfileArgs.builder()
                    .arn("string")
                    .build())
                .redpandaAgentSecurityGroup(ClusterCustomerManagedResourcesAwsRedpandaAgentSecurityGroupArgs.builder()
                    .arn("string")
                    .build())
                .redpandaNodeGroupInstanceProfile(ClusterCustomerManagedResourcesAwsRedpandaNodeGroupInstanceProfileArgs.builder()
                    .arn("string")
                    .build())
                .redpandaNodeGroupSecurityGroup(ClusterCustomerManagedResourcesAwsRedpandaNodeGroupSecurityGroupArgs.builder()
                    .arn("string")
                    .build())
                .redpandaConnectNodeGroupInstanceProfile(ClusterCustomerManagedResourcesAwsRedpandaConnectNodeGroupInstanceProfileArgs.builder()
                    .arn("string")
                    .build())
                .redpandaConnectSecurityGroup(ClusterCustomerManagedResourcesAwsRedpandaConnectSecurityGroupArgs.builder()
                    .arn("string")
                    .build())
                .build())
            .gcp(ClusterCustomerManagedResourcesGcpArgs.builder()
                .agentServiceAccount(ClusterCustomerManagedResourcesGcpAgentServiceAccountArgs.builder()
                    .email("string")
                    .build())
                .connectorServiceAccount(ClusterCustomerManagedResourcesGcpConnectorServiceAccountArgs.builder()
                    .email("string")
                    .build())
                .consoleServiceAccount(ClusterCustomerManagedResourcesGcpConsoleServiceAccountArgs.builder()
                    .email("string")
                    .build())
                .gkeServiceAccount(ClusterCustomerManagedResourcesGcpGkeServiceAccountArgs.builder()
                    .email("string")
                    .build())
                .redpandaClusterServiceAccount(ClusterCustomerManagedResourcesGcpRedpandaClusterServiceAccountArgs.builder()
                    .email("string")
                    .build())
                .subnet(ClusterCustomerManagedResourcesGcpSubnetArgs.builder()
                    .k8sMasterIpv4Range("string")
                    .name("string")
                    .secondaryIpv4RangePods(ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangePodsArgs.builder()
                        .name("string")
                        .build())
                    .secondaryIpv4RangeServices(ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangeServicesArgs.builder()
                        .name("string")
                        .build())
                    .build())
                .tieredStorageBucket(ClusterCustomerManagedResourcesGcpTieredStorageBucketArgs.builder()
                    .name("string")
                    .build())
                .pscNatSubnetName("string")
                .build())
            .build())
        .gcpGlobalAccessApiGatewayEnabled(false)
        .gcpPrivateServiceConnect(ClusterGcpPrivateServiceConnectArgs.builder()
            .consumerAcceptLists(ClusterGcpPrivateServiceConnectConsumerAcceptListArgs.builder()
                .source("string")
                .build())
            .enabled(false)
            .globalAccessEnabled(false)
            .status(ClusterGcpPrivateServiceConnectStatusArgs.builder()
                .connectedEndpoints(ClusterGcpPrivateServiceConnectStatusConnectedEndpointArgs.builder()
                    .connectionId("string")
                    .consumerNetwork("string")
                    .endpoint("string")
                    .status("string")
                    .build())
                .dnsARecords("string")
                .kafkaApiNodeBasePort(0.0)
                .kafkaApiSeedPort(0.0)
                .redpandaProxyNodeBasePort(0.0)
                .redpandaProxySeedPort(0.0)
                .schemaRegistrySeedPort(0.0)
                .seedHostname("string")
                .serviceAttachment("string")
                .build())
            .build())
        .httpProxy(ClusterHttpProxyArgs.builder()
            .allUrls(ClusterHttpProxyAllUrlsArgs.builder()
                .mtls("string")
                .privateLinkMtls("string")
                .privateLinkSasl("string")
                .sasl("string")
                .build())
            .mtls(ClusterHttpProxyMtlsArgs.builder()
                .caCertificatesPems("string")
                .enabled(false)
                .principalMappingRules("string")
                .build())
            .sasl(ClusterHttpProxySaslArgs.builder()
                .enabled(false)
                .build())
            .url("string")
            .build())
        .kafkaApi(ClusterKafkaApiArgs.builder()
            .allSeedBrokers(ClusterKafkaApiAllSeedBrokersArgs.builder()
                .mtls("string")
                .privateLinkMtls("string")
                .privateLinkSasl("string")
                .sasl("string")
                .build())
            .mtls(ClusterKafkaApiMtlsArgs.builder()
                .caCertificatesPems("string")
                .enabled(false)
                .principalMappingRules("string")
                .build())
            .sasl(ClusterKafkaApiSaslArgs.builder()
                .enabled(false)
                .build())
            .seedBrokers("string")
            .build())
        .kafkaConnect(ClusterKafkaConnectArgs.builder()
            .enabled(false)
            .build())
        .maintenanceWindowConfig(ClusterMaintenanceWindowConfigArgs.builder()
            .anytime(false)
            .dayHour(ClusterMaintenanceWindowConfigDayHourArgs.builder()
                .dayOfWeek("string")
                .hourOfDay(0.0)
                .build())
            .unspecified(false)
            .build())
        .name("string")
        .clusterConfiguration(ClusterClusterConfigurationArgs.builder()
            .customPropertiesJson("string")
            .build())
        .allowDeletion(false)
        .redpandaNodeCount(0.0)
        .redpandaVersion("string")
        .cloudStorage(ClusterCloudStorageArgs.builder()
            .aws(ClusterCloudStorageAwsArgs.builder()
                .arn("string")
                .build())
            .azure(ClusterCloudStorageAzureArgs.builder()
                .containerName("string")
                .storageAccountName("string")
                .build())
            .gcp(ClusterCloudStorageGcpArgs.builder()
                .name("string")
                .build())
            .skipDestroy(false)
            .build())
        .azurePrivateLink(ClusterAzurePrivateLinkArgs.builder()
            .allowedSubscriptions("string")
            .connectConsole(false)
            .enabled(false)
            .status(ClusterAzurePrivateLinkStatusArgs.builder()
                .approvedSubscriptions("string")
                .consolePort(0.0)
                .dnsARecord("string")
                .kafkaApiNodeBasePort(0.0)
                .kafkaApiSeedPort(0.0)
                .privateEndpointConnections(ClusterAzurePrivateLinkStatusPrivateEndpointConnectionArgs.builder()
                    .connectionId("string")
                    .connectionName("string")
                    .privateEndpointId("string")
                    .privateEndpointName("string")
                    .status("string")
                    .build())
                .redpandaProxyNodeBasePort(0.0)
                .redpandaProxySeedPort(0.0)
                .schemaRegistrySeedPort(0.0)
                .serviceId("string")
                .serviceName("string")
                .build())
            .build())
        .rpsql(ClusterRpsqlArgs.builder()
            .enabled(false)
            .replicas(0.0)
            .url("string")
            .build())
        .schemaRegistry(ClusterSchemaRegistryArgs.builder()
            .allUrls(ClusterSchemaRegistryAllUrlsArgs.builder()
                .mtls("string")
                .privateLinkMtls("string")
                .privateLinkSasl("string")
                .sasl("string")
                .build())
            .mtls(ClusterSchemaRegistryMtlsArgs.builder()
                .caCertificatesPems("string")
                .enabled(false)
                .principalMappingRules("string")
                .build())
            .url("string")
            .build())
        .tags(Map.of("string", "string"))
        .awsPrivateLink(ClusterAwsPrivateLinkArgs.builder()
            .allowedPrincipals("string")
            .connectConsole(false)
            .enabled(false)
            .status(ClusterAwsPrivateLinkStatusArgs.builder()
                .consolePort(0.0)
                .kafkaApiNodeBasePort(0.0)
                .kafkaApiSeedPort(0.0)
                .redpandaProxyNodeBasePort(0.0)
                .redpandaProxySeedPort(0.0)
                .schemaRegistrySeedPort(0.0)
                .serviceId("string")
                .serviceName("string")
                .serviceState("string")
                .vpcEndpointConnections(ClusterAwsPrivateLinkStatusVpcEndpointConnectionArgs.builder()
                    .connectionId("string")
                    .dnsEntries(ClusterAwsPrivateLinkStatusVpcEndpointConnectionDnsEntryArgs.builder()
                        .dnsName("string")
                        .hostedZoneId("string")
                        .build())
                    .id("string")
                    .loadBalancerArns("string")
                    .owner("string")
                    .state("string")
                    .build())
                .build())
            .supportedRegions("string")
            .build())
        .timeouts(ClusterTimeoutsArgs.builder()
            .create("string")
            .delete("string")
            .update("string")
            .build())
        .apiGatewayAccess("string")
        .build());
    
    cluster_resource = redpanda.Cluster("clusterResource",
        connection_type="string",
        zones=["string"],
        throughput_tier="string",
        resource_group_id="string",
        cloud_provider="string",
        region="string",
        network_id="string",
        cluster_type="string",
        read_replica_cluster_ids=["string"],
        customer_managed_resources={
            "aws": {
                "node_security_group": {
                    "arn": "string",
                },
                "permissions_boundary_policy": {
                    "arn": "string",
                },
                "cluster_security_group": {
                    "arn": "string",
                },
                "connectors_node_group_instance_profile": {
                    "arn": "string",
                },
                "connectors_security_group": {
                    "arn": "string",
                },
                "k8s_cluster_role": {
                    "arn": "string",
                },
                "cloud_storage_bucket": {
                    "arn": "string",
                },
                "utility_security_group": {
                    "arn": "string",
                },
                "agent_instance_profile": {
                    "arn": "string",
                },
                "utility_node_group_instance_profile": {
                    "arn": "string",
                },
                "redpanda_agent_security_group": {
                    "arn": "string",
                },
                "redpanda_node_group_instance_profile": {
                    "arn": "string",
                },
                "redpanda_node_group_security_group": {
                    "arn": "string",
                },
                "redpanda_connect_node_group_instance_profile": {
                    "arn": "string",
                },
                "redpanda_connect_security_group": {
                    "arn": "string",
                },
            },
            "gcp": {
                "agent_service_account": {
                    "email": "string",
                },
                "connector_service_account": {
                    "email": "string",
                },
                "console_service_account": {
                    "email": "string",
                },
                "gke_service_account": {
                    "email": "string",
                },
                "redpanda_cluster_service_account": {
                    "email": "string",
                },
                "subnet": {
                    "k8s_master_ipv4_range": "string",
                    "name": "string",
                    "secondary_ipv4_range_pods": {
                        "name": "string",
                    },
                    "secondary_ipv4_range_services": {
                        "name": "string",
                    },
                },
                "tiered_storage_bucket": {
                    "name": "string",
                },
                "psc_nat_subnet_name": "string",
            },
        },
        gcp_global_access_api_gateway_enabled=False,
        gcp_private_service_connect={
            "consumer_accept_lists": [{
                "source": "string",
            }],
            "enabled": False,
            "global_access_enabled": False,
            "status": {
                "connected_endpoints": [{
                    "connection_id": "string",
                    "consumer_network": "string",
                    "endpoint": "string",
                    "status": "string",
                }],
                "dns_a_records": ["string"],
                "kafka_api_node_base_port": float(0),
                "kafka_api_seed_port": float(0),
                "redpanda_proxy_node_base_port": float(0),
                "redpanda_proxy_seed_port": float(0),
                "schema_registry_seed_port": float(0),
                "seed_hostname": "string",
                "service_attachment": "string",
            },
        },
        http_proxy={
            "all_urls": {
                "mtls": "string",
                "private_link_mtls": "string",
                "private_link_sasl": "string",
                "sasl": "string",
            },
            "mtls": {
                "ca_certificates_pems": ["string"],
                "enabled": False,
                "principal_mapping_rules": ["string"],
            },
            "sasl": {
                "enabled": False,
            },
            "url": "string",
        },
        kafka_api={
            "all_seed_brokers": {
                "mtls": "string",
                "private_link_mtls": "string",
                "private_link_sasl": "string",
                "sasl": "string",
            },
            "mtls": {
                "ca_certificates_pems": ["string"],
                "enabled": False,
                "principal_mapping_rules": ["string"],
            },
            "sasl": {
                "enabled": False,
            },
            "seed_brokers": ["string"],
        },
        kafka_connect={
            "enabled": False,
        },
        maintenance_window_config={
            "anytime": False,
            "day_hour": {
                "day_of_week": "string",
                "hour_of_day": float(0),
            },
            "unspecified": False,
        },
        name="string",
        cluster_configuration={
            "custom_properties_json": "string",
        },
        allow_deletion=False,
        redpanda_node_count=float(0),
        redpanda_version="string",
        cloud_storage={
            "aws": {
                "arn": "string",
            },
            "azure": {
                "container_name": "string",
                "storage_account_name": "string",
            },
            "gcp": {
                "name": "string",
            },
            "skip_destroy": False,
        },
        azure_private_link={
            "allowed_subscriptions": ["string"],
            "connect_console": False,
            "enabled": False,
            "status": {
                "approved_subscriptions": ["string"],
                "console_port": float(0),
                "dns_a_record": "string",
                "kafka_api_node_base_port": float(0),
                "kafka_api_seed_port": float(0),
                "private_endpoint_connections": [{
                    "connection_id": "string",
                    "connection_name": "string",
                    "private_endpoint_id": "string",
                    "private_endpoint_name": "string",
                    "status": "string",
                }],
                "redpanda_proxy_node_base_port": float(0),
                "redpanda_proxy_seed_port": float(0),
                "schema_registry_seed_port": float(0),
                "service_id": "string",
                "service_name": "string",
            },
        },
        rpsql={
            "enabled": False,
            "replicas": float(0),
            "url": "string",
        },
        schema_registry={
            "all_urls": {
                "mtls": "string",
                "private_link_mtls": "string",
                "private_link_sasl": "string",
                "sasl": "string",
            },
            "mtls": {
                "ca_certificates_pems": ["string"],
                "enabled": False,
                "principal_mapping_rules": ["string"],
            },
            "url": "string",
        },
        tags={
            "string": "string",
        },
        aws_private_link={
            "allowed_principals": ["string"],
            "connect_console": False,
            "enabled": False,
            "status": {
                "console_port": float(0),
                "kafka_api_node_base_port": float(0),
                "kafka_api_seed_port": float(0),
                "redpanda_proxy_node_base_port": float(0),
                "redpanda_proxy_seed_port": float(0),
                "schema_registry_seed_port": float(0),
                "service_id": "string",
                "service_name": "string",
                "service_state": "string",
                "vpc_endpoint_connections": [{
                    "connection_id": "string",
                    "dns_entries": [{
                        "dns_name": "string",
                        "hosted_zone_id": "string",
                    }],
                    "id": "string",
                    "load_balancer_arns": ["string"],
                    "owner": "string",
                    "state": "string",
                }],
            },
            "supported_regions": ["string"],
        },
        timeouts={
            "create": "string",
            "delete": "string",
            "update": "string",
        },
        api_gateway_access="string")
    
    const clusterResource = new redpanda.Cluster("clusterResource", {
        connectionType: "string",
        zones: ["string"],
        throughputTier: "string",
        resourceGroupId: "string",
        cloudProvider: "string",
        region: "string",
        networkId: "string",
        clusterType: "string",
        readReplicaClusterIds: ["string"],
        customerManagedResources: {
            aws: {
                nodeSecurityGroup: {
                    arn: "string",
                },
                permissionsBoundaryPolicy: {
                    arn: "string",
                },
                clusterSecurityGroup: {
                    arn: "string",
                },
                connectorsNodeGroupInstanceProfile: {
                    arn: "string",
                },
                connectorsSecurityGroup: {
                    arn: "string",
                },
                k8sClusterRole: {
                    arn: "string",
                },
                cloudStorageBucket: {
                    arn: "string",
                },
                utilitySecurityGroup: {
                    arn: "string",
                },
                agentInstanceProfile: {
                    arn: "string",
                },
                utilityNodeGroupInstanceProfile: {
                    arn: "string",
                },
                redpandaAgentSecurityGroup: {
                    arn: "string",
                },
                redpandaNodeGroupInstanceProfile: {
                    arn: "string",
                },
                redpandaNodeGroupSecurityGroup: {
                    arn: "string",
                },
                redpandaConnectNodeGroupInstanceProfile: {
                    arn: "string",
                },
                redpandaConnectSecurityGroup: {
                    arn: "string",
                },
            },
            gcp: {
                agentServiceAccount: {
                    email: "string",
                },
                connectorServiceAccount: {
                    email: "string",
                },
                consoleServiceAccount: {
                    email: "string",
                },
                gkeServiceAccount: {
                    email: "string",
                },
                redpandaClusterServiceAccount: {
                    email: "string",
                },
                subnet: {
                    k8sMasterIpv4Range: "string",
                    name: "string",
                    secondaryIpv4RangePods: {
                        name: "string",
                    },
                    secondaryIpv4RangeServices: {
                        name: "string",
                    },
                },
                tieredStorageBucket: {
                    name: "string",
                },
                pscNatSubnetName: "string",
            },
        },
        gcpGlobalAccessApiGatewayEnabled: false,
        gcpPrivateServiceConnect: {
            consumerAcceptLists: [{
                source: "string",
            }],
            enabled: false,
            globalAccessEnabled: false,
            status: {
                connectedEndpoints: [{
                    connectionId: "string",
                    consumerNetwork: "string",
                    endpoint: "string",
                    status: "string",
                }],
                dnsARecords: ["string"],
                kafkaApiNodeBasePort: 0,
                kafkaApiSeedPort: 0,
                redpandaProxyNodeBasePort: 0,
                redpandaProxySeedPort: 0,
                schemaRegistrySeedPort: 0,
                seedHostname: "string",
                serviceAttachment: "string",
            },
        },
        httpProxy: {
            allUrls: {
                mtls: "string",
                privateLinkMtls: "string",
                privateLinkSasl: "string",
                sasl: "string",
            },
            mtls: {
                caCertificatesPems: ["string"],
                enabled: false,
                principalMappingRules: ["string"],
            },
            sasl: {
                enabled: false,
            },
            url: "string",
        },
        kafkaApi: {
            allSeedBrokers: {
                mtls: "string",
                privateLinkMtls: "string",
                privateLinkSasl: "string",
                sasl: "string",
            },
            mtls: {
                caCertificatesPems: ["string"],
                enabled: false,
                principalMappingRules: ["string"],
            },
            sasl: {
                enabled: false,
            },
            seedBrokers: ["string"],
        },
        kafkaConnect: {
            enabled: false,
        },
        maintenanceWindowConfig: {
            anytime: false,
            dayHour: {
                dayOfWeek: "string",
                hourOfDay: 0,
            },
            unspecified: false,
        },
        name: "string",
        clusterConfiguration: {
            customPropertiesJson: "string",
        },
        allowDeletion: false,
        redpandaNodeCount: 0,
        redpandaVersion: "string",
        cloudStorage: {
            aws: {
                arn: "string",
            },
            azure: {
                containerName: "string",
                storageAccountName: "string",
            },
            gcp: {
                name: "string",
            },
            skipDestroy: false,
        },
        azurePrivateLink: {
            allowedSubscriptions: ["string"],
            connectConsole: false,
            enabled: false,
            status: {
                approvedSubscriptions: ["string"],
                consolePort: 0,
                dnsARecord: "string",
                kafkaApiNodeBasePort: 0,
                kafkaApiSeedPort: 0,
                privateEndpointConnections: [{
                    connectionId: "string",
                    connectionName: "string",
                    privateEndpointId: "string",
                    privateEndpointName: "string",
                    status: "string",
                }],
                redpandaProxyNodeBasePort: 0,
                redpandaProxySeedPort: 0,
                schemaRegistrySeedPort: 0,
                serviceId: "string",
                serviceName: "string",
            },
        },
        rpsql: {
            enabled: false,
            replicas: 0,
            url: "string",
        },
        schemaRegistry: {
            allUrls: {
                mtls: "string",
                privateLinkMtls: "string",
                privateLinkSasl: "string",
                sasl: "string",
            },
            mtls: {
                caCertificatesPems: ["string"],
                enabled: false,
                principalMappingRules: ["string"],
            },
            url: "string",
        },
        tags: {
            string: "string",
        },
        awsPrivateLink: {
            allowedPrincipals: ["string"],
            connectConsole: false,
            enabled: false,
            status: {
                consolePort: 0,
                kafkaApiNodeBasePort: 0,
                kafkaApiSeedPort: 0,
                redpandaProxyNodeBasePort: 0,
                redpandaProxySeedPort: 0,
                schemaRegistrySeedPort: 0,
                serviceId: "string",
                serviceName: "string",
                serviceState: "string",
                vpcEndpointConnections: [{
                    connectionId: "string",
                    dnsEntries: [{
                        dnsName: "string",
                        hostedZoneId: "string",
                    }],
                    id: "string",
                    loadBalancerArns: ["string"],
                    owner: "string",
                    state: "string",
                }],
            },
            supportedRegions: ["string"],
        },
        timeouts: {
            create: "string",
            "delete": "string",
            update: "string",
        },
        apiGatewayAccess: "string",
    });
    
    type: redpanda:Cluster
    properties:
        allowDeletion: false
        apiGatewayAccess: string
        awsPrivateLink:
            allowedPrincipals:
                - string
            connectConsole: false
            enabled: false
            status:
                consolePort: 0
                kafkaApiNodeBasePort: 0
                kafkaApiSeedPort: 0
                redpandaProxyNodeBasePort: 0
                redpandaProxySeedPort: 0
                schemaRegistrySeedPort: 0
                serviceId: string
                serviceName: string
                serviceState: string
                vpcEndpointConnections:
                    - connectionId: string
                      dnsEntries:
                        - dnsName: string
                          hostedZoneId: string
                      id: string
                      loadBalancerArns:
                        - string
                      owner: string
                      state: string
            supportedRegions:
                - string
        azurePrivateLink:
            allowedSubscriptions:
                - string
            connectConsole: false
            enabled: false
            status:
                approvedSubscriptions:
                    - string
                consolePort: 0
                dnsARecord: string
                kafkaApiNodeBasePort: 0
                kafkaApiSeedPort: 0
                privateEndpointConnections:
                    - connectionId: string
                      connectionName: string
                      privateEndpointId: string
                      privateEndpointName: string
                      status: string
                redpandaProxyNodeBasePort: 0
                redpandaProxySeedPort: 0
                schemaRegistrySeedPort: 0
                serviceId: string
                serviceName: string
        cloudProvider: string
        cloudStorage:
            aws:
                arn: string
            azure:
                containerName: string
                storageAccountName: string
            gcp:
                name: string
            skipDestroy: false
        clusterConfiguration:
            customPropertiesJson: string
        clusterType: string
        connectionType: string
        customerManagedResources:
            aws:
                agentInstanceProfile:
                    arn: string
                cloudStorageBucket:
                    arn: string
                clusterSecurityGroup:
                    arn: string
                connectorsNodeGroupInstanceProfile:
                    arn: string
                connectorsSecurityGroup:
                    arn: string
                k8sClusterRole:
                    arn: string
                nodeSecurityGroup:
                    arn: string
                permissionsBoundaryPolicy:
                    arn: string
                redpandaAgentSecurityGroup:
                    arn: string
                redpandaConnectNodeGroupInstanceProfile:
                    arn: string
                redpandaConnectSecurityGroup:
                    arn: string
                redpandaNodeGroupInstanceProfile:
                    arn: string
                redpandaNodeGroupSecurityGroup:
                    arn: string
                utilityNodeGroupInstanceProfile:
                    arn: string
                utilitySecurityGroup:
                    arn: string
            gcp:
                agentServiceAccount:
                    email: string
                connectorServiceAccount:
                    email: string
                consoleServiceAccount:
                    email: string
                gkeServiceAccount:
                    email: string
                pscNatSubnetName: string
                redpandaClusterServiceAccount:
                    email: string
                subnet:
                    k8sMasterIpv4Range: string
                    name: string
                    secondaryIpv4RangePods:
                        name: string
                    secondaryIpv4RangeServices:
                        name: string
                tieredStorageBucket:
                    name: string
        gcpGlobalAccessApiGatewayEnabled: false
        gcpPrivateServiceConnect:
            consumerAcceptLists:
                - source: string
            enabled: false
            globalAccessEnabled: false
            status:
                connectedEndpoints:
                    - connectionId: string
                      consumerNetwork: string
                      endpoint: string
                      status: string
                dnsARecords:
                    - string
                kafkaApiNodeBasePort: 0
                kafkaApiSeedPort: 0
                redpandaProxyNodeBasePort: 0
                redpandaProxySeedPort: 0
                schemaRegistrySeedPort: 0
                seedHostname: string
                serviceAttachment: string
        httpProxy:
            allUrls:
                mtls: string
                privateLinkMtls: string
                privateLinkSasl: string
                sasl: string
            mtls:
                caCertificatesPems:
                    - string
                enabled: false
                principalMappingRules:
                    - string
            sasl:
                enabled: false
            url: string
        kafkaApi:
            allSeedBrokers:
                mtls: string
                privateLinkMtls: string
                privateLinkSasl: string
                sasl: string
            mtls:
                caCertificatesPems:
                    - string
                enabled: false
                principalMappingRules:
                    - string
            sasl:
                enabled: false
            seedBrokers:
                - string
        kafkaConnect:
            enabled: false
        maintenanceWindowConfig:
            anytime: false
            dayHour:
                dayOfWeek: string
                hourOfDay: 0
            unspecified: false
        name: string
        networkId: string
        readReplicaClusterIds:
            - string
        redpandaNodeCount: 0
        redpandaVersion: string
        region: string
        resourceGroupId: string
        rpsql:
            enabled: false
            replicas: 0
            url: string
        schemaRegistry:
            allUrls:
                mtls: string
                privateLinkMtls: string
                privateLinkSasl: string
                sasl: string
            mtls:
                caCertificatesPems:
                    - string
                enabled: false
                principalMappingRules:
                    - string
            url: string
        tags:
            string: string
        throughputTier: string
        timeouts:
            create: string
            delete: string
            update: string
        zones:
            - string
    

    Cluster Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The Cluster resource accepts the following input properties:

    CloudProvider string
    Cloud provider where resources are created.
    ConnectionType string
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    NetworkId string
    Network ID where cluster is placed.
    Region string
    Region represents the name of the region where the cluster will be provisioned.
    ResourceGroupId string
    Resource group ID of the cluster.
    ThroughputTier string
    Throughput tier of the cluster.
    Zones List<string>
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    AllowDeletion bool
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    ApiGatewayAccess string
    Network access mode for an endpoint.
    AwsPrivateLink ClusterAwsPrivateLink
    AWS Private Link configuration
    AzurePrivateLink ClusterAzurePrivateLink
    Azure Private Link configuration
    CloudStorage ClusterCloudStorage
    Cloud Storage configuration
    ClusterConfiguration ClusterClusterConfiguration
    Cluster Configuration configuration
    ClusterType string
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    CustomerManagedResources ClusterCustomerManagedResources
    The cloud resources created by user.
    GcpGlobalAccessApiGatewayEnabled bool
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    GcpPrivateServiceConnect ClusterGcpPrivateServiceConnect
    GCP Private Service Connect configuration
    HttpProxy ClusterHttpProxy
    HTTP Proxy properties.
    KafkaApi ClusterKafkaApi
    Cluster's Kafka API properties.
    KafkaConnect ClusterKafkaConnect
    Kafka Connect configuration
    MaintenanceWindowConfig ClusterMaintenanceWindowConfig
    Resource describing the maintenance window configuration of a cluster.
    Name string
    Unique name of the cluster.
    ReadReplicaClusterIds List<string>
    IDs of clusters that can create read-only topics from this cluster
    RedpandaNodeCount double
    Number of Redpanda broker nodes
    RedpandaVersion string
    Redpanda Version
    Rpsql ClusterRpsql
    Rpsql configuration
    SchemaRegistry ClusterSchemaRegistry
    Cluster's Schema Registry properties.
    Tags Dictionary<string, string>
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    Timeouts ClusterTimeouts
    CloudProvider string
    Cloud provider where resources are created.
    ConnectionType string
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    NetworkId string
    Network ID where cluster is placed.
    Region string
    Region represents the name of the region where the cluster will be provisioned.
    ResourceGroupId string
    Resource group ID of the cluster.
    ThroughputTier string
    Throughput tier of the cluster.
    Zones []string
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    AllowDeletion bool
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    ApiGatewayAccess string
    Network access mode for an endpoint.
    AwsPrivateLink ClusterAwsPrivateLinkArgs
    AWS Private Link configuration
    AzurePrivateLink ClusterAzurePrivateLinkArgs
    Azure Private Link configuration
    CloudStorage ClusterCloudStorageArgs
    Cloud Storage configuration
    ClusterConfiguration ClusterClusterConfigurationArgs
    Cluster Configuration configuration
    ClusterType string
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    CustomerManagedResources ClusterCustomerManagedResourcesArgs
    The cloud resources created by user.
    GcpGlobalAccessApiGatewayEnabled bool
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    GcpPrivateServiceConnect ClusterGcpPrivateServiceConnectArgs
    GCP Private Service Connect configuration
    HttpProxy ClusterHttpProxyArgs
    HTTP Proxy properties.
    KafkaApi ClusterKafkaApiArgs
    Cluster's Kafka API properties.
    KafkaConnect ClusterKafkaConnectArgs
    Kafka Connect configuration
    MaintenanceWindowConfig ClusterMaintenanceWindowConfigArgs
    Resource describing the maintenance window configuration of a cluster.
    Name string
    Unique name of the cluster.
    ReadReplicaClusterIds []string
    IDs of clusters that can create read-only topics from this cluster
    RedpandaNodeCount float64
    Number of Redpanda broker nodes
    RedpandaVersion string
    Redpanda Version
    Rpsql ClusterRpsqlArgs
    Rpsql configuration
    SchemaRegistry ClusterSchemaRegistryArgs
    Cluster's Schema Registry properties.
    Tags map[string]string
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    Timeouts ClusterTimeoutsArgs
    cloud_provider string
    Cloud provider where resources are created.
    connection_type string
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    network_id string
    Network ID where cluster is placed.
    region string
    Region represents the name of the region where the cluster will be provisioned.
    resource_group_id string
    Resource group ID of the cluster.
    throughput_tier string
    Throughput tier of the cluster.
    zones list(string)
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    allow_deletion bool
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    api_gateway_access string
    Network access mode for an endpoint.
    aws_private_link object
    AWS Private Link configuration
    azure_private_link object
    Azure Private Link configuration
    cloud_storage object
    Cloud Storage configuration
    cluster_configuration object
    Cluster Configuration configuration
    cluster_type string
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    customer_managed_resources object
    The cloud resources created by user.
    gcp_global_access_api_gateway_enabled bool
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    gcp_private_service_connect object
    GCP Private Service Connect configuration
    http_proxy object
    HTTP Proxy properties.
    kafka_api object
    Cluster's Kafka API properties.
    kafka_connect object
    Kafka Connect configuration
    maintenance_window_config object
    Resource describing the maintenance window configuration of a cluster.
    name string
    Unique name of the cluster.
    read_replica_cluster_ids list(string)
    IDs of clusters that can create read-only topics from this cluster
    redpanda_node_count number
    Number of Redpanda broker nodes
    redpanda_version string
    Redpanda Version
    rpsql object
    Rpsql configuration
    schema_registry object
    Cluster's Schema Registry properties.
    tags map(string)
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    timeouts object
    cloudProvider String
    Cloud provider where resources are created.
    connectionType String
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    networkId String
    Network ID where cluster is placed.
    region String
    Region represents the name of the region where the cluster will be provisioned.
    resourceGroupId String
    Resource group ID of the cluster.
    throughputTier String
    Throughput tier of the cluster.
    zones List<String>
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    allowDeletion Boolean
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    apiGatewayAccess String
    Network access mode for an endpoint.
    awsPrivateLink ClusterAwsPrivateLink
    AWS Private Link configuration
    azurePrivateLink ClusterAzurePrivateLink
    Azure Private Link configuration
    cloudStorage ClusterCloudStorage
    Cloud Storage configuration
    clusterConfiguration ClusterClusterConfiguration
    Cluster Configuration configuration
    clusterType String
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    customerManagedResources ClusterCustomerManagedResources
    The cloud resources created by user.
    gcpGlobalAccessApiGatewayEnabled Boolean
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    gcpPrivateServiceConnect ClusterGcpPrivateServiceConnect
    GCP Private Service Connect configuration
    httpProxy ClusterHttpProxy
    HTTP Proxy properties.
    kafkaApi ClusterKafkaApi
    Cluster's Kafka API properties.
    kafkaConnect ClusterKafkaConnect
    Kafka Connect configuration
    maintenanceWindowConfig ClusterMaintenanceWindowConfig
    Resource describing the maintenance window configuration of a cluster.
    name String
    Unique name of the cluster.
    readReplicaClusterIds List<String>
    IDs of clusters that can create read-only topics from this cluster
    redpandaNodeCount Double
    Number of Redpanda broker nodes
    redpandaVersion String
    Redpanda Version
    rpsql ClusterRpsql
    Rpsql configuration
    schemaRegistry ClusterSchemaRegistry
    Cluster's Schema Registry properties.
    tags Map<String,String>
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    timeouts ClusterTimeouts
    cloudProvider string
    Cloud provider where resources are created.
    connectionType string
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    networkId string
    Network ID where cluster is placed.
    region string
    Region represents the name of the region where the cluster will be provisioned.
    resourceGroupId string
    Resource group ID of the cluster.
    throughputTier string
    Throughput tier of the cluster.
    zones string[]
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    allowDeletion boolean
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    apiGatewayAccess string
    Network access mode for an endpoint.
    awsPrivateLink ClusterAwsPrivateLink
    AWS Private Link configuration
    azurePrivateLink ClusterAzurePrivateLink
    Azure Private Link configuration
    cloudStorage ClusterCloudStorage
    Cloud Storage configuration
    clusterConfiguration ClusterClusterConfiguration
    Cluster Configuration configuration
    clusterType string
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    customerManagedResources ClusterCustomerManagedResources
    The cloud resources created by user.
    gcpGlobalAccessApiGatewayEnabled boolean
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    gcpPrivateServiceConnect ClusterGcpPrivateServiceConnect
    GCP Private Service Connect configuration
    httpProxy ClusterHttpProxy
    HTTP Proxy properties.
    kafkaApi ClusterKafkaApi
    Cluster's Kafka API properties.
    kafkaConnect ClusterKafkaConnect
    Kafka Connect configuration
    maintenanceWindowConfig ClusterMaintenanceWindowConfig
    Resource describing the maintenance window configuration of a cluster.
    name string
    Unique name of the cluster.
    readReplicaClusterIds string[]
    IDs of clusters that can create read-only topics from this cluster
    redpandaNodeCount number
    Number of Redpanda broker nodes
    redpandaVersion string
    Redpanda Version
    rpsql ClusterRpsql
    Rpsql configuration
    schemaRegistry ClusterSchemaRegistry
    Cluster's Schema Registry properties.
    tags {[key: string]: string}
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    timeouts ClusterTimeouts
    cloud_provider str
    Cloud provider where resources are created.
    connection_type str
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    network_id str
    Network ID where cluster is placed.
    region str
    Region represents the name of the region where the cluster will be provisioned.
    resource_group_id str
    Resource group ID of the cluster.
    throughput_tier str
    Throughput tier of the cluster.
    zones Sequence[str]
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    allow_deletion bool
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    api_gateway_access str
    Network access mode for an endpoint.
    aws_private_link ClusterAwsPrivateLinkArgs
    AWS Private Link configuration
    azure_private_link ClusterAzurePrivateLinkArgs
    Azure Private Link configuration
    cloud_storage ClusterCloudStorageArgs
    Cloud Storage configuration
    cluster_configuration ClusterClusterConfigurationArgs
    Cluster Configuration configuration
    cluster_type str
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    customer_managed_resources ClusterCustomerManagedResourcesArgs
    The cloud resources created by user.
    gcp_global_access_api_gateway_enabled bool
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    gcp_private_service_connect ClusterGcpPrivateServiceConnectArgs
    GCP Private Service Connect configuration
    http_proxy ClusterHttpProxyArgs
    HTTP Proxy properties.
    kafka_api ClusterKafkaApiArgs
    Cluster's Kafka API properties.
    kafka_connect ClusterKafkaConnectArgs
    Kafka Connect configuration
    maintenance_window_config ClusterMaintenanceWindowConfigArgs
    Resource describing the maintenance window configuration of a cluster.
    name str
    Unique name of the cluster.
    read_replica_cluster_ids Sequence[str]
    IDs of clusters that can create read-only topics from this cluster
    redpanda_node_count float
    Number of Redpanda broker nodes
    redpanda_version str
    Redpanda Version
    rpsql ClusterRpsqlArgs
    Rpsql configuration
    schema_registry ClusterSchemaRegistryArgs
    Cluster's Schema Registry properties.
    tags Mapping[str, str]
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    timeouts ClusterTimeoutsArgs
    cloudProvider String
    Cloud provider where resources are created.
    connectionType String
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    networkId String
    Network ID where cluster is placed.
    region String
    Region represents the name of the region where the cluster will be provisioned.
    resourceGroupId String
    Resource group ID of the cluster.
    throughputTier String
    Throughput tier of the cluster.
    zones List<String>
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    allowDeletion Boolean
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    apiGatewayAccess String
    Network access mode for an endpoint.
    awsPrivateLink Property Map
    AWS Private Link configuration
    azurePrivateLink Property Map
    Azure Private Link configuration
    cloudStorage Property Map
    Cloud Storage configuration
    clusterConfiguration Property Map
    Cluster Configuration configuration
    clusterType String
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    customerManagedResources Property Map
    The cloud resources created by user.
    gcpGlobalAccessApiGatewayEnabled Boolean
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    gcpPrivateServiceConnect Property Map
    GCP Private Service Connect configuration
    httpProxy Property Map
    HTTP Proxy properties.
    kafkaApi Property Map
    Cluster's Kafka API properties.
    kafkaConnect Property Map
    Kafka Connect configuration
    maintenanceWindowConfig Property Map
    Resource describing the maintenance window configuration of a cluster.
    name String
    Unique name of the cluster.
    readReplicaClusterIds List<String>
    IDs of clusters that can create read-only topics from this cluster
    redpandaNodeCount Number
    Number of Redpanda broker nodes
    redpandaVersion String
    Redpanda Version
    rpsql Property Map
    Rpsql configuration
    schemaRegistry Property Map
    Cluster's Schema Registry properties.
    tags Map<String>
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    timeouts Property Map

    Outputs

    All input properties are implicitly available as output properties. Additionally, the Cluster resource produces the following output properties:

    ClusterApiUrl string
    The URL of the cluster's data plane API
    CurrentRedpandaVersion string
    Current Redpanda version of the cluster.
    DesiredRedpandaVersion string
    Desired Redpanda version of the cluster.
    GcpGlobalAccessEnabled bool
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    Id string
    The provider-assigned unique ID for this managed resource.
    NatGateways List<string>
    NAT gateway information for the cluster.
    Prometheus ClusterPrometheus
    Prometheus metrics endpoint properties.
    RedpandaConsole ClusterRedpandaConsole
    Cluster's Redpanda Console properties.
    State string
    State describes the state of the cluster.
    StateDescription ClusterStateDescription
    Describes errors
    ClusterApiUrl string
    The URL of the cluster's data plane API
    CurrentRedpandaVersion string
    Current Redpanda version of the cluster.
    DesiredRedpandaVersion string
    Desired Redpanda version of the cluster.
    GcpGlobalAccessEnabled bool
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    Id string
    The provider-assigned unique ID for this managed resource.
    NatGateways []string
    NAT gateway information for the cluster.
    Prometheus ClusterPrometheus
    Prometheus metrics endpoint properties.
    RedpandaConsole ClusterRedpandaConsole
    Cluster's Redpanda Console properties.
    State string
    State describes the state of the cluster.
    StateDescription ClusterStateDescription
    Describes errors
    cluster_api_url string
    The URL of the cluster's data plane API
    current_redpanda_version string
    Current Redpanda version of the cluster.
    desired_redpanda_version string
    Desired Redpanda version of the cluster.
    gcp_global_access_enabled bool
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    id string
    The provider-assigned unique ID for this managed resource.
    nat_gateways list(string)
    NAT gateway information for the cluster.
    prometheus object
    Prometheus metrics endpoint properties.
    redpanda_console object
    Cluster's Redpanda Console properties.
    state string
    State describes the state of the cluster.
    state_description object
    Describes errors
    clusterApiUrl String
    The URL of the cluster's data plane API
    currentRedpandaVersion String
    Current Redpanda version of the cluster.
    desiredRedpandaVersion String
    Desired Redpanda version of the cluster.
    gcpGlobalAccessEnabled Boolean
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    id String
    The provider-assigned unique ID for this managed resource.
    natGateways List<String>
    NAT gateway information for the cluster.
    prometheus ClusterPrometheus
    Prometheus metrics endpoint properties.
    redpandaConsole ClusterRedpandaConsole
    Cluster's Redpanda Console properties.
    state String
    State describes the state of the cluster.
    stateDescription ClusterStateDescription
    Describes errors
    clusterApiUrl string
    The URL of the cluster's data plane API
    currentRedpandaVersion string
    Current Redpanda version of the cluster.
    desiredRedpandaVersion string
    Desired Redpanda version of the cluster.
    gcpGlobalAccessEnabled boolean
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    id string
    The provider-assigned unique ID for this managed resource.
    natGateways string[]
    NAT gateway information for the cluster.
    prometheus ClusterPrometheus
    Prometheus metrics endpoint properties.
    redpandaConsole ClusterRedpandaConsole
    Cluster's Redpanda Console properties.
    state string
    State describes the state of the cluster.
    stateDescription ClusterStateDescription
    Describes errors
    cluster_api_url str
    The URL of the cluster's data plane API
    current_redpanda_version str
    Current Redpanda version of the cluster.
    desired_redpanda_version str
    Desired Redpanda version of the cluster.
    gcp_global_access_enabled bool
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    id str
    The provider-assigned unique ID for this managed resource.
    nat_gateways Sequence[str]
    NAT gateway information for the cluster.
    prometheus ClusterPrometheus
    Prometheus metrics endpoint properties.
    redpanda_console ClusterRedpandaConsole
    Cluster's Redpanda Console properties.
    state str
    State describes the state of the cluster.
    state_description ClusterStateDescription
    Describes errors
    clusterApiUrl String
    The URL of the cluster's data plane API
    currentRedpandaVersion String
    Current Redpanda version of the cluster.
    desiredRedpandaVersion String
    Desired Redpanda version of the cluster.
    gcpGlobalAccessEnabled Boolean
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    id String
    The provider-assigned unique ID for this managed resource.
    natGateways List<String>
    NAT gateway information for the cluster.
    prometheus Property Map
    Prometheus metrics endpoint properties.
    redpandaConsole Property Map
    Cluster's Redpanda Console properties.
    state String
    State describes the state of the cluster.
    stateDescription Property Map
    Describes errors

    Look up Existing Cluster Resource

    Get an existing Cluster resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: ClusterState, opts?: CustomResourceOptions): Cluster
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            allow_deletion: Optional[bool] = None,
            api_gateway_access: Optional[str] = None,
            aws_private_link: Optional[ClusterAwsPrivateLinkArgs] = None,
            azure_private_link: Optional[ClusterAzurePrivateLinkArgs] = None,
            cloud_provider: Optional[str] = None,
            cloud_storage: Optional[ClusterCloudStorageArgs] = None,
            cluster_api_url: Optional[str] = None,
            cluster_configuration: Optional[ClusterClusterConfigurationArgs] = None,
            cluster_type: Optional[str] = None,
            connection_type: Optional[str] = None,
            current_redpanda_version: Optional[str] = None,
            customer_managed_resources: Optional[ClusterCustomerManagedResourcesArgs] = None,
            desired_redpanda_version: Optional[str] = None,
            gcp_global_access_api_gateway_enabled: Optional[bool] = None,
            gcp_global_access_enabled: Optional[bool] = None,
            gcp_private_service_connect: Optional[ClusterGcpPrivateServiceConnectArgs] = None,
            http_proxy: Optional[ClusterHttpProxyArgs] = None,
            kafka_api: Optional[ClusterKafkaApiArgs] = None,
            kafka_connect: Optional[ClusterKafkaConnectArgs] = None,
            maintenance_window_config: Optional[ClusterMaintenanceWindowConfigArgs] = None,
            name: Optional[str] = None,
            nat_gateways: Optional[Sequence[str]] = None,
            network_id: Optional[str] = None,
            prometheus: Optional[ClusterPrometheusArgs] = None,
            read_replica_cluster_ids: Optional[Sequence[str]] = None,
            redpanda_console: Optional[ClusterRedpandaConsoleArgs] = None,
            redpanda_node_count: Optional[float] = None,
            redpanda_version: Optional[str] = None,
            region: Optional[str] = None,
            resource_group_id: Optional[str] = None,
            rpsql: Optional[ClusterRpsqlArgs] = None,
            schema_registry: Optional[ClusterSchemaRegistryArgs] = None,
            state: Optional[str] = None,
            state_description: Optional[ClusterStateDescriptionArgs] = None,
            tags: Optional[Mapping[str, str]] = None,
            throughput_tier: Optional[str] = None,
            timeouts: Optional[ClusterTimeoutsArgs] = None,
            zones: Optional[Sequence[str]] = None) -> Cluster
    func GetCluster(ctx *Context, name string, id IDInput, state *ClusterState, opts ...ResourceOption) (*Cluster, error)
    public static Cluster Get(string name, Input<string> id, ClusterState? state, CustomResourceOptions? opts = null)
    public static Cluster get(String name, Output<String> id, ClusterState state, CustomResourceOptions options)
    resources:  _:    type: redpanda:Cluster    get:      id: ${id}
    import {
      to = redpanda_cluster.example
      id = "${id}"
    }
    
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AllowDeletion bool
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    ApiGatewayAccess string
    Network access mode for an endpoint.
    AwsPrivateLink ClusterAwsPrivateLink
    AWS Private Link configuration
    AzurePrivateLink ClusterAzurePrivateLink
    Azure Private Link configuration
    CloudProvider string
    Cloud provider where resources are created.
    CloudStorage ClusterCloudStorage
    Cloud Storage configuration
    ClusterApiUrl string
    The URL of the cluster's data plane API
    ClusterConfiguration ClusterClusterConfiguration
    Cluster Configuration configuration
    ClusterType string
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    ConnectionType string
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    CurrentRedpandaVersion string
    Current Redpanda version of the cluster.
    CustomerManagedResources ClusterCustomerManagedResources
    The cloud resources created by user.
    DesiredRedpandaVersion string
    Desired Redpanda version of the cluster.
    GcpGlobalAccessApiGatewayEnabled bool
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    GcpGlobalAccessEnabled bool
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    GcpPrivateServiceConnect ClusterGcpPrivateServiceConnect
    GCP Private Service Connect configuration
    HttpProxy ClusterHttpProxy
    HTTP Proxy properties.
    KafkaApi ClusterKafkaApi
    Cluster's Kafka API properties.
    KafkaConnect ClusterKafkaConnect
    Kafka Connect configuration
    MaintenanceWindowConfig ClusterMaintenanceWindowConfig
    Resource describing the maintenance window configuration of a cluster.
    Name string
    Unique name of the cluster.
    NatGateways List<string>
    NAT gateway information for the cluster.
    NetworkId string
    Network ID where cluster is placed.
    Prometheus ClusterPrometheus
    Prometheus metrics endpoint properties.
    ReadReplicaClusterIds List<string>
    IDs of clusters that can create read-only topics from this cluster
    RedpandaConsole ClusterRedpandaConsole
    Cluster's Redpanda Console properties.
    RedpandaNodeCount double
    Number of Redpanda broker nodes
    RedpandaVersion string
    Redpanda Version
    Region string
    Region represents the name of the region where the cluster will be provisioned.
    ResourceGroupId string
    Resource group ID of the cluster.
    Rpsql ClusterRpsql
    Rpsql configuration
    SchemaRegistry ClusterSchemaRegistry
    Cluster's Schema Registry properties.
    State string
    State describes the state of the cluster.
    StateDescription ClusterStateDescription
    Describes errors
    Tags Dictionary<string, string>
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    ThroughputTier string
    Throughput tier of the cluster.
    Timeouts ClusterTimeouts
    Zones List<string>
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    AllowDeletion bool
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    ApiGatewayAccess string
    Network access mode for an endpoint.
    AwsPrivateLink ClusterAwsPrivateLinkArgs
    AWS Private Link configuration
    AzurePrivateLink ClusterAzurePrivateLinkArgs
    Azure Private Link configuration
    CloudProvider string
    Cloud provider where resources are created.
    CloudStorage ClusterCloudStorageArgs
    Cloud Storage configuration
    ClusterApiUrl string
    The URL of the cluster's data plane API
    ClusterConfiguration ClusterClusterConfigurationArgs
    Cluster Configuration configuration
    ClusterType string
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    ConnectionType string
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    CurrentRedpandaVersion string
    Current Redpanda version of the cluster.
    CustomerManagedResources ClusterCustomerManagedResourcesArgs
    The cloud resources created by user.
    DesiredRedpandaVersion string
    Desired Redpanda version of the cluster.
    GcpGlobalAccessApiGatewayEnabled bool
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    GcpGlobalAccessEnabled bool
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    GcpPrivateServiceConnect ClusterGcpPrivateServiceConnectArgs
    GCP Private Service Connect configuration
    HttpProxy ClusterHttpProxyArgs
    HTTP Proxy properties.
    KafkaApi ClusterKafkaApiArgs
    Cluster's Kafka API properties.
    KafkaConnect ClusterKafkaConnectArgs
    Kafka Connect configuration
    MaintenanceWindowConfig ClusterMaintenanceWindowConfigArgs
    Resource describing the maintenance window configuration of a cluster.
    Name string
    Unique name of the cluster.
    NatGateways []string
    NAT gateway information for the cluster.
    NetworkId string
    Network ID where cluster is placed.
    Prometheus ClusterPrometheusArgs
    Prometheus metrics endpoint properties.
    ReadReplicaClusterIds []string
    IDs of clusters that can create read-only topics from this cluster
    RedpandaConsole ClusterRedpandaConsoleArgs
    Cluster's Redpanda Console properties.
    RedpandaNodeCount float64
    Number of Redpanda broker nodes
    RedpandaVersion string
    Redpanda Version
    Region string
    Region represents the name of the region where the cluster will be provisioned.
    ResourceGroupId string
    Resource group ID of the cluster.
    Rpsql ClusterRpsqlArgs
    Rpsql configuration
    SchemaRegistry ClusterSchemaRegistryArgs
    Cluster's Schema Registry properties.
    State string
    State describes the state of the cluster.
    StateDescription ClusterStateDescriptionArgs
    Describes errors
    Tags map[string]string
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    ThroughputTier string
    Throughput tier of the cluster.
    Timeouts ClusterTimeoutsArgs
    Zones []string
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    allow_deletion bool
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    api_gateway_access string
    Network access mode for an endpoint.
    aws_private_link object
    AWS Private Link configuration
    azure_private_link object
    Azure Private Link configuration
    cloud_provider string
    Cloud provider where resources are created.
    cloud_storage object
    Cloud Storage configuration
    cluster_api_url string
    The URL of the cluster's data plane API
    cluster_configuration object
    Cluster Configuration configuration
    cluster_type string
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    connection_type string
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    current_redpanda_version string
    Current Redpanda version of the cluster.
    customer_managed_resources object
    The cloud resources created by user.
    desired_redpanda_version string
    Desired Redpanda version of the cluster.
    gcp_global_access_api_gateway_enabled bool
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    gcp_global_access_enabled bool
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    gcp_private_service_connect object
    GCP Private Service Connect configuration
    http_proxy object
    HTTP Proxy properties.
    kafka_api object
    Cluster's Kafka API properties.
    kafka_connect object
    Kafka Connect configuration
    maintenance_window_config object
    Resource describing the maintenance window configuration of a cluster.
    name string
    Unique name of the cluster.
    nat_gateways list(string)
    NAT gateway information for the cluster.
    network_id string
    Network ID where cluster is placed.
    prometheus object
    Prometheus metrics endpoint properties.
    read_replica_cluster_ids list(string)
    IDs of clusters that can create read-only topics from this cluster
    redpanda_console object
    Cluster's Redpanda Console properties.
    redpanda_node_count number
    Number of Redpanda broker nodes
    redpanda_version string
    Redpanda Version
    region string
    Region represents the name of the region where the cluster will be provisioned.
    resource_group_id string
    Resource group ID of the cluster.
    rpsql object
    Rpsql configuration
    schema_registry object
    Cluster's Schema Registry properties.
    state string
    State describes the state of the cluster.
    state_description object
    Describes errors
    tags map(string)
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    throughput_tier string
    Throughput tier of the cluster.
    timeouts object
    zones list(string)
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    allowDeletion Boolean
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    apiGatewayAccess String
    Network access mode for an endpoint.
    awsPrivateLink ClusterAwsPrivateLink
    AWS Private Link configuration
    azurePrivateLink ClusterAzurePrivateLink
    Azure Private Link configuration
    cloudProvider String
    Cloud provider where resources are created.
    cloudStorage ClusterCloudStorage
    Cloud Storage configuration
    clusterApiUrl String
    The URL of the cluster's data plane API
    clusterConfiguration ClusterClusterConfiguration
    Cluster Configuration configuration
    clusterType String
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    connectionType String
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    currentRedpandaVersion String
    Current Redpanda version of the cluster.
    customerManagedResources ClusterCustomerManagedResources
    The cloud resources created by user.
    desiredRedpandaVersion String
    Desired Redpanda version of the cluster.
    gcpGlobalAccessApiGatewayEnabled Boolean
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    gcpGlobalAccessEnabled Boolean
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    gcpPrivateServiceConnect ClusterGcpPrivateServiceConnect
    GCP Private Service Connect configuration
    httpProxy ClusterHttpProxy
    HTTP Proxy properties.
    kafkaApi ClusterKafkaApi
    Cluster's Kafka API properties.
    kafkaConnect ClusterKafkaConnect
    Kafka Connect configuration
    maintenanceWindowConfig ClusterMaintenanceWindowConfig
    Resource describing the maintenance window configuration of a cluster.
    name String
    Unique name of the cluster.
    natGateways List<String>
    NAT gateway information for the cluster.
    networkId String
    Network ID where cluster is placed.
    prometheus ClusterPrometheus
    Prometheus metrics endpoint properties.
    readReplicaClusterIds List<String>
    IDs of clusters that can create read-only topics from this cluster
    redpandaConsole ClusterRedpandaConsole
    Cluster's Redpanda Console properties.
    redpandaNodeCount Double
    Number of Redpanda broker nodes
    redpandaVersion String
    Redpanda Version
    region String
    Region represents the name of the region where the cluster will be provisioned.
    resourceGroupId String
    Resource group ID of the cluster.
    rpsql ClusterRpsql
    Rpsql configuration
    schemaRegistry ClusterSchemaRegistry
    Cluster's Schema Registry properties.
    state String
    State describes the state of the cluster.
    stateDescription ClusterStateDescription
    Describes errors
    tags Map<String,String>
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    throughputTier String
    Throughput tier of the cluster.
    timeouts ClusterTimeouts
    zones List<String>
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    allowDeletion boolean
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    apiGatewayAccess string
    Network access mode for an endpoint.
    awsPrivateLink ClusterAwsPrivateLink
    AWS Private Link configuration
    azurePrivateLink ClusterAzurePrivateLink
    Azure Private Link configuration
    cloudProvider string
    Cloud provider where resources are created.
    cloudStorage ClusterCloudStorage
    Cloud Storage configuration
    clusterApiUrl string
    The URL of the cluster's data plane API
    clusterConfiguration ClusterClusterConfiguration
    Cluster Configuration configuration
    clusterType string
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    connectionType string
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    currentRedpandaVersion string
    Current Redpanda version of the cluster.
    customerManagedResources ClusterCustomerManagedResources
    The cloud resources created by user.
    desiredRedpandaVersion string
    Desired Redpanda version of the cluster.
    gcpGlobalAccessApiGatewayEnabled boolean
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    gcpGlobalAccessEnabled boolean
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    gcpPrivateServiceConnect ClusterGcpPrivateServiceConnect
    GCP Private Service Connect configuration
    httpProxy ClusterHttpProxy
    HTTP Proxy properties.
    kafkaApi ClusterKafkaApi
    Cluster's Kafka API properties.
    kafkaConnect ClusterKafkaConnect
    Kafka Connect configuration
    maintenanceWindowConfig ClusterMaintenanceWindowConfig
    Resource describing the maintenance window configuration of a cluster.
    name string
    Unique name of the cluster.
    natGateways string[]
    NAT gateway information for the cluster.
    networkId string
    Network ID where cluster is placed.
    prometheus ClusterPrometheus
    Prometheus metrics endpoint properties.
    readReplicaClusterIds string[]
    IDs of clusters that can create read-only topics from this cluster
    redpandaConsole ClusterRedpandaConsole
    Cluster's Redpanda Console properties.
    redpandaNodeCount number
    Number of Redpanda broker nodes
    redpandaVersion string
    Redpanda Version
    region string
    Region represents the name of the region where the cluster will be provisioned.
    resourceGroupId string
    Resource group ID of the cluster.
    rpsql ClusterRpsql
    Rpsql configuration
    schemaRegistry ClusterSchemaRegistry
    Cluster's Schema Registry properties.
    state string
    State describes the state of the cluster.
    stateDescription ClusterStateDescription
    Describes errors
    tags {[key: string]: string}
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    throughputTier string
    Throughput tier of the cluster.
    timeouts ClusterTimeouts
    zones string[]
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    allow_deletion bool
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    api_gateway_access str
    Network access mode for an endpoint.
    aws_private_link ClusterAwsPrivateLinkArgs
    AWS Private Link configuration
    azure_private_link ClusterAzurePrivateLinkArgs
    Azure Private Link configuration
    cloud_provider str
    Cloud provider where resources are created.
    cloud_storage ClusterCloudStorageArgs
    Cloud Storage configuration
    cluster_api_url str
    The URL of the cluster's data plane API
    cluster_configuration ClusterClusterConfigurationArgs
    Cluster Configuration configuration
    cluster_type str
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    connection_type str
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    current_redpanda_version str
    Current Redpanda version of the cluster.
    customer_managed_resources ClusterCustomerManagedResourcesArgs
    The cloud resources created by user.
    desired_redpanda_version str
    Desired Redpanda version of the cluster.
    gcp_global_access_api_gateway_enabled bool
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    gcp_global_access_enabled bool
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    gcp_private_service_connect ClusterGcpPrivateServiceConnectArgs
    GCP Private Service Connect configuration
    http_proxy ClusterHttpProxyArgs
    HTTP Proxy properties.
    kafka_api ClusterKafkaApiArgs
    Cluster's Kafka API properties.
    kafka_connect ClusterKafkaConnectArgs
    Kafka Connect configuration
    maintenance_window_config ClusterMaintenanceWindowConfigArgs
    Resource describing the maintenance window configuration of a cluster.
    name str
    Unique name of the cluster.
    nat_gateways Sequence[str]
    NAT gateway information for the cluster.
    network_id str
    Network ID where cluster is placed.
    prometheus ClusterPrometheusArgs
    Prometheus metrics endpoint properties.
    read_replica_cluster_ids Sequence[str]
    IDs of clusters that can create read-only topics from this cluster
    redpanda_console ClusterRedpandaConsoleArgs
    Cluster's Redpanda Console properties.
    redpanda_node_count float
    Number of Redpanda broker nodes
    redpanda_version str
    Redpanda Version
    region str
    Region represents the name of the region where the cluster will be provisioned.
    resource_group_id str
    Resource group ID of the cluster.
    rpsql ClusterRpsqlArgs
    Rpsql configuration
    schema_registry ClusterSchemaRegistryArgs
    Cluster's Schema Registry properties.
    state str
    State describes the state of the cluster.
    state_description ClusterStateDescriptionArgs
    Describes errors
    tags Mapping[str, str]
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    throughput_tier str
    Throughput tier of the cluster.
    timeouts ClusterTimeoutsArgs
    zones Sequence[str]
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.
    allowDeletion Boolean
    Resource will only be deleted when allow_deletion is set to true. Otherwise deletion will fail with a related error.
    apiGatewayAccess String
    Network access mode for an endpoint.
    awsPrivateLink Property Map
    AWS Private Link configuration
    azurePrivateLink Property Map
    Azure Private Link configuration
    cloudProvider String
    Cloud provider where resources are created.
    cloudStorage Property Map
    Cloud Storage configuration
    clusterApiUrl String
    The URL of the cluster's data plane API
    clusterConfiguration Property Map
    Cluster Configuration configuration
    clusterType String
    Cluster type. Type is immutable and can only be set on cluster creation. Can be either byoc or dedicated.
    connectionType String
    Cluster connection type. Private clusters are not exposed to the internet. For BYOC clusters, private is best-practice
    currentRedpandaVersion String
    Current Redpanda version of the cluster.
    customerManagedResources Property Map
    The cloud resources created by user.
    desiredRedpandaVersion String
    Desired Redpanda version of the cluster.
    gcpGlobalAccessApiGatewayEnabled Boolean
    gcpglobalaccessapigateway_enabled reports whether global access is enabled on the internal load balancer serving the Console/API Gateway endpoint. Applicable only for GCP.
    gcpGlobalAccessEnabled Boolean
    gcpenableglobal_access control if global access is enabled on the seed load balancer, applicable only for GCP. Default is false
    gcpPrivateServiceConnect Property Map
    GCP Private Service Connect configuration
    httpProxy Property Map
    HTTP Proxy properties.
    kafkaApi Property Map
    Cluster's Kafka API properties.
    kafkaConnect Property Map
    Kafka Connect configuration
    maintenanceWindowConfig Property Map
    Resource describing the maintenance window configuration of a cluster.
    name String
    Unique name of the cluster.
    natGateways List<String>
    NAT gateway information for the cluster.
    networkId String
    Network ID where cluster is placed.
    prometheus Property Map
    Prometheus metrics endpoint properties.
    readReplicaClusterIds List<String>
    IDs of clusters that can create read-only topics from this cluster
    redpandaConsole Property Map
    Cluster's Redpanda Console properties.
    redpandaNodeCount Number
    Number of Redpanda broker nodes
    redpandaVersion String
    Redpanda Version
    region String
    Region represents the name of the region where the cluster will be provisioned.
    resourceGroupId String
    Resource group ID of the cluster.
    rpsql Property Map
    Rpsql configuration
    schemaRegistry Property Map
    Cluster's Schema Registry properties.
    state String
    State describes the state of the cluster.
    stateDescription Property Map
    Describes errors
    tags Map<String>
    Tags placed on cloud resources. Server-managed keys (prefixed with redpanda-) are filtered out of state.
    throughputTier String
    Throughput tier of the cluster.
    timeouts Property Map
    zones List<String>
    Zones of the cluster. Must be valid zones within the selected region. If multiple zones are used, the cluster is a multi-AZ cluster.

    Supporting Types

    AllowedPrincipals List<string>
    ARN of the principals that can access the Redpanda AWS PrivateLink Endpoint Service
    ConnectConsole bool
    Whether Console is connected in Redpanda AWS Private Link Service.
    Enabled bool
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    Status ClusterAwsPrivateLinkStatus
    Status configuration
    SupportedRegions List<string>
    List of supported regions in cross-region AWS PrivateLink.
    AllowedPrincipals []string
    ARN of the principals that can access the Redpanda AWS PrivateLink Endpoint Service
    ConnectConsole bool
    Whether Console is connected in Redpanda AWS Private Link Service.
    Enabled bool
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    Status ClusterAwsPrivateLinkStatus
    Status configuration
    SupportedRegions []string
    List of supported regions in cross-region AWS PrivateLink.
    allowed_principals list(string)
    ARN of the principals that can access the Redpanda AWS PrivateLink Endpoint Service
    connect_console bool
    Whether Console is connected in Redpanda AWS Private Link Service.
    enabled bool
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    status object
    Status configuration
    supported_regions list(string)
    List of supported regions in cross-region AWS PrivateLink.
    allowedPrincipals List<String>
    ARN of the principals that can access the Redpanda AWS PrivateLink Endpoint Service
    connectConsole Boolean
    Whether Console is connected in Redpanda AWS Private Link Service.
    enabled Boolean
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    status ClusterAwsPrivateLinkStatus
    Status configuration
    supportedRegions List<String>
    List of supported regions in cross-region AWS PrivateLink.
    allowedPrincipals string[]
    ARN of the principals that can access the Redpanda AWS PrivateLink Endpoint Service
    connectConsole boolean
    Whether Console is connected in Redpanda AWS Private Link Service.
    enabled boolean
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    status ClusterAwsPrivateLinkStatus
    Status configuration
    supportedRegions string[]
    List of supported regions in cross-region AWS PrivateLink.
    allowed_principals Sequence[str]
    ARN of the principals that can access the Redpanda AWS PrivateLink Endpoint Service
    connect_console bool
    Whether Console is connected in Redpanda AWS Private Link Service.
    enabled bool
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    status ClusterAwsPrivateLinkStatus
    Status configuration
    supported_regions Sequence[str]
    List of supported regions in cross-region AWS PrivateLink.
    allowedPrincipals List<String>
    ARN of the principals that can access the Redpanda AWS PrivateLink Endpoint Service
    connectConsole Boolean
    Whether Console is connected in Redpanda AWS Private Link Service.
    enabled Boolean
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    status Property Map
    Status configuration
    supportedRegions List<String>
    List of supported regions in cross-region AWS PrivateLink.

    ClusterAwsPrivateLinkStatus, ClusterAwsPrivateLinkStatusArgs

    ConsolePort double
    The port of Redpanda Console.
    KafkaApiNodeBasePort double
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    KafkaApiSeedPort double
    Kafka API seed service port.
    RedpandaProxyNodeBasePort double
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    RedpandaProxySeedPort double
    HTTP Proxy seed service port.
    SchemaRegistrySeedPort double
    Schema Registry seed service port.
    ServiceId string
    ID of Redpanda AWS PrivateLink Endpoint Service.
    ServiceName string
    Name of Redpanda AWS PrivateLink Endpoint Service.
    ServiceState string
    State of Redpanda AWS PrivateLink Endpoint Service.
    VpcEndpointConnections List<ClusterAwsPrivateLinkStatusVpcEndpointConnection>
    List of VPC endpoints with established connections to Redpanda AWS PrivateLink Endpoint Service.
    ConsolePort float64
    The port of Redpanda Console.
    KafkaApiNodeBasePort float64
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    KafkaApiSeedPort float64
    Kafka API seed service port.
    RedpandaProxyNodeBasePort float64
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    RedpandaProxySeedPort float64
    HTTP Proxy seed service port.
    SchemaRegistrySeedPort float64
    Schema Registry seed service port.
    ServiceId string
    ID of Redpanda AWS PrivateLink Endpoint Service.
    ServiceName string
    Name of Redpanda AWS PrivateLink Endpoint Service.
    ServiceState string
    State of Redpanda AWS PrivateLink Endpoint Service.
    VpcEndpointConnections []ClusterAwsPrivateLinkStatusVpcEndpointConnection
    List of VPC endpoints with established connections to Redpanda AWS PrivateLink Endpoint Service.
    console_port number
    The port of Redpanda Console.
    kafka_api_node_base_port number
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafka_api_seed_port number
    Kafka API seed service port.
    redpanda_proxy_node_base_port number
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpanda_proxy_seed_port number
    HTTP Proxy seed service port.
    schema_registry_seed_port number
    Schema Registry seed service port.
    service_id string
    ID of Redpanda AWS PrivateLink Endpoint Service.
    service_name string
    Name of Redpanda AWS PrivateLink Endpoint Service.
    service_state string
    State of Redpanda AWS PrivateLink Endpoint Service.
    vpc_endpoint_connections list(object)
    List of VPC endpoints with established connections to Redpanda AWS PrivateLink Endpoint Service.
    consolePort Double
    The port of Redpanda Console.
    kafkaApiNodeBasePort Double
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafkaApiSeedPort Double
    Kafka API seed service port.
    redpandaProxyNodeBasePort Double
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpandaProxySeedPort Double
    HTTP Proxy seed service port.
    schemaRegistrySeedPort Double
    Schema Registry seed service port.
    serviceId String
    ID of Redpanda AWS PrivateLink Endpoint Service.
    serviceName String
    Name of Redpanda AWS PrivateLink Endpoint Service.
    serviceState String
    State of Redpanda AWS PrivateLink Endpoint Service.
    vpcEndpointConnections List<ClusterAwsPrivateLinkStatusVpcEndpointConnection>
    List of VPC endpoints with established connections to Redpanda AWS PrivateLink Endpoint Service.
    consolePort number
    The port of Redpanda Console.
    kafkaApiNodeBasePort number
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafkaApiSeedPort number
    Kafka API seed service port.
    redpandaProxyNodeBasePort number
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpandaProxySeedPort number
    HTTP Proxy seed service port.
    schemaRegistrySeedPort number
    Schema Registry seed service port.
    serviceId string
    ID of Redpanda AWS PrivateLink Endpoint Service.
    serviceName string
    Name of Redpanda AWS PrivateLink Endpoint Service.
    serviceState string
    State of Redpanda AWS PrivateLink Endpoint Service.
    vpcEndpointConnections ClusterAwsPrivateLinkStatusVpcEndpointConnection[]
    List of VPC endpoints with established connections to Redpanda AWS PrivateLink Endpoint Service.
    console_port float
    The port of Redpanda Console.
    kafka_api_node_base_port float
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafka_api_seed_port float
    Kafka API seed service port.
    redpanda_proxy_node_base_port float
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpanda_proxy_seed_port float
    HTTP Proxy seed service port.
    schema_registry_seed_port float
    Schema Registry seed service port.
    service_id str
    ID of Redpanda AWS PrivateLink Endpoint Service.
    service_name str
    Name of Redpanda AWS PrivateLink Endpoint Service.
    service_state str
    State of Redpanda AWS PrivateLink Endpoint Service.
    vpc_endpoint_connections Sequence[ClusterAwsPrivateLinkStatusVpcEndpointConnection]
    List of VPC endpoints with established connections to Redpanda AWS PrivateLink Endpoint Service.
    consolePort Number
    The port of Redpanda Console.
    kafkaApiNodeBasePort Number
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafkaApiSeedPort Number
    Kafka API seed service port.
    redpandaProxyNodeBasePort Number
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpandaProxySeedPort Number
    HTTP Proxy seed service port.
    schemaRegistrySeedPort Number
    Schema Registry seed service port.
    serviceId String
    ID of Redpanda AWS PrivateLink Endpoint Service.
    serviceName String
    Name of Redpanda AWS PrivateLink Endpoint Service.
    serviceState String
    State of Redpanda AWS PrivateLink Endpoint Service.
    vpcEndpointConnections List<Property Map>
    List of VPC endpoints with established connections to Redpanda AWS PrivateLink Endpoint Service.

    ClusterAwsPrivateLinkStatusVpcEndpointConnection, ClusterAwsPrivateLinkStatusVpcEndpointConnectionArgs

    ConnectionId string
    Connection ID of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    DnsEntries List<ClusterAwsPrivateLinkStatusVpcEndpointConnectionDnsEntry>
    The list of DNS entries associated with VPC endpoint.
    Id string
    The ID of VPC endpoint.
    LoadBalancerArns List<string>
    List of load balancer ARNs.
    Owner string
    The owner of VPC endpoint.
    State string
    The state of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    ConnectionId string
    Connection ID of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    DnsEntries []ClusterAwsPrivateLinkStatusVpcEndpointConnectionDnsEntry
    The list of DNS entries associated with VPC endpoint.
    Id string
    The ID of VPC endpoint.
    LoadBalancerArns []string
    List of load balancer ARNs.
    Owner string
    The owner of VPC endpoint.
    State string
    The state of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    connection_id string
    Connection ID of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    dns_entries list(object)
    The list of DNS entries associated with VPC endpoint.
    id string
    The ID of VPC endpoint.
    load_balancer_arns list(string)
    List of load balancer ARNs.
    owner string
    The owner of VPC endpoint.
    state string
    The state of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    connectionId String
    Connection ID of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    dnsEntries List<ClusterAwsPrivateLinkStatusVpcEndpointConnectionDnsEntry>
    The list of DNS entries associated with VPC endpoint.
    id String
    The ID of VPC endpoint.
    loadBalancerArns List<String>
    List of load balancer ARNs.
    owner String
    The owner of VPC endpoint.
    state String
    The state of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    connectionId string
    Connection ID of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    dnsEntries ClusterAwsPrivateLinkStatusVpcEndpointConnectionDnsEntry[]
    The list of DNS entries associated with VPC endpoint.
    id string
    The ID of VPC endpoint.
    loadBalancerArns string[]
    List of load balancer ARNs.
    owner string
    The owner of VPC endpoint.
    state string
    The state of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    connection_id str
    Connection ID of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    dns_entries Sequence[ClusterAwsPrivateLinkStatusVpcEndpointConnectionDnsEntry]
    The list of DNS entries associated with VPC endpoint.
    id str
    The ID of VPC endpoint.
    load_balancer_arns Sequence[str]
    List of load balancer ARNs.
    owner str
    The owner of VPC endpoint.
    state str
    The state of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    connectionId String
    Connection ID of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    dnsEntries List<Property Map>
    The list of DNS entries associated with VPC endpoint.
    id String
    The ID of VPC endpoint.
    loadBalancerArns List<String>
    List of load balancer ARNs.
    owner String
    The owner of VPC endpoint.
    state String
    The state of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.

    ClusterAwsPrivateLinkStatusVpcEndpointConnectionDnsEntry, ClusterAwsPrivateLinkStatusVpcEndpointConnectionDnsEntryArgs

    DnsName string
    DNS entry of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    HostedZoneId string
    The ID of Route53 DNS zone.
    DnsName string
    DNS entry of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    HostedZoneId string
    The ID of Route53 DNS zone.
    dns_name string
    DNS entry of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    hosted_zone_id string
    The ID of Route53 DNS zone.
    dnsName String
    DNS entry of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    hostedZoneId String
    The ID of Route53 DNS zone.
    dnsName string
    DNS entry of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    hostedZoneId string
    The ID of Route53 DNS zone.
    dns_name str
    DNS entry of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    hosted_zone_id str
    The ID of Route53 DNS zone.
    dnsName String
    DNS entry of VPC endpoint connected to Redpanda AWS PrivateLink Endpoint Service.
    hostedZoneId String
    The ID of Route53 DNS zone.
    AllowedSubscriptions List<string>
    Azure subscription IDs allowed to access the Redpanda Private Link Endpoint Service
    ConnectConsole bool
    Whether Console is connected in Redpanda Azure Private Link Service.
    Enabled bool
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    Status ClusterAzurePrivateLinkStatus
    Status configuration
    AllowedSubscriptions []string
    Azure subscription IDs allowed to access the Redpanda Private Link Endpoint Service
    ConnectConsole bool
    Whether Console is connected in Redpanda Azure Private Link Service.
    Enabled bool
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    Status ClusterAzurePrivateLinkStatus
    Status configuration
    allowed_subscriptions list(string)
    Azure subscription IDs allowed to access the Redpanda Private Link Endpoint Service
    connect_console bool
    Whether Console is connected in Redpanda Azure Private Link Service.
    enabled bool
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    status object
    Status configuration
    allowedSubscriptions List<String>
    Azure subscription IDs allowed to access the Redpanda Private Link Endpoint Service
    connectConsole Boolean
    Whether Console is connected in Redpanda Azure Private Link Service.
    enabled Boolean
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    status ClusterAzurePrivateLinkStatus
    Status configuration
    allowedSubscriptions string[]
    Azure subscription IDs allowed to access the Redpanda Private Link Endpoint Service
    connectConsole boolean
    Whether Console is connected in Redpanda Azure Private Link Service.
    enabled boolean
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    status ClusterAzurePrivateLinkStatus
    Status configuration
    allowed_subscriptions Sequence[str]
    Azure subscription IDs allowed to access the Redpanda Private Link Endpoint Service
    connect_console bool
    Whether Console is connected in Redpanda Azure Private Link Service.
    enabled bool
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    status ClusterAzurePrivateLinkStatus
    Status configuration
    allowedSubscriptions List<String>
    Azure subscription IDs allowed to access the Redpanda Private Link Endpoint Service
    connectConsole Boolean
    Whether Console is connected in Redpanda Azure Private Link Service.
    enabled Boolean
    Whether Redpanda AWS Private Link Endpoint Service is enabled.
    status Property Map
    Status configuration

    ClusterAzurePrivateLinkStatus, ClusterAzurePrivateLinkStatusArgs

    ApprovedSubscriptions List<string>
    These are the approved subscriptions on the private link
    ConsolePort double
    The port of Redpanda Console.
    DnsARecord string
    dnsadnsarecordrecord is the DNS A record the customer will create pointing at the their PE
    KafkaApiNodeBasePort double
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    KafkaApiSeedPort double
    Kafka API seed service port.
    PrivateEndpointConnections List<ClusterAzurePrivateLinkStatusPrivateEndpointConnection>
    List of private endpoint connections to Redpanda Azure Private Link Service.
    RedpandaProxyNodeBasePort double
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    RedpandaProxySeedPort double
    HTTP Proxy seed service port.
    SchemaRegistrySeedPort double
    Schema Registry seed service port.
    ServiceId string
    ID of Redpanda Azure PrivateLink Endpoint Service.
    ServiceName string
    Name of Redpanda Azure PrivateLink Endpoint Service.
    ApprovedSubscriptions []string
    These are the approved subscriptions on the private link
    ConsolePort float64
    The port of Redpanda Console.
    DnsARecord string
    dnsadnsarecordrecord is the DNS A record the customer will create pointing at the their PE
    KafkaApiNodeBasePort float64
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    KafkaApiSeedPort float64
    Kafka API seed service port.
    PrivateEndpointConnections []ClusterAzurePrivateLinkStatusPrivateEndpointConnection
    List of private endpoint connections to Redpanda Azure Private Link Service.
    RedpandaProxyNodeBasePort float64
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    RedpandaProxySeedPort float64
    HTTP Proxy seed service port.
    SchemaRegistrySeedPort float64
    Schema Registry seed service port.
    ServiceId string
    ID of Redpanda Azure PrivateLink Endpoint Service.
    ServiceName string
    Name of Redpanda Azure PrivateLink Endpoint Service.
    approved_subscriptions list(string)
    These are the approved subscriptions on the private link
    console_port number
    The port of Redpanda Console.
    dns_a_record string
    dnsadnsarecordrecord is the DNS A record the customer will create pointing at the their PE
    kafka_api_node_base_port number
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafka_api_seed_port number
    Kafka API seed service port.
    private_endpoint_connections list(object)
    List of private endpoint connections to Redpanda Azure Private Link Service.
    redpanda_proxy_node_base_port number
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpanda_proxy_seed_port number
    HTTP Proxy seed service port.
    schema_registry_seed_port number
    Schema Registry seed service port.
    service_id string
    ID of Redpanda Azure PrivateLink Endpoint Service.
    service_name string
    Name of Redpanda Azure PrivateLink Endpoint Service.
    approvedSubscriptions List<String>
    These are the approved subscriptions on the private link
    consolePort Double
    The port of Redpanda Console.
    dnsARecord String
    dnsadnsarecordrecord is the DNS A record the customer will create pointing at the their PE
    kafkaApiNodeBasePort Double
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafkaApiSeedPort Double
    Kafka API seed service port.
    privateEndpointConnections List<ClusterAzurePrivateLinkStatusPrivateEndpointConnection>
    List of private endpoint connections to Redpanda Azure Private Link Service.
    redpandaProxyNodeBasePort Double
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpandaProxySeedPort Double
    HTTP Proxy seed service port.
    schemaRegistrySeedPort Double
    Schema Registry seed service port.
    serviceId String
    ID of Redpanda Azure PrivateLink Endpoint Service.
    serviceName String
    Name of Redpanda Azure PrivateLink Endpoint Service.
    approvedSubscriptions string[]
    These are the approved subscriptions on the private link
    consolePort number
    The port of Redpanda Console.
    dnsARecord string
    dnsadnsarecordrecord is the DNS A record the customer will create pointing at the their PE
    kafkaApiNodeBasePort number
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafkaApiSeedPort number
    Kafka API seed service port.
    privateEndpointConnections ClusterAzurePrivateLinkStatusPrivateEndpointConnection[]
    List of private endpoint connections to Redpanda Azure Private Link Service.
    redpandaProxyNodeBasePort number
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpandaProxySeedPort number
    HTTP Proxy seed service port.
    schemaRegistrySeedPort number
    Schema Registry seed service port.
    serviceId string
    ID of Redpanda Azure PrivateLink Endpoint Service.
    serviceName string
    Name of Redpanda Azure PrivateLink Endpoint Service.
    approved_subscriptions Sequence[str]
    These are the approved subscriptions on the private link
    console_port float
    The port of Redpanda Console.
    dns_a_record str
    dnsadnsarecordrecord is the DNS A record the customer will create pointing at the their PE
    kafka_api_node_base_port float
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafka_api_seed_port float
    Kafka API seed service port.
    private_endpoint_connections Sequence[ClusterAzurePrivateLinkStatusPrivateEndpointConnection]
    List of private endpoint connections to Redpanda Azure Private Link Service.
    redpanda_proxy_node_base_port float
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpanda_proxy_seed_port float
    HTTP Proxy seed service port.
    schema_registry_seed_port float
    Schema Registry seed service port.
    service_id str
    ID of Redpanda Azure PrivateLink Endpoint Service.
    service_name str
    Name of Redpanda Azure PrivateLink Endpoint Service.
    approvedSubscriptions List<String>
    These are the approved subscriptions on the private link
    consolePort Number
    The port of Redpanda Console.
    dnsARecord String
    dnsadnsarecordrecord is the DNS A record the customer will create pointing at the their PE
    kafkaApiNodeBasePort Number
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafkaApiSeedPort Number
    Kafka API seed service port.
    privateEndpointConnections List<Property Map>
    List of private endpoint connections to Redpanda Azure Private Link Service.
    redpandaProxyNodeBasePort Number
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpandaProxySeedPort Number
    HTTP Proxy seed service port.
    schemaRegistrySeedPort Number
    Schema Registry seed service port.
    serviceId String
    ID of Redpanda Azure PrivateLink Endpoint Service.
    serviceName String
    Name of Redpanda Azure PrivateLink Endpoint Service.

    ClusterAzurePrivateLinkStatusPrivateEndpointConnection, ClusterAzurePrivateLinkStatusPrivateEndpointConnectionArgs

    ConnectionId string
    ConnectionID is the id of the connection between the private endpoint and the private link service
    ConnectionName string
    ConnectionName is the name of the connection between the private endpoint and the private link service
    PrivateEndpointId string
    Resource ID of Private Endpoint to Redpanda Azure PrivateLink Endpoint Service.
    PrivateEndpointName string
    The name of the PrivateEndpointConnection.
    Status string
    The status of private endpoint connected to Redpanda Azure PrivateLink Endpoint Service.
    ConnectionId string
    ConnectionID is the id of the connection between the private endpoint and the private link service
    ConnectionName string
    ConnectionName is the name of the connection between the private endpoint and the private link service
    PrivateEndpointId string
    Resource ID of Private Endpoint to Redpanda Azure PrivateLink Endpoint Service.
    PrivateEndpointName string
    The name of the PrivateEndpointConnection.
    Status string
    The status of private endpoint connected to Redpanda Azure PrivateLink Endpoint Service.
    connection_id string
    ConnectionID is the id of the connection between the private endpoint and the private link service
    connection_name string
    ConnectionName is the name of the connection between the private endpoint and the private link service
    private_endpoint_id string
    Resource ID of Private Endpoint to Redpanda Azure PrivateLink Endpoint Service.
    private_endpoint_name string
    The name of the PrivateEndpointConnection.
    status string
    The status of private endpoint connected to Redpanda Azure PrivateLink Endpoint Service.
    connectionId String
    ConnectionID is the id of the connection between the private endpoint and the private link service
    connectionName String
    ConnectionName is the name of the connection between the private endpoint and the private link service
    privateEndpointId String
    Resource ID of Private Endpoint to Redpanda Azure PrivateLink Endpoint Service.
    privateEndpointName String
    The name of the PrivateEndpointConnection.
    status String
    The status of private endpoint connected to Redpanda Azure PrivateLink Endpoint Service.
    connectionId string
    ConnectionID is the id of the connection between the private endpoint and the private link service
    connectionName string
    ConnectionName is the name of the connection between the private endpoint and the private link service
    privateEndpointId string
    Resource ID of Private Endpoint to Redpanda Azure PrivateLink Endpoint Service.
    privateEndpointName string
    The name of the PrivateEndpointConnection.
    status string
    The status of private endpoint connected to Redpanda Azure PrivateLink Endpoint Service.
    connection_id str
    ConnectionID is the id of the connection between the private endpoint and the private link service
    connection_name str
    ConnectionName is the name of the connection between the private endpoint and the private link service
    private_endpoint_id str
    Resource ID of Private Endpoint to Redpanda Azure PrivateLink Endpoint Service.
    private_endpoint_name str
    The name of the PrivateEndpointConnection.
    status str
    The status of private endpoint connected to Redpanda Azure PrivateLink Endpoint Service.
    connectionId String
    ConnectionID is the id of the connection between the private endpoint and the private link service
    connectionName String
    ConnectionName is the name of the connection between the private endpoint and the private link service
    privateEndpointId String
    Resource ID of Private Endpoint to Redpanda Azure PrivateLink Endpoint Service.
    privateEndpointName String
    The name of the PrivateEndpointConnection.
    status String
    The status of private endpoint connected to Redpanda Azure PrivateLink Endpoint Service.

    ClusterCloudStorage, ClusterCloudStorageArgs

    Aws ClusterCloudStorageAws
    AWS configuration
    Azure ClusterCloudStorageAzure
    Azure configuration
    Gcp ClusterCloudStorageGcp
    GCP configuration
    SkipDestroy bool
    If true, cloud storage is not deleted when the cluster is destroyed
    Aws ClusterCloudStorageAws
    AWS configuration
    Azure ClusterCloudStorageAzure
    Azure configuration
    Gcp ClusterCloudStorageGcp
    GCP configuration
    SkipDestroy bool
    If true, cloud storage is not deleted when the cluster is destroyed
    aws object
    AWS configuration
    azure object
    Azure configuration
    gcp object
    GCP configuration
    skip_destroy bool
    If true, cloud storage is not deleted when the cluster is destroyed
    aws ClusterCloudStorageAws
    AWS configuration
    azure ClusterCloudStorageAzure
    Azure configuration
    gcp ClusterCloudStorageGcp
    GCP configuration
    skipDestroy Boolean
    If true, cloud storage is not deleted when the cluster is destroyed
    aws ClusterCloudStorageAws
    AWS configuration
    azure ClusterCloudStorageAzure
    Azure configuration
    gcp ClusterCloudStorageGcp
    GCP configuration
    skipDestroy boolean
    If true, cloud storage is not deleted when the cluster is destroyed
    aws ClusterCloudStorageAws
    AWS configuration
    azure ClusterCloudStorageAzure
    Azure configuration
    gcp ClusterCloudStorageGcp
    GCP configuration
    skip_destroy bool
    If true, cloud storage is not deleted when the cluster is destroyed
    aws Property Map
    AWS configuration
    azure Property Map
    Azure configuration
    gcp Property Map
    GCP configuration
    skipDestroy Boolean
    If true, cloud storage is not deleted when the cluster is destroyed

    ClusterCloudStorageAws, ClusterCloudStorageAwsArgs

    Arn string
    ARN for the AWS
    Arn string
    ARN for the AWS
    arn string
    ARN for the AWS
    arn String
    ARN for the AWS
    arn string
    ARN for the AWS
    arn str
    ARN for the AWS
    arn String
    ARN for the AWS

    ClusterCloudStorageAzure, ClusterCloudStorageAzureArgs

    ContainerName string
    Name of the Azure storage container
    StorageAccountName string
    Name of the Azure storage account
    ContainerName string
    Name of the Azure storage container
    StorageAccountName string
    Name of the Azure storage account
    container_name string
    Name of the Azure storage container
    storage_account_name string
    Name of the Azure storage account
    containerName String
    Name of the Azure storage container
    storageAccountName String
    Name of the Azure storage account
    containerName string
    Name of the Azure storage container
    storageAccountName string
    Name of the Azure storage account
    container_name str
    Name of the Azure storage container
    storage_account_name str
    Name of the Azure storage account
    containerName String
    Name of the Azure storage container
    storageAccountName String
    Name of the Azure storage account

    ClusterCloudStorageGcp, ClusterCloudStorageGcpArgs

    Name string
    Name of the GCP storage bucket
    Name string
    Name of the GCP storage bucket
    name string
    Name of the GCP storage bucket
    name String
    Name of the GCP storage bucket
    name string
    Name of the GCP storage bucket
    name str
    Name of the GCP storage bucket
    name String
    Name of the GCP storage bucket

    ClusterClusterConfiguration, ClusterClusterConfigurationArgs

    CustomPropertiesJson string
    Custom cluster configuration properties in JSON format
    CustomPropertiesJson string
    Custom cluster configuration properties in JSON format
    custom_properties_json string
    Custom cluster configuration properties in JSON format
    customPropertiesJson String
    Custom cluster configuration properties in JSON format
    customPropertiesJson string
    Custom cluster configuration properties in JSON format
    custom_properties_json str
    Custom cluster configuration properties in JSON format
    customPropertiesJson String
    Custom cluster configuration properties in JSON format

    ClusterCustomerManagedResources, ClusterCustomerManagedResourcesArgs

    Aws ClusterCustomerManagedResourcesAws
    AWS resources created and managed by user, and required to deploy the Redpanda cluster.
    Gcp ClusterCustomerManagedResourcesGcp
    GCP resources created and managed by user, and required to deploy the Redpanda cluster. See Create a BYOVPC Cluster on GCP.
    Aws ClusterCustomerManagedResourcesAws
    AWS resources created and managed by user, and required to deploy the Redpanda cluster.
    Gcp ClusterCustomerManagedResourcesGcp
    GCP resources created and managed by user, and required to deploy the Redpanda cluster. See Create a BYOVPC Cluster on GCP.
    aws object
    AWS resources created and managed by user, and required to deploy the Redpanda cluster.
    gcp object
    GCP resources created and managed by user, and required to deploy the Redpanda cluster. See Create a BYOVPC Cluster on GCP.
    aws ClusterCustomerManagedResourcesAws
    AWS resources created and managed by user, and required to deploy the Redpanda cluster.
    gcp ClusterCustomerManagedResourcesGcp
    GCP resources created and managed by user, and required to deploy the Redpanda cluster. See Create a BYOVPC Cluster on GCP.
    aws ClusterCustomerManagedResourcesAws
    AWS resources created and managed by user, and required to deploy the Redpanda cluster.
    gcp ClusterCustomerManagedResourcesGcp
    GCP resources created and managed by user, and required to deploy the Redpanda cluster. See Create a BYOVPC Cluster on GCP.
    aws ClusterCustomerManagedResourcesAws
    AWS resources created and managed by user, and required to deploy the Redpanda cluster.
    gcp ClusterCustomerManagedResourcesGcp
    GCP resources created and managed by user, and required to deploy the Redpanda cluster. See Create a BYOVPC Cluster on GCP.
    aws Property Map
    AWS resources created and managed by user, and required to deploy the Redpanda cluster.
    gcp Property Map
    GCP resources created and managed by user, and required to deploy the Redpanda cluster. See Create a BYOVPC Cluster on GCP.

    ClusterCustomerManagedResourcesAws, ClusterCustomerManagedResourcesAwsArgs

    AgentInstanceProfile ClusterCustomerManagedResourcesAwsAgentInstanceProfile
    AWS instance profile.
    CloudStorageBucket ClusterCustomerManagedResourcesAwsCloudStorageBucket
    AWS storage bucket properties by ARN.
    ClusterSecurityGroup ClusterCustomerManagedResourcesAwsClusterSecurityGroup
    Security Group identifies AWS security group.
    ConnectorsNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsConnectorsNodeGroupInstanceProfile
    AWS instance profile.
    ConnectorsSecurityGroup ClusterCustomerManagedResourcesAwsConnectorsSecurityGroup
    Security Group identifies AWS security group.
    K8sClusterRole ClusterCustomerManagedResourcesAwsK8sClusterRole
    Role identifies AWS role.
    NodeSecurityGroup ClusterCustomerManagedResourcesAwsNodeSecurityGroup
    Security Group identifies AWS security group.
    PermissionsBoundaryPolicy ClusterCustomerManagedResourcesAwsPermissionsBoundaryPolicy
    Policy identifies an AWS policy.
    RedpandaAgentSecurityGroup ClusterCustomerManagedResourcesAwsRedpandaAgentSecurityGroup
    Security Group identifies AWS security group.
    RedpandaNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsRedpandaNodeGroupInstanceProfile
    AWS instance profile.
    RedpandaNodeGroupSecurityGroup ClusterCustomerManagedResourcesAwsRedpandaNodeGroupSecurityGroup
    Security Group identifies AWS security group.
    UtilityNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsUtilityNodeGroupInstanceProfile
    AWS instance profile.
    UtilitySecurityGroup ClusterCustomerManagedResourcesAwsUtilitySecurityGroup
    Security Group identifies AWS security group.
    RedpandaConnectNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsRedpandaConnectNodeGroupInstanceProfile
    AWS instance profile.
    RedpandaConnectSecurityGroup ClusterCustomerManagedResourcesAwsRedpandaConnectSecurityGroup
    Security Group identifies AWS security group.
    AgentInstanceProfile ClusterCustomerManagedResourcesAwsAgentInstanceProfile
    AWS instance profile.
    CloudStorageBucket ClusterCustomerManagedResourcesAwsCloudStorageBucket
    AWS storage bucket properties by ARN.
    ClusterSecurityGroup ClusterCustomerManagedResourcesAwsClusterSecurityGroup
    Security Group identifies AWS security group.
    ConnectorsNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsConnectorsNodeGroupInstanceProfile
    AWS instance profile.
    ConnectorsSecurityGroup ClusterCustomerManagedResourcesAwsConnectorsSecurityGroup
    Security Group identifies AWS security group.
    K8sClusterRole ClusterCustomerManagedResourcesAwsK8sClusterRole
    Role identifies AWS role.
    NodeSecurityGroup ClusterCustomerManagedResourcesAwsNodeSecurityGroup
    Security Group identifies AWS security group.
    PermissionsBoundaryPolicy ClusterCustomerManagedResourcesAwsPermissionsBoundaryPolicy
    Policy identifies an AWS policy.
    RedpandaAgentSecurityGroup ClusterCustomerManagedResourcesAwsRedpandaAgentSecurityGroup
    Security Group identifies AWS security group.
    RedpandaNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsRedpandaNodeGroupInstanceProfile
    AWS instance profile.
    RedpandaNodeGroupSecurityGroup ClusterCustomerManagedResourcesAwsRedpandaNodeGroupSecurityGroup
    Security Group identifies AWS security group.
    UtilityNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsUtilityNodeGroupInstanceProfile
    AWS instance profile.
    UtilitySecurityGroup ClusterCustomerManagedResourcesAwsUtilitySecurityGroup
    Security Group identifies AWS security group.
    RedpandaConnectNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsRedpandaConnectNodeGroupInstanceProfile
    AWS instance profile.
    RedpandaConnectSecurityGroup ClusterCustomerManagedResourcesAwsRedpandaConnectSecurityGroup
    Security Group identifies AWS security group.
    agent_instance_profile object
    AWS instance profile.
    cloud_storage_bucket object
    AWS storage bucket properties by ARN.
    cluster_security_group object
    Security Group identifies AWS security group.
    connectors_node_group_instance_profile object
    AWS instance profile.
    connectors_security_group object
    Security Group identifies AWS security group.
    k8s_cluster_role object
    Role identifies AWS role.
    node_security_group object
    Security Group identifies AWS security group.
    permissions_boundary_policy object
    Policy identifies an AWS policy.
    redpanda_agent_security_group object
    Security Group identifies AWS security group.
    redpanda_node_group_instance_profile object
    AWS instance profile.
    redpanda_node_group_security_group object
    Security Group identifies AWS security group.
    utility_node_group_instance_profile object
    AWS instance profile.
    utility_security_group object
    Security Group identifies AWS security group.
    redpanda_connect_node_group_instance_profile object
    AWS instance profile.
    redpanda_connect_security_group object
    Security Group identifies AWS security group.
    agentInstanceProfile ClusterCustomerManagedResourcesAwsAgentInstanceProfile
    AWS instance profile.
    cloudStorageBucket ClusterCustomerManagedResourcesAwsCloudStorageBucket
    AWS storage bucket properties by ARN.
    clusterSecurityGroup ClusterCustomerManagedResourcesAwsClusterSecurityGroup
    Security Group identifies AWS security group.
    connectorsNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsConnectorsNodeGroupInstanceProfile
    AWS instance profile.
    connectorsSecurityGroup ClusterCustomerManagedResourcesAwsConnectorsSecurityGroup
    Security Group identifies AWS security group.
    k8sClusterRole ClusterCustomerManagedResourcesAwsK8sClusterRole
    Role identifies AWS role.
    nodeSecurityGroup ClusterCustomerManagedResourcesAwsNodeSecurityGroup
    Security Group identifies AWS security group.
    permissionsBoundaryPolicy ClusterCustomerManagedResourcesAwsPermissionsBoundaryPolicy
    Policy identifies an AWS policy.
    redpandaAgentSecurityGroup ClusterCustomerManagedResourcesAwsRedpandaAgentSecurityGroup
    Security Group identifies AWS security group.
    redpandaNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsRedpandaNodeGroupInstanceProfile
    AWS instance profile.
    redpandaNodeGroupSecurityGroup ClusterCustomerManagedResourcesAwsRedpandaNodeGroupSecurityGroup
    Security Group identifies AWS security group.
    utilityNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsUtilityNodeGroupInstanceProfile
    AWS instance profile.
    utilitySecurityGroup ClusterCustomerManagedResourcesAwsUtilitySecurityGroup
    Security Group identifies AWS security group.
    redpandaConnectNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsRedpandaConnectNodeGroupInstanceProfile
    AWS instance profile.
    redpandaConnectSecurityGroup ClusterCustomerManagedResourcesAwsRedpandaConnectSecurityGroup
    Security Group identifies AWS security group.
    agentInstanceProfile ClusterCustomerManagedResourcesAwsAgentInstanceProfile
    AWS instance profile.
    cloudStorageBucket ClusterCustomerManagedResourcesAwsCloudStorageBucket
    AWS storage bucket properties by ARN.
    clusterSecurityGroup ClusterCustomerManagedResourcesAwsClusterSecurityGroup
    Security Group identifies AWS security group.
    connectorsNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsConnectorsNodeGroupInstanceProfile
    AWS instance profile.
    connectorsSecurityGroup ClusterCustomerManagedResourcesAwsConnectorsSecurityGroup
    Security Group identifies AWS security group.
    k8sClusterRole ClusterCustomerManagedResourcesAwsK8sClusterRole
    Role identifies AWS role.
    nodeSecurityGroup ClusterCustomerManagedResourcesAwsNodeSecurityGroup
    Security Group identifies AWS security group.
    permissionsBoundaryPolicy ClusterCustomerManagedResourcesAwsPermissionsBoundaryPolicy
    Policy identifies an AWS policy.
    redpandaAgentSecurityGroup ClusterCustomerManagedResourcesAwsRedpandaAgentSecurityGroup
    Security Group identifies AWS security group.
    redpandaNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsRedpandaNodeGroupInstanceProfile
    AWS instance profile.
    redpandaNodeGroupSecurityGroup ClusterCustomerManagedResourcesAwsRedpandaNodeGroupSecurityGroup
    Security Group identifies AWS security group.
    utilityNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsUtilityNodeGroupInstanceProfile
    AWS instance profile.
    utilitySecurityGroup ClusterCustomerManagedResourcesAwsUtilitySecurityGroup
    Security Group identifies AWS security group.
    redpandaConnectNodeGroupInstanceProfile ClusterCustomerManagedResourcesAwsRedpandaConnectNodeGroupInstanceProfile
    AWS instance profile.
    redpandaConnectSecurityGroup ClusterCustomerManagedResourcesAwsRedpandaConnectSecurityGroup
    Security Group identifies AWS security group.
    agent_instance_profile ClusterCustomerManagedResourcesAwsAgentInstanceProfile
    AWS instance profile.
    cloud_storage_bucket ClusterCustomerManagedResourcesAwsCloudStorageBucket
    AWS storage bucket properties by ARN.
    cluster_security_group ClusterCustomerManagedResourcesAwsClusterSecurityGroup
    Security Group identifies AWS security group.
    connectors_node_group_instance_profile ClusterCustomerManagedResourcesAwsConnectorsNodeGroupInstanceProfile
    AWS instance profile.
    connectors_security_group ClusterCustomerManagedResourcesAwsConnectorsSecurityGroup
    Security Group identifies AWS security group.
    k8s_cluster_role ClusterCustomerManagedResourcesAwsK8sClusterRole
    Role identifies AWS role.
    node_security_group ClusterCustomerManagedResourcesAwsNodeSecurityGroup
    Security Group identifies AWS security group.
    permissions_boundary_policy ClusterCustomerManagedResourcesAwsPermissionsBoundaryPolicy
    Policy identifies an AWS policy.
    redpanda_agent_security_group ClusterCustomerManagedResourcesAwsRedpandaAgentSecurityGroup
    Security Group identifies AWS security group.
    redpanda_node_group_instance_profile ClusterCustomerManagedResourcesAwsRedpandaNodeGroupInstanceProfile
    AWS instance profile.
    redpanda_node_group_security_group ClusterCustomerManagedResourcesAwsRedpandaNodeGroupSecurityGroup
    Security Group identifies AWS security group.
    utility_node_group_instance_profile ClusterCustomerManagedResourcesAwsUtilityNodeGroupInstanceProfile
    AWS instance profile.
    utility_security_group ClusterCustomerManagedResourcesAwsUtilitySecurityGroup
    Security Group identifies AWS security group.
    redpanda_connect_node_group_instance_profile ClusterCustomerManagedResourcesAwsRedpandaConnectNodeGroupInstanceProfile
    AWS instance profile.
    redpanda_connect_security_group ClusterCustomerManagedResourcesAwsRedpandaConnectSecurityGroup
    Security Group identifies AWS security group.
    agentInstanceProfile Property Map
    AWS instance profile.
    cloudStorageBucket Property Map
    AWS storage bucket properties by ARN.
    clusterSecurityGroup Property Map
    Security Group identifies AWS security group.
    connectorsNodeGroupInstanceProfile Property Map
    AWS instance profile.
    connectorsSecurityGroup Property Map
    Security Group identifies AWS security group.
    k8sClusterRole Property Map
    Role identifies AWS role.
    nodeSecurityGroup Property Map
    Security Group identifies AWS security group.
    permissionsBoundaryPolicy Property Map
    Policy identifies an AWS policy.
    redpandaAgentSecurityGroup Property Map
    Security Group identifies AWS security group.
    redpandaNodeGroupInstanceProfile Property Map
    AWS instance profile.
    redpandaNodeGroupSecurityGroup Property Map
    Security Group identifies AWS security group.
    utilityNodeGroupInstanceProfile Property Map
    AWS instance profile.
    utilitySecurityGroup Property Map
    Security Group identifies AWS security group.
    redpandaConnectNodeGroupInstanceProfile Property Map
    AWS instance profile.
    redpandaConnectSecurityGroup Property Map
    Security Group identifies AWS security group.

    ClusterCustomerManagedResourcesAwsAgentInstanceProfile, ClusterCustomerManagedResourcesAwsAgentInstanceProfileArgs

    Arn string
    AWS instance profile ARN.
    Arn string
    AWS instance profile ARN.
    arn string
    AWS instance profile ARN.
    arn String
    AWS instance profile ARN.
    arn string
    AWS instance profile ARN.
    arn str
    AWS instance profile ARN.
    arn String
    AWS instance profile ARN.

    ClusterCustomerManagedResourcesAwsCloudStorageBucket, ClusterCustomerManagedResourcesAwsCloudStorageBucketArgs

    Arn string
    AWS storage bucket identifier.
    Arn string
    AWS storage bucket identifier.
    arn string
    AWS storage bucket identifier.
    arn String
    AWS storage bucket identifier.
    arn string
    AWS storage bucket identifier.
    arn str
    AWS storage bucket identifier.
    arn String
    AWS storage bucket identifier.

    ClusterCustomerManagedResourcesAwsClusterSecurityGroup, ClusterCustomerManagedResourcesAwsClusterSecurityGroupArgs

    Arn string
    AWS security group ARN.
    Arn string
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn String
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn str
    AWS security group ARN.
    arn String
    AWS security group ARN.

    ClusterCustomerManagedResourcesAwsConnectorsNodeGroupInstanceProfile, ClusterCustomerManagedResourcesAwsConnectorsNodeGroupInstanceProfileArgs

    Arn string
    AWS instance profile ARN.
    Arn string
    AWS instance profile ARN.
    arn string
    AWS instance profile ARN.
    arn String
    AWS instance profile ARN.
    arn string
    AWS instance profile ARN.
    arn str
    AWS instance profile ARN.
    arn String
    AWS instance profile ARN.

    ClusterCustomerManagedResourcesAwsConnectorsSecurityGroup, ClusterCustomerManagedResourcesAwsConnectorsSecurityGroupArgs

    Arn string
    AWS security group ARN.
    Arn string
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn String
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn str
    AWS security group ARN.
    arn String
    AWS security group ARN.

    ClusterCustomerManagedResourcesAwsK8sClusterRole, ClusterCustomerManagedResourcesAwsK8sClusterRoleArgs

    Arn string
    AWS role ARN.
    Arn string
    AWS role ARN.
    arn string
    AWS role ARN.
    arn String
    AWS role ARN.
    arn string
    AWS role ARN.
    arn str
    AWS role ARN.
    arn String
    AWS role ARN.

    ClusterCustomerManagedResourcesAwsNodeSecurityGroup, ClusterCustomerManagedResourcesAwsNodeSecurityGroupArgs

    Arn string
    AWS security group ARN.
    Arn string
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn String
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn str
    AWS security group ARN.
    arn String
    AWS security group ARN.

    ClusterCustomerManagedResourcesAwsPermissionsBoundaryPolicy, ClusterCustomerManagedResourcesAwsPermissionsBoundaryPolicyArgs

    Arn string
    AWS policy ARN.
    Arn string
    AWS policy ARN.
    arn string
    AWS policy ARN.
    arn String
    AWS policy ARN.
    arn string
    AWS policy ARN.
    arn str
    AWS policy ARN.
    arn String
    AWS policy ARN.

    ClusterCustomerManagedResourcesAwsRedpandaAgentSecurityGroup, ClusterCustomerManagedResourcesAwsRedpandaAgentSecurityGroupArgs

    Arn string
    AWS security group ARN.
    Arn string
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn String
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn str
    AWS security group ARN.
    arn String
    AWS security group ARN.

    ClusterCustomerManagedResourcesAwsRedpandaConnectNodeGroupInstanceProfile, ClusterCustomerManagedResourcesAwsRedpandaConnectNodeGroupInstanceProfileArgs

    Arn string
    AWS instance profile ARN.
    Arn string
    AWS instance profile ARN.
    arn string
    AWS instance profile ARN.
    arn String
    AWS instance profile ARN.
    arn string
    AWS instance profile ARN.
    arn str
    AWS instance profile ARN.
    arn String
    AWS instance profile ARN.

    ClusterCustomerManagedResourcesAwsRedpandaConnectSecurityGroup, ClusterCustomerManagedResourcesAwsRedpandaConnectSecurityGroupArgs

    Arn string
    AWS security group ARN.
    Arn string
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn String
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn str
    AWS security group ARN.
    arn String
    AWS security group ARN.

    ClusterCustomerManagedResourcesAwsRedpandaNodeGroupInstanceProfile, ClusterCustomerManagedResourcesAwsRedpandaNodeGroupInstanceProfileArgs

    Arn string
    AWS instance profile ARN.
    Arn string
    AWS instance profile ARN.
    arn string
    AWS instance profile ARN.
    arn String
    AWS instance profile ARN.
    arn string
    AWS instance profile ARN.
    arn str
    AWS instance profile ARN.
    arn String
    AWS instance profile ARN.

    ClusterCustomerManagedResourcesAwsRedpandaNodeGroupSecurityGroup, ClusterCustomerManagedResourcesAwsRedpandaNodeGroupSecurityGroupArgs

    Arn string
    AWS security group ARN.
    Arn string
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn String
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn str
    AWS security group ARN.
    arn String
    AWS security group ARN.

    ClusterCustomerManagedResourcesAwsUtilityNodeGroupInstanceProfile, ClusterCustomerManagedResourcesAwsUtilityNodeGroupInstanceProfileArgs

    Arn string
    AWS instance profile ARN.
    Arn string
    AWS instance profile ARN.
    arn string
    AWS instance profile ARN.
    arn String
    AWS instance profile ARN.
    arn string
    AWS instance profile ARN.
    arn str
    AWS instance profile ARN.
    arn String
    AWS instance profile ARN.

    ClusterCustomerManagedResourcesAwsUtilitySecurityGroup, ClusterCustomerManagedResourcesAwsUtilitySecurityGroupArgs

    Arn string
    AWS security group ARN.
    Arn string
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn String
    AWS security group ARN.
    arn string
    AWS security group ARN.
    arn str
    AWS security group ARN.
    arn String
    AWS security group ARN.

    ClusterCustomerManagedResourcesGcp, ClusterCustomerManagedResourcesGcpArgs

    AgentServiceAccount ClusterCustomerManagedResourcesGcpAgentServiceAccount
    GCP service account.
    ConnectorServiceAccount ClusterCustomerManagedResourcesGcpConnectorServiceAccount
    GCP service account.
    ConsoleServiceAccount ClusterCustomerManagedResourcesGcpConsoleServiceAccount
    GCP service account.
    GkeServiceAccount ClusterCustomerManagedResourcesGcpGkeServiceAccount
    GCP service account.
    RedpandaClusterServiceAccount ClusterCustomerManagedResourcesGcpRedpandaClusterServiceAccount
    GCP service account.
    Subnet ClusterCustomerManagedResourcesGcpSubnet
    GCP subnet properties. See the official GCP API reference.
    TieredStorageBucket ClusterCustomerManagedResourcesGcpTieredStorageBucket
    GCP storage bucket properties.
    PscNatSubnetName string
    NAT subnet name if GCP Private Service Connect (a.k.a Private Link) is enabled. If it is used for PSC v1, use pscv2natsubnetname to set NAT subnet name for PSC v2.
    AgentServiceAccount ClusterCustomerManagedResourcesGcpAgentServiceAccount
    GCP service account.
    ConnectorServiceAccount ClusterCustomerManagedResourcesGcpConnectorServiceAccount
    GCP service account.
    ConsoleServiceAccount ClusterCustomerManagedResourcesGcpConsoleServiceAccount
    GCP service account.
    GkeServiceAccount ClusterCustomerManagedResourcesGcpGkeServiceAccount
    GCP service account.
    RedpandaClusterServiceAccount ClusterCustomerManagedResourcesGcpRedpandaClusterServiceAccount
    GCP service account.
    Subnet ClusterCustomerManagedResourcesGcpSubnet
    GCP subnet properties. See the official GCP API reference.
    TieredStorageBucket ClusterCustomerManagedResourcesGcpTieredStorageBucket
    GCP storage bucket properties.
    PscNatSubnetName string
    NAT subnet name if GCP Private Service Connect (a.k.a Private Link) is enabled. If it is used for PSC v1, use pscv2natsubnetname to set NAT subnet name for PSC v2.
    agent_service_account object
    GCP service account.
    connector_service_account object
    GCP service account.
    console_service_account object
    GCP service account.
    gke_service_account object
    GCP service account.
    redpanda_cluster_service_account object
    GCP service account.
    subnet object
    GCP subnet properties. See the official GCP API reference.
    tiered_storage_bucket object
    GCP storage bucket properties.
    psc_nat_subnet_name string
    NAT subnet name if GCP Private Service Connect (a.k.a Private Link) is enabled. If it is used for PSC v1, use pscv2natsubnetname to set NAT subnet name for PSC v2.
    agentServiceAccount ClusterCustomerManagedResourcesGcpAgentServiceAccount
    GCP service account.
    connectorServiceAccount ClusterCustomerManagedResourcesGcpConnectorServiceAccount
    GCP service account.
    consoleServiceAccount ClusterCustomerManagedResourcesGcpConsoleServiceAccount
    GCP service account.
    gkeServiceAccount ClusterCustomerManagedResourcesGcpGkeServiceAccount
    GCP service account.
    redpandaClusterServiceAccount ClusterCustomerManagedResourcesGcpRedpandaClusterServiceAccount
    GCP service account.
    subnet ClusterCustomerManagedResourcesGcpSubnet
    GCP subnet properties. See the official GCP API reference.
    tieredStorageBucket ClusterCustomerManagedResourcesGcpTieredStorageBucket
    GCP storage bucket properties.
    pscNatSubnetName String
    NAT subnet name if GCP Private Service Connect (a.k.a Private Link) is enabled. If it is used for PSC v1, use pscv2natsubnetname to set NAT subnet name for PSC v2.
    agentServiceAccount ClusterCustomerManagedResourcesGcpAgentServiceAccount
    GCP service account.
    connectorServiceAccount ClusterCustomerManagedResourcesGcpConnectorServiceAccount
    GCP service account.
    consoleServiceAccount ClusterCustomerManagedResourcesGcpConsoleServiceAccount
    GCP service account.
    gkeServiceAccount ClusterCustomerManagedResourcesGcpGkeServiceAccount
    GCP service account.
    redpandaClusterServiceAccount ClusterCustomerManagedResourcesGcpRedpandaClusterServiceAccount
    GCP service account.
    subnet ClusterCustomerManagedResourcesGcpSubnet
    GCP subnet properties. See the official GCP API reference.
    tieredStorageBucket ClusterCustomerManagedResourcesGcpTieredStorageBucket
    GCP storage bucket properties.
    pscNatSubnetName string
    NAT subnet name if GCP Private Service Connect (a.k.a Private Link) is enabled. If it is used for PSC v1, use pscv2natsubnetname to set NAT subnet name for PSC v2.
    agent_service_account ClusterCustomerManagedResourcesGcpAgentServiceAccount
    GCP service account.
    connector_service_account ClusterCustomerManagedResourcesGcpConnectorServiceAccount
    GCP service account.
    console_service_account ClusterCustomerManagedResourcesGcpConsoleServiceAccount
    GCP service account.
    gke_service_account ClusterCustomerManagedResourcesGcpGkeServiceAccount
    GCP service account.
    redpanda_cluster_service_account ClusterCustomerManagedResourcesGcpRedpandaClusterServiceAccount
    GCP service account.
    subnet ClusterCustomerManagedResourcesGcpSubnet
    GCP subnet properties. See the official GCP API reference.
    tiered_storage_bucket ClusterCustomerManagedResourcesGcpTieredStorageBucket
    GCP storage bucket properties.
    psc_nat_subnet_name str
    NAT subnet name if GCP Private Service Connect (a.k.a Private Link) is enabled. If it is used for PSC v1, use pscv2natsubnetname to set NAT subnet name for PSC v2.
    agentServiceAccount Property Map
    GCP service account.
    connectorServiceAccount Property Map
    GCP service account.
    consoleServiceAccount Property Map
    GCP service account.
    gkeServiceAccount Property Map
    GCP service account.
    redpandaClusterServiceAccount Property Map
    GCP service account.
    subnet Property Map
    GCP subnet properties. See the official GCP API reference.
    tieredStorageBucket Property Map
    GCP storage bucket properties.
    pscNatSubnetName String
    NAT subnet name if GCP Private Service Connect (a.k.a Private Link) is enabled. If it is used for PSC v1, use pscv2natsubnetname to set NAT subnet name for PSC v2.

    ClusterCustomerManagedResourcesGcpAgentServiceAccount, ClusterCustomerManagedResourcesGcpAgentServiceAccountArgs

    Email string
    GCP service account email. Must be a valid email address.
    Email string
    GCP service account email. Must be a valid email address.
    email string
    GCP service account email. Must be a valid email address.
    email String
    GCP service account email. Must be a valid email address.
    email string
    GCP service account email. Must be a valid email address.
    email str
    GCP service account email. Must be a valid email address.
    email String
    GCP service account email. Must be a valid email address.

    ClusterCustomerManagedResourcesGcpConnectorServiceAccount, ClusterCustomerManagedResourcesGcpConnectorServiceAccountArgs

    Email string
    GCP service account email. Must be a valid email address.
    Email string
    GCP service account email. Must be a valid email address.
    email string
    GCP service account email. Must be a valid email address.
    email String
    GCP service account email. Must be a valid email address.
    email string
    GCP service account email. Must be a valid email address.
    email str
    GCP service account email. Must be a valid email address.
    email String
    GCP service account email. Must be a valid email address.

    ClusterCustomerManagedResourcesGcpConsoleServiceAccount, ClusterCustomerManagedResourcesGcpConsoleServiceAccountArgs

    Email string
    GCP service account email. Must be a valid email address.
    Email string
    GCP service account email. Must be a valid email address.
    email string
    GCP service account email. Must be a valid email address.
    email String
    GCP service account email. Must be a valid email address.
    email string
    GCP service account email. Must be a valid email address.
    email str
    GCP service account email. Must be a valid email address.
    email String
    GCP service account email. Must be a valid email address.

    ClusterCustomerManagedResourcesGcpGkeServiceAccount, ClusterCustomerManagedResourcesGcpGkeServiceAccountArgs

    Email string
    GCP service account email. Must be a valid email address.
    Email string
    GCP service account email. Must be a valid email address.
    email string
    GCP service account email. Must be a valid email address.
    email String
    GCP service account email. Must be a valid email address.
    email string
    GCP service account email. Must be a valid email address.
    email str
    GCP service account email. Must be a valid email address.
    email String
    GCP service account email. Must be a valid email address.

    ClusterCustomerManagedResourcesGcpRedpandaClusterServiceAccount, ClusterCustomerManagedResourcesGcpRedpandaClusterServiceAccountArgs

    Email string
    GCP service account email. Must be a valid email address.
    Email string
    GCP service account email. Must be a valid email address.
    email string
    GCP service account email. Must be a valid email address.
    email String
    GCP service account email. Must be a valid email address.
    email string
    GCP service account email. Must be a valid email address.
    email str
    GCP service account email. Must be a valid email address.
    email String
    GCP service account email. Must be a valid email address.

    ClusterCustomerManagedResourcesGcpSubnet, ClusterCustomerManagedResourcesGcpSubnetArgs

    K8sMasterIpv4Range string
    Kubernetes Master IPv4 range, e.g. 10.0.0.0/24.
    Name string
    Subnet name. Length must be at most 62. Must match pattern ^a-z?$.
    SecondaryIpv4RangePods ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangePods
    Secondary IPv4 range.
    SecondaryIpv4RangeServices ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangeServices
    Secondary IPv4 range.
    K8sMasterIpv4Range string
    Kubernetes Master IPv4 range, e.g. 10.0.0.0/24.
    Name string
    Subnet name. Length must be at most 62. Must match pattern ^a-z?$.
    SecondaryIpv4RangePods ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangePods
    Secondary IPv4 range.
    SecondaryIpv4RangeServices ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangeServices
    Secondary IPv4 range.
    k8s_master_ipv4_range string
    Kubernetes Master IPv4 range, e.g. 10.0.0.0/24.
    name string
    Subnet name. Length must be at most 62. Must match pattern ^a-z?$.
    secondary_ipv4_range_pods object
    Secondary IPv4 range.
    secondary_ipv4_range_services object
    Secondary IPv4 range.
    k8sMasterIpv4Range String
    Kubernetes Master IPv4 range, e.g. 10.0.0.0/24.
    name String
    Subnet name. Length must be at most 62. Must match pattern ^a-z?$.
    secondaryIpv4RangePods ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangePods
    Secondary IPv4 range.
    secondaryIpv4RangeServices ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangeServices
    Secondary IPv4 range.
    k8sMasterIpv4Range string
    Kubernetes Master IPv4 range, e.g. 10.0.0.0/24.
    name string
    Subnet name. Length must be at most 62. Must match pattern ^a-z?$.
    secondaryIpv4RangePods ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangePods
    Secondary IPv4 range.
    secondaryIpv4RangeServices ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangeServices
    Secondary IPv4 range.
    k8s_master_ipv4_range str
    Kubernetes Master IPv4 range, e.g. 10.0.0.0/24.
    name str
    Subnet name. Length must be at most 62. Must match pattern ^a-z?$.
    secondary_ipv4_range_pods ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangePods
    Secondary IPv4 range.
    secondary_ipv4_range_services ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangeServices
    Secondary IPv4 range.
    k8sMasterIpv4Range String
    Kubernetes Master IPv4 range, e.g. 10.0.0.0/24.
    name String
    Subnet name. Length must be at most 62. Must match pattern ^a-z?$.
    secondaryIpv4RangePods Property Map
    Secondary IPv4 range.
    secondaryIpv4RangeServices Property Map
    Secondary IPv4 range.

    ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangePods, ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangePodsArgs

    Name string
    Name of the secondary IPv4 Range Pods. Length must be at most 62. Must match pattern ^a-z?$.
    Name string
    Name of the secondary IPv4 Range Pods. Length must be at most 62. Must match pattern ^a-z?$.
    name string
    Name of the secondary IPv4 Range Pods. Length must be at most 62. Must match pattern ^a-z?$.
    name String
    Name of the secondary IPv4 Range Pods. Length must be at most 62. Must match pattern ^a-z?$.
    name string
    Name of the secondary IPv4 Range Pods. Length must be at most 62. Must match pattern ^a-z?$.
    name str
    Name of the secondary IPv4 Range Pods. Length must be at most 62. Must match pattern ^a-z?$.
    name String
    Name of the secondary IPv4 Range Pods. Length must be at most 62. Must match pattern ^a-z?$.

    ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangeServices, ClusterCustomerManagedResourcesGcpSubnetSecondaryIpv4RangeServicesArgs

    Name string
    Name of the secondary IPv4 Range Services. Length must be at most 62. Must match pattern ^a-z?$.
    Name string
    Name of the secondary IPv4 Range Services. Length must be at most 62. Must match pattern ^a-z?$.
    name string
    Name of the secondary IPv4 Range Services. Length must be at most 62. Must match pattern ^a-z?$.
    name String
    Name of the secondary IPv4 Range Services. Length must be at most 62. Must match pattern ^a-z?$.
    name string
    Name of the secondary IPv4 Range Services. Length must be at most 62. Must match pattern ^a-z?$.
    name str
    Name of the secondary IPv4 Range Services. Length must be at most 62. Must match pattern ^a-z?$.
    name String
    Name of the secondary IPv4 Range Services. Length must be at most 62. Must match pattern ^a-z?$.

    ClusterCustomerManagedResourcesGcpTieredStorageBucket, ClusterCustomerManagedResourcesGcpTieredStorageBucketArgs

    Name string
    Name of GCP storage bucket. See the official GCP documentation for naming restrictions. Length must be between 3 and 63. Must match pattern ^a-z?$.
    Name string
    Name of GCP storage bucket. See the official GCP documentation for naming restrictions. Length must be between 3 and 63. Must match pattern ^a-z?$.
    name string
    Name of GCP storage bucket. See the official GCP documentation for naming restrictions. Length must be between 3 and 63. Must match pattern ^a-z?$.
    name String
    Name of GCP storage bucket. See the official GCP documentation for naming restrictions. Length must be between 3 and 63. Must match pattern ^a-z?$.
    name string
    Name of GCP storage bucket. See the official GCP documentation for naming restrictions. Length must be between 3 and 63. Must match pattern ^a-z?$.
    name str
    Name of GCP storage bucket. See the official GCP documentation for naming restrictions. Length must be between 3 and 63. Must match pattern ^a-z?$.
    name String
    Name of GCP storage bucket. See the official GCP documentation for naming restrictions. Length must be between 3 and 63. Must match pattern ^a-z?$.

    ClusterGcpPrivateServiceConnect, ClusterGcpPrivateServiceConnectArgs

    ConsumerAcceptLists List<ClusterGcpPrivateServiceConnectConsumerAcceptList>
    List of consumers that are allowed to connect to Redpanda GCP PSC (Private Service Connect) service attachment.
    Enabled bool
    Whether Redpanda GCP Private Service Connect is enabled.
    GlobalAccessEnabled bool
    Whether global access is enabled.
    Status ClusterGcpPrivateServiceConnectStatus
    Status configuration
    ConsumerAcceptLists []ClusterGcpPrivateServiceConnectConsumerAcceptList
    List of consumers that are allowed to connect to Redpanda GCP PSC (Private Service Connect) service attachment.
    Enabled bool
    Whether Redpanda GCP Private Service Connect is enabled.
    GlobalAccessEnabled bool
    Whether global access is enabled.
    Status ClusterGcpPrivateServiceConnectStatus
    Status configuration
    consumer_accept_lists list(object)
    List of consumers that are allowed to connect to Redpanda GCP PSC (Private Service Connect) service attachment.
    enabled bool
    Whether Redpanda GCP Private Service Connect is enabled.
    global_access_enabled bool
    Whether global access is enabled.
    status object
    Status configuration
    consumerAcceptLists List<ClusterGcpPrivateServiceConnectConsumerAcceptList>
    List of consumers that are allowed to connect to Redpanda GCP PSC (Private Service Connect) service attachment.
    enabled Boolean
    Whether Redpanda GCP Private Service Connect is enabled.
    globalAccessEnabled Boolean
    Whether global access is enabled.
    status ClusterGcpPrivateServiceConnectStatus
    Status configuration
    consumerAcceptLists ClusterGcpPrivateServiceConnectConsumerAcceptList[]
    List of consumers that are allowed to connect to Redpanda GCP PSC (Private Service Connect) service attachment.
    enabled boolean
    Whether Redpanda GCP Private Service Connect is enabled.
    globalAccessEnabled boolean
    Whether global access is enabled.
    status ClusterGcpPrivateServiceConnectStatus
    Status configuration
    consumer_accept_lists Sequence[ClusterGcpPrivateServiceConnectConsumerAcceptList]
    List of consumers that are allowed to connect to Redpanda GCP PSC (Private Service Connect) service attachment.
    enabled bool
    Whether Redpanda GCP Private Service Connect is enabled.
    global_access_enabled bool
    Whether global access is enabled.
    status ClusterGcpPrivateServiceConnectStatus
    Status configuration
    consumerAcceptLists List<Property Map>
    List of consumers that are allowed to connect to Redpanda GCP PSC (Private Service Connect) service attachment.
    enabled Boolean
    Whether Redpanda GCP Private Service Connect is enabled.
    globalAccessEnabled Boolean
    Whether global access is enabled.
    status Property Map
    Status configuration

    ClusterGcpPrivateServiceConnectConsumerAcceptList, ClusterGcpPrivateServiceConnectConsumerAcceptListArgs

    Source string
    GCP project ID from which connections are accepted
    Source string
    GCP project ID from which connections are accepted
    source string
    GCP project ID from which connections are accepted
    source String
    GCP project ID from which connections are accepted
    source string
    GCP project ID from which connections are accepted
    source str
    GCP project ID from which connections are accepted
    source String
    GCP project ID from which connections are accepted

    ClusterGcpPrivateServiceConnectStatus, ClusterGcpPrivateServiceConnectStatusArgs

    ConnectedEndpoints List<ClusterGcpPrivateServiceConnectStatusConnectedEndpoint>
    List of VPC endpoints with established connections to GCP Private Service Connect.
    DnsARecords List<string>
    Customer-created DNS A records that point at the PSC endpoint on the consumer side.
    KafkaApiNodeBasePort double
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    KafkaApiSeedPort double
    Kafka API seed service port.
    RedpandaProxyNodeBasePort double
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    RedpandaProxySeedPort double
    HTTP Proxy seed service port.
    SchemaRegistrySeedPort double
    Schema Registry seed service port.
    SeedHostname string
    Hostname for clients to initiate connections to the APIs exposed through Private Service Connect.
    ServiceAttachment string
    Service attachment used by consumers to create endpoint connections to Redpanda GCP Private Service Connect service.
    ConnectedEndpoints []ClusterGcpPrivateServiceConnectStatusConnectedEndpoint
    List of VPC endpoints with established connections to GCP Private Service Connect.
    DnsARecords []string
    Customer-created DNS A records that point at the PSC endpoint on the consumer side.
    KafkaApiNodeBasePort float64
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    KafkaApiSeedPort float64
    Kafka API seed service port.
    RedpandaProxyNodeBasePort float64
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    RedpandaProxySeedPort float64
    HTTP Proxy seed service port.
    SchemaRegistrySeedPort float64
    Schema Registry seed service port.
    SeedHostname string
    Hostname for clients to initiate connections to the APIs exposed through Private Service Connect.
    ServiceAttachment string
    Service attachment used by consumers to create endpoint connections to Redpanda GCP Private Service Connect service.
    connected_endpoints list(object)
    List of VPC endpoints with established connections to GCP Private Service Connect.
    dns_a_records list(string)
    Customer-created DNS A records that point at the PSC endpoint on the consumer side.
    kafka_api_node_base_port number
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafka_api_seed_port number
    Kafka API seed service port.
    redpanda_proxy_node_base_port number
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpanda_proxy_seed_port number
    HTTP Proxy seed service port.
    schema_registry_seed_port number
    Schema Registry seed service port.
    seed_hostname string
    Hostname for clients to initiate connections to the APIs exposed through Private Service Connect.
    service_attachment string
    Service attachment used by consumers to create endpoint connections to Redpanda GCP Private Service Connect service.
    connectedEndpoints List<ClusterGcpPrivateServiceConnectStatusConnectedEndpoint>
    List of VPC endpoints with established connections to GCP Private Service Connect.
    dnsARecords List<String>
    Customer-created DNS A records that point at the PSC endpoint on the consumer side.
    kafkaApiNodeBasePort Double
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafkaApiSeedPort Double
    Kafka API seed service port.
    redpandaProxyNodeBasePort Double
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpandaProxySeedPort Double
    HTTP Proxy seed service port.
    schemaRegistrySeedPort Double
    Schema Registry seed service port.
    seedHostname String
    Hostname for clients to initiate connections to the APIs exposed through Private Service Connect.
    serviceAttachment String
    Service attachment used by consumers to create endpoint connections to Redpanda GCP Private Service Connect service.
    connectedEndpoints ClusterGcpPrivateServiceConnectStatusConnectedEndpoint[]
    List of VPC endpoints with established connections to GCP Private Service Connect.
    dnsARecords string[]
    Customer-created DNS A records that point at the PSC endpoint on the consumer side.
    kafkaApiNodeBasePort number
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafkaApiSeedPort number
    Kafka API seed service port.
    redpandaProxyNodeBasePort number
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpandaProxySeedPort number
    HTTP Proxy seed service port.
    schemaRegistrySeedPort number
    Schema Registry seed service port.
    seedHostname string
    Hostname for clients to initiate connections to the APIs exposed through Private Service Connect.
    serviceAttachment string
    Service attachment used by consumers to create endpoint connections to Redpanda GCP Private Service Connect service.
    connected_endpoints Sequence[ClusterGcpPrivateServiceConnectStatusConnectedEndpoint]
    List of VPC endpoints with established connections to GCP Private Service Connect.
    dns_a_records Sequence[str]
    Customer-created DNS A records that point at the PSC endpoint on the consumer side.
    kafka_api_node_base_port float
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafka_api_seed_port float
    Kafka API seed service port.
    redpanda_proxy_node_base_port float
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpanda_proxy_seed_port float
    HTTP Proxy seed service port.
    schema_registry_seed_port float
    Schema Registry seed service port.
    seed_hostname str
    Hostname for clients to initiate connections to the APIs exposed through Private Service Connect.
    service_attachment str
    Service attachment used by consumers to create endpoint connections to Redpanda GCP Private Service Connect service.
    connectedEndpoints List<Property Map>
    List of VPC endpoints with established connections to GCP Private Service Connect.
    dnsARecords List<String>
    Customer-created DNS A records that point at the PSC endpoint on the consumer side.
    kafkaApiNodeBasePort Number
    Kafka API node service base port. The port for node i (0 .. nodecount-1) is kafkaapinodebase_port + i.
    kafkaApiSeedPort Number
    Kafka API seed service port.
    redpandaProxyNodeBasePort Number
    HTTP Proxy node service base port. The port for node i (0 .. nodecount-1) is redpandaproxynodebase_port + i.
    redpandaProxySeedPort Number
    HTTP Proxy seed service port.
    schemaRegistrySeedPort Number
    Schema Registry seed service port.
    seedHostname String
    Hostname for clients to initiate connections to the APIs exposed through Private Service Connect.
    serviceAttachment String
    Service attachment used by consumers to create endpoint connections to Redpanda GCP Private Service Connect service.

    ClusterGcpPrivateServiceConnectStatusConnectedEndpoint, ClusterGcpPrivateServiceConnectStatusConnectedEndpointArgs

    ConnectionId string
    Connection ID of the endpoint.
    ConsumerNetwork string
    Network of the consumer connecting to Redpanda GCP Private Service Connect service. See the official GCP documentation for Private Service Connect.
    Endpoint string
    Connection endpoint. See the official GCP API reference for Private Service Connect.
    Status string
    ConnectionId string
    Connection ID of the endpoint.
    ConsumerNetwork string
    Network of the consumer connecting to Redpanda GCP Private Service Connect service. See the official GCP documentation for Private Service Connect.
    Endpoint string
    Connection endpoint. See the official GCP API reference for Private Service Connect.
    Status string
    connection_id string
    Connection ID of the endpoint.
    consumer_network string
    Network of the consumer connecting to Redpanda GCP Private Service Connect service. See the official GCP documentation for Private Service Connect.
    endpoint string
    Connection endpoint. See the official GCP API reference for Private Service Connect.
    status string
    connectionId String
    Connection ID of the endpoint.
    consumerNetwork String
    Network of the consumer connecting to Redpanda GCP Private Service Connect service. See the official GCP documentation for Private Service Connect.
    endpoint String
    Connection endpoint. See the official GCP API reference for Private Service Connect.
    status String
    connectionId string
    Connection ID of the endpoint.
    consumerNetwork string
    Network of the consumer connecting to Redpanda GCP Private Service Connect service. See the official GCP documentation for Private Service Connect.
    endpoint string
    Connection endpoint. See the official GCP API reference for Private Service Connect.
    status string
    connection_id str
    Connection ID of the endpoint.
    consumer_network str
    Network of the consumer connecting to Redpanda GCP Private Service Connect service. See the official GCP documentation for Private Service Connect.
    endpoint str
    Connection endpoint. See the official GCP API reference for Private Service Connect.
    status str
    connectionId String
    Connection ID of the endpoint.
    consumerNetwork String
    Network of the consumer connecting to Redpanda GCP Private Service Connect service. See the official GCP documentation for Private Service Connect.
    endpoint String
    Connection endpoint. See the official GCP API reference for Private Service Connect.
    status String

    ClusterHttpProxy, ClusterHttpProxyArgs

    AllUrls ClusterHttpProxyAllUrls
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    Mtls ClusterHttpProxyMtls
    mTLS configuration.
    Sasl ClusterHttpProxySasl
    SASL configuration
    Url string
    HTTP Proxy URL of cluster.
    AllUrls ClusterHttpProxyAllUrls
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    Mtls ClusterHttpProxyMtls
    mTLS configuration.
    Sasl ClusterHttpProxySasl
    SASL configuration
    Url string
    HTTP Proxy URL of cluster.
    all_urls object
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    mtls object
    mTLS configuration.
    sasl object
    SASL configuration
    url string
    HTTP Proxy URL of cluster.
    allUrls ClusterHttpProxyAllUrls
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    mtls ClusterHttpProxyMtls
    mTLS configuration.
    sasl ClusterHttpProxySasl
    SASL configuration
    url String
    HTTP Proxy URL of cluster.
    allUrls ClusterHttpProxyAllUrls
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    mtls ClusterHttpProxyMtls
    mTLS configuration.
    sasl ClusterHttpProxySasl
    SASL configuration
    url string
    HTTP Proxy URL of cluster.
    all_urls ClusterHttpProxyAllUrls
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    mtls ClusterHttpProxyMtls
    mTLS configuration.
    sasl ClusterHttpProxySasl
    SASL configuration
    url str
    HTTP Proxy URL of cluster.
    allUrls Property Map
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    mtls Property Map
    mTLS configuration.
    sasl Property Map
    SASL configuration
    url String
    HTTP Proxy URL of cluster.

    ClusterHttpProxyAllUrls, ClusterHttpProxyAllUrlsArgs

    Mtls string
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    PrivateLinkMtls string
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    PrivateLinkSasl string
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    Sasl string
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    Mtls string
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    PrivateLinkMtls string
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    PrivateLinkSasl string
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    Sasl string
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls string
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    private_link_mtls string
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    private_link_sasl string
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl string
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls String
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    privateLinkMtls String
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    privateLinkSasl String
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl String
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls string
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    privateLinkMtls string
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    privateLinkSasl string
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl string
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls str
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    private_link_mtls str
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    private_link_sasl str
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl str
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls String
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    privateLinkMtls String
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    privateLinkSasl String
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl String
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.

    ClusterHttpProxyMtls, ClusterHttpProxyMtlsArgs

    CaCertificatesPems List<string>
    CA certificate in PEM format.
    Enabled bool
    Whether mTLS is enabled.
    PrincipalMappingRules List<string>
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    CaCertificatesPems []string
    CA certificate in PEM format.
    Enabled bool
    Whether mTLS is enabled.
    PrincipalMappingRules []string
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    ca_certificates_pems list(string)
    CA certificate in PEM format.
    enabled bool
    Whether mTLS is enabled.
    principal_mapping_rules list(string)
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    caCertificatesPems List<String>
    CA certificate in PEM format.
    enabled Boolean
    Whether mTLS is enabled.
    principalMappingRules List<String>
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    caCertificatesPems string[]
    CA certificate in PEM format.
    enabled boolean
    Whether mTLS is enabled.
    principalMappingRules string[]
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    ca_certificates_pems Sequence[str]
    CA certificate in PEM format.
    enabled bool
    Whether mTLS is enabled.
    principal_mapping_rules Sequence[str]
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    caCertificatesPems List<String>
    CA certificate in PEM format.
    enabled Boolean
    Whether mTLS is enabled.
    principalMappingRules List<String>
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details

    ClusterHttpProxySasl, ClusterHttpProxySaslArgs

    Enabled bool
    Whether SASL is enabled.
    Enabled bool
    Whether SASL is enabled.
    enabled bool
    Whether SASL is enabled.
    enabled Boolean
    Whether SASL is enabled.
    enabled boolean
    Whether SASL is enabled.
    enabled bool
    Whether SASL is enabled.
    enabled Boolean
    Whether SASL is enabled.

    ClusterKafkaApi, ClusterKafkaApiArgs

    AllSeedBrokers ClusterKafkaApiAllSeedBrokers
    Seed brokers of Redpanda Kafka API.
    Mtls ClusterKafkaApiMtls
    mTLS configuration.
    Sasl ClusterKafkaApiSasl
    SASL configuration
    SeedBrokers List<string>
    Kafka API Seed Brokers (also known as Bootstrap servers).
    AllSeedBrokers ClusterKafkaApiAllSeedBrokers
    Seed brokers of Redpanda Kafka API.
    Mtls ClusterKafkaApiMtls
    mTLS configuration.
    Sasl ClusterKafkaApiSasl
    SASL configuration
    SeedBrokers []string
    Kafka API Seed Brokers (also known as Bootstrap servers).
    all_seed_brokers object
    Seed brokers of Redpanda Kafka API.
    mtls object
    mTLS configuration.
    sasl object
    SASL configuration
    seed_brokers list(string)
    Kafka API Seed Brokers (also known as Bootstrap servers).
    allSeedBrokers ClusterKafkaApiAllSeedBrokers
    Seed brokers of Redpanda Kafka API.
    mtls ClusterKafkaApiMtls
    mTLS configuration.
    sasl ClusterKafkaApiSasl
    SASL configuration
    seedBrokers List<String>
    Kafka API Seed Brokers (also known as Bootstrap servers).
    allSeedBrokers ClusterKafkaApiAllSeedBrokers
    Seed brokers of Redpanda Kafka API.
    mtls ClusterKafkaApiMtls
    mTLS configuration.
    sasl ClusterKafkaApiSasl
    SASL configuration
    seedBrokers string[]
    Kafka API Seed Brokers (also known as Bootstrap servers).
    all_seed_brokers ClusterKafkaApiAllSeedBrokers
    Seed brokers of Redpanda Kafka API.
    mtls ClusterKafkaApiMtls
    mTLS configuration.
    sasl ClusterKafkaApiSasl
    SASL configuration
    seed_brokers Sequence[str]
    Kafka API Seed Brokers (also known as Bootstrap servers).
    allSeedBrokers Property Map
    Seed brokers of Redpanda Kafka API.
    mtls Property Map
    mTLS configuration.
    sasl Property Map
    SASL configuration
    seedBrokers List<String>
    Kafka API Seed Brokers (also known as Bootstrap servers).

    ClusterKafkaApiAllSeedBrokers, ClusterKafkaApiAllSeedBrokersArgs

    Mtls string
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    PrivateLinkMtls string
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    PrivateLinkSasl string
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    Sasl string
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    Mtls string
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    PrivateLinkMtls string
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    PrivateLinkSasl string
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    Sasl string
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls string
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    private_link_mtls string
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    private_link_sasl string
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl string
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls String
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    privateLinkMtls String
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    privateLinkSasl String
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl String
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls string
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    privateLinkMtls string
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    privateLinkSasl string
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl string
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls str
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    private_link_mtls str
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    private_link_sasl str
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl str
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls String
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    privateLinkMtls String
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    privateLinkSasl String
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl String
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.

    ClusterKafkaApiMtls, ClusterKafkaApiMtlsArgs

    CaCertificatesPems List<string>
    CA certificate in PEM format.
    Enabled bool
    Whether mTLS is enabled.
    PrincipalMappingRules List<string>
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    CaCertificatesPems []string
    CA certificate in PEM format.
    Enabled bool
    Whether mTLS is enabled.
    PrincipalMappingRules []string
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    ca_certificates_pems list(string)
    CA certificate in PEM format.
    enabled bool
    Whether mTLS is enabled.
    principal_mapping_rules list(string)
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    caCertificatesPems List<String>
    CA certificate in PEM format.
    enabled Boolean
    Whether mTLS is enabled.
    principalMappingRules List<String>
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    caCertificatesPems string[]
    CA certificate in PEM format.
    enabled boolean
    Whether mTLS is enabled.
    principalMappingRules string[]
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    ca_certificates_pems Sequence[str]
    CA certificate in PEM format.
    enabled bool
    Whether mTLS is enabled.
    principal_mapping_rules Sequence[str]
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    caCertificatesPems List<String>
    CA certificate in PEM format.
    enabled Boolean
    Whether mTLS is enabled.
    principalMappingRules List<String>
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details

    ClusterKafkaApiSasl, ClusterKafkaApiSaslArgs

    Enabled bool
    Whether SASL is enabled.
    Enabled bool
    Whether SASL is enabled.
    enabled bool
    Whether SASL is enabled.
    enabled Boolean
    Whether SASL is enabled.
    enabled boolean
    Whether SASL is enabled.
    enabled bool
    Whether SASL is enabled.
    enabled Boolean
    Whether SASL is enabled.

    ClusterKafkaConnect, ClusterKafkaConnectArgs

    Enabled bool
    Whether Kafka Connect is enabled
    Enabled bool
    Whether Kafka Connect is enabled
    enabled bool
    Whether Kafka Connect is enabled
    enabled Boolean
    Whether Kafka Connect is enabled
    enabled boolean
    Whether Kafka Connect is enabled
    enabled bool
    Whether Kafka Connect is enabled
    enabled Boolean
    Whether Kafka Connect is enabled

    ClusterMaintenanceWindowConfig, ClusterMaintenanceWindowConfigArgs

    Anytime bool
    If true, maintenance can occur at any time
    DayHour ClusterMaintenanceWindowConfigDayHour
    Day Hour configuration
    Unspecified bool
    If true, maintenance window is unspecified
    Anytime bool
    If true, maintenance can occur at any time
    DayHour ClusterMaintenanceWindowConfigDayHour
    Day Hour configuration
    Unspecified bool
    If true, maintenance window is unspecified
    anytime bool
    If true, maintenance can occur at any time
    day_hour object
    Day Hour configuration
    unspecified bool
    If true, maintenance window is unspecified
    anytime Boolean
    If true, maintenance can occur at any time
    dayHour ClusterMaintenanceWindowConfigDayHour
    Day Hour configuration
    unspecified Boolean
    If true, maintenance window is unspecified
    anytime boolean
    If true, maintenance can occur at any time
    dayHour ClusterMaintenanceWindowConfigDayHour
    Day Hour configuration
    unspecified boolean
    If true, maintenance window is unspecified
    anytime bool
    If true, maintenance can occur at any time
    day_hour ClusterMaintenanceWindowConfigDayHour
    Day Hour configuration
    unspecified bool
    If true, maintenance window is unspecified
    anytime Boolean
    If true, maintenance can occur at any time
    dayHour Property Map
    Day Hour configuration
    unspecified Boolean
    If true, maintenance window is unspecified

    ClusterMaintenanceWindowConfigDayHour, ClusterMaintenanceWindowConfigDayHourArgs

    DayOfWeek string
    Represents a day of the week. - MONDAY: Monday - TUESDAY: Tuesday - WEDNESDAY: Wednesday - THURSDAY: Thursday - FRIDAY: Friday - SATURDAY: Saturday - SUNDAY: Sunday
    HourOfDay double
    always UTC. Must be between 0 and 23 (inclusive).
    DayOfWeek string
    Represents a day of the week. - MONDAY: Monday - TUESDAY: Tuesday - WEDNESDAY: Wednesday - THURSDAY: Thursday - FRIDAY: Friday - SATURDAY: Saturday - SUNDAY: Sunday
    HourOfDay float64
    always UTC. Must be between 0 and 23 (inclusive).
    day_of_week string
    Represents a day of the week. - MONDAY: Monday - TUESDAY: Tuesday - WEDNESDAY: Wednesday - THURSDAY: Thursday - FRIDAY: Friday - SATURDAY: Saturday - SUNDAY: Sunday
    hour_of_day number
    always UTC. Must be between 0 and 23 (inclusive).
    dayOfWeek String
    Represents a day of the week. - MONDAY: Monday - TUESDAY: Tuesday - WEDNESDAY: Wednesday - THURSDAY: Thursday - FRIDAY: Friday - SATURDAY: Saturday - SUNDAY: Sunday
    hourOfDay Double
    always UTC. Must be between 0 and 23 (inclusive).
    dayOfWeek string
    Represents a day of the week. - MONDAY: Monday - TUESDAY: Tuesday - WEDNESDAY: Wednesday - THURSDAY: Thursday - FRIDAY: Friday - SATURDAY: Saturday - SUNDAY: Sunday
    hourOfDay number
    always UTC. Must be between 0 and 23 (inclusive).
    day_of_week str
    Represents a day of the week. - MONDAY: Monday - TUESDAY: Tuesday - WEDNESDAY: Wednesday - THURSDAY: Thursday - FRIDAY: Friday - SATURDAY: Saturday - SUNDAY: Sunday
    hour_of_day float
    always UTC. Must be between 0 and 23 (inclusive).
    dayOfWeek String
    Represents a day of the week. - MONDAY: Monday - TUESDAY: Tuesday - WEDNESDAY: Wednesday - THURSDAY: Thursday - FRIDAY: Friday - SATURDAY: Saturday - SUNDAY: Sunday
    hourOfDay Number
    always UTC. Must be between 0 and 23 (inclusive).

    ClusterPrometheus, ClusterPrometheusArgs

    Url string
    Prometheus API URL.
    Url string
    Prometheus API URL.
    url string
    Prometheus API URL.
    url String
    Prometheus API URL.
    url string
    Prometheus API URL.
    url str
    Prometheus API URL.
    url String
    Prometheus API URL.

    ClusterRedpandaConsole, ClusterRedpandaConsoleArgs

    Url string
    Redpanda Console API URL.
    Url string
    Redpanda Console API URL.
    url string
    Redpanda Console API URL.
    url String
    Redpanda Console API URL.
    url string
    Redpanda Console API URL.
    url str
    Redpanda Console API URL.
    url String
    Redpanda Console API URL.

    ClusterRpsql, ClusterRpsqlArgs

    Enabled bool
    Whether Rpsql is enabled
    Replicas double
    Replicas
    Url string
    Rpsql URL
    Enabled bool
    Whether Rpsql is enabled
    Replicas float64
    Replicas
    Url string
    Rpsql URL
    enabled bool
    Whether Rpsql is enabled
    replicas number
    Replicas
    url string
    Rpsql URL
    enabled Boolean
    Whether Rpsql is enabled
    replicas Double
    Replicas
    url String
    Rpsql URL
    enabled boolean
    Whether Rpsql is enabled
    replicas number
    Replicas
    url string
    Rpsql URL
    enabled bool
    Whether Rpsql is enabled
    replicas float
    Replicas
    url str
    Rpsql URL
    enabled Boolean
    Whether Rpsql is enabled
    replicas Number
    Replicas
    url String
    Rpsql URL

    ClusterSchemaRegistry, ClusterSchemaRegistryArgs

    AllUrls ClusterSchemaRegistryAllUrls
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    Mtls ClusterSchemaRegistryMtls
    mTLS configuration.
    Url string
    Schema Registry URL.
    AllUrls ClusterSchemaRegistryAllUrls
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    Mtls ClusterSchemaRegistryMtls
    mTLS configuration.
    Url string
    Schema Registry URL.
    all_urls object
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    mtls object
    mTLS configuration.
    url string
    Schema Registry URL.
    allUrls ClusterSchemaRegistryAllUrls
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    mtls ClusterSchemaRegistryMtls
    mTLS configuration.
    url String
    Schema Registry URL.
    allUrls ClusterSchemaRegistryAllUrls
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    mtls ClusterSchemaRegistryMtls
    mTLS configuration.
    url string
    Schema Registry URL.
    all_urls ClusterSchemaRegistryAllUrls
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    mtls ClusterSchemaRegistryMtls
    mTLS configuration.
    url str
    Schema Registry URL.
    allUrls Property Map
    The endpoints of Redpanda HTTP Proxy or Schema Registry.
    mtls Property Map
    mTLS configuration.
    url String
    Schema Registry URL.

    ClusterSchemaRegistryAllUrls, ClusterSchemaRegistryAllUrlsArgs

    Mtls string
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    PrivateLinkMtls string
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    PrivateLinkSasl string
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    Sasl string
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    Mtls string
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    PrivateLinkMtls string
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    PrivateLinkSasl string
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    Sasl string
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls string
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    private_link_mtls string
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    private_link_sasl string
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl string
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls String
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    privateLinkMtls String
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    privateLinkSasl String
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl String
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls string
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    privateLinkMtls string
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    privateLinkSasl string
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl string
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls str
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    private_link_mtls str
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    private_link_sasl str
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl str
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.
    mtls String
    URL of the seed broker for mTLS. If mTLS is not enabled, the field is empty.
    privateLinkMtls String
    URL of the seed broker for private link with mTLS. If private link with mTLS is not enabled, the field is empty.
    privateLinkSasl String
    URL of the seed broker for private link with SASL. If private link with SASL is not enabled, the field is empty.
    sasl String
    URL of the seed broker for SASL. If SASL is not enabled, the field is empty.

    ClusterSchemaRegistryMtls, ClusterSchemaRegistryMtlsArgs

    CaCertificatesPems List<string>
    CA certificate in PEM format.
    Enabled bool
    Whether mTLS is enabled.
    PrincipalMappingRules List<string>
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    CaCertificatesPems []string
    CA certificate in PEM format.
    Enabled bool
    Whether mTLS is enabled.
    PrincipalMappingRules []string
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    ca_certificates_pems list(string)
    CA certificate in PEM format.
    enabled bool
    Whether mTLS is enabled.
    principal_mapping_rules list(string)
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    caCertificatesPems List<String>
    CA certificate in PEM format.
    enabled Boolean
    Whether mTLS is enabled.
    principalMappingRules List<String>
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    caCertificatesPems string[]
    CA certificate in PEM format.
    enabled boolean
    Whether mTLS is enabled.
    principalMappingRules string[]
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    ca_certificates_pems Sequence[str]
    CA certificate in PEM format.
    enabled bool
    Whether mTLS is enabled.
    principal_mapping_rules Sequence[str]
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details
    caCertificatesPems List<String>
    CA certificate in PEM format.
    enabled Boolean
    Whether mTLS is enabled.
    principalMappingRules List<String>
    Principal mapping rules for mTLS authentication. See Redpanda documentation for details

    ClusterStateDescription, ClusterStateDescriptionArgs

    Code double
    RPC status code, as described here.
    Message string
    Detailed error message. No compatibility guarantees are given for the text contained in this message.
    Code float64
    RPC status code, as described here.
    Message string
    Detailed error message. No compatibility guarantees are given for the text contained in this message.
    code number
    RPC status code, as described here.
    message string
    Detailed error message. No compatibility guarantees are given for the text contained in this message.
    code Double
    RPC status code, as described here.
    message String
    Detailed error message. No compatibility guarantees are given for the text contained in this message.
    code number
    RPC status code, as described here.
    message string
    Detailed error message. No compatibility guarantees are given for the text contained in this message.
    code float
    RPC status code, as described here.
    message str
    Detailed error message. No compatibility guarantees are given for the text contained in this message.
    code Number
    RPC status code, as described here.
    message String
    Detailed error message. No compatibility guarantees are given for the text contained in this message.

    ClusterTimeouts, ClusterTimeoutsArgs

    Create string
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    Delete string
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
    Update string
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    Create string
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    Delete string
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
    Update string
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    create string
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    delete string
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
    update string
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    create String
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    delete String
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
    update String
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    create string
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    delete string
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
    update string
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    create str
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    delete str
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
    update str
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    create String
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
    delete String
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
    update String
    A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).

    Import

    $ pulumi import redpanda:index/cluster:Cluster example clusterId
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    redpanda redpanda-data/terraform-provider-redpanda
    License
    Notes
    This Pulumi package is based on the redpanda Terraform Provider.
    Viewing docs for redpanda 2.0.0
    published on Wednesday, Jun 3, 2026 by redpanda-data

      Try Pulumi Cloud free.
      Your team will thank you.

      Start free trial