All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.vault.pkiSecret.kotlin.SecretBackendRoleArgs.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 6.4.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.vault.pkiSecret.kotlin

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import com.pulumi.vault.pkiSecret.SecretBackendRoleArgs.builder
import com.pulumi.vault.pkiSecret.kotlin.inputs.SecretBackendRolePolicyIdentifierArgs
import com.pulumi.vault.pkiSecret.kotlin.inputs.SecretBackendRolePolicyIdentifierArgsBuilder
import kotlin.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Creates a role on an PKI Secret Backend for Vault.
 * ## Example Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as vault from "@pulumi/vault";
 * const pki = new vault.Mount("pki", {
 *     path: "pki",
 *     type: "pki",
 *     defaultLeaseTtlSeconds: 3600,
 *     maxLeaseTtlSeconds: 86400,
 * });
 * const role = new vault.pkisecret.SecretBackendRole("role", {
 *     backend: pki.path,
 *     name: "my_role",
 *     ttl: "3600",
 *     allowIpSans: true,
 *     keyType: "rsa",
 *     keyBits: 4096,
 *     allowedDomains: [
 *         "example.com",
 *         "my.domain",
 *     ],
 *     allowSubdomains: true,
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_vault as vault
 * pki = vault.Mount("pki",
 *     path="pki",
 *     type="pki",
 *     default_lease_ttl_seconds=3600,
 *     max_lease_ttl_seconds=86400)
 * role = vault.pki_secret.SecretBackendRole("role",
 *     backend=pki.path,
 *     name="my_role",
 *     ttl="3600",
 *     allow_ip_sans=True,
 *     key_type="rsa",
 *     key_bits=4096,
 *     allowed_domains=[
 *         "example.com",
 *         "my.domain",
 *     ],
 *     allow_subdomains=True)
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Vault = Pulumi.Vault;
 * return await Deployment.RunAsync(() =>
 * {
 *     var pki = new Vault.Mount("pki", new()
 *     {
 *         Path = "pki",
 *         Type = "pki",
 *         DefaultLeaseTtlSeconds = 3600,
 *         MaxLeaseTtlSeconds = 86400,
 *     });
 *     var role = new Vault.PkiSecret.SecretBackendRole("role", new()
 *     {
 *         Backend = pki.Path,
 *         Name = "my_role",
 *         Ttl = "3600",
 *         AllowIpSans = true,
 *         KeyType = "rsa",
 *         KeyBits = 4096,
 *         AllowedDomains = new[]
 *         {
 *             "example.com",
 *             "my.domain",
 *         },
 *         AllowSubdomains = true,
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-vault/sdk/v6/go/vault"
 * 	"github.com/pulumi/pulumi-vault/sdk/v6/go/vault/pkiSecret"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		pki, err := vault.NewMount(ctx, "pki", &vault.MountArgs{
 * 			Path:                   pulumi.String("pki"),
 * 			Type:                   pulumi.String("pki"),
 * 			DefaultLeaseTtlSeconds: pulumi.Int(3600),
 * 			MaxLeaseTtlSeconds:     pulumi.Int(86400),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = pkiSecret.NewSecretBackendRole(ctx, "role", &pkiSecret.SecretBackendRoleArgs{
 * 			Backend:     pki.Path,
 * 			Name:        pulumi.String("my_role"),
 * 			Ttl:         pulumi.String("3600"),
 * 			AllowIpSans: pulumi.Bool(true),
 * 			KeyType:     pulumi.String("rsa"),
 * 			KeyBits:     pulumi.Int(4096),
 * 			AllowedDomains: pulumi.StringArray{
 * 				pulumi.String("example.com"),
 * 				pulumi.String("my.domain"),
 * 			},
 * 			AllowSubdomains: pulumi.Bool(true),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.vault.Mount;
 * import com.pulumi.vault.MountArgs;
 * import com.pulumi.vault.pkiSecret.SecretBackendRole;
 * import com.pulumi.vault.pkiSecret.SecretBackendRoleArgs;
 * 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 pki = new Mount("pki", MountArgs.builder()
 *             .path("pki")
 *             .type("pki")
 *             .defaultLeaseTtlSeconds(3600)
 *             .maxLeaseTtlSeconds(86400)
 *             .build());
 *         var role = new SecretBackendRole("role", SecretBackendRoleArgs.builder()
 *             .backend(pki.path())
 *             .name("my_role")
 *             .ttl(3600)
 *             .allowIpSans(true)
 *             .keyType("rsa")
 *             .keyBits(4096)
 *             .allowedDomains(
 *                 "example.com",
 *                 "my.domain")
 *             .allowSubdomains(true)
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   pki:
 *     type: vault:Mount
 *     properties:
 *       path: pki
 *       type: pki
 *       defaultLeaseTtlSeconds: 3600
 *       maxLeaseTtlSeconds: 86400
 *   role:
 *     type: vault:pkiSecret:SecretBackendRole
 *     properties:
 *       backend: ${pki.path}
 *       name: my_role
 *       ttl: 3600
 *       allowIpSans: true
 *       keyType: rsa
 *       keyBits: 4096
 *       allowedDomains:
 *         - example.com
 *         - my.domain
 *       allowSubdomains: true
 * ```
 * 
 * ## Import
 * PKI secret backend roles can be imported using the `path`, e.g.
 * ```sh
 * $ pulumi import vault:pkiSecret/secretBackendRole:SecretBackendRole role pki/roles/my_role
 * ```
 * @property allowAnyName Flag to allow any name
 * @property allowBareDomains Flag to allow certificates matching the actual domain
 * @property allowGlobDomains Flag to allow names containing glob patterns.
 * @property allowIpSans Flag to allow IP SANs
 * @property allowLocalhost Flag to allow certificates for localhost
 * @property allowSubdomains Flag to allow certificates matching subdomains
 * @property allowWildcardCertificates Flag to allow wildcard certificates.
 * @property allowedDomains List of allowed domains for certificates
 * @property allowedDomainsTemplate Flag, if set, `allowed_domains` can be specified using identity template expressions such as `{{identity.entity.aliases..name}}`.
 * @property allowedOtherSans Defines allowed custom SANs
 * @property allowedSerialNumbers An array of allowed serial numbers to put in Subject
 * @property allowedUriSans Defines allowed URI SANs
 * @property allowedUriSansTemplate Flag, if set, `allowed_uri_sans` can be specified using identity template expressions such as `{{identity.entity.aliases..name}}`.
 * @property allowedUserIds Defines allowed User IDs
 * @property backend The path the PKI secret backend is mounted at, with no leading or trailing `/`s.
 * @property basicConstraintsValidForNonCa Flag to mark basic constraints valid when issuing non-CA certificates
 * @property clientFlag Flag to specify certificates for client use
 * @property codeSigningFlag Flag to specify certificates for code signing use
 * @property countries The country of generated certificates
 * @property emailProtectionFlag Flag to specify certificates for email protection use
 * @property enforceHostnames Flag to allow only valid host names
 * @property extKeyUsageOids Specify the allowed extended key usage OIDs constraint on issued certificates
 * @property extKeyUsages Specify the allowed extended key usage constraint on issued certificates
 * @property generateLease Flag to generate leases with certificates
 * @property issuerRef Specifies the default issuer of this request. May
 * be the value `default`, a name, or an issuer ID. Use ACLs to prevent access to
 * the `/pki/issuer/:issuer_ref/{issue,sign}/:name` paths to prevent users
 * overriding the role's `issuer_ref` value.
 * @property keyBits The number of bits of generated keys
 * @property keyType The generated key type, choices: `rsa`, `ec`, `ed25519`, `any`
 * Defaults to `rsa`
 * @property keyUsages Specify the allowed key usage constraint on issued
 * certificates. Defaults to `["DigitalSignature", "KeyAgreement", "KeyEncipherment"])`.
 * To specify no default key usage constraints, set this to an empty list `[]`.
 * @property localities The locality of generated certificates
 * @property maxTtl The maximum lease TTL, in seconds, for the role.
 * @property name The name to identify this role within the backend. Must be unique within the backend.
 * @property namespace The namespace to provision the resource in.
 * The value should not contain leading or trailing forward slashes.
 * The `namespace` is always relative to the provider's configured [namespace](https://www.terraform.io/docs/providers/vault/index.html#namespace).
 * *Available only for Vault Enterprise*.
 * @property noStore Flag to not store certificates in the storage backend
 * @property notBeforeDuration Specifies the duration by which to backdate the NotBefore property.
 * @property organizationUnit The organization unit of generated certificates
 * @property organizations The organization of generated certificates
 * @property policyIdentifier (Vault 1.11+ only) A block for specifying policy identifers. The `policy_identifier` block can be repeated, and supports the following arguments:
 * @property policyIdentifiers Specify the list of allowed policies OIDs. Use with Vault 1.10 or before. For Vault 1.11+, use `policy_identifier` blocks instead
 * @property postalCodes The postal code of generated certificates
 * @property provinces The province of generated certificates
 * @property requireCn Flag to force CN usage
 * @property serverFlag Flag to specify certificates for server use
 * @property streetAddresses The street address of generated certificates
 * @property ttl The TTL, in seconds, for any certificate issued against this role.
 * @property useCsrCommonName Flag to use the CN in the CSR
 * @property useCsrSans Flag to use the SANs in the CSR
 */
public data class SecretBackendRoleArgs(
    public val allowAnyName: Output? = null,
    public val allowBareDomains: Output? = null,
    public val allowGlobDomains: Output? = null,
    public val allowIpSans: Output? = null,
    public val allowLocalhost: Output? = null,
    public val allowSubdomains: Output? = null,
    public val allowWildcardCertificates: Output? = null,
    public val allowedDomains: Output>? = null,
    public val allowedDomainsTemplate: Output? = null,
    public val allowedOtherSans: Output>? = null,
    public val allowedSerialNumbers: Output>? = null,
    public val allowedUriSans: Output>? = null,
    public val allowedUriSansTemplate: Output? = null,
    public val allowedUserIds: Output>? = null,
    public val backend: Output? = null,
    public val basicConstraintsValidForNonCa: Output? = null,
    public val clientFlag: Output? = null,
    public val codeSigningFlag: Output? = null,
    public val countries: Output>? = null,
    public val emailProtectionFlag: Output? = null,
    public val enforceHostnames: Output? = null,
    public val extKeyUsageOids: Output>? = null,
    public val extKeyUsages: Output>? = null,
    public val generateLease: Output? = null,
    public val issuerRef: Output? = null,
    public val keyBits: Output? = null,
    public val keyType: Output? = null,
    public val keyUsages: Output>? = null,
    public val localities: Output>? = null,
    public val maxTtl: Output? = null,
    public val name: Output? = null,
    public val namespace: Output? = null,
    public val noStore: Output? = null,
    public val notBeforeDuration: Output? = null,
    public val organizationUnit: Output>? = null,
    public val organizations: Output>? = null,
    public val policyIdentifier: Output>? = null,
    public val policyIdentifiers: Output>? = null,
    public val postalCodes: Output>? = null,
    public val provinces: Output>? = null,
    public val requireCn: Output? = null,
    public val serverFlag: Output? = null,
    public val streetAddresses: Output>? = null,
    public val ttl: Output? = null,
    public val useCsrCommonName: Output? = null,
    public val useCsrSans: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.vault.pkiSecret.SecretBackendRoleArgs =
        com.pulumi.vault.pkiSecret.SecretBackendRoleArgs.builder()
            .allowAnyName(allowAnyName?.applyValue({ args0 -> args0 }))
            .allowBareDomains(allowBareDomains?.applyValue({ args0 -> args0 }))
            .allowGlobDomains(allowGlobDomains?.applyValue({ args0 -> args0 }))
            .allowIpSans(allowIpSans?.applyValue({ args0 -> args0 }))
            .allowLocalhost(allowLocalhost?.applyValue({ args0 -> args0 }))
            .allowSubdomains(allowSubdomains?.applyValue({ args0 -> args0 }))
            .allowWildcardCertificates(allowWildcardCertificates?.applyValue({ args0 -> args0 }))
            .allowedDomains(allowedDomains?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .allowedDomainsTemplate(allowedDomainsTemplate?.applyValue({ args0 -> args0 }))
            .allowedOtherSans(allowedOtherSans?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .allowedSerialNumbers(allowedSerialNumbers?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .allowedUriSans(allowedUriSans?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .allowedUriSansTemplate(allowedUriSansTemplate?.applyValue({ args0 -> args0 }))
            .allowedUserIds(allowedUserIds?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .backend(backend?.applyValue({ args0 -> args0 }))
            .basicConstraintsValidForNonCa(basicConstraintsValidForNonCa?.applyValue({ args0 -> args0 }))
            .clientFlag(clientFlag?.applyValue({ args0 -> args0 }))
            .codeSigningFlag(codeSigningFlag?.applyValue({ args0 -> args0 }))
            .countries(countries?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .emailProtectionFlag(emailProtectionFlag?.applyValue({ args0 -> args0 }))
            .enforceHostnames(enforceHostnames?.applyValue({ args0 -> args0 }))
            .extKeyUsageOids(extKeyUsageOids?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .extKeyUsages(extKeyUsages?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .generateLease(generateLease?.applyValue({ args0 -> args0 }))
            .issuerRef(issuerRef?.applyValue({ args0 -> args0 }))
            .keyBits(keyBits?.applyValue({ args0 -> args0 }))
            .keyType(keyType?.applyValue({ args0 -> args0 }))
            .keyUsages(keyUsages?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .localities(localities?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .maxTtl(maxTtl?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .namespace(namespace?.applyValue({ args0 -> args0 }))
            .noStore(noStore?.applyValue({ args0 -> args0 }))
            .notBeforeDuration(notBeforeDuration?.applyValue({ args0 -> args0 }))
            .organizationUnit(organizationUnit?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .organizations(organizations?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .policyIdentifier(
                policyIdentifier?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .policyIdentifiers(policyIdentifiers?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .postalCodes(postalCodes?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .provinces(provinces?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .requireCn(requireCn?.applyValue({ args0 -> args0 }))
            .serverFlag(serverFlag?.applyValue({ args0 -> args0 }))
            .streetAddresses(streetAddresses?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .ttl(ttl?.applyValue({ args0 -> args0 }))
            .useCsrCommonName(useCsrCommonName?.applyValue({ args0 -> args0 }))
            .useCsrSans(useCsrSans?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [SecretBackendRoleArgs].
 */
@PulumiTagMarker
public class SecretBackendRoleArgsBuilder internal constructor() {
    private var allowAnyName: Output? = null

    private var allowBareDomains: Output? = null

    private var allowGlobDomains: Output? = null

    private var allowIpSans: Output? = null

    private var allowLocalhost: Output? = null

    private var allowSubdomains: Output? = null

    private var allowWildcardCertificates: Output? = null

    private var allowedDomains: Output>? = null

    private var allowedDomainsTemplate: Output? = null

    private var allowedOtherSans: Output>? = null

    private var allowedSerialNumbers: Output>? = null

    private var allowedUriSans: Output>? = null

    private var allowedUriSansTemplate: Output? = null

    private var allowedUserIds: Output>? = null

    private var backend: Output? = null

    private var basicConstraintsValidForNonCa: Output? = null

    private var clientFlag: Output? = null

    private var codeSigningFlag: Output? = null

    private var countries: Output>? = null

    private var emailProtectionFlag: Output? = null

    private var enforceHostnames: Output? = null

    private var extKeyUsageOids: Output>? = null

    private var extKeyUsages: Output>? = null

    private var generateLease: Output? = null

    private var issuerRef: Output? = null

    private var keyBits: Output? = null

    private var keyType: Output? = null

    private var keyUsages: Output>? = null

    private var localities: Output>? = null

    private var maxTtl: Output? = null

    private var name: Output? = null

    private var namespace: Output? = null

    private var noStore: Output? = null

    private var notBeforeDuration: Output? = null

    private var organizationUnit: Output>? = null

    private var organizations: Output>? = null

    private var policyIdentifier: Output>? = null

    private var policyIdentifiers: Output>? = null

    private var postalCodes: Output>? = null

    private var provinces: Output>? = null

    private var requireCn: Output? = null

    private var serverFlag: Output? = null

    private var streetAddresses: Output>? = null

    private var ttl: Output? = null

    private var useCsrCommonName: Output? = null

    private var useCsrSans: Output? = null

    /**
     * @param value Flag to allow any name
     */
    @JvmName("rconswhvjwiehvvi")
    public suspend fun allowAnyName(`value`: Output) {
        this.allowAnyName = value
    }

    /**
     * @param value Flag to allow certificates matching the actual domain
     */
    @JvmName("diqsqvwkoxdtrjeq")
    public suspend fun allowBareDomains(`value`: Output) {
        this.allowBareDomains = value
    }

    /**
     * @param value Flag to allow names containing glob patterns.
     */
    @JvmName("tlnraoagjawyyvhx")
    public suspend fun allowGlobDomains(`value`: Output) {
        this.allowGlobDomains = value
    }

    /**
     * @param value Flag to allow IP SANs
     */
    @JvmName("ptiswuclmxugkkmb")
    public suspend fun allowIpSans(`value`: Output) {
        this.allowIpSans = value
    }

    /**
     * @param value Flag to allow certificates for localhost
     */
    @JvmName("datyajhaocyyfaxe")
    public suspend fun allowLocalhost(`value`: Output) {
        this.allowLocalhost = value
    }

    /**
     * @param value Flag to allow certificates matching subdomains
     */
    @JvmName("ipfgulqnqgnemtsg")
    public suspend fun allowSubdomains(`value`: Output) {
        this.allowSubdomains = value
    }

    /**
     * @param value Flag to allow wildcard certificates.
     */
    @JvmName("bvuhvqiiqlopcwsr")
    public suspend fun allowWildcardCertificates(`value`: Output) {
        this.allowWildcardCertificates = value
    }

    /**
     * @param value List of allowed domains for certificates
     */
    @JvmName("mdbtrvnnplfgpbdr")
    public suspend fun allowedDomains(`value`: Output>) {
        this.allowedDomains = value
    }

    @JvmName("gubkmxbkaqsnqqko")
    public suspend fun allowedDomains(vararg values: Output) {
        this.allowedDomains = Output.all(values.asList())
    }

    /**
     * @param values List of allowed domains for certificates
     */
    @JvmName("jroqltqnptvhgokh")
    public suspend fun allowedDomains(values: List>) {
        this.allowedDomains = Output.all(values)
    }

    /**
     * @param value Flag, if set, `allowed_domains` can be specified using identity template expressions such as `{{identity.entity.aliases..name}}`.
     */
    @JvmName("mdlurjlmvlwkkgpk")
    public suspend fun allowedDomainsTemplate(`value`: Output) {
        this.allowedDomainsTemplate = value
    }

    /**
     * @param value Defines allowed custom SANs
     */
    @JvmName("ruavahwltdrdoxck")
    public suspend fun allowedOtherSans(`value`: Output>) {
        this.allowedOtherSans = value
    }

    @JvmName("jnkulplpskywefth")
    public suspend fun allowedOtherSans(vararg values: Output) {
        this.allowedOtherSans = Output.all(values.asList())
    }

    /**
     * @param values Defines allowed custom SANs
     */
    @JvmName("vjtyyygsiljdpeyf")
    public suspend fun allowedOtherSans(values: List>) {
        this.allowedOtherSans = Output.all(values)
    }

    /**
     * @param value An array of allowed serial numbers to put in Subject
     */
    @JvmName("tgixnnvrnempyvyx")
    public suspend fun allowedSerialNumbers(`value`: Output>) {
        this.allowedSerialNumbers = value
    }

    @JvmName("egoyxhuckxssewai")
    public suspend fun allowedSerialNumbers(vararg values: Output) {
        this.allowedSerialNumbers = Output.all(values.asList())
    }

    /**
     * @param values An array of allowed serial numbers to put in Subject
     */
    @JvmName("vmhqxeqjvugiyywx")
    public suspend fun allowedSerialNumbers(values: List>) {
        this.allowedSerialNumbers = Output.all(values)
    }

    /**
     * @param value Defines allowed URI SANs
     */
    @JvmName("pyafsyxkyhovlvwp")
    public suspend fun allowedUriSans(`value`: Output>) {
        this.allowedUriSans = value
    }

    @JvmName("lamxprqkhkjsgtph")
    public suspend fun allowedUriSans(vararg values: Output) {
        this.allowedUriSans = Output.all(values.asList())
    }

    /**
     * @param values Defines allowed URI SANs
     */
    @JvmName("dfoakeptwsalhwwo")
    public suspend fun allowedUriSans(values: List>) {
        this.allowedUriSans = Output.all(values)
    }

    /**
     * @param value Flag, if set, `allowed_uri_sans` can be specified using identity template expressions such as `{{identity.entity.aliases..name}}`.
     */
    @JvmName("wkppihjdfsjkdugq")
    public suspend fun allowedUriSansTemplate(`value`: Output) {
        this.allowedUriSansTemplate = value
    }

    /**
     * @param value Defines allowed User IDs
     */
    @JvmName("gffvuijmeytwosjf")
    public suspend fun allowedUserIds(`value`: Output>) {
        this.allowedUserIds = value
    }

    @JvmName("kofwwgjhqqsabetr")
    public suspend fun allowedUserIds(vararg values: Output) {
        this.allowedUserIds = Output.all(values.asList())
    }

    /**
     * @param values Defines allowed User IDs
     */
    @JvmName("cydfrgahtgqxskdw")
    public suspend fun allowedUserIds(values: List>) {
        this.allowedUserIds = Output.all(values)
    }

    /**
     * @param value The path the PKI secret backend is mounted at, with no leading or trailing `/`s.
     */
    @JvmName("gbuopkxglbdchiim")
    public suspend fun backend(`value`: Output) {
        this.backend = value
    }

    /**
     * @param value Flag to mark basic constraints valid when issuing non-CA certificates
     */
    @JvmName("tcdugauhieaiqili")
    public suspend fun basicConstraintsValidForNonCa(`value`: Output) {
        this.basicConstraintsValidForNonCa = value
    }

    /**
     * @param value Flag to specify certificates for client use
     */
    @JvmName("tlulbabispdisjkh")
    public suspend fun clientFlag(`value`: Output) {
        this.clientFlag = value
    }

    /**
     * @param value Flag to specify certificates for code signing use
     */
    @JvmName("adssvvemakhwxnus")
    public suspend fun codeSigningFlag(`value`: Output) {
        this.codeSigningFlag = value
    }

    /**
     * @param value The country of generated certificates
     */
    @JvmName("iyqkwpogvtsmnqil")
    public suspend fun countries(`value`: Output>) {
        this.countries = value
    }

    @JvmName("jipdtjhejletskal")
    public suspend fun countries(vararg values: Output) {
        this.countries = Output.all(values.asList())
    }

    /**
     * @param values The country of generated certificates
     */
    @JvmName("qlsfnmhidrpwrtbg")
    public suspend fun countries(values: List>) {
        this.countries = Output.all(values)
    }

    /**
     * @param value Flag to specify certificates for email protection use
     */
    @JvmName("lpdkudwixaebvmhp")
    public suspend fun emailProtectionFlag(`value`: Output) {
        this.emailProtectionFlag = value
    }

    /**
     * @param value Flag to allow only valid host names
     */
    @JvmName("uglxtepgtlwyhtwg")
    public suspend fun enforceHostnames(`value`: Output) {
        this.enforceHostnames = value
    }

    /**
     * @param value Specify the allowed extended key usage OIDs constraint on issued certificates
     */
    @JvmName("kmlvaxoalwqgpqnx")
    public suspend fun extKeyUsageOids(`value`: Output>) {
        this.extKeyUsageOids = value
    }

    @JvmName("xicubutxisokvswn")
    public suspend fun extKeyUsageOids(vararg values: Output) {
        this.extKeyUsageOids = Output.all(values.asList())
    }

    /**
     * @param values Specify the allowed extended key usage OIDs constraint on issued certificates
     */
    @JvmName("pmdqmtpvvcxdcmdd")
    public suspend fun extKeyUsageOids(values: List>) {
        this.extKeyUsageOids = Output.all(values)
    }

    /**
     * @param value Specify the allowed extended key usage constraint on issued certificates
     */
    @JvmName("iqelfyobpnwvskkt")
    public suspend fun extKeyUsages(`value`: Output>) {
        this.extKeyUsages = value
    }

    @JvmName("sjhoxueimjgkwehh")
    public suspend fun extKeyUsages(vararg values: Output) {
        this.extKeyUsages = Output.all(values.asList())
    }

    /**
     * @param values Specify the allowed extended key usage constraint on issued certificates
     */
    @JvmName("wykdxompqygbfsnt")
    public suspend fun extKeyUsages(values: List>) {
        this.extKeyUsages = Output.all(values)
    }

    /**
     * @param value Flag to generate leases with certificates
     */
    @JvmName("rlgdtjotgxqreefn")
    public suspend fun generateLease(`value`: Output) {
        this.generateLease = value
    }

    /**
     * @param value Specifies the default issuer of this request. May
     * be the value `default`, a name, or an issuer ID. Use ACLs to prevent access to
     * the `/pki/issuer/:issuer_ref/{issue,sign}/:name` paths to prevent users
     * overriding the role's `issuer_ref` value.
     */
    @JvmName("bckfdshvaqahwnnk")
    public suspend fun issuerRef(`value`: Output) {
        this.issuerRef = value
    }

    /**
     * @param value The number of bits of generated keys
     */
    @JvmName("rqsiaxhmqwdpksyo")
    public suspend fun keyBits(`value`: Output) {
        this.keyBits = value
    }

    /**
     * @param value The generated key type, choices: `rsa`, `ec`, `ed25519`, `any`
     * Defaults to `rsa`
     */
    @JvmName("rvyemeihsgorpayu")
    public suspend fun keyType(`value`: Output) {
        this.keyType = value
    }

    /**
     * @param value Specify the allowed key usage constraint on issued
     * certificates. Defaults to `["DigitalSignature", "KeyAgreement", "KeyEncipherment"])`.
     * To specify no default key usage constraints, set this to an empty list `[]`.
     */
    @JvmName("qbcfrsuqaldkwphh")
    public suspend fun keyUsages(`value`: Output>) {
        this.keyUsages = value
    }

    @JvmName("khknhfrjifiqblfx")
    public suspend fun keyUsages(vararg values: Output) {
        this.keyUsages = Output.all(values.asList())
    }

    /**
     * @param values Specify the allowed key usage constraint on issued
     * certificates. Defaults to `["DigitalSignature", "KeyAgreement", "KeyEncipherment"])`.
     * To specify no default key usage constraints, set this to an empty list `[]`.
     */
    @JvmName("werktiddosxibdsk")
    public suspend fun keyUsages(values: List>) {
        this.keyUsages = Output.all(values)
    }

    /**
     * @param value The locality of generated certificates
     */
    @JvmName("lbfrsxwhdxyftvgb")
    public suspend fun localities(`value`: Output>) {
        this.localities = value
    }

    @JvmName("pvvwbaxotklyntyx")
    public suspend fun localities(vararg values: Output) {
        this.localities = Output.all(values.asList())
    }

    /**
     * @param values The locality of generated certificates
     */
    @JvmName("absdvxxsqhsdtuyj")
    public suspend fun localities(values: List>) {
        this.localities = Output.all(values)
    }

    /**
     * @param value The maximum lease TTL, in seconds, for the role.
     */
    @JvmName("qljtvhlpiqqnclsl")
    public suspend fun maxTtl(`value`: Output) {
        this.maxTtl = value
    }

    /**
     * @param value The name to identify this role within the backend. Must be unique within the backend.
     */
    @JvmName("svvrgvvimxghrynj")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value The namespace to provision the resource in.
     * The value should not contain leading or trailing forward slashes.
     * The `namespace` is always relative to the provider's configured [namespace](https://www.terraform.io/docs/providers/vault/index.html#namespace).
     * *Available only for Vault Enterprise*.
     */
    @JvmName("tjaneoxftohuafkq")
    public suspend fun namespace(`value`: Output) {
        this.namespace = value
    }

    /**
     * @param value Flag to not store certificates in the storage backend
     */
    @JvmName("lmrnelyaosqubijn")
    public suspend fun noStore(`value`: Output) {
        this.noStore = value
    }

    /**
     * @param value Specifies the duration by which to backdate the NotBefore property.
     */
    @JvmName("hpacpnfmvgauqfwk")
    public suspend fun notBeforeDuration(`value`: Output) {
        this.notBeforeDuration = value
    }

    /**
     * @param value The organization unit of generated certificates
     */
    @JvmName("hhfjcflqatqfxrtf")
    public suspend fun organizationUnit(`value`: Output>) {
        this.organizationUnit = value
    }

    @JvmName("nlrokpxuymhmwnid")
    public suspend fun organizationUnit(vararg values: Output) {
        this.organizationUnit = Output.all(values.asList())
    }

    /**
     * @param values The organization unit of generated certificates
     */
    @JvmName("ftkafpvqcyokvsjo")
    public suspend fun organizationUnit(values: List>) {
        this.organizationUnit = Output.all(values)
    }

    /**
     * @param value The organization of generated certificates
     */
    @JvmName("ifygefggcnctkadv")
    public suspend fun organizations(`value`: Output>) {
        this.organizations = value
    }

    @JvmName("imvmvcfyxafxtpxh")
    public suspend fun organizations(vararg values: Output) {
        this.organizations = Output.all(values.asList())
    }

    /**
     * @param values The organization of generated certificates
     */
    @JvmName("vtwphesianjxjmow")
    public suspend fun organizations(values: List>) {
        this.organizations = Output.all(values)
    }

    /**
     * @param value (Vault 1.11+ only) A block for specifying policy identifers. The `policy_identifier` block can be repeated, and supports the following arguments:
     */
    @JvmName("agvxxicljmlwrftl")
    public suspend fun policyIdentifier(`value`: Output>) {
        this.policyIdentifier = value
    }

    @JvmName("qfosiiapeuerhkst")
    public suspend fun policyIdentifier(vararg values: Output) {
        this.policyIdentifier = Output.all(values.asList())
    }

    /**
     * @param values (Vault 1.11+ only) A block for specifying policy identifers. The `policy_identifier` block can be repeated, and supports the following arguments:
     */
    @JvmName("hmlevmwohhwtuorq")
    public suspend fun policyIdentifier(values: List>) {
        this.policyIdentifier = Output.all(values)
    }

    /**
     * @param value Specify the list of allowed policies OIDs. Use with Vault 1.10 or before. For Vault 1.11+, use `policy_identifier` blocks instead
     */
    @JvmName("umnkwnoelmjwmrwe")
    public suspend fun policyIdentifiers(`value`: Output>) {
        this.policyIdentifiers = value
    }

    @JvmName("ummgqpdxymirxqgh")
    public suspend fun policyIdentifiers(vararg values: Output) {
        this.policyIdentifiers = Output.all(values.asList())
    }

    /**
     * @param values Specify the list of allowed policies OIDs. Use with Vault 1.10 or before. For Vault 1.11+, use `policy_identifier` blocks instead
     */
    @JvmName("axppcwlspuxemxjk")
    public suspend fun policyIdentifiers(values: List>) {
        this.policyIdentifiers = Output.all(values)
    }

    /**
     * @param value The postal code of generated certificates
     */
    @JvmName("yrspdwaxdmkajsgu")
    public suspend fun postalCodes(`value`: Output>) {
        this.postalCodes = value
    }

    @JvmName("mgevpprmqtouytuu")
    public suspend fun postalCodes(vararg values: Output) {
        this.postalCodes = Output.all(values.asList())
    }

    /**
     * @param values The postal code of generated certificates
     */
    @JvmName("scprbdrgxsmjgqkw")
    public suspend fun postalCodes(values: List>) {
        this.postalCodes = Output.all(values)
    }

    /**
     * @param value The province of generated certificates
     */
    @JvmName("vtioqkgjknuxiqax")
    public suspend fun provinces(`value`: Output>) {
        this.provinces = value
    }

    @JvmName("ohytylbyfuujosty")
    public suspend fun provinces(vararg values: Output) {
        this.provinces = Output.all(values.asList())
    }

    /**
     * @param values The province of generated certificates
     */
    @JvmName("gadqtmpcscxnlkcu")
    public suspend fun provinces(values: List>) {
        this.provinces = Output.all(values)
    }

    /**
     * @param value Flag to force CN usage
     */
    @JvmName("qoasnrpetfxymsal")
    public suspend fun requireCn(`value`: Output) {
        this.requireCn = value
    }

    /**
     * @param value Flag to specify certificates for server use
     */
    @JvmName("bvwhmscymdujynxx")
    public suspend fun serverFlag(`value`: Output) {
        this.serverFlag = value
    }

    /**
     * @param value The street address of generated certificates
     */
    @JvmName("extespyxedpvfjof")
    public suspend fun streetAddresses(`value`: Output>) {
        this.streetAddresses = value
    }

    @JvmName("ydyoypgsfvoldptb")
    public suspend fun streetAddresses(vararg values: Output) {
        this.streetAddresses = Output.all(values.asList())
    }

    /**
     * @param values The street address of generated certificates
     */
    @JvmName("nanhvdkfklbcwcol")
    public suspend fun streetAddresses(values: List>) {
        this.streetAddresses = Output.all(values)
    }

    /**
     * @param value The TTL, in seconds, for any certificate issued against this role.
     */
    @JvmName("eqryxwltwbhhcwlv")
    public suspend fun ttl(`value`: Output) {
        this.ttl = value
    }

    /**
     * @param value Flag to use the CN in the CSR
     */
    @JvmName("gnmgxtcrpyiufyko")
    public suspend fun useCsrCommonName(`value`: Output) {
        this.useCsrCommonName = value
    }

    /**
     * @param value Flag to use the SANs in the CSR
     */
    @JvmName("exhdbxsvhwcbvtse")
    public suspend fun useCsrSans(`value`: Output) {
        this.useCsrSans = value
    }

    /**
     * @param value Flag to allow any name
     */
    @JvmName("ibacofdsjkdwayok")
    public suspend fun allowAnyName(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowAnyName = mapped
    }

    /**
     * @param value Flag to allow certificates matching the actual domain
     */
    @JvmName("jxihbfjegghleagr")
    public suspend fun allowBareDomains(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowBareDomains = mapped
    }

    /**
     * @param value Flag to allow names containing glob patterns.
     */
    @JvmName("dokfvqolmfnjkwig")
    public suspend fun allowGlobDomains(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowGlobDomains = mapped
    }

    /**
     * @param value Flag to allow IP SANs
     */
    @JvmName("cdnvrtpputbtaffo")
    public suspend fun allowIpSans(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowIpSans = mapped
    }

    /**
     * @param value Flag to allow certificates for localhost
     */
    @JvmName("pdmajthnbybkuhih")
    public suspend fun allowLocalhost(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowLocalhost = mapped
    }

    /**
     * @param value Flag to allow certificates matching subdomains
     */
    @JvmName("bkfemeqsjwnrrcyu")
    public suspend fun allowSubdomains(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowSubdomains = mapped
    }

    /**
     * @param value Flag to allow wildcard certificates.
     */
    @JvmName("xvohcfydyrmlknpj")
    public suspend fun allowWildcardCertificates(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowWildcardCertificates = mapped
    }

    /**
     * @param value List of allowed domains for certificates
     */
    @JvmName("jatnuhmfttxbycvv")
    public suspend fun allowedDomains(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowedDomains = mapped
    }

    /**
     * @param values List of allowed domains for certificates
     */
    @JvmName("obwheefqawyqblka")
    public suspend fun allowedDomains(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.allowedDomains = mapped
    }

    /**
     * @param value Flag, if set, `allowed_domains` can be specified using identity template expressions such as `{{identity.entity.aliases..name}}`.
     */
    @JvmName("nnmnpuhrutsgpdbf")
    public suspend fun allowedDomainsTemplate(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowedDomainsTemplate = mapped
    }

    /**
     * @param value Defines allowed custom SANs
     */
    @JvmName("erwwwisgvrptinwg")
    public suspend fun allowedOtherSans(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowedOtherSans = mapped
    }

    /**
     * @param values Defines allowed custom SANs
     */
    @JvmName("pgmjtyxdqoofjtgh")
    public suspend fun allowedOtherSans(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.allowedOtherSans = mapped
    }

    /**
     * @param value An array of allowed serial numbers to put in Subject
     */
    @JvmName("ehssynwscgfkocbe")
    public suspend fun allowedSerialNumbers(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowedSerialNumbers = mapped
    }

    /**
     * @param values An array of allowed serial numbers to put in Subject
     */
    @JvmName("djptehswecubtayw")
    public suspend fun allowedSerialNumbers(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.allowedSerialNumbers = mapped
    }

    /**
     * @param value Defines allowed URI SANs
     */
    @JvmName("ckytcdnbxngmbrib")
    public suspend fun allowedUriSans(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowedUriSans = mapped
    }

    /**
     * @param values Defines allowed URI SANs
     */
    @JvmName("jxdmedomyqxjemud")
    public suspend fun allowedUriSans(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.allowedUriSans = mapped
    }

    /**
     * @param value Flag, if set, `allowed_uri_sans` can be specified using identity template expressions such as `{{identity.entity.aliases..name}}`.
     */
    @JvmName("jntlsrqjlghrjtti")
    public suspend fun allowedUriSansTemplate(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowedUriSansTemplate = mapped
    }

    /**
     * @param value Defines allowed User IDs
     */
    @JvmName("rgelehktadcxgjmd")
    public suspend fun allowedUserIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowedUserIds = mapped
    }

    /**
     * @param values Defines allowed User IDs
     */
    @JvmName("ahjajmicdavdpbpu")
    public suspend fun allowedUserIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.allowedUserIds = mapped
    }

    /**
     * @param value The path the PKI secret backend is mounted at, with no leading or trailing `/`s.
     */
    @JvmName("luglgpwnswboqviu")
    public suspend fun backend(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.backend = mapped
    }

    /**
     * @param value Flag to mark basic constraints valid when issuing non-CA certificates
     */
    @JvmName("vfwnecihsrpecxej")
    public suspend fun basicConstraintsValidForNonCa(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.basicConstraintsValidForNonCa = mapped
    }

    /**
     * @param value Flag to specify certificates for client use
     */
    @JvmName("icndmnolmvljmnnk")
    public suspend fun clientFlag(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.clientFlag = mapped
    }

    /**
     * @param value Flag to specify certificates for code signing use
     */
    @JvmName("xksktqxxkqwdvnsl")
    public suspend fun codeSigningFlag(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.codeSigningFlag = mapped
    }

    /**
     * @param value The country of generated certificates
     */
    @JvmName("rqmirjnbcqgpbkwu")
    public suspend fun countries(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.countries = mapped
    }

    /**
     * @param values The country of generated certificates
     */
    @JvmName("vxxrleytbtxbhfgn")
    public suspend fun countries(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.countries = mapped
    }

    /**
     * @param value Flag to specify certificates for email protection use
     */
    @JvmName("pgjwyrnkftlbfdrq")
    public suspend fun emailProtectionFlag(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.emailProtectionFlag = mapped
    }

    /**
     * @param value Flag to allow only valid host names
     */
    @JvmName("jhwpqtrcmbpnbqlh")
    public suspend fun enforceHostnames(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enforceHostnames = mapped
    }

    /**
     * @param value Specify the allowed extended key usage OIDs constraint on issued certificates
     */
    @JvmName("jilclyxyjtmrvjcy")
    public suspend fun extKeyUsageOids(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.extKeyUsageOids = mapped
    }

    /**
     * @param values Specify the allowed extended key usage OIDs constraint on issued certificates
     */
    @JvmName("mxhscrhlsiigbjsi")
    public suspend fun extKeyUsageOids(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.extKeyUsageOids = mapped
    }

    /**
     * @param value Specify the allowed extended key usage constraint on issued certificates
     */
    @JvmName("qodslsehvqutpkkg")
    public suspend fun extKeyUsages(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.extKeyUsages = mapped
    }

    /**
     * @param values Specify the allowed extended key usage constraint on issued certificates
     */
    @JvmName("tnxdasanjfsiihkl")
    public suspend fun extKeyUsages(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.extKeyUsages = mapped
    }

    /**
     * @param value Flag to generate leases with certificates
     */
    @JvmName("gsiexcinboalrrob")
    public suspend fun generateLease(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.generateLease = mapped
    }

    /**
     * @param value Specifies the default issuer of this request. May
     * be the value `default`, a name, or an issuer ID. Use ACLs to prevent access to
     * the `/pki/issuer/:issuer_ref/{issue,sign}/:name` paths to prevent users
     * overriding the role's `issuer_ref` value.
     */
    @JvmName("hdjmcaufpwusbjgq")
    public suspend fun issuerRef(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.issuerRef = mapped
    }

    /**
     * @param value The number of bits of generated keys
     */
    @JvmName("jgkpryjankcfoiuy")
    public suspend fun keyBits(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.keyBits = mapped
    }

    /**
     * @param value The generated key type, choices: `rsa`, `ec`, `ed25519`, `any`
     * Defaults to `rsa`
     */
    @JvmName("qgvecifacnimpmtg")
    public suspend fun keyType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.keyType = mapped
    }

    /**
     * @param value Specify the allowed key usage constraint on issued
     * certificates. Defaults to `["DigitalSignature", "KeyAgreement", "KeyEncipherment"])`.
     * To specify no default key usage constraints, set this to an empty list `[]`.
     */
    @JvmName("dcfuyuidlmbblxis")
    public suspend fun keyUsages(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.keyUsages = mapped
    }

    /**
     * @param values Specify the allowed key usage constraint on issued
     * certificates. Defaults to `["DigitalSignature", "KeyAgreement", "KeyEncipherment"])`.
     * To specify no default key usage constraints, set this to an empty list `[]`.
     */
    @JvmName("nvvevxjgmsllhhuy")
    public suspend fun keyUsages(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.keyUsages = mapped
    }

    /**
     * @param value The locality of generated certificates
     */
    @JvmName("hrhjmfivrvykvmkc")
    public suspend fun localities(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.localities = mapped
    }

    /**
     * @param values The locality of generated certificates
     */
    @JvmName("erpqcboctwacicuu")
    public suspend fun localities(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.localities = mapped
    }

    /**
     * @param value The maximum lease TTL, in seconds, for the role.
     */
    @JvmName("isqhabmwpwtifedq")
    public suspend fun maxTtl(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxTtl = mapped
    }

    /**
     * @param value The name to identify this role within the backend. Must be unique within the backend.
     */
    @JvmName("ibuwryugeuptwvkf")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value The namespace to provision the resource in.
     * The value should not contain leading or trailing forward slashes.
     * The `namespace` is always relative to the provider's configured [namespace](https://www.terraform.io/docs/providers/vault/index.html#namespace).
     * *Available only for Vault Enterprise*.
     */
    @JvmName("mihgcpwmirvkhabh")
    public suspend fun namespace(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.namespace = mapped
    }

    /**
     * @param value Flag to not store certificates in the storage backend
     */
    @JvmName("jonnyrdwfyafsdld")
    public suspend fun noStore(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.noStore = mapped
    }

    /**
     * @param value Specifies the duration by which to backdate the NotBefore property.
     */
    @JvmName("hkcbhmfbgjnhohby")
    public suspend fun notBeforeDuration(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.notBeforeDuration = mapped
    }

    /**
     * @param value The organization unit of generated certificates
     */
    @JvmName("jcgiukwexmofyels")
    public suspend fun organizationUnit(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.organizationUnit = mapped
    }

    /**
     * @param values The organization unit of generated certificates
     */
    @JvmName("ssxrqxpreotyeheo")
    public suspend fun organizationUnit(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.organizationUnit = mapped
    }

    /**
     * @param value The organization of generated certificates
     */
    @JvmName("jrymctbtytlqvqus")
    public suspend fun organizations(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.organizations = mapped
    }

    /**
     * @param values The organization of generated certificates
     */
    @JvmName("magyetbvpndbejji")
    public suspend fun organizations(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.organizations = mapped
    }

    /**
     * @param value (Vault 1.11+ only) A block for specifying policy identifers. The `policy_identifier` block can be repeated, and supports the following arguments:
     */
    @JvmName("qasvulmfrekfmelm")
    public suspend fun policyIdentifier(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.policyIdentifier = mapped
    }

    /**
     * @param argument (Vault 1.11+ only) A block for specifying policy identifers. The `policy_identifier` block can be repeated, and supports the following arguments:
     */
    @JvmName("ohoxcasnwshbbepa")
    public suspend fun policyIdentifier(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            SecretBackendRolePolicyIdentifierArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.policyIdentifier = mapped
    }

    /**
     * @param argument (Vault 1.11+ only) A block for specifying policy identifers. The `policy_identifier` block can be repeated, and supports the following arguments:
     */
    @JvmName("emwjxdlajkkrmmei")
    public suspend fun policyIdentifier(vararg argument: suspend SecretBackendRolePolicyIdentifierArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            SecretBackendRolePolicyIdentifierArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.policyIdentifier = mapped
    }

    /**
     * @param argument (Vault 1.11+ only) A block for specifying policy identifers. The `policy_identifier` block can be repeated, and supports the following arguments:
     */
    @JvmName("wepixrmlfwenptrl")
    public suspend fun policyIdentifier(argument: suspend SecretBackendRolePolicyIdentifierArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            SecretBackendRolePolicyIdentifierArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.policyIdentifier = mapped
    }

    /**
     * @param values (Vault 1.11+ only) A block for specifying policy identifers. The `policy_identifier` block can be repeated, and supports the following arguments:
     */
    @JvmName("gsqcnfikqqiwcmbh")
    public suspend fun policyIdentifier(vararg values: SecretBackendRolePolicyIdentifierArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.policyIdentifier = mapped
    }

    /**
     * @param value Specify the list of allowed policies OIDs. Use with Vault 1.10 or before. For Vault 1.11+, use `policy_identifier` blocks instead
     */
    @JvmName("wfmtyydfnexovihx")
    public suspend fun policyIdentifiers(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.policyIdentifiers = mapped
    }

    /**
     * @param values Specify the list of allowed policies OIDs. Use with Vault 1.10 or before. For Vault 1.11+, use `policy_identifier` blocks instead
     */
    @JvmName("whhcitjiqnhcfwbk")
    public suspend fun policyIdentifiers(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.policyIdentifiers = mapped
    }

    /**
     * @param value The postal code of generated certificates
     */
    @JvmName("qnrhofrmtshjhngc")
    public suspend fun postalCodes(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.postalCodes = mapped
    }

    /**
     * @param values The postal code of generated certificates
     */
    @JvmName("anpsdvghrkwuqhdo")
    public suspend fun postalCodes(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.postalCodes = mapped
    }

    /**
     * @param value The province of generated certificates
     */
    @JvmName("gwcfuqemwyjjvoys")
    public suspend fun provinces(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.provinces = mapped
    }

    /**
     * @param values The province of generated certificates
     */
    @JvmName("darunrwqywuyjfat")
    public suspend fun provinces(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.provinces = mapped
    }

    /**
     * @param value Flag to force CN usage
     */
    @JvmName("aaemxdfjdhrwrikw")
    public suspend fun requireCn(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.requireCn = mapped
    }

    /**
     * @param value Flag to specify certificates for server use
     */
    @JvmName("laahiwymmhpgppcd")
    public suspend fun serverFlag(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serverFlag = mapped
    }

    /**
     * @param value The street address of generated certificates
     */
    @JvmName("fbkmurlowjlxjklw")
    public suspend fun streetAddresses(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.streetAddresses = mapped
    }

    /**
     * @param values The street address of generated certificates
     */
    @JvmName("keeykljstiismjcl")
    public suspend fun streetAddresses(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.streetAddresses = mapped
    }

    /**
     * @param value The TTL, in seconds, for any certificate issued against this role.
     */
    @JvmName("pgjvouetwhrrakpd")
    public suspend fun ttl(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ttl = mapped
    }

    /**
     * @param value Flag to use the CN in the CSR
     */
    @JvmName("hreecnneoxpktipa")
    public suspend fun useCsrCommonName(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.useCsrCommonName = mapped
    }

    /**
     * @param value Flag to use the SANs in the CSR
     */
    @JvmName("slgsdnjupxhwkvee")
    public suspend fun useCsrSans(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.useCsrSans = mapped
    }

    internal fun build(): SecretBackendRoleArgs = SecretBackendRoleArgs(
        allowAnyName = allowAnyName,
        allowBareDomains = allowBareDomains,
        allowGlobDomains = allowGlobDomains,
        allowIpSans = allowIpSans,
        allowLocalhost = allowLocalhost,
        allowSubdomains = allowSubdomains,
        allowWildcardCertificates = allowWildcardCertificates,
        allowedDomains = allowedDomains,
        allowedDomainsTemplate = allowedDomainsTemplate,
        allowedOtherSans = allowedOtherSans,
        allowedSerialNumbers = allowedSerialNumbers,
        allowedUriSans = allowedUriSans,
        allowedUriSansTemplate = allowedUriSansTemplate,
        allowedUserIds = allowedUserIds,
        backend = backend,
        basicConstraintsValidForNonCa = basicConstraintsValidForNonCa,
        clientFlag = clientFlag,
        codeSigningFlag = codeSigningFlag,
        countries = countries,
        emailProtectionFlag = emailProtectionFlag,
        enforceHostnames = enforceHostnames,
        extKeyUsageOids = extKeyUsageOids,
        extKeyUsages = extKeyUsages,
        generateLease = generateLease,
        issuerRef = issuerRef,
        keyBits = keyBits,
        keyType = keyType,
        keyUsages = keyUsages,
        localities = localities,
        maxTtl = maxTtl,
        name = name,
        namespace = namespace,
        noStore = noStore,
        notBeforeDuration = notBeforeDuration,
        organizationUnit = organizationUnit,
        organizations = organizations,
        policyIdentifier = policyIdentifier,
        policyIdentifiers = policyIdentifiers,
        postalCodes = postalCodes,
        provinces = provinces,
        requireCn = requireCn,
        serverFlag = serverFlag,
        streetAddresses = streetAddresses,
        ttl = ttl,
        useCsrCommonName = useCsrCommonName,
        useCsrSans = useCsrSans,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy