# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = [
    'DataSourceCredentialsArgs',
    'DataSourceCredentialsCredentialPairArgs',
    'DataSourceParametersArgs',
    'DataSourceParametersAmazonElasticsearchArgs',
    'DataSourceParametersAthenaArgs',
    'DataSourceParametersAuroraArgs',
    'DataSourceParametersAuroraPostgresqlArgs',
    'DataSourceParametersAwsIotAnalyticsArgs',
    'DataSourceParametersJiraArgs',
    'DataSourceParametersMariaDbArgs',
    'DataSourceParametersMysqlArgs',
    'DataSourceParametersOracleArgs',
    'DataSourceParametersPostgresqlArgs',
    'DataSourceParametersPrestoArgs',
    'DataSourceParametersRdsArgs',
    'DataSourceParametersRedshiftArgs',
    'DataSourceParametersS3Args',
    'DataSourceParametersS3ManifestFileLocationArgs',
    'DataSourceParametersServiceNowArgs',
    'DataSourceParametersSnowflakeArgs',
    'DataSourceParametersSparkArgs',
    'DataSourceParametersSqlServerArgs',
    'DataSourceParametersTeradataArgs',
    'DataSourceParametersTwitterArgs',
    'DataSourcePermissionArgs',
    'DataSourceSslPropertiesArgs',
    'DataSourceVpcConnectionPropertiesArgs',
]

@pulumi.input_type
class DataSourceCredentialsArgs:
    def __init__(__self__, *,
                 copy_source_arn: Optional[pulumi.Input[str]] = None,
                 credential_pair: Optional[pulumi.Input['DataSourceCredentialsCredentialPairArgs']] = None):
        """
        :param pulumi.Input[str] copy_source_arn: - The Amazon Resource Name (ARN) of a data source that has the credential pair that you want to use.
               When the value is not null, the `credential_pair` from the data source in the ARN is used.
        :param pulumi.Input['DataSourceCredentialsCredentialPairArgs'] credential_pair: - Credential pair. See Credential Pair below for more details.
        """
        if copy_source_arn is not None:
            pulumi.set(__self__, "copy_source_arn", copy_source_arn)
        if credential_pair is not None:
            pulumi.set(__self__, "credential_pair", credential_pair)

    @property
    @pulumi.getter(name="copySourceArn")
    def copy_source_arn(self) -> Optional[pulumi.Input[str]]:
        """
        - The Amazon Resource Name (ARN) of a data source that has the credential pair that you want to use.
        When the value is not null, the `credential_pair` from the data source in the ARN is used.
        """
        return pulumi.get(self, "copy_source_arn")

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

    @property
    @pulumi.getter(name="credentialPair")
    def credential_pair(self) -> Optional[pulumi.Input['DataSourceCredentialsCredentialPairArgs']]:
        """
        - Credential pair. See Credential Pair below for more details.
        """
        return pulumi.get(self, "credential_pair")

    @credential_pair.setter
    def credential_pair(self, value: Optional[pulumi.Input['DataSourceCredentialsCredentialPairArgs']]):
        pulumi.set(self, "credential_pair", value)


@pulumi.input_type
class DataSourceCredentialsCredentialPairArgs:
    def __init__(__self__, *,
                 password: pulumi.Input[str],
                 username: pulumi.Input[str]):
        """
        :param pulumi.Input[str] password: Password, maximum length of 1024 characters.
        :param pulumi.Input[str] username: User name, maximum length of 64 characters.
        """
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def password(self) -> pulumi.Input[str]:
        """
        Password, maximum length of 1024 characters.
        """
        return pulumi.get(self, "password")

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

    @property
    @pulumi.getter
    def username(self) -> pulumi.Input[str]:
        """
        User name, maximum length of 64 characters.
        """
        return pulumi.get(self, "username")

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


@pulumi.input_type
class DataSourceParametersArgs:
    def __init__(__self__, *,
                 amazon_elasticsearch: Optional[pulumi.Input['DataSourceParametersAmazonElasticsearchArgs']] = None,
                 athena: Optional[pulumi.Input['DataSourceParametersAthenaArgs']] = None,
                 aurora: Optional[pulumi.Input['DataSourceParametersAuroraArgs']] = None,
                 aurora_postgresql: Optional[pulumi.Input['DataSourceParametersAuroraPostgresqlArgs']] = None,
                 aws_iot_analytics: Optional[pulumi.Input['DataSourceParametersAwsIotAnalyticsArgs']] = None,
                 jira: Optional[pulumi.Input['DataSourceParametersJiraArgs']] = None,
                 maria_db: Optional[pulumi.Input['DataSourceParametersMariaDbArgs']] = None,
                 mysql: Optional[pulumi.Input['DataSourceParametersMysqlArgs']] = None,
                 oracle: Optional[pulumi.Input['DataSourceParametersOracleArgs']] = None,
                 postgresql: Optional[pulumi.Input['DataSourceParametersPostgresqlArgs']] = None,
                 presto: Optional[pulumi.Input['DataSourceParametersPrestoArgs']] = None,
                 rds: Optional[pulumi.Input['DataSourceParametersRdsArgs']] = None,
                 redshift: Optional[pulumi.Input['DataSourceParametersRedshiftArgs']] = None,
                 s3: Optional[pulumi.Input['DataSourceParametersS3Args']] = None,
                 service_now: Optional[pulumi.Input['DataSourceParametersServiceNowArgs']] = None,
                 snowflake: Optional[pulumi.Input['DataSourceParametersSnowflakeArgs']] = None,
                 spark: Optional[pulumi.Input['DataSourceParametersSparkArgs']] = None,
                 sql_server: Optional[pulumi.Input['DataSourceParametersSqlServerArgs']] = None,
                 teradata: Optional[pulumi.Input['DataSourceParametersTeradataArgs']] = None,
                 twitter: Optional[pulumi.Input['DataSourceParametersTwitterArgs']] = None):
        """
        :param pulumi.Input['DataSourceParametersAmazonElasticsearchArgs'] amazon_elasticsearch: Parameters for connecting to Amazon Elasticsearch.
        :param pulumi.Input['DataSourceParametersAthenaArgs'] athena: Parameters for connecting to Athena.
        :param pulumi.Input['DataSourceParametersAuroraArgs'] aurora: Parameters for connecting to Aurora MySQL.
        :param pulumi.Input['DataSourceParametersAuroraPostgresqlArgs'] aurora_postgresql: Parameters for connecting to Aurora Postgresql.
        :param pulumi.Input['DataSourceParametersAwsIotAnalyticsArgs'] aws_iot_analytics: Parameters for connecting to AWS IOT Analytics.
        :param pulumi.Input['DataSourceParametersJiraArgs'] jira: Parameters for connecting to Jira.
        :param pulumi.Input['DataSourceParametersMariaDbArgs'] maria_db: Parameters for connecting to MariaDB.
        :param pulumi.Input['DataSourceParametersMysqlArgs'] mysql: Parameters for connecting to MySQL.
        :param pulumi.Input['DataSourceParametersOracleArgs'] oracle: Parameters for connecting to Oracle.
        :param pulumi.Input['DataSourceParametersPostgresqlArgs'] postgresql: Parameters for connecting to Postgresql.
        :param pulumi.Input['DataSourceParametersPrestoArgs'] presto: Parameters for connecting to Presto.
        :param pulumi.Input['DataSourceParametersRdsArgs'] rds: Parameters for connecting to RDS.
        :param pulumi.Input['DataSourceParametersRedshiftArgs'] redshift: Parameters for connecting to Redshift.
        :param pulumi.Input['DataSourceParametersS3Args'] s3: Parameters for connecting to S3.
        :param pulumi.Input['DataSourceParametersServiceNowArgs'] service_now: Parameters for connecting to ServiceNow.
        :param pulumi.Input['DataSourceParametersSnowflakeArgs'] snowflake: Parameters for connecting to Snowflake.
        :param pulumi.Input['DataSourceParametersSparkArgs'] spark: Parameters for connecting to Spark.
        :param pulumi.Input['DataSourceParametersSqlServerArgs'] sql_server: Parameters for connecting to SQL Server.
        :param pulumi.Input['DataSourceParametersTeradataArgs'] teradata: Parameters for connecting to Teradata.
        :param pulumi.Input['DataSourceParametersTwitterArgs'] twitter: Parameters for connecting to Twitter.
        """
        if amazon_elasticsearch is not None:
            pulumi.set(__self__, "amazon_elasticsearch", amazon_elasticsearch)
        if athena is not None:
            pulumi.set(__self__, "athena", athena)
        if aurora is not None:
            pulumi.set(__self__, "aurora", aurora)
        if aurora_postgresql is not None:
            pulumi.set(__self__, "aurora_postgresql", aurora_postgresql)
        if aws_iot_analytics is not None:
            pulumi.set(__self__, "aws_iot_analytics", aws_iot_analytics)
        if jira is not None:
            pulumi.set(__self__, "jira", jira)
        if maria_db is not None:
            pulumi.set(__self__, "maria_db", maria_db)
        if mysql is not None:
            pulumi.set(__self__, "mysql", mysql)
        if oracle is not None:
            pulumi.set(__self__, "oracle", oracle)
        if postgresql is not None:
            pulumi.set(__self__, "postgresql", postgresql)
        if presto is not None:
            pulumi.set(__self__, "presto", presto)
        if rds is not None:
            pulumi.set(__self__, "rds", rds)
        if redshift is not None:
            pulumi.set(__self__, "redshift", redshift)
        if s3 is not None:
            pulumi.set(__self__, "s3", s3)
        if service_now is not None:
            pulumi.set(__self__, "service_now", service_now)
        if snowflake is not None:
            pulumi.set(__self__, "snowflake", snowflake)
        if spark is not None:
            pulumi.set(__self__, "spark", spark)
        if sql_server is not None:
            pulumi.set(__self__, "sql_server", sql_server)
        if teradata is not None:
            pulumi.set(__self__, "teradata", teradata)
        if twitter is not None:
            pulumi.set(__self__, "twitter", twitter)

    @property
    @pulumi.getter(name="amazonElasticsearch")
    def amazon_elasticsearch(self) -> Optional[pulumi.Input['DataSourceParametersAmazonElasticsearchArgs']]:
        """
        Parameters for connecting to Amazon Elasticsearch.
        """
        return pulumi.get(self, "amazon_elasticsearch")

    @amazon_elasticsearch.setter
    def amazon_elasticsearch(self, value: Optional[pulumi.Input['DataSourceParametersAmazonElasticsearchArgs']]):
        pulumi.set(self, "amazon_elasticsearch", value)

    @property
    @pulumi.getter
    def athena(self) -> Optional[pulumi.Input['DataSourceParametersAthenaArgs']]:
        """
        Parameters for connecting to Athena.
        """
        return pulumi.get(self, "athena")

    @athena.setter
    def athena(self, value: Optional[pulumi.Input['DataSourceParametersAthenaArgs']]):
        pulumi.set(self, "athena", value)

    @property
    @pulumi.getter
    def aurora(self) -> Optional[pulumi.Input['DataSourceParametersAuroraArgs']]:
        """
        Parameters for connecting to Aurora MySQL.
        """
        return pulumi.get(self, "aurora")

    @aurora.setter
    def aurora(self, value: Optional[pulumi.Input['DataSourceParametersAuroraArgs']]):
        pulumi.set(self, "aurora", value)

    @property
    @pulumi.getter(name="auroraPostgresql")
    def aurora_postgresql(self) -> Optional[pulumi.Input['DataSourceParametersAuroraPostgresqlArgs']]:
        """
        Parameters for connecting to Aurora Postgresql.
        """
        return pulumi.get(self, "aurora_postgresql")

    @aurora_postgresql.setter
    def aurora_postgresql(self, value: Optional[pulumi.Input['DataSourceParametersAuroraPostgresqlArgs']]):
        pulumi.set(self, "aurora_postgresql", value)

    @property
    @pulumi.getter(name="awsIotAnalytics")
    def aws_iot_analytics(self) -> Optional[pulumi.Input['DataSourceParametersAwsIotAnalyticsArgs']]:
        """
        Parameters for connecting to AWS IOT Analytics.
        """
        return pulumi.get(self, "aws_iot_analytics")

    @aws_iot_analytics.setter
    def aws_iot_analytics(self, value: Optional[pulumi.Input['DataSourceParametersAwsIotAnalyticsArgs']]):
        pulumi.set(self, "aws_iot_analytics", value)

    @property
    @pulumi.getter
    def jira(self) -> Optional[pulumi.Input['DataSourceParametersJiraArgs']]:
        """
        Parameters for connecting to Jira.
        """
        return pulumi.get(self, "jira")

    @jira.setter
    def jira(self, value: Optional[pulumi.Input['DataSourceParametersJiraArgs']]):
        pulumi.set(self, "jira", value)

    @property
    @pulumi.getter(name="mariaDb")
    def maria_db(self) -> Optional[pulumi.Input['DataSourceParametersMariaDbArgs']]:
        """
        Parameters for connecting to MariaDB.
        """
        return pulumi.get(self, "maria_db")

    @maria_db.setter
    def maria_db(self, value: Optional[pulumi.Input['DataSourceParametersMariaDbArgs']]):
        pulumi.set(self, "maria_db", value)

    @property
    @pulumi.getter
    def mysql(self) -> Optional[pulumi.Input['DataSourceParametersMysqlArgs']]:
        """
        Parameters for connecting to MySQL.
        """
        return pulumi.get(self, "mysql")

    @mysql.setter
    def mysql(self, value: Optional[pulumi.Input['DataSourceParametersMysqlArgs']]):
        pulumi.set(self, "mysql", value)

    @property
    @pulumi.getter
    def oracle(self) -> Optional[pulumi.Input['DataSourceParametersOracleArgs']]:
        """
        Parameters for connecting to Oracle.
        """
        return pulumi.get(self, "oracle")

    @oracle.setter
    def oracle(self, value: Optional[pulumi.Input['DataSourceParametersOracleArgs']]):
        pulumi.set(self, "oracle", value)

    @property
    @pulumi.getter
    def postgresql(self) -> Optional[pulumi.Input['DataSourceParametersPostgresqlArgs']]:
        """
        Parameters for connecting to Postgresql.
        """
        return pulumi.get(self, "postgresql")

    @postgresql.setter
    def postgresql(self, value: Optional[pulumi.Input['DataSourceParametersPostgresqlArgs']]):
        pulumi.set(self, "postgresql", value)

    @property
    @pulumi.getter
    def presto(self) -> Optional[pulumi.Input['DataSourceParametersPrestoArgs']]:
        """
        Parameters for connecting to Presto.
        """
        return pulumi.get(self, "presto")

    @presto.setter
    def presto(self, value: Optional[pulumi.Input['DataSourceParametersPrestoArgs']]):
        pulumi.set(self, "presto", value)

    @property
    @pulumi.getter
    def rds(self) -> Optional[pulumi.Input['DataSourceParametersRdsArgs']]:
        """
        Parameters for connecting to RDS.
        """
        return pulumi.get(self, "rds")

    @rds.setter
    def rds(self, value: Optional[pulumi.Input['DataSourceParametersRdsArgs']]):
        pulumi.set(self, "rds", value)

    @property
    @pulumi.getter
    def redshift(self) -> Optional[pulumi.Input['DataSourceParametersRedshiftArgs']]:
        """
        Parameters for connecting to Redshift.
        """
        return pulumi.get(self, "redshift")

    @redshift.setter
    def redshift(self, value: Optional[pulumi.Input['DataSourceParametersRedshiftArgs']]):
        pulumi.set(self, "redshift", value)

    @property
    @pulumi.getter
    def s3(self) -> Optional[pulumi.Input['DataSourceParametersS3Args']]:
        """
        Parameters for connecting to S3.
        """
        return pulumi.get(self, "s3")

    @s3.setter
    def s3(self, value: Optional[pulumi.Input['DataSourceParametersS3Args']]):
        pulumi.set(self, "s3", value)

    @property
    @pulumi.getter(name="serviceNow")
    def service_now(self) -> Optional[pulumi.Input['DataSourceParametersServiceNowArgs']]:
        """
        Parameters for connecting to ServiceNow.
        """
        return pulumi.get(self, "service_now")

    @service_now.setter
    def service_now(self, value: Optional[pulumi.Input['DataSourceParametersServiceNowArgs']]):
        pulumi.set(self, "service_now", value)

    @property
    @pulumi.getter
    def snowflake(self) -> Optional[pulumi.Input['DataSourceParametersSnowflakeArgs']]:
        """
        Parameters for connecting to Snowflake.
        """
        return pulumi.get(self, "snowflake")

    @snowflake.setter
    def snowflake(self, value: Optional[pulumi.Input['DataSourceParametersSnowflakeArgs']]):
        pulumi.set(self, "snowflake", value)

    @property
    @pulumi.getter
    def spark(self) -> Optional[pulumi.Input['DataSourceParametersSparkArgs']]:
        """
        Parameters for connecting to Spark.
        """
        return pulumi.get(self, "spark")

    @spark.setter
    def spark(self, value: Optional[pulumi.Input['DataSourceParametersSparkArgs']]):
        pulumi.set(self, "spark", value)

    @property
    @pulumi.getter(name="sqlServer")
    def sql_server(self) -> Optional[pulumi.Input['DataSourceParametersSqlServerArgs']]:
        """
        Parameters for connecting to SQL Server.
        """
        return pulumi.get(self, "sql_server")

    @sql_server.setter
    def sql_server(self, value: Optional[pulumi.Input['DataSourceParametersSqlServerArgs']]):
        pulumi.set(self, "sql_server", value)

    @property
    @pulumi.getter
    def teradata(self) -> Optional[pulumi.Input['DataSourceParametersTeradataArgs']]:
        """
        Parameters for connecting to Teradata.
        """
        return pulumi.get(self, "teradata")

    @teradata.setter
    def teradata(self, value: Optional[pulumi.Input['DataSourceParametersTeradataArgs']]):
        pulumi.set(self, "teradata", value)

    @property
    @pulumi.getter
    def twitter(self) -> Optional[pulumi.Input['DataSourceParametersTwitterArgs']]:
        """
        Parameters for connecting to Twitter.
        """
        return pulumi.get(self, "twitter")

    @twitter.setter
    def twitter(self, value: Optional[pulumi.Input['DataSourceParametersTwitterArgs']]):
        pulumi.set(self, "twitter", value)


@pulumi.input_type
class DataSourceParametersAmazonElasticsearchArgs:
    def __init__(__self__, *,
                 domain: pulumi.Input[str]):
        """
        :param pulumi.Input[str] domain: The OpenSearch domain.
        """
        pulumi.set(__self__, "domain", domain)

    @property
    @pulumi.getter
    def domain(self) -> pulumi.Input[str]:
        """
        The OpenSearch domain.
        """
        return pulumi.get(self, "domain")

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


@pulumi.input_type
class DataSourceParametersAthenaArgs:
    def __init__(__self__, *,
                 work_group: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] work_group: The work-group to which to connect.
        """
        if work_group is not None:
            pulumi.set(__self__, "work_group", work_group)

    @property
    @pulumi.getter(name="workGroup")
    def work_group(self) -> Optional[pulumi.Input[str]]:
        """
        The work-group to which to connect.
        """
        return pulumi.get(self, "work_group")

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


@pulumi.input_type
class DataSourceParametersAuroraArgs:
    def __init__(__self__, *,
                 database: pulumi.Input[str],
                 host: pulumi.Input[str],
                 port: pulumi.Input[int]):
        """
        :param pulumi.Input[str] database: The database to which to connect.
        :param pulumi.Input[str] host: The host to which to connect.
        :param pulumi.Input[int] port: The port to which to connect.
        """
        pulumi.set(__self__, "database", database)
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def database(self) -> pulumi.Input[str]:
        """
        The database to which to connect.
        """
        return pulumi.get(self, "database")

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

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

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

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

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


@pulumi.input_type
class DataSourceParametersAuroraPostgresqlArgs:
    def __init__(__self__, *,
                 database: pulumi.Input[str],
                 host: pulumi.Input[str],
                 port: pulumi.Input[int]):
        """
        :param pulumi.Input[str] database: The database to which to connect.
        :param pulumi.Input[str] host: The host to which to connect.
        :param pulumi.Input[int] port: The port to which to connect.
        """
        pulumi.set(__self__, "database", database)
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def database(self) -> pulumi.Input[str]:
        """
        The database to which to connect.
        """
        return pulumi.get(self, "database")

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

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

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

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

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


@pulumi.input_type
class DataSourceParametersAwsIotAnalyticsArgs:
    def __init__(__self__, *,
                 data_set_name: pulumi.Input[str]):
        """
        :param pulumi.Input[str] data_set_name: The name of the data set to which to connect.
        """
        pulumi.set(__self__, "data_set_name", data_set_name)

    @property
    @pulumi.getter(name="dataSetName")
    def data_set_name(self) -> pulumi.Input[str]:
        """
        The name of the data set to which to connect.
        """
        return pulumi.get(self, "data_set_name")

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


@pulumi.input_type
class DataSourceParametersJiraArgs:
    def __init__(__self__, *,
                 site_base_url: pulumi.Input[str]):
        """
        :param pulumi.Input[str] site_base_url: The base URL of the Jira instance's site to which to connect.
        """
        pulumi.set(__self__, "site_base_url", site_base_url)

    @property
    @pulumi.getter(name="siteBaseUrl")
    def site_base_url(self) -> pulumi.Input[str]:
        """
        The base URL of the Jira instance's site to which to connect.
        """
        return pulumi.get(self, "site_base_url")

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


@pulumi.input_type
class DataSourceParametersMariaDbArgs:
    def __init__(__self__, *,
                 database: pulumi.Input[str],
                 host: pulumi.Input[str],
                 port: pulumi.Input[int]):
        """
        :param pulumi.Input[str] database: The database to which to connect.
        :param pulumi.Input[str] host: The host to which to connect.
        :param pulumi.Input[int] port: The port to which to connect.
        """
        pulumi.set(__self__, "database", database)
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def database(self) -> pulumi.Input[str]:
        """
        The database to which to connect.
        """
        return pulumi.get(self, "database")

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

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

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

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

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


@pulumi.input_type
class DataSourceParametersMysqlArgs:
    def __init__(__self__, *,
                 database: pulumi.Input[str],
                 host: pulumi.Input[str],
                 port: pulumi.Input[int]):
        """
        :param pulumi.Input[str] database: The database to which to connect.
        :param pulumi.Input[str] host: The host to which to connect.
        :param pulumi.Input[int] port: The port to which to connect.
        """
        pulumi.set(__self__, "database", database)
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def database(self) -> pulumi.Input[str]:
        """
        The database to which to connect.
        """
        return pulumi.get(self, "database")

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

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

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

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

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


@pulumi.input_type
class DataSourceParametersOracleArgs:
    def __init__(__self__, *,
                 database: pulumi.Input[str],
                 host: pulumi.Input[str],
                 port: pulumi.Input[int]):
        """
        :param pulumi.Input[str] database: The database to which to connect.
        :param pulumi.Input[str] host: The host to which to connect.
        :param pulumi.Input[int] port: The port to which to connect.
        """
        pulumi.set(__self__, "database", database)
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def database(self) -> pulumi.Input[str]:
        """
        The database to which to connect.
        """
        return pulumi.get(self, "database")

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

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

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

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

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


@pulumi.input_type
class DataSourceParametersPostgresqlArgs:
    def __init__(__self__, *,
                 database: pulumi.Input[str],
                 host: pulumi.Input[str],
                 port: pulumi.Input[int]):
        """
        :param pulumi.Input[str] database: The database to which to connect.
        :param pulumi.Input[str] host: The host to which to connect.
        :param pulumi.Input[int] port: The port to which to connect.
        """
        pulumi.set(__self__, "database", database)
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def database(self) -> pulumi.Input[str]:
        """
        The database to which to connect.
        """
        return pulumi.get(self, "database")

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

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

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

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

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


@pulumi.input_type
class DataSourceParametersPrestoArgs:
    def __init__(__self__, *,
                 catalog: pulumi.Input[str],
                 host: pulumi.Input[str],
                 port: pulumi.Input[int]):
        """
        :param pulumi.Input[str] catalog: The catalog to which to connect.
        :param pulumi.Input[str] host: The host to which to connect.
        :param pulumi.Input[int] port: The port to which to connect.
        """
        pulumi.set(__self__, "catalog", catalog)
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def catalog(self) -> pulumi.Input[str]:
        """
        The catalog to which to connect.
        """
        return pulumi.get(self, "catalog")

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

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

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

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

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


@pulumi.input_type
class DataSourceParametersRdsArgs:
    def __init__(__self__, *,
                 database: pulumi.Input[str],
                 instance_id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] database: The database to which to connect.
        :param pulumi.Input[str] instance_id: The instance ID to which to connect.
        """
        pulumi.set(__self__, "database", database)
        pulumi.set(__self__, "instance_id", instance_id)

    @property
    @pulumi.getter
    def database(self) -> pulumi.Input[str]:
        """
        The database to which to connect.
        """
        return pulumi.get(self, "database")

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

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> pulumi.Input[str]:
        """
        The instance ID to which to connect.
        """
        return pulumi.get(self, "instance_id")

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


@pulumi.input_type
class DataSourceParametersRedshiftArgs:
    def __init__(__self__, *,
                 database: pulumi.Input[str],
                 cluster_id: Optional[pulumi.Input[str]] = None,
                 host: Optional[pulumi.Input[str]] = None,
                 port: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[str] database: The database to which to connect.
        :param pulumi.Input[str] cluster_id: The ID of the cluster to which to connect.
        :param pulumi.Input[str] host: The host to which to connect.
        :param pulumi.Input[int] port: The port to which to connect.
        """
        pulumi.set(__self__, "database", database)
        if cluster_id is not None:
            pulumi.set(__self__, "cluster_id", cluster_id)
        if host is not None:
            pulumi.set(__self__, "host", host)
        if port is not None:
            pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def database(self) -> pulumi.Input[str]:
        """
        The database to which to connect.
        """
        return pulumi.get(self, "database")

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

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the cluster to which to connect.
        """
        return pulumi.get(self, "cluster_id")

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

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

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

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

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


@pulumi.input_type
class DataSourceParametersS3Args:
    def __init__(__self__, *,
                 manifest_file_location: pulumi.Input['DataSourceParametersS3ManifestFileLocationArgs']):
        """
        :param pulumi.Input['DataSourceParametersS3ManifestFileLocationArgs'] manifest_file_location: An object containing the S3 location of the S3 manifest file.
        """
        pulumi.set(__self__, "manifest_file_location", manifest_file_location)

    @property
    @pulumi.getter(name="manifestFileLocation")
    def manifest_file_location(self) -> pulumi.Input['DataSourceParametersS3ManifestFileLocationArgs']:
        """
        An object containing the S3 location of the S3 manifest file.
        """
        return pulumi.get(self, "manifest_file_location")

    @manifest_file_location.setter
    def manifest_file_location(self, value: pulumi.Input['DataSourceParametersS3ManifestFileLocationArgs']):
        pulumi.set(self, "manifest_file_location", value)


@pulumi.input_type
class DataSourceParametersS3ManifestFileLocationArgs:
    def __init__(__self__, *,
                 bucket: pulumi.Input[str],
                 key: pulumi.Input[str]):
        """
        :param pulumi.Input[str] bucket: The name of the bucket that contains the manifest file.
        :param pulumi.Input[str] key: The key of the manifest file within the bucket.
        """
        pulumi.set(__self__, "bucket", bucket)
        pulumi.set(__self__, "key", key)

    @property
    @pulumi.getter
    def bucket(self) -> pulumi.Input[str]:
        """
        The name of the bucket that contains the manifest file.
        """
        return pulumi.get(self, "bucket")

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

    @property
    @pulumi.getter
    def key(self) -> pulumi.Input[str]:
        """
        The key of the manifest file within the bucket.
        """
        return pulumi.get(self, "key")

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


@pulumi.input_type
class DataSourceParametersServiceNowArgs:
    def __init__(__self__, *,
                 site_base_url: pulumi.Input[str]):
        """
        :param pulumi.Input[str] site_base_url: The base URL of the Jira instance's site to which to connect.
        """
        pulumi.set(__self__, "site_base_url", site_base_url)

    @property
    @pulumi.getter(name="siteBaseUrl")
    def site_base_url(self) -> pulumi.Input[str]:
        """
        The base URL of the Jira instance's site to which to connect.
        """
        return pulumi.get(self, "site_base_url")

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


@pulumi.input_type
class DataSourceParametersSnowflakeArgs:
    def __init__(__self__, *,
                 database: pulumi.Input[str],
                 host: pulumi.Input[str],
                 warehouse: pulumi.Input[str]):
        """
        :param pulumi.Input[str] database: The database to which to connect.
        :param pulumi.Input[str] host: The host to which to connect.
        :param pulumi.Input[str] warehouse: The warehouse to which to connect.
        """
        pulumi.set(__self__, "database", database)
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "warehouse", warehouse)

    @property
    @pulumi.getter
    def database(self) -> pulumi.Input[str]:
        """
        The database to which to connect.
        """
        return pulumi.get(self, "database")

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

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

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

    @property
    @pulumi.getter
    def warehouse(self) -> pulumi.Input[str]:
        """
        The warehouse to which to connect.
        """
        return pulumi.get(self, "warehouse")

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


@pulumi.input_type
class DataSourceParametersSparkArgs:
    def __init__(__self__, *,
                 host: pulumi.Input[str],
                 port: pulumi.Input[int]):
        """
        :param pulumi.Input[str] host: The host to which to connect.
        :param pulumi.Input[int] port: The warehouse to which to connect.
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "port", port)

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

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

    @property
    @pulumi.getter
    def port(self) -> pulumi.Input[int]:
        """
        The warehouse to which to connect.
        """
        return pulumi.get(self, "port")

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


@pulumi.input_type
class DataSourceParametersSqlServerArgs:
    def __init__(__self__, *,
                 database: pulumi.Input[str],
                 host: pulumi.Input[str],
                 port: pulumi.Input[int]):
        """
        :param pulumi.Input[str] database: The database to which to connect.
        :param pulumi.Input[str] host: The host to which to connect.
        :param pulumi.Input[int] port: The warehouse to which to connect.
        """
        pulumi.set(__self__, "database", database)
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def database(self) -> pulumi.Input[str]:
        """
        The database to which to connect.
        """
        return pulumi.get(self, "database")

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

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

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

    @property
    @pulumi.getter
    def port(self) -> pulumi.Input[int]:
        """
        The warehouse to which to connect.
        """
        return pulumi.get(self, "port")

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


@pulumi.input_type
class DataSourceParametersTeradataArgs:
    def __init__(__self__, *,
                 database: pulumi.Input[str],
                 host: pulumi.Input[str],
                 port: pulumi.Input[int]):
        """
        :param pulumi.Input[str] database: The database to which to connect.
        :param pulumi.Input[str] host: The host to which to connect.
        :param pulumi.Input[int] port: The warehouse to which to connect.
        """
        pulumi.set(__self__, "database", database)
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def database(self) -> pulumi.Input[str]:
        """
        The database to which to connect.
        """
        return pulumi.get(self, "database")

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

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

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

    @property
    @pulumi.getter
    def port(self) -> pulumi.Input[int]:
        """
        The warehouse to which to connect.
        """
        return pulumi.get(self, "port")

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


@pulumi.input_type
class DataSourceParametersTwitterArgs:
    def __init__(__self__, *,
                 max_rows: pulumi.Input[int],
                 query: pulumi.Input[str]):
        """
        :param pulumi.Input[int] max_rows: The maximum number of rows to query.
        :param pulumi.Input[str] query: The Twitter query to retrieve the data.
        """
        pulumi.set(__self__, "max_rows", max_rows)
        pulumi.set(__self__, "query", query)

    @property
    @pulumi.getter(name="maxRows")
    def max_rows(self) -> pulumi.Input[int]:
        """
        The maximum number of rows to query.
        """
        return pulumi.get(self, "max_rows")

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

    @property
    @pulumi.getter
    def query(self) -> pulumi.Input[str]:
        """
        The Twitter query to retrieve the data.
        """
        return pulumi.get(self, "query")

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


@pulumi.input_type
class DataSourcePermissionArgs:
    def __init__(__self__, *,
                 actions: pulumi.Input[Sequence[pulumi.Input[str]]],
                 principal: pulumi.Input[str]):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] actions: Set of IAM actions to grant or revoke permissions on. Max of 16 items.
        :param pulumi.Input[str] principal: The Amazon Resource Name (ARN) of the principal.
        """
        pulumi.set(__self__, "actions", actions)
        pulumi.set(__self__, "principal", principal)

    @property
    @pulumi.getter
    def actions(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        """
        Set of IAM actions to grant or revoke permissions on. Max of 16 items.
        """
        return pulumi.get(self, "actions")

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

    @property
    @pulumi.getter
    def principal(self) -> pulumi.Input[str]:
        """
        The Amazon Resource Name (ARN) of the principal.
        """
        return pulumi.get(self, "principal")

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


@pulumi.input_type
class DataSourceSslPropertiesArgs:
    def __init__(__self__, *,
                 disable_ssl: pulumi.Input[bool]):
        """
        :param pulumi.Input[bool] disable_ssl: A Boolean option to control whether SSL should be disabled.
        """
        pulumi.set(__self__, "disable_ssl", disable_ssl)

    @property
    @pulumi.getter(name="disableSsl")
    def disable_ssl(self) -> pulumi.Input[bool]:
        """
        A Boolean option to control whether SSL should be disabled.
        """
        return pulumi.get(self, "disable_ssl")

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


@pulumi.input_type
class DataSourceVpcConnectionPropertiesArgs:
    def __init__(__self__, *,
                 vpc_connection_arn: pulumi.Input[str]):
        """
        :param pulumi.Input[str] vpc_connection_arn: The Amazon Resource Name (ARN) for the VPC connection.
        """
        pulumi.set(__self__, "vpc_connection_arn", vpc_connection_arn)

    @property
    @pulumi.getter(name="vpcConnectionArn")
    def vpc_connection_arn(self) -> pulumi.Input[str]:
        """
        The Amazon Resource Name (ARN) for the VPC connection.
        """
        return pulumi.get(self, "vpc_connection_arn")

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


