# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = [
    'SecretBackendConnectionCassandraArgs',
    'SecretBackendConnectionCassandraArgsDict',
    'SecretBackendConnectionCouchbaseArgs',
    'SecretBackendConnectionCouchbaseArgsDict',
    'SecretBackendConnectionElasticsearchArgs',
    'SecretBackendConnectionElasticsearchArgsDict',
    'SecretBackendConnectionHanaArgs',
    'SecretBackendConnectionHanaArgsDict',
    'SecretBackendConnectionInfluxdbArgs',
    'SecretBackendConnectionInfluxdbArgsDict',
    'SecretBackendConnectionMongodbArgs',
    'SecretBackendConnectionMongodbArgsDict',
    'SecretBackendConnectionMongodbatlasArgs',
    'SecretBackendConnectionMongodbatlasArgsDict',
    'SecretBackendConnectionMssqlArgs',
    'SecretBackendConnectionMssqlArgsDict',
    'SecretBackendConnectionMysqlArgs',
    'SecretBackendConnectionMysqlArgsDict',
    'SecretBackendConnectionMysqlAuroraArgs',
    'SecretBackendConnectionMysqlAuroraArgsDict',
    'SecretBackendConnectionMysqlLegacyArgs',
    'SecretBackendConnectionMysqlLegacyArgsDict',
    'SecretBackendConnectionMysqlRdsArgs',
    'SecretBackendConnectionMysqlRdsArgsDict',
    'SecretBackendConnectionOracleArgs',
    'SecretBackendConnectionOracleArgsDict',
    'SecretBackendConnectionPostgresqlArgs',
    'SecretBackendConnectionPostgresqlArgsDict',
    'SecretBackendConnectionRedisArgs',
    'SecretBackendConnectionRedisArgsDict',
    'SecretBackendConnectionRedisElasticacheArgs',
    'SecretBackendConnectionRedisElasticacheArgsDict',
    'SecretBackendConnectionRedshiftArgs',
    'SecretBackendConnectionRedshiftArgsDict',
    'SecretBackendConnectionSnowflakeArgs',
    'SecretBackendConnectionSnowflakeArgsDict',
    'SecretsMountCassandraArgs',
    'SecretsMountCassandraArgsDict',
    'SecretsMountCouchbaseArgs',
    'SecretsMountCouchbaseArgsDict',
    'SecretsMountElasticsearchArgs',
    'SecretsMountElasticsearchArgsDict',
    'SecretsMountHanaArgs',
    'SecretsMountHanaArgsDict',
    'SecretsMountInfluxdbArgs',
    'SecretsMountInfluxdbArgsDict',
    'SecretsMountMongodbArgs',
    'SecretsMountMongodbArgsDict',
    'SecretsMountMongodbatlaArgs',
    'SecretsMountMongodbatlaArgsDict',
    'SecretsMountMssqlArgs',
    'SecretsMountMssqlArgsDict',
    'SecretsMountMysqlArgs',
    'SecretsMountMysqlArgsDict',
    'SecretsMountMysqlAuroraArgs',
    'SecretsMountMysqlAuroraArgsDict',
    'SecretsMountMysqlLegacyArgs',
    'SecretsMountMysqlLegacyArgsDict',
    'SecretsMountMysqlRdArgs',
    'SecretsMountMysqlRdArgsDict',
    'SecretsMountOracleArgs',
    'SecretsMountOracleArgsDict',
    'SecretsMountPostgresqlArgs',
    'SecretsMountPostgresqlArgsDict',
    'SecretsMountRediArgs',
    'SecretsMountRediArgsDict',
    'SecretsMountRedisElasticacheArgs',
    'SecretsMountRedisElasticacheArgsDict',
    'SecretsMountRedshiftArgs',
    'SecretsMountRedshiftArgsDict',
    'SecretsMountSnowflakeArgs',
    'SecretsMountSnowflakeArgsDict',
]

MYPY = False

if not MYPY:
    class SecretBackendConnectionCassandraArgsDict(TypedDict):
        connect_timeout: NotRequired[pulumi.Input[_builtins.int]]
        """
        The number of seconds to use as a connection timeout.
        """
        consistency: NotRequired[pulumi.Input[_builtins.str]]
        """
        Cassandra consistency level.
        """
        hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Cassandra hosts to connect to.
        """
        insecure_tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether to skip verification of the server certificate when using TLS.
        """
        local_datacenter: NotRequired[pulumi.Input[_builtins.str]]
        """
        Cassandra local datacenter name.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The password to use when authenticating with Cassandra.
        """
        pem_bundle: NotRequired[pulumi.Input[_builtins.str]]
        """
        Concatenated PEM blocks containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        pem_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        port: NotRequired[pulumi.Input[_builtins.int]]
        """
        The transport port to use to connect to Cassandra.
        """
        protocol_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        The CQL protocol version to use.
        """
        skip_verification: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Skip permissions checks when a connection to Cassandra is first created. These checks ensure that Vault is able to create roles, but can be resource intensive in clusters with many roles.
        """
        socket_keep_alive: NotRequired[pulumi.Input[_builtins.str]]
        """
        Enable TCP keepalive for Cassandra connections.
        """
        tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether to use TLS when connecting to Cassandra.
        """
        tls_server_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        SNI host for TLS connections.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The username to use when authenticating with Cassandra.
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Template for dynamic Cassandra usernames.
        """
elif False:
    SecretBackendConnectionCassandraArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionCassandraArgs:
    def __init__(__self__, *,
                 connect_timeout: Optional[pulumi.Input[_builtins.int]] = None,
                 consistency: Optional[pulumi.Input[_builtins.str]] = None,
                 hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 insecure_tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 local_datacenter: Optional[pulumi.Input[_builtins.str]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 pem_bundle: Optional[pulumi.Input[_builtins.str]] = None,
                 pem_json: Optional[pulumi.Input[_builtins.str]] = None,
                 port: Optional[pulumi.Input[_builtins.int]] = None,
                 protocol_version: Optional[pulumi.Input[_builtins.int]] = None,
                 skip_verification: Optional[pulumi.Input[_builtins.bool]] = None,
                 socket_keep_alive: Optional[pulumi.Input[_builtins.str]] = None,
                 tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 tls_server_name: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.int] connect_timeout: The number of seconds to use as a connection timeout.
        :param pulumi.Input[_builtins.str] consistency: Cassandra consistency level.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] hosts: Cassandra hosts to connect to.
        :param pulumi.Input[_builtins.bool] insecure_tls: Whether to skip verification of the server certificate when using TLS.
        :param pulumi.Input[_builtins.str] local_datacenter: Cassandra local datacenter name.
        :param pulumi.Input[_builtins.str] password: The password to use when authenticating with Cassandra.
        :param pulumi.Input[_builtins.str] pem_bundle: Concatenated PEM blocks containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        :param pulumi.Input[_builtins.str] pem_json: Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        :param pulumi.Input[_builtins.int] port: The transport port to use to connect to Cassandra.
        :param pulumi.Input[_builtins.int] protocol_version: The CQL protocol version to use.
        :param pulumi.Input[_builtins.bool] skip_verification: Skip permissions checks when a connection to Cassandra is first created. These checks ensure that Vault is able to create roles, but can be resource intensive in clusters with many roles.
        :param pulumi.Input[_builtins.str] socket_keep_alive: Enable TCP keepalive for Cassandra connections.
        :param pulumi.Input[_builtins.bool] tls: Whether to use TLS when connecting to Cassandra.
        :param pulumi.Input[_builtins.str] tls_server_name: SNI host for TLS connections.
        :param pulumi.Input[_builtins.str] username: The username to use when authenticating with Cassandra.
        :param pulumi.Input[_builtins.str] username_template: Template for dynamic Cassandra usernames.
        """
        if connect_timeout is not None:
            pulumi.set(__self__, "connect_timeout", connect_timeout)
        if consistency is not None:
            pulumi.set(__self__, "consistency", consistency)
        if hosts is not None:
            pulumi.set(__self__, "hosts", hosts)
        if insecure_tls is not None:
            pulumi.set(__self__, "insecure_tls", insecure_tls)
        if local_datacenter is not None:
            pulumi.set(__self__, "local_datacenter", local_datacenter)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if pem_bundle is not None:
            pulumi.set(__self__, "pem_bundle", pem_bundle)
        if pem_json is not None:
            pulumi.set(__self__, "pem_json", pem_json)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if protocol_version is not None:
            pulumi.set(__self__, "protocol_version", protocol_version)
        if skip_verification is not None:
            pulumi.set(__self__, "skip_verification", skip_verification)
        if socket_keep_alive is not None:
            pulumi.set(__self__, "socket_keep_alive", socket_keep_alive)
        if tls is not None:
            pulumi.set(__self__, "tls", tls)
        if tls_server_name is not None:
            pulumi.set(__self__, "tls_server_name", tls_server_name)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter(name="connectTimeout")
    def connect_timeout(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The number of seconds to use as a connection timeout.
        """
        return pulumi.get(self, "connect_timeout")

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

    @_builtins.property
    @pulumi.getter
    def consistency(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Cassandra consistency level.
        """
        return pulumi.get(self, "consistency")

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

    @_builtins.property
    @pulumi.getter
    def hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Cassandra hosts to connect to.
        """
        return pulumi.get(self, "hosts")

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

    @_builtins.property
    @pulumi.getter(name="insecureTls")
    def insecure_tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether to skip verification of the server certificate when using TLS.
        """
        return pulumi.get(self, "insecure_tls")

    @insecure_tls.setter
    def insecure_tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "insecure_tls", value)

    @_builtins.property
    @pulumi.getter(name="localDatacenter")
    def local_datacenter(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Cassandra local datacenter name.
        """
        return pulumi.get(self, "local_datacenter")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The password to use when authenticating with Cassandra.
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="pemBundle")
    def pem_bundle(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Concatenated PEM blocks containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        return pulumi.get(self, "pem_bundle")

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

    @_builtins.property
    @pulumi.getter(name="pemJson")
    def pem_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        return pulumi.get(self, "pem_json")

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

    @_builtins.property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The transport port to use to connect to Cassandra.
        """
        return pulumi.get(self, "port")

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

    @_builtins.property
    @pulumi.getter(name="protocolVersion")
    def protocol_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The CQL protocol version to use.
        """
        return pulumi.get(self, "protocol_version")

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

    @_builtins.property
    @pulumi.getter(name="skipVerification")
    def skip_verification(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Skip permissions checks when a connection to Cassandra is first created. These checks ensure that Vault is able to create roles, but can be resource intensive in clusters with many roles.
        """
        return pulumi.get(self, "skip_verification")

    @skip_verification.setter
    def skip_verification(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "skip_verification", value)

    @_builtins.property
    @pulumi.getter(name="socketKeepAlive")
    def socket_keep_alive(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Enable TCP keepalive for Cassandra connections.
        """
        return pulumi.get(self, "socket_keep_alive")

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

    @_builtins.property
    @pulumi.getter
    def tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether to use TLS when connecting to Cassandra.
        """
        return pulumi.get(self, "tls")

    @tls.setter
    def tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "tls", value)

    @_builtins.property
    @pulumi.getter(name="tlsServerName")
    def tls_server_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        SNI host for TLS connections.
        """
        return pulumi.get(self, "tls_server_name")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The username to use when authenticating with Cassandra.
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Template for dynamic Cassandra usernames.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionCouchbaseArgsDict(TypedDict):
        hosts: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]
        """
        A set of Couchbase URIs to connect to. Must use `couchbases://` scheme if `tls` is `true`.
        """
        password: pulumi.Input[_builtins.str]
        """
        Specifies the password corresponding to the given username.
        """
        username: pulumi.Input[_builtins.str]
        """
        Specifies the username for Vault to use.
        """
        base64_pem: NotRequired[pulumi.Input[_builtins.str]]
        """
        Required if `tls` is `true`. Specifies the certificate authority of the Couchbase server, as a PEM certificate that has been base64 encoded.
        """
        bucket_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Required for Couchbase versions prior to 6.5.0. This is only used to verify vault's connection to the server.
        """
        insecure_tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Specifies whether to skip verification of the server certificate when using TLS.
        """
        tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Specifies whether to use TLS when connecting to Couchbase.
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Template describing how dynamic usernames are generated.
        """
elif False:
    SecretBackendConnectionCouchbaseArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionCouchbaseArgs:
    def __init__(__self__, *,
                 hosts: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]],
                 password: pulumi.Input[_builtins.str],
                 username: pulumi.Input[_builtins.str],
                 base64_pem: Optional[pulumi.Input[_builtins.str]] = None,
                 bucket_name: Optional[pulumi.Input[_builtins.str]] = None,
                 insecure_tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] hosts: A set of Couchbase URIs to connect to. Must use `couchbases://` scheme if `tls` is `true`.
        :param pulumi.Input[_builtins.str] password: Specifies the password corresponding to the given username.
        :param pulumi.Input[_builtins.str] username: Specifies the username for Vault to use.
        :param pulumi.Input[_builtins.str] base64_pem: Required if `tls` is `true`. Specifies the certificate authority of the Couchbase server, as a PEM certificate that has been base64 encoded.
        :param pulumi.Input[_builtins.str] bucket_name: Required for Couchbase versions prior to 6.5.0. This is only used to verify vault's connection to the server.
        :param pulumi.Input[_builtins.bool] insecure_tls: Specifies whether to skip verification of the server certificate when using TLS.
        :param pulumi.Input[_builtins.bool] tls: Specifies whether to use TLS when connecting to Couchbase.
        :param pulumi.Input[_builtins.str] username_template: Template describing how dynamic usernames are generated.
        """
        pulumi.set(__self__, "hosts", hosts)
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)
        if base64_pem is not None:
            pulumi.set(__self__, "base64_pem", base64_pem)
        if bucket_name is not None:
            pulumi.set(__self__, "bucket_name", bucket_name)
        if insecure_tls is not None:
            pulumi.set(__self__, "insecure_tls", insecure_tls)
        if tls is not None:
            pulumi.set(__self__, "tls", tls)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter
    def hosts(self) -> pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]:
        """
        A set of Couchbase URIs to connect to. Must use `couchbases://` scheme if `tls` is `true`.
        """
        return pulumi.get(self, "hosts")

    @hosts.setter
    def hosts(self, value: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]):
        pulumi.set(self, "hosts", value)

    @_builtins.property
    @pulumi.getter
    def password(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the password corresponding to the given username.
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the username for Vault to use.
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="base64Pem")
    def base64_pem(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Required if `tls` is `true`. Specifies the certificate authority of the Couchbase server, as a PEM certificate that has been base64 encoded.
        """
        return pulumi.get(self, "base64_pem")

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

    @_builtins.property
    @pulumi.getter(name="bucketName")
    def bucket_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Required for Couchbase versions prior to 6.5.0. This is only used to verify vault's connection to the server.
        """
        return pulumi.get(self, "bucket_name")

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

    @_builtins.property
    @pulumi.getter(name="insecureTls")
    def insecure_tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether to skip verification of the server certificate when using TLS.
        """
        return pulumi.get(self, "insecure_tls")

    @insecure_tls.setter
    def insecure_tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "insecure_tls", value)

    @_builtins.property
    @pulumi.getter
    def tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether to use TLS when connecting to Couchbase.
        """
        return pulumi.get(self, "tls")

    @tls.setter
    def tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "tls", value)

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Template describing how dynamic usernames are generated.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionElasticsearchArgsDict(TypedDict):
        password: pulumi.Input[_builtins.str]
        """
        The password to be used in the connection URL
        """
        url: pulumi.Input[_builtins.str]
        """
        The URL for Elasticsearch's API
        """
        username: pulumi.Input[_builtins.str]
        """
        The username to be used in the connection URL
        """
        ca_cert: NotRequired[pulumi.Input[_builtins.str]]
        """
        The path to a PEM-encoded CA cert file to use to verify the Elasticsearch server's identity
        """
        ca_path: NotRequired[pulumi.Input[_builtins.str]]
        """
        The path to a directory of PEM-encoded CA cert files to use to verify the Elasticsearch server's identity
        """
        client_cert: NotRequired[pulumi.Input[_builtins.str]]
        """
        The path to the certificate for the Elasticsearch client to present for communication
        """
        client_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        The path to the key for the Elasticsearch client to use for communication
        """
        insecure: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether to disable certificate verification
        """
        tls_server_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        This, if set, is used to set the SNI host when connecting via TLS
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Template describing how dynamic usernames are generated.
        """
elif False:
    SecretBackendConnectionElasticsearchArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionElasticsearchArgs:
    def __init__(__self__, *,
                 password: pulumi.Input[_builtins.str],
                 url: pulumi.Input[_builtins.str],
                 username: pulumi.Input[_builtins.str],
                 ca_cert: Optional[pulumi.Input[_builtins.str]] = None,
                 ca_path: Optional[pulumi.Input[_builtins.str]] = None,
                 client_cert: Optional[pulumi.Input[_builtins.str]] = None,
                 client_key: Optional[pulumi.Input[_builtins.str]] = None,
                 insecure: Optional[pulumi.Input[_builtins.bool]] = None,
                 tls_server_name: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] password: The password to be used in the connection URL
        :param pulumi.Input[_builtins.str] url: The URL for Elasticsearch's API
        :param pulumi.Input[_builtins.str] username: The username to be used in the connection URL
        :param pulumi.Input[_builtins.str] ca_cert: The path to a PEM-encoded CA cert file to use to verify the Elasticsearch server's identity
        :param pulumi.Input[_builtins.str] ca_path: The path to a directory of PEM-encoded CA cert files to use to verify the Elasticsearch server's identity
        :param pulumi.Input[_builtins.str] client_cert: The path to the certificate for the Elasticsearch client to present for communication
        :param pulumi.Input[_builtins.str] client_key: The path to the key for the Elasticsearch client to use for communication
        :param pulumi.Input[_builtins.bool] insecure: Whether to disable certificate verification
        :param pulumi.Input[_builtins.str] tls_server_name: This, if set, is used to set the SNI host when connecting via TLS
        :param pulumi.Input[_builtins.str] username_template: Template describing how dynamic usernames are generated.
        """
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "url", url)
        pulumi.set(__self__, "username", username)
        if ca_cert is not None:
            pulumi.set(__self__, "ca_cert", ca_cert)
        if ca_path is not None:
            pulumi.set(__self__, "ca_path", ca_path)
        if client_cert is not None:
            pulumi.set(__self__, "client_cert", client_cert)
        if client_key is not None:
            pulumi.set(__self__, "client_key", client_key)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if tls_server_name is not None:
            pulumi.set(__self__, "tls_server_name", tls_server_name)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter
    def password(self) -> pulumi.Input[_builtins.str]:
        """
        The password to be used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter
    def url(self) -> pulumi.Input[_builtins.str]:
        """
        The URL for Elasticsearch's API
        """
        return pulumi.get(self, "url")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> pulumi.Input[_builtins.str]:
        """
        The username to be used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="caCert")
    def ca_cert(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The path to a PEM-encoded CA cert file to use to verify the Elasticsearch server's identity
        """
        return pulumi.get(self, "ca_cert")

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

    @_builtins.property
    @pulumi.getter(name="caPath")
    def ca_path(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The path to a directory of PEM-encoded CA cert files to use to verify the Elasticsearch server's identity
        """
        return pulumi.get(self, "ca_path")

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

    @_builtins.property
    @pulumi.getter(name="clientCert")
    def client_cert(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The path to the certificate for the Elasticsearch client to present for communication
        """
        return pulumi.get(self, "client_cert")

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

    @_builtins.property
    @pulumi.getter(name="clientKey")
    def client_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The path to the key for the Elasticsearch client to use for communication
        """
        return pulumi.get(self, "client_key")

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

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether to disable certificate verification
        """
        return pulumi.get(self, "insecure")

    @insecure.setter
    def insecure(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "insecure", value)

    @_builtins.property
    @pulumi.getter(name="tlsServerName")
    def tls_server_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        This, if set, is used to set the SNI host when connecting via TLS
        """
        return pulumi.get(self, "tls_server_name")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Template describing how dynamic usernames are generated.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionHanaArgsDict(TypedDict):
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        disable_escaping: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Disable special character escaping in username and password
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
elif False:
    SecretBackendConnectionHanaArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionHanaArgs:
    def __init__(__self__, *,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 disable_escaping: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[_builtins.bool] disable_escaping: Disable special character escaping in username and password
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        """
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if disable_escaping is not None:
            pulumi.set(__self__, "disable_escaping", disable_escaping)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter(name="disableEscaping")
    def disable_escaping(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Disable special character escaping in username and password
        """
        return pulumi.get(self, "disable_escaping")

    @disable_escaping.setter
    def disable_escaping(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_escaping", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionInfluxdbArgsDict(TypedDict):
        host: pulumi.Input[_builtins.str]
        """
        Influxdb host to connect to.
        """
        password: pulumi.Input[_builtins.str]
        """
        Specifies the password corresponding to the given username.
        """
        username: pulumi.Input[_builtins.str]
        """
        Specifies the username to use for superuser access.
        """
        connect_timeout: NotRequired[pulumi.Input[_builtins.int]]
        """
        The number of seconds to use as a connection timeout.
        """
        insecure_tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether to skip verification of the server certificate when using TLS.
        """
        pem_bundle: NotRequired[pulumi.Input[_builtins.str]]
        """
        Concatenated PEM blocks containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        pem_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        port: NotRequired[pulumi.Input[_builtins.int]]
        """
        The transport port to use to connect to Influxdb.
        """
        tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether to use TLS when connecting to Influxdb.
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Template describing how dynamic usernames are generated.
        """
elif False:
    SecretBackendConnectionInfluxdbArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionInfluxdbArgs:
    def __init__(__self__, *,
                 host: pulumi.Input[_builtins.str],
                 password: pulumi.Input[_builtins.str],
                 username: pulumi.Input[_builtins.str],
                 connect_timeout: Optional[pulumi.Input[_builtins.int]] = None,
                 insecure_tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 pem_bundle: Optional[pulumi.Input[_builtins.str]] = None,
                 pem_json: Optional[pulumi.Input[_builtins.str]] = None,
                 port: Optional[pulumi.Input[_builtins.int]] = None,
                 tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] host: Influxdb host to connect to.
        :param pulumi.Input[_builtins.str] password: Specifies the password corresponding to the given username.
        :param pulumi.Input[_builtins.str] username: Specifies the username to use for superuser access.
        :param pulumi.Input[_builtins.int] connect_timeout: The number of seconds to use as a connection timeout.
        :param pulumi.Input[_builtins.bool] insecure_tls: Whether to skip verification of the server certificate when using TLS.
        :param pulumi.Input[_builtins.str] pem_bundle: Concatenated PEM blocks containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        :param pulumi.Input[_builtins.str] pem_json: Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        :param pulumi.Input[_builtins.int] port: The transport port to use to connect to Influxdb.
        :param pulumi.Input[_builtins.bool] tls: Whether to use TLS when connecting to Influxdb.
        :param pulumi.Input[_builtins.str] username_template: Template describing how dynamic usernames are generated.
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)
        if connect_timeout is not None:
            pulumi.set(__self__, "connect_timeout", connect_timeout)
        if insecure_tls is not None:
            pulumi.set(__self__, "insecure_tls", insecure_tls)
        if pem_bundle is not None:
            pulumi.set(__self__, "pem_bundle", pem_bundle)
        if pem_json is not None:
            pulumi.set(__self__, "pem_json", pem_json)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if tls is not None:
            pulumi.set(__self__, "tls", tls)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter
    def host(self) -> pulumi.Input[_builtins.str]:
        """
        Influxdb host to connect to.
        """
        return pulumi.get(self, "host")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the password corresponding to the given username.
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the username to use for superuser access.
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="connectTimeout")
    def connect_timeout(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The number of seconds to use as a connection timeout.
        """
        return pulumi.get(self, "connect_timeout")

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

    @_builtins.property
    @pulumi.getter(name="insecureTls")
    def insecure_tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether to skip verification of the server certificate when using TLS.
        """
        return pulumi.get(self, "insecure_tls")

    @insecure_tls.setter
    def insecure_tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "insecure_tls", value)

    @_builtins.property
    @pulumi.getter(name="pemBundle")
    def pem_bundle(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Concatenated PEM blocks containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        return pulumi.get(self, "pem_bundle")

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

    @_builtins.property
    @pulumi.getter(name="pemJson")
    def pem_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        return pulumi.get(self, "pem_json")

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

    @_builtins.property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The transport port to use to connect to Influxdb.
        """
        return pulumi.get(self, "port")

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

    @_builtins.property
    @pulumi.getter
    def tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether to use TLS when connecting to Influxdb.
        """
        return pulumi.get(self, "tls")

    @tls.setter
    def tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "tls", value)

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Template describing how dynamic usernames are generated.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionMongodbArgsDict(TypedDict):
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        tls_ca: NotRequired[pulumi.Input[_builtins.str]]
        """
        The x509 CA file for validating the certificate presented by the MongoDB server. Must be PEM encoded.
        """
        tls_certificate_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        The x509 certificate and private key bundle for connecting to the database. Must be PEM encoded.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
        write_concern: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the MongoDB write concern for Vault management operations.
        """
elif False:
    SecretBackendConnectionMongodbArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionMongodbArgs:
    def __init__(__self__, *,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 tls_ca: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_certificate_key: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 write_concern: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] tls_ca: The x509 CA file for validating the certificate presented by the MongoDB server. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] tls_certificate_key: The x509 certificate and private key bundle for connecting to the database. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        :param pulumi.Input[_builtins.str] write_concern: Specifies the MongoDB write concern for Vault management operations.
        """
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if tls_ca is not None:
            pulumi.set(__self__, "tls_ca", tls_ca)
        if tls_certificate_key is not None:
            pulumi.set(__self__, "tls_certificate_key", tls_certificate_key)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if write_concern is not None:
            pulumi.set(__self__, "write_concern", write_concern)

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="tlsCa")
    def tls_ca(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The x509 CA file for validating the certificate presented by the MongoDB server. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_ca")

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

    @_builtins.property
    @pulumi.getter(name="tlsCertificateKey")
    def tls_certificate_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The x509 certificate and private key bundle for connecting to the database. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_certificate_key")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="writeConcern")
    def write_concern(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the MongoDB write concern for Vault management operations.
        """
        return pulumi.get(self, "write_concern")

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


if not MYPY:
    class SecretBackendConnectionMongodbatlasArgsDict(TypedDict):
        private_key: pulumi.Input[_builtins.str]
        """
        The Private Programmatic API Key used to connect with MongoDB Atlas API.
        """
        project_id: pulumi.Input[_builtins.str]
        """
        The Project ID the Database User should be created within.
        """
        public_key: pulumi.Input[_builtins.str]
        """
        The Public Programmatic API Key used to authenticate with the MongoDB Atlas API.
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Template describing how dynamic usernames are generated.
        """
elif False:
    SecretBackendConnectionMongodbatlasArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionMongodbatlasArgs:
    def __init__(__self__, *,
                 private_key: pulumi.Input[_builtins.str],
                 project_id: pulumi.Input[_builtins.str],
                 public_key: pulumi.Input[_builtins.str],
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] private_key: The Private Programmatic API Key used to connect with MongoDB Atlas API.
        :param pulumi.Input[_builtins.str] project_id: The Project ID the Database User should be created within.
        :param pulumi.Input[_builtins.str] public_key: The Public Programmatic API Key used to authenticate with the MongoDB Atlas API.
        :param pulumi.Input[_builtins.str] username_template: Template describing how dynamic usernames are generated.
        """
        pulumi.set(__self__, "private_key", private_key)
        pulumi.set(__self__, "project_id", project_id)
        pulumi.set(__self__, "public_key", public_key)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter(name="privateKey")
    def private_key(self) -> pulumi.Input[_builtins.str]:
        """
        The Private Programmatic API Key used to connect with MongoDB Atlas API.
        """
        return pulumi.get(self, "private_key")

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

    @_builtins.property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Input[_builtins.str]:
        """
        The Project ID the Database User should be created within.
        """
        return pulumi.get(self, "project_id")

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

    @_builtins.property
    @pulumi.getter(name="publicKey")
    def public_key(self) -> pulumi.Input[_builtins.str]:
        """
        The Public Programmatic API Key used to authenticate with the MongoDB Atlas API.
        """
        return pulumi.get(self, "public_key")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Template describing how dynamic usernames are generated.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionMssqlArgsDict(TypedDict):
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        contained_db: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Set to true when the target is a Contained Database, e.g. AzureSQL.
        """
        disable_escaping: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Disable special character escaping in username and password
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
elif False:
    SecretBackendConnectionMssqlArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionMssqlArgs:
    def __init__(__self__, *,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 contained_db: Optional[pulumi.Input[_builtins.bool]] = None,
                 disable_escaping: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[_builtins.bool] contained_db: Set to true when the target is a Contained Database, e.g. AzureSQL.
        :param pulumi.Input[_builtins.bool] disable_escaping: Disable special character escaping in username and password
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        """
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if contained_db is not None:
            pulumi.set(__self__, "contained_db", contained_db)
        if disable_escaping is not None:
            pulumi.set(__self__, "disable_escaping", disable_escaping)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter(name="containedDb")
    def contained_db(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Set to true when the target is a Contained Database, e.g. AzureSQL.
        """
        return pulumi.get(self, "contained_db")

    @contained_db.setter
    def contained_db(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "contained_db", value)

    @_builtins.property
    @pulumi.getter(name="disableEscaping")
    def disable_escaping(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Disable special character escaping in username and password
        """
        return pulumi.get(self, "disable_escaping")

    @disable_escaping.setter
    def disable_escaping(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_escaping", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionMysqlArgsDict(TypedDict):
        auth_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        service_account_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        A JSON encoded credential for use with IAM authorization
        """
        tls_ca: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        tls_certificate_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
elif False:
    SecretBackendConnectionMysqlArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionMysqlArgs:
    def __init__(__self__, *,
                 auth_type: Optional[pulumi.Input[_builtins.str]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 service_account_json: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_ca: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_certificate_key: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] auth_type: Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] service_account_json: A JSON encoded credential for use with IAM authorization
        :param pulumi.Input[_builtins.str] tls_ca: x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] tls_certificate_key: x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        """
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if service_account_json is not None:
            pulumi.set(__self__, "service_account_json", service_account_json)
        if tls_ca is not None:
            pulumi.set(__self__, "tls_ca", tls_ca)
        if tls_certificate_key is not None:
            pulumi.set(__self__, "tls_certificate_key", tls_certificate_key)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        return pulumi.get(self, "auth_type")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="serviceAccountJson")
    def service_account_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A JSON encoded credential for use with IAM authorization
        """
        return pulumi.get(self, "service_account_json")

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

    @_builtins.property
    @pulumi.getter(name="tlsCa")
    def tls_ca(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_ca")

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

    @_builtins.property
    @pulumi.getter(name="tlsCertificateKey")
    def tls_certificate_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        return pulumi.get(self, "tls_certificate_key")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionMysqlAuroraArgsDict(TypedDict):
        auth_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        service_account_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        A JSON encoded credential for use with IAM authorization
        """
        tls_ca: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        tls_certificate_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
elif False:
    SecretBackendConnectionMysqlAuroraArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionMysqlAuroraArgs:
    def __init__(__self__, *,
                 auth_type: Optional[pulumi.Input[_builtins.str]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 service_account_json: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_ca: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_certificate_key: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] auth_type: Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] service_account_json: A JSON encoded credential for use with IAM authorization
        :param pulumi.Input[_builtins.str] tls_ca: x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] tls_certificate_key: x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        """
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if service_account_json is not None:
            pulumi.set(__self__, "service_account_json", service_account_json)
        if tls_ca is not None:
            pulumi.set(__self__, "tls_ca", tls_ca)
        if tls_certificate_key is not None:
            pulumi.set(__self__, "tls_certificate_key", tls_certificate_key)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        return pulumi.get(self, "auth_type")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="serviceAccountJson")
    def service_account_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A JSON encoded credential for use with IAM authorization
        """
        return pulumi.get(self, "service_account_json")

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

    @_builtins.property
    @pulumi.getter(name="tlsCa")
    def tls_ca(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_ca")

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

    @_builtins.property
    @pulumi.getter(name="tlsCertificateKey")
    def tls_certificate_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        return pulumi.get(self, "tls_certificate_key")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionMysqlLegacyArgsDict(TypedDict):
        auth_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        service_account_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        A JSON encoded credential for use with IAM authorization
        """
        tls_ca: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        tls_certificate_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
elif False:
    SecretBackendConnectionMysqlLegacyArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionMysqlLegacyArgs:
    def __init__(__self__, *,
                 auth_type: Optional[pulumi.Input[_builtins.str]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 service_account_json: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_ca: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_certificate_key: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] auth_type: Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] service_account_json: A JSON encoded credential for use with IAM authorization
        :param pulumi.Input[_builtins.str] tls_ca: x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] tls_certificate_key: x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        """
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if service_account_json is not None:
            pulumi.set(__self__, "service_account_json", service_account_json)
        if tls_ca is not None:
            pulumi.set(__self__, "tls_ca", tls_ca)
        if tls_certificate_key is not None:
            pulumi.set(__self__, "tls_certificate_key", tls_certificate_key)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        return pulumi.get(self, "auth_type")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="serviceAccountJson")
    def service_account_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A JSON encoded credential for use with IAM authorization
        """
        return pulumi.get(self, "service_account_json")

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

    @_builtins.property
    @pulumi.getter(name="tlsCa")
    def tls_ca(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_ca")

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

    @_builtins.property
    @pulumi.getter(name="tlsCertificateKey")
    def tls_certificate_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        return pulumi.get(self, "tls_certificate_key")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionMysqlRdsArgsDict(TypedDict):
        auth_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        service_account_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        A JSON encoded credential for use with IAM authorization
        """
        tls_ca: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        tls_certificate_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
elif False:
    SecretBackendConnectionMysqlRdsArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionMysqlRdsArgs:
    def __init__(__self__, *,
                 auth_type: Optional[pulumi.Input[_builtins.str]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 service_account_json: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_ca: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_certificate_key: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] auth_type: Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] service_account_json: A JSON encoded credential for use with IAM authorization
        :param pulumi.Input[_builtins.str] tls_ca: x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] tls_certificate_key: x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        """
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if service_account_json is not None:
            pulumi.set(__self__, "service_account_json", service_account_json)
        if tls_ca is not None:
            pulumi.set(__self__, "tls_ca", tls_ca)
        if tls_certificate_key is not None:
            pulumi.set(__self__, "tls_certificate_key", tls_certificate_key)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        return pulumi.get(self, "auth_type")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="serviceAccountJson")
    def service_account_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A JSON encoded credential for use with IAM authorization
        """
        return pulumi.get(self, "service_account_json")

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

    @_builtins.property
    @pulumi.getter(name="tlsCa")
    def tls_ca(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_ca")

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

    @_builtins.property
    @pulumi.getter(name="tlsCertificateKey")
    def tls_certificate_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        return pulumi.get(self, "tls_certificate_key")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionOracleArgsDict(TypedDict):
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        disconnect_sessions: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Set to true to disconnect any open sessions prior to running the revocation statements.
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        self_managed: NotRequired[pulumi.Input[_builtins.bool]]
        """
        If set, allows onboarding static roles with a rootless connection configuration.
        """
        split_statements: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Set to true in order to split statements after semi-colons.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
elif False:
    SecretBackendConnectionOracleArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionOracleArgs:
    def __init__(__self__, *,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 disconnect_sessions: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 self_managed: Optional[pulumi.Input[_builtins.bool]] = None,
                 split_statements: Optional[pulumi.Input[_builtins.bool]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[_builtins.bool] disconnect_sessions: Set to true to disconnect any open sessions prior to running the revocation statements.
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.bool] self_managed: If set, allows onboarding static roles with a rootless connection configuration.
        :param pulumi.Input[_builtins.bool] split_statements: Set to true in order to split statements after semi-colons.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        """
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if disconnect_sessions is not None:
            pulumi.set(__self__, "disconnect_sessions", disconnect_sessions)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if self_managed is not None:
            pulumi.set(__self__, "self_managed", self_managed)
        if split_statements is not None:
            pulumi.set(__self__, "split_statements", split_statements)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter(name="disconnectSessions")
    def disconnect_sessions(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Set to true to disconnect any open sessions prior to running the revocation statements.
        """
        return pulumi.get(self, "disconnect_sessions")

    @disconnect_sessions.setter
    def disconnect_sessions(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disconnect_sessions", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="selfManaged")
    def self_managed(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        If set, allows onboarding static roles with a rootless connection configuration.
        """
        return pulumi.get(self, "self_managed")

    @self_managed.setter
    def self_managed(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "self_managed", value)

    @_builtins.property
    @pulumi.getter(name="splitStatements")
    def split_statements(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Set to true in order to split statements after semi-colons.
        """
        return pulumi.get(self, "split_statements")

    @split_statements.setter
    def split_statements(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "split_statements", value)

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionPostgresqlArgsDict(TypedDict):
        auth_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        disable_escaping: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Disable special character escaping in username and password
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_authentication: NotRequired[pulumi.Input[_builtins.str]]
        """
        When set to `scram-sha-256`, passwords will be hashed by Vault before being sent to PostgreSQL.
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        private_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        The secret key used for the x509 client certificate. Must be PEM encoded.
        """
        self_managed: NotRequired[pulumi.Input[_builtins.bool]]
        """
        If set, allows onboarding static roles with a rootless connection configuration.
        """
        service_account_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        A JSON encoded credential for use with IAM authorization
        """
        tls_ca: NotRequired[pulumi.Input[_builtins.str]]
        """
        The x509 CA file for validating the certificate presented by the PostgreSQL server. Must be PEM encoded.
        """
        tls_certificate: NotRequired[pulumi.Input[_builtins.str]]
        """
        The x509 client certificate for connecting to the database. Must be PEM encoded.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
elif False:
    SecretBackendConnectionPostgresqlArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionPostgresqlArgs:
    def __init__(__self__, *,
                 auth_type: Optional[pulumi.Input[_builtins.str]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 disable_escaping: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_authentication: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 private_key: Optional[pulumi.Input[_builtins.str]] = None,
                 self_managed: Optional[pulumi.Input[_builtins.bool]] = None,
                 service_account_json: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_ca: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_certificate: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] auth_type: Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[_builtins.bool] disable_escaping: Disable special character escaping in username and password
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_authentication: When set to `scram-sha-256`, passwords will be hashed by Vault before being sent to PostgreSQL.
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] private_key: The secret key used for the x509 client certificate. Must be PEM encoded.
        :param pulumi.Input[_builtins.bool] self_managed: If set, allows onboarding static roles with a rootless connection configuration.
        :param pulumi.Input[_builtins.str] service_account_json: A JSON encoded credential for use with IAM authorization
        :param pulumi.Input[_builtins.str] tls_ca: The x509 CA file for validating the certificate presented by the PostgreSQL server. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] tls_certificate: The x509 client certificate for connecting to the database. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        """
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if disable_escaping is not None:
            pulumi.set(__self__, "disable_escaping", disable_escaping)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_authentication is not None:
            pulumi.set(__self__, "password_authentication", password_authentication)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if private_key is not None:
            pulumi.set(__self__, "private_key", private_key)
        if self_managed is not None:
            pulumi.set(__self__, "self_managed", self_managed)
        if service_account_json is not None:
            pulumi.set(__self__, "service_account_json", service_account_json)
        if tls_ca is not None:
            pulumi.set(__self__, "tls_ca", tls_ca)
        if tls_certificate is not None:
            pulumi.set(__self__, "tls_certificate", tls_certificate)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        return pulumi.get(self, "auth_type")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter(name="disableEscaping")
    def disable_escaping(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Disable special character escaping in username and password
        """
        return pulumi.get(self, "disable_escaping")

    @disable_escaping.setter
    def disable_escaping(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_escaping", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordAuthentication")
    def password_authentication(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        When set to `scram-sha-256`, passwords will be hashed by Vault before being sent to PostgreSQL.
        """
        return pulumi.get(self, "password_authentication")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="privateKey")
    def private_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The secret key used for the x509 client certificate. Must be PEM encoded.
        """
        return pulumi.get(self, "private_key")

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

    @_builtins.property
    @pulumi.getter(name="selfManaged")
    def self_managed(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        If set, allows onboarding static roles with a rootless connection configuration.
        """
        return pulumi.get(self, "self_managed")

    @self_managed.setter
    def self_managed(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "self_managed", value)

    @_builtins.property
    @pulumi.getter(name="serviceAccountJson")
    def service_account_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A JSON encoded credential for use with IAM authorization
        """
        return pulumi.get(self, "service_account_json")

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

    @_builtins.property
    @pulumi.getter(name="tlsCa")
    def tls_ca(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The x509 CA file for validating the certificate presented by the PostgreSQL server. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_ca")

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

    @_builtins.property
    @pulumi.getter(name="tlsCertificate")
    def tls_certificate(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The x509 client certificate for connecting to the database. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_certificate")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionRedisArgsDict(TypedDict):
        host: pulumi.Input[_builtins.str]
        """
        Specifies the host to connect to
        """
        password: pulumi.Input[_builtins.str]
        """
        Specifies the password corresponding to the given username.
        """
        username: pulumi.Input[_builtins.str]
        """
        Specifies the username for Vault to use.
        """
        ca_cert: NotRequired[pulumi.Input[_builtins.str]]
        """
        The contents of a PEM-encoded CA cert file to use to verify the Redis server's identity.
        """
        insecure_tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Specifies whether to skip verification of the server certificate when using TLS.
        """
        port: NotRequired[pulumi.Input[_builtins.int]]
        """
        The transport port to use to connect to Redis.
        """
        tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Specifies whether to use TLS when connecting to Redis.
        """
elif False:
    SecretBackendConnectionRedisArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionRedisArgs:
    def __init__(__self__, *,
                 host: pulumi.Input[_builtins.str],
                 password: pulumi.Input[_builtins.str],
                 username: pulumi.Input[_builtins.str],
                 ca_cert: Optional[pulumi.Input[_builtins.str]] = None,
                 insecure_tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 port: Optional[pulumi.Input[_builtins.int]] = None,
                 tls: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] host: Specifies the host to connect to
        :param pulumi.Input[_builtins.str] password: Specifies the password corresponding to the given username.
        :param pulumi.Input[_builtins.str] username: Specifies the username for Vault to use.
        :param pulumi.Input[_builtins.str] ca_cert: The contents of a PEM-encoded CA cert file to use to verify the Redis server's identity.
        :param pulumi.Input[_builtins.bool] insecure_tls: Specifies whether to skip verification of the server certificate when using TLS.
        :param pulumi.Input[_builtins.int] port: The transport port to use to connect to Redis.
        :param pulumi.Input[_builtins.bool] tls: Specifies whether to use TLS when connecting to Redis.
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)
        if ca_cert is not None:
            pulumi.set(__self__, "ca_cert", ca_cert)
        if insecure_tls is not None:
            pulumi.set(__self__, "insecure_tls", insecure_tls)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if tls is not None:
            pulumi.set(__self__, "tls", tls)

    @_builtins.property
    @pulumi.getter
    def host(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the host to connect to
        """
        return pulumi.get(self, "host")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the password corresponding to the given username.
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the username for Vault to use.
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="caCert")
    def ca_cert(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The contents of a PEM-encoded CA cert file to use to verify the Redis server's identity.
        """
        return pulumi.get(self, "ca_cert")

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

    @_builtins.property
    @pulumi.getter(name="insecureTls")
    def insecure_tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether to skip verification of the server certificate when using TLS.
        """
        return pulumi.get(self, "insecure_tls")

    @insecure_tls.setter
    def insecure_tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "insecure_tls", value)

    @_builtins.property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The transport port to use to connect to Redis.
        """
        return pulumi.get(self, "port")

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

    @_builtins.property
    @pulumi.getter
    def tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether to use TLS when connecting to Redis.
        """
        return pulumi.get(self, "tls")

    @tls.setter
    def tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "tls", value)


if not MYPY:
    class SecretBackendConnectionRedisElasticacheArgsDict(TypedDict):
        url: pulumi.Input[_builtins.str]
        """
        The configuration endpoint for the ElastiCache cluster to connect to.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The AWS secret key id to use to talk to ElastiCache. If omitted the credentials chain provider is used instead.
        """
        region: NotRequired[pulumi.Input[_builtins.str]]
        """
        The AWS region where the ElastiCache cluster is hosted. If omitted the plugin tries to infer the region from the environment.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The AWS access key id to use to talk to ElastiCache. If omitted the credentials chain provider is used instead.
        """
elif False:
    SecretBackendConnectionRedisElasticacheArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionRedisElasticacheArgs:
    def __init__(__self__, *,
                 url: pulumi.Input[_builtins.str],
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 region: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] url: The configuration endpoint for the ElastiCache cluster to connect to.
        :param pulumi.Input[_builtins.str] password: The AWS secret key id to use to talk to ElastiCache. If omitted the credentials chain provider is used instead.
        :param pulumi.Input[_builtins.str] region: The AWS region where the ElastiCache cluster is hosted. If omitted the plugin tries to infer the region from the environment.
        :param pulumi.Input[_builtins.str] username: The AWS access key id to use to talk to ElastiCache. If omitted the credentials chain provider is used instead.
        """
        pulumi.set(__self__, "url", url)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter
    def url(self) -> pulumi.Input[_builtins.str]:
        """
        The configuration endpoint for the ElastiCache cluster to connect to.
        """
        return pulumi.get(self, "url")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The AWS secret key id to use to talk to ElastiCache. If omitted the credentials chain provider is used instead.
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The AWS region where the ElastiCache cluster is hosted. If omitted the plugin tries to infer the region from the environment.
        """
        return pulumi.get(self, "region")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The AWS access key id to use to talk to ElastiCache. If omitted the credentials chain provider is used instead.
        """
        return pulumi.get(self, "username")

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


if not MYPY:
    class SecretBackendConnectionRedshiftArgsDict(TypedDict):
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        disable_escaping: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Disable special character escaping in username and password
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
elif False:
    SecretBackendConnectionRedshiftArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionRedshiftArgs:
    def __init__(__self__, *,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 disable_escaping: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[_builtins.bool] disable_escaping: Disable special character escaping in username and password
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        """
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if disable_escaping is not None:
            pulumi.set(__self__, "disable_escaping", disable_escaping)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter(name="disableEscaping")
    def disable_escaping(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Disable special character escaping in username and password
        """
        return pulumi.get(self, "disable_escaping")

    @disable_escaping.setter
    def disable_escaping(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_escaping", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretBackendConnectionSnowflakeArgsDict(TypedDict):
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        private_key_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        The private key configured for the admin user in Snowflake.
        """
        private_key_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for the private key key-pair credentials write-only field
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
elif False:
    SecretBackendConnectionSnowflakeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretBackendConnectionSnowflakeArgs:
    def __init__(__self__, *,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 private_key_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 private_key_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] private_key_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               The private key configured for the admin user in Snowflake.
        :param pulumi.Input[_builtins.int] private_key_wo_version: Version counter for the private key key-pair credentials write-only field
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        """
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            warnings.warn("""Snowflake is ending support for single-factor password authentication by November 2025. Refer to the documentation for more information on migrating to key-pair authentication.""", DeprecationWarning)
            pulumi.log.warn("""password is deprecated: Snowflake is ending support for single-factor password authentication by November 2025. Refer to the documentation for more information on migrating to key-pair authentication.""")
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if private_key_wo is not None:
            pulumi.set(__self__, "private_key_wo", private_key_wo)
        if private_key_wo_version is not None:
            pulumi.set(__self__, "private_key_wo_version", private_key_wo_version)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    @_utilities.deprecated("""Snowflake is ending support for single-factor password authentication by November 2025. Refer to the documentation for more information on migrating to key-pair authentication.""")
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="privateKeyWo")
    def private_key_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        The private key configured for the admin user in Snowflake.
        """
        return pulumi.get(self, "private_key_wo")

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

    @_builtins.property
    @pulumi.getter(name="privateKeyWoVersion")
    def private_key_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for the private key key-pair credentials write-only field
        """
        return pulumi.get(self, "private_key_wo_version")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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


if not MYPY:
    class SecretsMountCassandraArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        connect_timeout: NotRequired[pulumi.Input[_builtins.int]]
        """
        The number of seconds to use as a connection timeout.
        """
        consistency: NotRequired[pulumi.Input[_builtins.str]]
        """
        Cassandra consistency level.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Cassandra hosts to connect to.
        """
        insecure_tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether to skip verification of the server certificate when using TLS.
        """
        local_datacenter: NotRequired[pulumi.Input[_builtins.str]]
        """
        Cassandra local datacenter name.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The password to use when authenticating with Cassandra.
        """
        pem_bundle: NotRequired[pulumi.Input[_builtins.str]]
        """
        Concatenated PEM blocks containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        pem_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        port: NotRequired[pulumi.Input[_builtins.int]]
        """
        The transport port to use to connect to Cassandra.
        """
        protocol_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        The CQL protocol version to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        skip_verification: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Skip permissions checks when a connection to Cassandra is first created. These checks ensure that Vault is able to create roles, but can be resource intensive in clusters with many roles.
        """
        socket_keep_alive: NotRequired[pulumi.Input[_builtins.str]]
        """
        Enable TCP keepalive for Cassandra connections.
        """
        tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether to use TLS when connecting to Cassandra.
        """
        tls_server_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        SNI host for TLS connections.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The username to use when authenticating with Cassandra.
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Template for dynamic Cassandra usernames.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountCassandraArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountCassandraArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 connect_timeout: Optional[pulumi.Input[_builtins.int]] = None,
                 consistency: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 insecure_tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 local_datacenter: Optional[pulumi.Input[_builtins.str]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 pem_bundle: Optional[pulumi.Input[_builtins.str]] = None,
                 pem_json: Optional[pulumi.Input[_builtins.str]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 port: Optional[pulumi.Input[_builtins.int]] = None,
                 protocol_version: Optional[pulumi.Input[_builtins.int]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 skip_verification: Optional[pulumi.Input[_builtins.bool]] = None,
                 socket_keep_alive: Optional[pulumi.Input[_builtins.str]] = None,
                 tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 tls_server_name: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.int] connect_timeout: The number of seconds to use as a connection timeout.
        :param pulumi.Input[_builtins.str] consistency: Cassandra consistency level.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] hosts: Cassandra hosts to connect to.
        :param pulumi.Input[_builtins.bool] insecure_tls: Whether to skip verification of the server certificate when using TLS.
        :param pulumi.Input[_builtins.str] local_datacenter: Cassandra local datacenter name.
        :param pulumi.Input[_builtins.str] password: The password to use when authenticating with Cassandra.
        :param pulumi.Input[_builtins.str] pem_bundle: Concatenated PEM blocks containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        :param pulumi.Input[_builtins.str] pem_json: Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[_builtins.int] port: The transport port to use to connect to Cassandra.
        :param pulumi.Input[_builtins.int] protocol_version: The CQL protocol version to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.bool] skip_verification: Skip permissions checks when a connection to Cassandra is first created. These checks ensure that Vault is able to create roles, but can be resource intensive in clusters with many roles.
        :param pulumi.Input[_builtins.str] socket_keep_alive: Enable TCP keepalive for Cassandra connections.
        :param pulumi.Input[_builtins.bool] tls: Whether to use TLS when connecting to Cassandra.
        :param pulumi.Input[_builtins.str] tls_server_name: SNI host for TLS connections.
        :param pulumi.Input[_builtins.str] username: The username to use when authenticating with Cassandra.
        :param pulumi.Input[_builtins.str] username_template: Template for dynamic Cassandra usernames.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if connect_timeout is not None:
            pulumi.set(__self__, "connect_timeout", connect_timeout)
        if consistency is not None:
            pulumi.set(__self__, "consistency", consistency)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if hosts is not None:
            pulumi.set(__self__, "hosts", hosts)
        if insecure_tls is not None:
            pulumi.set(__self__, "insecure_tls", insecure_tls)
        if local_datacenter is not None:
            pulumi.set(__self__, "local_datacenter", local_datacenter)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if pem_bundle is not None:
            pulumi.set(__self__, "pem_bundle", pem_bundle)
        if pem_json is not None:
            pulumi.set(__self__, "pem_json", pem_json)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if protocol_version is not None:
            pulumi.set(__self__, "protocol_version", protocol_version)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if skip_verification is not None:
            pulumi.set(__self__, "skip_verification", skip_verification)
        if socket_keep_alive is not None:
            pulumi.set(__self__, "socket_keep_alive", socket_keep_alive)
        if tls is not None:
            pulumi.set(__self__, "tls", tls)
        if tls_server_name is not None:
            pulumi.set(__self__, "tls_server_name", tls_server_name)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="connectTimeout")
    def connect_timeout(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The number of seconds to use as a connection timeout.
        """
        return pulumi.get(self, "connect_timeout")

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

    @_builtins.property
    @pulumi.getter
    def consistency(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Cassandra consistency level.
        """
        return pulumi.get(self, "consistency")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter
    def hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Cassandra hosts to connect to.
        """
        return pulumi.get(self, "hosts")

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

    @_builtins.property
    @pulumi.getter(name="insecureTls")
    def insecure_tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether to skip verification of the server certificate when using TLS.
        """
        return pulumi.get(self, "insecure_tls")

    @insecure_tls.setter
    def insecure_tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "insecure_tls", value)

    @_builtins.property
    @pulumi.getter(name="localDatacenter")
    def local_datacenter(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Cassandra local datacenter name.
        """
        return pulumi.get(self, "local_datacenter")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The password to use when authenticating with Cassandra.
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="pemBundle")
    def pem_bundle(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Concatenated PEM blocks containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        return pulumi.get(self, "pem_bundle")

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

    @_builtins.property
    @pulumi.getter(name="pemJson")
    def pem_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        return pulumi.get(self, "pem_json")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The transport port to use to connect to Cassandra.
        """
        return pulumi.get(self, "port")

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

    @_builtins.property
    @pulumi.getter(name="protocolVersion")
    def protocol_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The CQL protocol version to use.
        """
        return pulumi.get(self, "protocol_version")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter(name="skipVerification")
    def skip_verification(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Skip permissions checks when a connection to Cassandra is first created. These checks ensure that Vault is able to create roles, but can be resource intensive in clusters with many roles.
        """
        return pulumi.get(self, "skip_verification")

    @skip_verification.setter
    def skip_verification(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "skip_verification", value)

    @_builtins.property
    @pulumi.getter(name="socketKeepAlive")
    def socket_keep_alive(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Enable TCP keepalive for Cassandra connections.
        """
        return pulumi.get(self, "socket_keep_alive")

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

    @_builtins.property
    @pulumi.getter
    def tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether to use TLS when connecting to Cassandra.
        """
        return pulumi.get(self, "tls")

    @tls.setter
    def tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "tls", value)

    @_builtins.property
    @pulumi.getter(name="tlsServerName")
    def tls_server_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        SNI host for TLS connections.
        """
        return pulumi.get(self, "tls_server_name")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The username to use when authenticating with Cassandra.
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Template for dynamic Cassandra usernames.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountCouchbaseArgsDict(TypedDict):
        hosts: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]
        """
        A set of Couchbase URIs to connect to. Must use `couchbases://` scheme if `tls` is `true`.
        """
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        password: pulumi.Input[_builtins.str]
        """
        Specifies the password corresponding to the given username.
        """
        username: pulumi.Input[_builtins.str]
        """
        Specifies the username for Vault to use.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        base64_pem: NotRequired[pulumi.Input[_builtins.str]]
        """
        Required if `tls` is `true`. Specifies the certificate authority of the Couchbase server, as a PEM certificate that has been base64 encoded.
        """
        bucket_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Required for Couchbase versions prior to 6.5.0. This is only used to verify vault's connection to the server.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        insecure_tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Specifies whether to skip verification of the server certificate when using TLS.
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Specifies whether to use TLS when connecting to Couchbase.
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Template describing how dynamic usernames are generated.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountCouchbaseArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountCouchbaseArgs:
    def __init__(__self__, *,
                 hosts: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]],
                 name: pulumi.Input[_builtins.str],
                 password: pulumi.Input[_builtins.str],
                 username: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 base64_pem: Optional[pulumi.Input[_builtins.str]] = None,
                 bucket_name: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 insecure_tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] hosts: A set of Couchbase URIs to connect to. Must use `couchbases://` scheme if `tls` is `true`.
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[_builtins.str] password: Specifies the password corresponding to the given username.
        :param pulumi.Input[_builtins.str] username: Specifies the username for Vault to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] base64_pem: Required if `tls` is `true`. Specifies the certificate authority of the Couchbase server, as a PEM certificate that has been base64 encoded.
        :param pulumi.Input[_builtins.str] bucket_name: Required for Couchbase versions prior to 6.5.0. This is only used to verify vault's connection to the server.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.bool] insecure_tls: Specifies whether to skip verification of the server certificate when using TLS.
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.bool] tls: Specifies whether to use TLS when connecting to Couchbase.
        :param pulumi.Input[_builtins.str] username_template: Template describing how dynamic usernames are generated.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "hosts", hosts)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if base64_pem is not None:
            pulumi.set(__self__, "base64_pem", base64_pem)
        if bucket_name is not None:
            pulumi.set(__self__, "bucket_name", bucket_name)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if insecure_tls is not None:
            pulumi.set(__self__, "insecure_tls", insecure_tls)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if tls is not None:
            pulumi.set(__self__, "tls", tls)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def hosts(self) -> pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]:
        """
        A set of Couchbase URIs to connect to. Must use `couchbases://` scheme if `tls` is `true`.
        """
        return pulumi.get(self, "hosts")

    @hosts.setter
    def hosts(self, value: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]):
        pulumi.set(self, "hosts", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the password corresponding to the given username.
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the username for Vault to use.
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="base64Pem")
    def base64_pem(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Required if `tls` is `true`. Specifies the certificate authority of the Couchbase server, as a PEM certificate that has been base64 encoded.
        """
        return pulumi.get(self, "base64_pem")

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

    @_builtins.property
    @pulumi.getter(name="bucketName")
    def bucket_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Required for Couchbase versions prior to 6.5.0. This is only used to verify vault's connection to the server.
        """
        return pulumi.get(self, "bucket_name")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="insecureTls")
    def insecure_tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether to skip verification of the server certificate when using TLS.
        """
        return pulumi.get(self, "insecure_tls")

    @insecure_tls.setter
    def insecure_tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "insecure_tls", value)

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter
    def tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether to use TLS when connecting to Couchbase.
        """
        return pulumi.get(self, "tls")

    @tls.setter
    def tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "tls", value)

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Template describing how dynamic usernames are generated.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountElasticsearchArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        password: pulumi.Input[_builtins.str]
        """
        The password to be used in the connection URL
        """
        url: pulumi.Input[_builtins.str]
        """
        The URL for Elasticsearch's API
        """
        username: pulumi.Input[_builtins.str]
        """
        The username to be used in the connection URL
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        ca_cert: NotRequired[pulumi.Input[_builtins.str]]
        """
        The path to a PEM-encoded CA cert file to use to verify the Elasticsearch server's identity
        """
        ca_path: NotRequired[pulumi.Input[_builtins.str]]
        """
        The path to a directory of PEM-encoded CA cert files to use to verify the Elasticsearch server's identity
        """
        client_cert: NotRequired[pulumi.Input[_builtins.str]]
        """
        The path to the certificate for the Elasticsearch client to present for communication
        """
        client_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        The path to the key for the Elasticsearch client to use for communication
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        insecure: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether to disable certificate verification
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        tls_server_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        This, if set, is used to set the SNI host when connecting via TLS
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Template describing how dynamic usernames are generated.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountElasticsearchArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountElasticsearchArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 password: pulumi.Input[_builtins.str],
                 url: pulumi.Input[_builtins.str],
                 username: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 ca_cert: Optional[pulumi.Input[_builtins.str]] = None,
                 ca_path: Optional[pulumi.Input[_builtins.str]] = None,
                 client_cert: Optional[pulumi.Input[_builtins.str]] = None,
                 client_key: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 insecure: Optional[pulumi.Input[_builtins.bool]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 tls_server_name: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[_builtins.str] password: The password to be used in the connection URL
        :param pulumi.Input[_builtins.str] url: The URL for Elasticsearch's API
        :param pulumi.Input[_builtins.str] username: The username to be used in the connection URL
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] ca_cert: The path to a PEM-encoded CA cert file to use to verify the Elasticsearch server's identity
        :param pulumi.Input[_builtins.str] ca_path: The path to a directory of PEM-encoded CA cert files to use to verify the Elasticsearch server's identity
        :param pulumi.Input[_builtins.str] client_cert: The path to the certificate for the Elasticsearch client to present for communication
        :param pulumi.Input[_builtins.str] client_key: The path to the key for the Elasticsearch client to use for communication
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.bool] insecure: Whether to disable certificate verification
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] tls_server_name: This, if set, is used to set the SNI host when connecting via TLS
        :param pulumi.Input[_builtins.str] username_template: Template describing how dynamic usernames are generated.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "url", url)
        pulumi.set(__self__, "username", username)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if ca_cert is not None:
            pulumi.set(__self__, "ca_cert", ca_cert)
        if ca_path is not None:
            pulumi.set(__self__, "ca_path", ca_path)
        if client_cert is not None:
            pulumi.set(__self__, "client_cert", client_cert)
        if client_key is not None:
            pulumi.set(__self__, "client_key", client_key)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if tls_server_name is not None:
            pulumi.set(__self__, "tls_server_name", tls_server_name)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> pulumi.Input[_builtins.str]:
        """
        The password to be used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter
    def url(self) -> pulumi.Input[_builtins.str]:
        """
        The URL for Elasticsearch's API
        """
        return pulumi.get(self, "url")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> pulumi.Input[_builtins.str]:
        """
        The username to be used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="caCert")
    def ca_cert(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The path to a PEM-encoded CA cert file to use to verify the Elasticsearch server's identity
        """
        return pulumi.get(self, "ca_cert")

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

    @_builtins.property
    @pulumi.getter(name="caPath")
    def ca_path(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The path to a directory of PEM-encoded CA cert files to use to verify the Elasticsearch server's identity
        """
        return pulumi.get(self, "ca_path")

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

    @_builtins.property
    @pulumi.getter(name="clientCert")
    def client_cert(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The path to the certificate for the Elasticsearch client to present for communication
        """
        return pulumi.get(self, "client_cert")

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

    @_builtins.property
    @pulumi.getter(name="clientKey")
    def client_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The path to the key for the Elasticsearch client to use for communication
        """
        return pulumi.get(self, "client_key")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether to disable certificate verification
        """
        return pulumi.get(self, "insecure")

    @insecure.setter
    def insecure(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "insecure", value)

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter(name="tlsServerName")
    def tls_server_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        This, if set, is used to set the SNI host when connecting via TLS
        """
        return pulumi.get(self, "tls_server_name")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Template describing how dynamic usernames are generated.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountHanaArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        disable_escaping: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Disable special character escaping in username and password
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountHanaArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountHanaArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 disable_escaping: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.bool] disable_escaping: Disable special character escaping in username and password
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if disable_escaping is not None:
            pulumi.set(__self__, "disable_escaping", disable_escaping)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="disableEscaping")
    def disable_escaping(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Disable special character escaping in username and password
        """
        return pulumi.get(self, "disable_escaping")

    @disable_escaping.setter
    def disable_escaping(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_escaping", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountInfluxdbArgsDict(TypedDict):
        host: pulumi.Input[_builtins.str]
        """
        Influxdb host to connect to.
        """
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        password: pulumi.Input[_builtins.str]
        """
        Specifies the password corresponding to the given username.
        """
        username: pulumi.Input[_builtins.str]
        """
        Specifies the username to use for superuser access.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        connect_timeout: NotRequired[pulumi.Input[_builtins.int]]
        """
        The number of seconds to use as a connection timeout.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        insecure_tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether to skip verification of the server certificate when using TLS.
        """
        pem_bundle: NotRequired[pulumi.Input[_builtins.str]]
        """
        Concatenated PEM blocks containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        pem_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        port: NotRequired[pulumi.Input[_builtins.int]]
        """
        The transport port to use to connect to Influxdb.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether to use TLS when connecting to Influxdb.
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Template describing how dynamic usernames are generated.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountInfluxdbArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountInfluxdbArgs:
    def __init__(__self__, *,
                 host: pulumi.Input[_builtins.str],
                 name: pulumi.Input[_builtins.str],
                 password: pulumi.Input[_builtins.str],
                 username: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 connect_timeout: Optional[pulumi.Input[_builtins.int]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 insecure_tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 pem_bundle: Optional[pulumi.Input[_builtins.str]] = None,
                 pem_json: Optional[pulumi.Input[_builtins.str]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 port: Optional[pulumi.Input[_builtins.int]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] host: Influxdb host to connect to.
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[_builtins.str] password: Specifies the password corresponding to the given username.
        :param pulumi.Input[_builtins.str] username: Specifies the username to use for superuser access.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.int] connect_timeout: The number of seconds to use as a connection timeout.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.bool] insecure_tls: Whether to skip verification of the server certificate when using TLS.
        :param pulumi.Input[_builtins.str] pem_bundle: Concatenated PEM blocks containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        :param pulumi.Input[_builtins.str] pem_json: Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[_builtins.int] port: The transport port to use to connect to Influxdb.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.bool] tls: Whether to use TLS when connecting to Influxdb.
        :param pulumi.Input[_builtins.str] username_template: Template describing how dynamic usernames are generated.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if connect_timeout is not None:
            pulumi.set(__self__, "connect_timeout", connect_timeout)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if insecure_tls is not None:
            pulumi.set(__self__, "insecure_tls", insecure_tls)
        if pem_bundle is not None:
            pulumi.set(__self__, "pem_bundle", pem_bundle)
        if pem_json is not None:
            pulumi.set(__self__, "pem_json", pem_json)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if tls is not None:
            pulumi.set(__self__, "tls", tls)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def host(self) -> pulumi.Input[_builtins.str]:
        """
        Influxdb host to connect to.
        """
        return pulumi.get(self, "host")

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

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the password corresponding to the given username.
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the username to use for superuser access.
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="connectTimeout")
    def connect_timeout(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The number of seconds to use as a connection timeout.
        """
        return pulumi.get(self, "connect_timeout")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="insecureTls")
    def insecure_tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether to skip verification of the server certificate when using TLS.
        """
        return pulumi.get(self, "insecure_tls")

    @insecure_tls.setter
    def insecure_tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "insecure_tls", value)

    @_builtins.property
    @pulumi.getter(name="pemBundle")
    def pem_bundle(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Concatenated PEM blocks containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        return pulumi.get(self, "pem_bundle")

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

    @_builtins.property
    @pulumi.getter(name="pemJson")
    def pem_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
        """
        return pulumi.get(self, "pem_json")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The transport port to use to connect to Influxdb.
        """
        return pulumi.get(self, "port")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter
    def tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether to use TLS when connecting to Influxdb.
        """
        return pulumi.get(self, "tls")

    @tls.setter
    def tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "tls", value)

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Template describing how dynamic usernames are generated.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountMongodbArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        tls_ca: NotRequired[pulumi.Input[_builtins.str]]
        """
        The x509 CA file for validating the certificate presented by the MongoDB server. Must be PEM encoded.
        """
        tls_certificate_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        The x509 certificate and private key bundle for connecting to the database. Must be PEM encoded.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        write_concern: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the MongoDB write concern for Vault management operations.
        """
elif False:
    SecretsMountMongodbArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountMongodbArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 tls_ca: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_certificate_key: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None,
                 write_concern: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] tls_ca: The x509 CA file for validating the certificate presented by the MongoDB server. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] tls_certificate_key: The x509 certificate and private key bundle for connecting to the database. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        :param pulumi.Input[_builtins.str] write_concern: Specifies the MongoDB write concern for Vault management operations.
        """
        pulumi.set(__self__, "name", name)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if tls_ca is not None:
            pulumi.set(__self__, "tls_ca", tls_ca)
        if tls_certificate_key is not None:
            pulumi.set(__self__, "tls_certificate_key", tls_certificate_key)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)
        if write_concern is not None:
            pulumi.set(__self__, "write_concern", write_concern)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter(name="tlsCa")
    def tls_ca(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The x509 CA file for validating the certificate presented by the MongoDB server. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_ca")

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

    @_builtins.property
    @pulumi.getter(name="tlsCertificateKey")
    def tls_certificate_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The x509 certificate and private key bundle for connecting to the database. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_certificate_key")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)

    @_builtins.property
    @pulumi.getter(name="writeConcern")
    def write_concern(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the MongoDB write concern for Vault management operations.
        """
        return pulumi.get(self, "write_concern")

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


if not MYPY:
    class SecretsMountMongodbatlaArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        private_key: pulumi.Input[_builtins.str]
        """
        The Private Programmatic API Key used to connect with MongoDB Atlas API.
        """
        project_id: pulumi.Input[_builtins.str]
        """
        The Project ID the Database User should be created within.
        """
        public_key: pulumi.Input[_builtins.str]
        """
        The Public Programmatic API Key used to authenticate with the MongoDB Atlas API.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Template describing how dynamic usernames are generated.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountMongodbatlaArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountMongodbatlaArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 private_key: pulumi.Input[_builtins.str],
                 project_id: pulumi.Input[_builtins.str],
                 public_key: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[_builtins.str] private_key: The Private Programmatic API Key used to connect with MongoDB Atlas API.
        :param pulumi.Input[_builtins.str] project_id: The Project ID the Database User should be created within.
        :param pulumi.Input[_builtins.str] public_key: The Public Programmatic API Key used to authenticate with the MongoDB Atlas API.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] username_template: Template describing how dynamic usernames are generated.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "private_key", private_key)
        pulumi.set(__self__, "project_id", project_id)
        pulumi.set(__self__, "public_key", public_key)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="privateKey")
    def private_key(self) -> pulumi.Input[_builtins.str]:
        """
        The Private Programmatic API Key used to connect with MongoDB Atlas API.
        """
        return pulumi.get(self, "private_key")

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

    @_builtins.property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Input[_builtins.str]:
        """
        The Project ID the Database User should be created within.
        """
        return pulumi.get(self, "project_id")

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

    @_builtins.property
    @pulumi.getter(name="publicKey")
    def public_key(self) -> pulumi.Input[_builtins.str]:
        """
        The Public Programmatic API Key used to authenticate with the MongoDB Atlas API.
        """
        return pulumi.get(self, "public_key")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Template describing how dynamic usernames are generated.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountMssqlArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        contained_db: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Set to true when the target is a Contained Database, e.g. AzureSQL.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        disable_escaping: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Disable special character escaping in username and password
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountMssqlArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountMssqlArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 contained_db: Optional[pulumi.Input[_builtins.bool]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 disable_escaping: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[_builtins.bool] contained_db: Set to true when the target is a Contained Database, e.g. AzureSQL.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.bool] disable_escaping: Disable special character escaping in username and password
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if contained_db is not None:
            pulumi.set(__self__, "contained_db", contained_db)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if disable_escaping is not None:
            pulumi.set(__self__, "disable_escaping", disable_escaping)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter(name="containedDb")
    def contained_db(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Set to true when the target is a Contained Database, e.g. AzureSQL.
        """
        return pulumi.get(self, "contained_db")

    @contained_db.setter
    def contained_db(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "contained_db", value)

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="disableEscaping")
    def disable_escaping(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Disable special character escaping in username and password
        """
        return pulumi.get(self, "disable_escaping")

    @disable_escaping.setter
    def disable_escaping(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_escaping", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountMysqlArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        auth_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        service_account_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        A JSON encoded credential for use with IAM authorization
        """
        tls_ca: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        tls_certificate_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountMysqlArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountMysqlArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 auth_type: Optional[pulumi.Input[_builtins.str]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 service_account_json: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_ca: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_certificate_key: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] auth_type: Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] service_account_json: A JSON encoded credential for use with IAM authorization
        :param pulumi.Input[_builtins.str] tls_ca: x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] tls_certificate_key: x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if service_account_json is not None:
            pulumi.set(__self__, "service_account_json", service_account_json)
        if tls_ca is not None:
            pulumi.set(__self__, "tls_ca", tls_ca)
        if tls_certificate_key is not None:
            pulumi.set(__self__, "tls_certificate_key", tls_certificate_key)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        return pulumi.get(self, "auth_type")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter(name="serviceAccountJson")
    def service_account_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A JSON encoded credential for use with IAM authorization
        """
        return pulumi.get(self, "service_account_json")

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

    @_builtins.property
    @pulumi.getter(name="tlsCa")
    def tls_ca(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_ca")

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

    @_builtins.property
    @pulumi.getter(name="tlsCertificateKey")
    def tls_certificate_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        return pulumi.get(self, "tls_certificate_key")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountMysqlAuroraArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        auth_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        service_account_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        A JSON encoded credential for use with IAM authorization
        """
        tls_ca: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        tls_certificate_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountMysqlAuroraArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountMysqlAuroraArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 auth_type: Optional[pulumi.Input[_builtins.str]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 service_account_json: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_ca: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_certificate_key: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] auth_type: Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] service_account_json: A JSON encoded credential for use with IAM authorization
        :param pulumi.Input[_builtins.str] tls_ca: x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] tls_certificate_key: x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if service_account_json is not None:
            pulumi.set(__self__, "service_account_json", service_account_json)
        if tls_ca is not None:
            pulumi.set(__self__, "tls_ca", tls_ca)
        if tls_certificate_key is not None:
            pulumi.set(__self__, "tls_certificate_key", tls_certificate_key)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        return pulumi.get(self, "auth_type")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter(name="serviceAccountJson")
    def service_account_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A JSON encoded credential for use with IAM authorization
        """
        return pulumi.get(self, "service_account_json")

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

    @_builtins.property
    @pulumi.getter(name="tlsCa")
    def tls_ca(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_ca")

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

    @_builtins.property
    @pulumi.getter(name="tlsCertificateKey")
    def tls_certificate_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        return pulumi.get(self, "tls_certificate_key")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountMysqlLegacyArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        auth_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        service_account_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        A JSON encoded credential for use with IAM authorization
        """
        tls_ca: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        tls_certificate_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountMysqlLegacyArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountMysqlLegacyArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 auth_type: Optional[pulumi.Input[_builtins.str]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 service_account_json: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_ca: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_certificate_key: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] auth_type: Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] service_account_json: A JSON encoded credential for use with IAM authorization
        :param pulumi.Input[_builtins.str] tls_ca: x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] tls_certificate_key: x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if service_account_json is not None:
            pulumi.set(__self__, "service_account_json", service_account_json)
        if tls_ca is not None:
            pulumi.set(__self__, "tls_ca", tls_ca)
        if tls_certificate_key is not None:
            pulumi.set(__self__, "tls_certificate_key", tls_certificate_key)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        return pulumi.get(self, "auth_type")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter(name="serviceAccountJson")
    def service_account_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A JSON encoded credential for use with IAM authorization
        """
        return pulumi.get(self, "service_account_json")

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

    @_builtins.property
    @pulumi.getter(name="tlsCa")
    def tls_ca(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_ca")

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

    @_builtins.property
    @pulumi.getter(name="tlsCertificateKey")
    def tls_certificate_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        return pulumi.get(self, "tls_certificate_key")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountMysqlRdArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        auth_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        service_account_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        A JSON encoded credential for use with IAM authorization
        """
        tls_ca: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        tls_certificate_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountMysqlRdArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountMysqlRdArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 auth_type: Optional[pulumi.Input[_builtins.str]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 service_account_json: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_ca: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_certificate_key: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] auth_type: Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] service_account_json: A JSON encoded credential for use with IAM authorization
        :param pulumi.Input[_builtins.str] tls_ca: x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] tls_certificate_key: x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if service_account_json is not None:
            pulumi.set(__self__, "service_account_json", service_account_json)
        if tls_ca is not None:
            pulumi.set(__self__, "tls_ca", tls_ca)
        if tls_certificate_key is not None:
            pulumi.set(__self__, "tls_certificate_key", tls_certificate_key)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        return pulumi.get(self, "auth_type")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter(name="serviceAccountJson")
    def service_account_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A JSON encoded credential for use with IAM authorization
        """
        return pulumi.get(self, "service_account_json")

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

    @_builtins.property
    @pulumi.getter(name="tlsCa")
    def tls_ca(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 CA file for validating the certificate presented by the MySQL server. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_ca")

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

    @_builtins.property
    @pulumi.getter(name="tlsCertificateKey")
    def tls_certificate_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        x509 certificate for connecting to the database. This must be a PEM encoded version of the private key and the certificate combined.
        """
        return pulumi.get(self, "tls_certificate_key")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountOracleArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        disconnect_sessions: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Set to true to disconnect any open sessions prior to running the revocation statements.
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        self_managed: NotRequired[pulumi.Input[_builtins.bool]]
        """
        If set, allows onboarding static roles with a rootless connection configuration.
        """
        split_statements: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Set to true in order to split statements after semi-colons.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountOracleArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountOracleArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 disconnect_sessions: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 self_managed: Optional[pulumi.Input[_builtins.bool]] = None,
                 split_statements: Optional[pulumi.Input[_builtins.bool]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.bool] disconnect_sessions: Set to true to disconnect any open sessions prior to running the revocation statements.
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.bool] self_managed: If set, allows onboarding static roles with a rootless connection configuration.
        :param pulumi.Input[_builtins.bool] split_statements: Set to true in order to split statements after semi-colons.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if disconnect_sessions is not None:
            pulumi.set(__self__, "disconnect_sessions", disconnect_sessions)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if self_managed is not None:
            pulumi.set(__self__, "self_managed", self_managed)
        if split_statements is not None:
            pulumi.set(__self__, "split_statements", split_statements)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="disconnectSessions")
    def disconnect_sessions(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Set to true to disconnect any open sessions prior to running the revocation statements.
        """
        return pulumi.get(self, "disconnect_sessions")

    @disconnect_sessions.setter
    def disconnect_sessions(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disconnect_sessions", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter(name="selfManaged")
    def self_managed(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        If set, allows onboarding static roles with a rootless connection configuration.
        """
        return pulumi.get(self, "self_managed")

    @self_managed.setter
    def self_managed(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "self_managed", value)

    @_builtins.property
    @pulumi.getter(name="splitStatements")
    def split_statements(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Set to true in order to split statements after semi-colons.
        """
        return pulumi.get(self, "split_statements")

    @split_statements.setter
    def split_statements(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "split_statements", value)

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountPostgresqlArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        auth_type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        disable_escaping: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Disable special character escaping in username and password
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_authentication: NotRequired[pulumi.Input[_builtins.str]]
        """
        When set to `scram-sha-256`, passwords will be hashed by Vault before being sent to PostgreSQL.
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        private_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        The secret key used for the x509 client certificate. Must be PEM encoded.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        self_managed: NotRequired[pulumi.Input[_builtins.bool]]
        """
        If set, allows onboarding static roles with a rootless connection configuration.
        """
        service_account_json: NotRequired[pulumi.Input[_builtins.str]]
        """
        A JSON encoded credential for use with IAM authorization
        """
        tls_ca: NotRequired[pulumi.Input[_builtins.str]]
        """
        The x509 CA file for validating the certificate presented by the PostgreSQL server. Must be PEM encoded.
        """
        tls_certificate: NotRequired[pulumi.Input[_builtins.str]]
        """
        The x509 client certificate for connecting to the database. Must be PEM encoded.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountPostgresqlArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountPostgresqlArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 auth_type: Optional[pulumi.Input[_builtins.str]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 disable_escaping: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_authentication: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 private_key: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 self_managed: Optional[pulumi.Input[_builtins.bool]] = None,
                 service_account_json: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_ca: Optional[pulumi.Input[_builtins.str]] = None,
                 tls_certificate: Optional[pulumi.Input[_builtins.str]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] auth_type: Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.bool] disable_escaping: Disable special character escaping in username and password
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_authentication: When set to `scram-sha-256`, passwords will be hashed by Vault before being sent to PostgreSQL.
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[_builtins.str] private_key: The secret key used for the x509 client certificate. Must be PEM encoded.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.bool] self_managed: If set, allows onboarding static roles with a rootless connection configuration.
        :param pulumi.Input[_builtins.str] service_account_json: A JSON encoded credential for use with IAM authorization
        :param pulumi.Input[_builtins.str] tls_ca: The x509 CA file for validating the certificate presented by the PostgreSQL server. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] tls_certificate: The x509 client certificate for connecting to the database. Must be PEM encoded.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if disable_escaping is not None:
            pulumi.set(__self__, "disable_escaping", disable_escaping)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_authentication is not None:
            pulumi.set(__self__, "password_authentication", password_authentication)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if private_key is not None:
            pulumi.set(__self__, "private_key", private_key)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if self_managed is not None:
            pulumi.set(__self__, "self_managed", self_managed)
        if service_account_json is not None:
            pulumi.set(__self__, "service_account_json", service_account_json)
        if tls_ca is not None:
            pulumi.set(__self__, "tls_ca", tls_ca)
        if tls_certificate is not None:
            pulumi.set(__self__, "tls_certificate", tls_certificate)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specify alternative authorization type. (Only 'gcp_iam' is valid currently)
        """
        return pulumi.get(self, "auth_type")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="disableEscaping")
    def disable_escaping(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Disable special character escaping in username and password
        """
        return pulumi.get(self, "disable_escaping")

    @disable_escaping.setter
    def disable_escaping(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_escaping", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordAuthentication")
    def password_authentication(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        When set to `scram-sha-256`, passwords will be hashed by Vault before being sent to PostgreSQL.
        """
        return pulumi.get(self, "password_authentication")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="privateKey")
    def private_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The secret key used for the x509 client certificate. Must be PEM encoded.
        """
        return pulumi.get(self, "private_key")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter(name="selfManaged")
    def self_managed(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        If set, allows onboarding static roles with a rootless connection configuration.
        """
        return pulumi.get(self, "self_managed")

    @self_managed.setter
    def self_managed(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "self_managed", value)

    @_builtins.property
    @pulumi.getter(name="serviceAccountJson")
    def service_account_json(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A JSON encoded credential for use with IAM authorization
        """
        return pulumi.get(self, "service_account_json")

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

    @_builtins.property
    @pulumi.getter(name="tlsCa")
    def tls_ca(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The x509 CA file for validating the certificate presented by the PostgreSQL server. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_ca")

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

    @_builtins.property
    @pulumi.getter(name="tlsCertificate")
    def tls_certificate(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The x509 client certificate for connecting to the database. Must be PEM encoded.
        """
        return pulumi.get(self, "tls_certificate")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountRediArgsDict(TypedDict):
        host: pulumi.Input[_builtins.str]
        """
        Specifies the host to connect to
        """
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        password: pulumi.Input[_builtins.str]
        """
        Specifies the password corresponding to the given username.
        """
        username: pulumi.Input[_builtins.str]
        """
        Specifies the username for Vault to use.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        ca_cert: NotRequired[pulumi.Input[_builtins.str]]
        """
        The contents of a PEM-encoded CA cert file to use to verify the Redis server's identity.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        insecure_tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Specifies whether to skip verification of the server certificate when using TLS.
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        port: NotRequired[pulumi.Input[_builtins.int]]
        """
        The transport port to use to connect to Redis.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        tls: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Specifies whether to use TLS when connecting to Redis.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountRediArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountRediArgs:
    def __init__(__self__, *,
                 host: pulumi.Input[_builtins.str],
                 name: pulumi.Input[_builtins.str],
                 password: pulumi.Input[_builtins.str],
                 username: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 ca_cert: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 insecure_tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 port: Optional[pulumi.Input[_builtins.int]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 tls: Optional[pulumi.Input[_builtins.bool]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] host: Specifies the host to connect to
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[_builtins.str] password: Specifies the password corresponding to the given username.
        :param pulumi.Input[_builtins.str] username: Specifies the username for Vault to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] ca_cert: The contents of a PEM-encoded CA cert file to use to verify the Redis server's identity.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.bool] insecure_tls: Specifies whether to skip verification of the server certificate when using TLS.
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[_builtins.int] port: The transport port to use to connect to Redis.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.bool] tls: Specifies whether to use TLS when connecting to Redis.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if ca_cert is not None:
            pulumi.set(__self__, "ca_cert", ca_cert)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if insecure_tls is not None:
            pulumi.set(__self__, "insecure_tls", insecure_tls)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if tls is not None:
            pulumi.set(__self__, "tls", tls)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def host(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the host to connect to
        """
        return pulumi.get(self, "host")

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

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the password corresponding to the given username.
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> pulumi.Input[_builtins.str]:
        """
        Specifies the username for Vault to use.
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="caCert")
    def ca_cert(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The contents of a PEM-encoded CA cert file to use to verify the Redis server's identity.
        """
        return pulumi.get(self, "ca_cert")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="insecureTls")
    def insecure_tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether to skip verification of the server certificate when using TLS.
        """
        return pulumi.get(self, "insecure_tls")

    @insecure_tls.setter
    def insecure_tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "insecure_tls", value)

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The transport port to use to connect to Redis.
        """
        return pulumi.get(self, "port")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter
    def tls(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether to use TLS when connecting to Redis.
        """
        return pulumi.get(self, "tls")

    @tls.setter
    def tls(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "tls", value)

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountRedisElasticacheArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        url: pulumi.Input[_builtins.str]
        """
        The configuration endpoint for the ElastiCache cluster to connect to.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The AWS secret key id to use to talk to ElastiCache. If omitted the credentials chain provider is used instead.
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        region: NotRequired[pulumi.Input[_builtins.str]]
        """
        The AWS region where the ElastiCache cluster is hosted. If omitted the plugin tries to infer the region from the environment.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The AWS access key id to use to talk to ElastiCache. If omitted the credentials chain provider is used instead.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountRedisElasticacheArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountRedisElasticacheArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 url: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 region: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[_builtins.str] url: The configuration endpoint for the ElastiCache cluster to connect to.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.str] password: The AWS secret key id to use to talk to ElastiCache. If omitted the credentials chain provider is used instead.
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[_builtins.str] region: The AWS region where the ElastiCache cluster is hosted. If omitted the plugin tries to infer the region from the environment.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] username: The AWS access key id to use to talk to ElastiCache. If omitted the credentials chain provider is used instead.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "url", url)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter
    def url(self) -> pulumi.Input[_builtins.str]:
        """
        The configuration endpoint for the ElastiCache cluster to connect to.
        """
        return pulumi.get(self, "url")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The AWS secret key id to use to talk to ElastiCache. If omitted the credentials chain provider is used instead.
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The AWS region where the ElastiCache cluster is hosted. If omitted the plugin tries to infer the region from the environment.
        """
        return pulumi.get(self, "region")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The AWS access key id to use to talk to ElastiCache. If omitted the credentials chain provider is used instead.
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountRedshiftArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        disable_escaping: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Disable special character escaping in username and password
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountRedshiftArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountRedshiftArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 disable_escaping: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.bool] disable_escaping: Disable special character escaping in username and password
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if disable_escaping is not None:
            pulumi.set(__self__, "disable_escaping", disable_escaping)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="disableEscaping")
    def disable_escaping(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Disable special character escaping in username and password
        """
        return pulumi.get(self, "disable_escaping")

    @disable_escaping.setter
    def disable_escaping(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_escaping", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


if not MYPY:
    class SecretsMountSnowflakeArgsDict(TypedDict):
        name: pulumi.Input[_builtins.str]
        """
        Name of the database connection.
        """
        allowed_roles: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of roles that are allowed to use this
        connection.
        """
        connection_url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Connection string to use to connect to the database.
        """
        data: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        disable_automated_rotation: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        max_connection_lifetime: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of seconds a connection may be reused.
        """
        max_idle_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of idle connections to the database.
        """
        max_open_connections: NotRequired[pulumi.Input[_builtins.int]]
        """
        Maximum number of open connections to the database.
        """
        password: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential password used in the connection URL
        """
        password_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        password_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for root credential password write-only field
        """
        plugin_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Specifies the name of the plugin to use.
        """
        private_key_wo: NotRequired[pulumi.Input[_builtins.str]]
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        The private key configured for the admin user in Snowflake.
        """
        private_key_wo_version: NotRequired[pulumi.Input[_builtins.int]]
        """
        Version counter for the private key key-pair credentials write-only field
        """
        root_rotation_statements: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        rotation_period: NotRequired[pulumi.Input[_builtins.int]]
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        rotation_schedule: NotRequired[pulumi.Input[_builtins.str]]
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        rotation_window: NotRequired[pulumi.Input[_builtins.int]]
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        username: NotRequired[pulumi.Input[_builtins.str]]
        """
        The root credential username used in the connection URL
        """
        username_template: NotRequired[pulumi.Input[_builtins.str]]
        """
        Username generation template.
        """
        verify_connection: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
elif False:
    SecretsMountSnowflakeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SecretsMountSnowflakeArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 allowed_roles: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 connection_url: Optional[pulumi.Input[_builtins.str]] = None,
                 data: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 disable_automated_rotation: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_connection_lifetime: Optional[pulumi.Input[_builtins.int]] = None,
                 max_idle_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 max_open_connections: Optional[pulumi.Input[_builtins.int]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 plugin_name: Optional[pulumi.Input[_builtins.str]] = None,
                 private_key_wo: Optional[pulumi.Input[_builtins.str]] = None,
                 private_key_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
                 root_rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
                 rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
                 rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
                 username: Optional[pulumi.Input[_builtins.str]] = None,
                 username_template: Optional[pulumi.Input[_builtins.str]] = None,
                 verify_connection: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the database connection.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_roles: A list of roles that are allowed to use this
               connection.
        :param pulumi.Input[_builtins.str] connection_url: Connection string to use to connect to the database.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] data: A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        :param pulumi.Input[_builtins.bool] disable_automated_rotation: Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.
               
               Supported list of database secrets engines that can be configured:
        :param pulumi.Input[_builtins.int] max_connection_lifetime: Maximum number of seconds a connection may be reused.
        :param pulumi.Input[_builtins.int] max_idle_connections: Maximum number of idle connections to the database.
        :param pulumi.Input[_builtins.int] max_open_connections: Maximum number of open connections to the database.
        :param pulumi.Input[_builtins.str] password: The root credential password used in the connection URL
        :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               Write-only field for the root credential password used in the connection URL
        :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
        :param pulumi.Input[_builtins.str] plugin_name: Specifies the name of the plugin to use.
        :param pulumi.Input[_builtins.str] private_key_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
               The private key configured for the admin user in Snowflake.
        :param pulumi.Input[_builtins.int] private_key_wo_version: Version counter for the private key key-pair credentials write-only field
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
        :param pulumi.Input[_builtins.int] rotation_period: The amount of time in seconds Vault should wait before rotating the root credential.
               A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] rotation_schedule: The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
               defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
               a rotation when a scheduled token rotation occurs. The default rotation window is
               unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
        :param pulumi.Input[_builtins.str] username_template: Username generation template.
        :param pulumi.Input[_builtins.bool] verify_connection: Whether the connection should be verified on
               initial configuration or not.
        """
        pulumi.set(__self__, "name", name)
        if allowed_roles is not None:
            pulumi.set(__self__, "allowed_roles", allowed_roles)
        if connection_url is not None:
            pulumi.set(__self__, "connection_url", connection_url)
        if data is not None:
            pulumi.set(__self__, "data", data)
        if disable_automated_rotation is not None:
            pulumi.set(__self__, "disable_automated_rotation", disable_automated_rotation)
        if max_connection_lifetime is not None:
            pulumi.set(__self__, "max_connection_lifetime", max_connection_lifetime)
        if max_idle_connections is not None:
            pulumi.set(__self__, "max_idle_connections", max_idle_connections)
        if max_open_connections is not None:
            pulumi.set(__self__, "max_open_connections", max_open_connections)
        if password is not None:
            warnings.warn("""Snowflake is ending support for single-factor password authentication by November 2025. Refer to the documentation for more information on migrating to key-pair authentication.""", DeprecationWarning)
            pulumi.log.warn("""password is deprecated: Snowflake is ending support for single-factor password authentication by November 2025. Refer to the documentation for more information on migrating to key-pair authentication.""")
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_wo is not None:
            pulumi.set(__self__, "password_wo", password_wo)
        if password_wo_version is not None:
            pulumi.set(__self__, "password_wo_version", password_wo_version)
        if plugin_name is not None:
            pulumi.set(__self__, "plugin_name", plugin_name)
        if private_key_wo is not None:
            pulumi.set(__self__, "private_key_wo", private_key_wo)
        if private_key_wo_version is not None:
            pulumi.set(__self__, "private_key_wo_version", private_key_wo_version)
        if root_rotation_statements is not None:
            pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
        if rotation_period is not None:
            pulumi.set(__self__, "rotation_period", rotation_period)
        if rotation_schedule is not None:
            pulumi.set(__self__, "rotation_schedule", rotation_schedule)
        if rotation_window is not None:
            pulumi.set(__self__, "rotation_window", rotation_window)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_template is not None:
            pulumi.set(__self__, "username_template", username_template)
        if verify_connection is not None:
            pulumi.set(__self__, "verify_connection", verify_connection)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the database connection.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="allowedRoles")
    def allowed_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of roles that are allowed to use this
        connection.
        """
        return pulumi.get(self, "allowed_roles")

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

    @_builtins.property
    @pulumi.getter(name="connectionUrl")
    def connection_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Connection string to use to connect to the database.
        """
        return pulumi.get(self, "connection_url")

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

    @_builtins.property
    @pulumi.getter
    def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        A map of sensitive data to pass to the endpoint. Useful for templated connection strings.
        """
        return pulumi.get(self, "data")

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

    @_builtins.property
    @pulumi.getter(name="disableAutomatedRotation")
    def disable_automated_rotation(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Cancels all upcoming rotations of the root credential until unset. Requires Vault Enterprise 1.19+.

        Supported list of database secrets engines that can be configured:
        """
        return pulumi.get(self, "disable_automated_rotation")

    @disable_automated_rotation.setter
    def disable_automated_rotation(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "disable_automated_rotation", value)

    @_builtins.property
    @pulumi.getter(name="maxConnectionLifetime")
    def max_connection_lifetime(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of seconds a connection may be reused.
        """
        return pulumi.get(self, "max_connection_lifetime")

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

    @_builtins.property
    @pulumi.getter(name="maxIdleConnections")
    def max_idle_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of idle connections to the database.
        """
        return pulumi.get(self, "max_idle_connections")

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

    @_builtins.property
    @pulumi.getter(name="maxOpenConnections")
    def max_open_connections(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Maximum number of open connections to the database.
        """
        return pulumi.get(self, "max_open_connections")

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

    @_builtins.property
    @pulumi.getter
    @_utilities.deprecated("""Snowflake is ending support for single-factor password authentication by November 2025. Refer to the documentation for more information on migrating to key-pair authentication.""")
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential password used in the connection URL
        """
        return pulumi.get(self, "password")

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

    @_builtins.property
    @pulumi.getter(name="passwordWo")
    def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        Write-only field for the root credential password used in the connection URL
        """
        return pulumi.get(self, "password_wo")

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

    @_builtins.property
    @pulumi.getter(name="passwordWoVersion")
    def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for root credential password write-only field
        """
        return pulumi.get(self, "password_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the name of the plugin to use.
        """
        return pulumi.get(self, "plugin_name")

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

    @_builtins.property
    @pulumi.getter(name="privateKeyWo")
    def private_key_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
        The private key configured for the admin user in Snowflake.
        """
        return pulumi.get(self, "private_key_wo")

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

    @_builtins.property
    @pulumi.getter(name="privateKeyWoVersion")
    def private_key_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Version counter for the private key key-pair credentials write-only field
        """
        return pulumi.get(self, "private_key_wo_version")

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

    @_builtins.property
    @pulumi.getter(name="rootRotationStatements")
    def root_rotation_statements(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of database statements to be executed to rotate the root user's credentials.
        """
        return pulumi.get(self, "root_rotation_statements")

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

    @_builtins.property
    @pulumi.getter(name="rotationPeriod")
    def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The amount of time in seconds Vault should wait before rotating the root credential.
        A zero value tells Vault not to rotate the root credential. The minimum rotation period is 10 seconds. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_period")

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

    @_builtins.property
    @pulumi.getter(name="rotationSchedule")
    def rotation_schedule(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The schedule, in [cron-style time format](https://en.wikipedia.org/wiki/Cron),
        defining the schedule on which Vault should rotate the root token. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_schedule")

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

    @_builtins.property
    @pulumi.getter(name="rotationWindow")
    def rotation_window(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum amount of time in seconds allowed to complete
        a rotation when a scheduled token rotation occurs. The default rotation window is
        unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
        """
        return pulumi.get(self, "rotation_window")

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

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The root credential username used in the connection URL
        """
        return pulumi.get(self, "username")

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

    @_builtins.property
    @pulumi.getter(name="usernameTemplate")
    def username_template(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Username generation template.
        """
        return pulumi.get(self, "username_template")

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

    @_builtins.property
    @pulumi.getter(name="verifyConnection")
    def verify_connection(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the connection should be verified on
        initial configuration or not.
        """
        return pulumi.get(self, "verify_connection")

    @verify_connection.setter
    def verify_connection(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "verify_connection", value)


