# 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
from . import outputs
from ._inputs import *

__all__ = ['FeatureEngineeringKafkaConfigArgs', 'FeatureEngineeringKafkaConfig']

@pulumi.input_type
class FeatureEngineeringKafkaConfigArgs:
    def __init__(__self__, *,
                 auth_config: pulumi.Input['FeatureEngineeringKafkaConfigAuthConfigArgs'],
                 bootstrap_servers: pulumi.Input[_builtins.str],
                 subscription_mode: pulumi.Input['FeatureEngineeringKafkaConfigSubscriptionModeArgs'],
                 backfill_source: Optional[pulumi.Input['FeatureEngineeringKafkaConfigBackfillSourceArgs']] = None,
                 extra_options: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 key_schema: Optional[pulumi.Input['FeatureEngineeringKafkaConfigKeySchemaArgs']] = None,
                 provider_config: Optional[pulumi.Input['FeatureEngineeringKafkaConfigProviderConfigArgs']] = None,
                 value_schema: Optional[pulumi.Input['FeatureEngineeringKafkaConfigValueSchemaArgs']] = None):
        """
        The set of arguments for constructing a FeatureEngineeringKafkaConfig resource.
        :param pulumi.Input['FeatureEngineeringKafkaConfigAuthConfigArgs'] auth_config: Authentication configuration for connection to topics
        :param pulumi.Input[_builtins.str] bootstrap_servers: A comma-separated list of host/port pairs pointing to Kafka cluster
        :param pulumi.Input['FeatureEngineeringKafkaConfigSubscriptionModeArgs'] subscription_mode: Options to configure which Kafka topics to pull data from
        :param pulumi.Input['FeatureEngineeringKafkaConfigBackfillSourceArgs'] backfill_source: A user-provided and managed source for backfilling data. Historical data is used when creating a training set from streaming features linked to this Kafka config.
               In the future, a separate table will be maintained by Databricks for forward filling data.
               The schema for this source must match exactly that of the key and value schemas specified for this Kafka config
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] extra_options: Catch-all for miscellaneous options. Keys should be source options or Kafka consumer options (kafka.*)
        :param pulumi.Input['FeatureEngineeringKafkaConfigKeySchemaArgs'] key_schema: Schema configuration for extracting message keys from topics. At least one of key_schema and value_schema must be provided
        :param pulumi.Input['FeatureEngineeringKafkaConfigProviderConfigArgs'] provider_config: Configure the provider for management through account provider.
        :param pulumi.Input['FeatureEngineeringKafkaConfigValueSchemaArgs'] value_schema: Schema configuration for extracting message values from topics. At least one of key_schema and value_schema must be provided
        """
        pulumi.set(__self__, "auth_config", auth_config)
        pulumi.set(__self__, "bootstrap_servers", bootstrap_servers)
        pulumi.set(__self__, "subscription_mode", subscription_mode)
        if backfill_source is not None:
            pulumi.set(__self__, "backfill_source", backfill_source)
        if extra_options is not None:
            pulumi.set(__self__, "extra_options", extra_options)
        if key_schema is not None:
            pulumi.set(__self__, "key_schema", key_schema)
        if provider_config is not None:
            pulumi.set(__self__, "provider_config", provider_config)
        if value_schema is not None:
            pulumi.set(__self__, "value_schema", value_schema)

    @_builtins.property
    @pulumi.getter(name="authConfig")
    def auth_config(self) -> pulumi.Input['FeatureEngineeringKafkaConfigAuthConfigArgs']:
        """
        Authentication configuration for connection to topics
        """
        return pulumi.get(self, "auth_config")

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

    @_builtins.property
    @pulumi.getter(name="bootstrapServers")
    def bootstrap_servers(self) -> pulumi.Input[_builtins.str]:
        """
        A comma-separated list of host/port pairs pointing to Kafka cluster
        """
        return pulumi.get(self, "bootstrap_servers")

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

    @_builtins.property
    @pulumi.getter(name="subscriptionMode")
    def subscription_mode(self) -> pulumi.Input['FeatureEngineeringKafkaConfigSubscriptionModeArgs']:
        """
        Options to configure which Kafka topics to pull data from
        """
        return pulumi.get(self, "subscription_mode")

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

    @_builtins.property
    @pulumi.getter(name="backfillSource")
    def backfill_source(self) -> Optional[pulumi.Input['FeatureEngineeringKafkaConfigBackfillSourceArgs']]:
        """
        A user-provided and managed source for backfilling data. Historical data is used when creating a training set from streaming features linked to this Kafka config.
        In the future, a separate table will be maintained by Databricks for forward filling data.
        The schema for this source must match exactly that of the key and value schemas specified for this Kafka config
        """
        return pulumi.get(self, "backfill_source")

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

    @_builtins.property
    @pulumi.getter(name="extraOptions")
    def extra_options(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        Catch-all for miscellaneous options. Keys should be source options or Kafka consumer options (kafka.*)
        """
        return pulumi.get(self, "extra_options")

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

    @_builtins.property
    @pulumi.getter(name="keySchema")
    def key_schema(self) -> Optional[pulumi.Input['FeatureEngineeringKafkaConfigKeySchemaArgs']]:
        """
        Schema configuration for extracting message keys from topics. At least one of key_schema and value_schema must be provided
        """
        return pulumi.get(self, "key_schema")

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

    @_builtins.property
    @pulumi.getter(name="providerConfig")
    def provider_config(self) -> Optional[pulumi.Input['FeatureEngineeringKafkaConfigProviderConfigArgs']]:
        """
        Configure the provider for management through account provider.
        """
        return pulumi.get(self, "provider_config")

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

    @_builtins.property
    @pulumi.getter(name="valueSchema")
    def value_schema(self) -> Optional[pulumi.Input['FeatureEngineeringKafkaConfigValueSchemaArgs']]:
        """
        Schema configuration for extracting message values from topics. At least one of key_schema and value_schema must be provided
        """
        return pulumi.get(self, "value_schema")

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


@pulumi.input_type
class _FeatureEngineeringKafkaConfigState:
    def __init__(__self__, *,
                 auth_config: Optional[pulumi.Input['FeatureEngineeringKafkaConfigAuthConfigArgs']] = None,
                 backfill_source: Optional[pulumi.Input['FeatureEngineeringKafkaConfigBackfillSourceArgs']] = None,
                 bootstrap_servers: Optional[pulumi.Input[_builtins.str]] = None,
                 extra_options: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 key_schema: Optional[pulumi.Input['FeatureEngineeringKafkaConfigKeySchemaArgs']] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 provider_config: Optional[pulumi.Input['FeatureEngineeringKafkaConfigProviderConfigArgs']] = None,
                 subscription_mode: Optional[pulumi.Input['FeatureEngineeringKafkaConfigSubscriptionModeArgs']] = None,
                 value_schema: Optional[pulumi.Input['FeatureEngineeringKafkaConfigValueSchemaArgs']] = None):
        """
        Input properties used for looking up and filtering FeatureEngineeringKafkaConfig resources.
        :param pulumi.Input['FeatureEngineeringKafkaConfigAuthConfigArgs'] auth_config: Authentication configuration for connection to topics
        :param pulumi.Input['FeatureEngineeringKafkaConfigBackfillSourceArgs'] backfill_source: A user-provided and managed source for backfilling data. Historical data is used when creating a training set from streaming features linked to this Kafka config.
               In the future, a separate table will be maintained by Databricks for forward filling data.
               The schema for this source must match exactly that of the key and value schemas specified for this Kafka config
        :param pulumi.Input[_builtins.str] bootstrap_servers: A comma-separated list of host/port pairs pointing to Kafka cluster
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] extra_options: Catch-all for miscellaneous options. Keys should be source options or Kafka consumer options (kafka.*)
        :param pulumi.Input['FeatureEngineeringKafkaConfigKeySchemaArgs'] key_schema: Schema configuration for extracting message keys from topics. At least one of key_schema and value_schema must be provided
        :param pulumi.Input[_builtins.str] name: (string) - Name that uniquely identifies this Kafka config within the metastore. This will be the identifier used from the Feature object to reference these configs for a feature.
               Can be distinct from topic name
        :param pulumi.Input['FeatureEngineeringKafkaConfigProviderConfigArgs'] provider_config: Configure the provider for management through account provider.
        :param pulumi.Input['FeatureEngineeringKafkaConfigSubscriptionModeArgs'] subscription_mode: Options to configure which Kafka topics to pull data from
        :param pulumi.Input['FeatureEngineeringKafkaConfigValueSchemaArgs'] value_schema: Schema configuration for extracting message values from topics. At least one of key_schema and value_schema must be provided
        """
        if auth_config is not None:
            pulumi.set(__self__, "auth_config", auth_config)
        if backfill_source is not None:
            pulumi.set(__self__, "backfill_source", backfill_source)
        if bootstrap_servers is not None:
            pulumi.set(__self__, "bootstrap_servers", bootstrap_servers)
        if extra_options is not None:
            pulumi.set(__self__, "extra_options", extra_options)
        if key_schema is not None:
            pulumi.set(__self__, "key_schema", key_schema)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if provider_config is not None:
            pulumi.set(__self__, "provider_config", provider_config)
        if subscription_mode is not None:
            pulumi.set(__self__, "subscription_mode", subscription_mode)
        if value_schema is not None:
            pulumi.set(__self__, "value_schema", value_schema)

    @_builtins.property
    @pulumi.getter(name="authConfig")
    def auth_config(self) -> Optional[pulumi.Input['FeatureEngineeringKafkaConfigAuthConfigArgs']]:
        """
        Authentication configuration for connection to topics
        """
        return pulumi.get(self, "auth_config")

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

    @_builtins.property
    @pulumi.getter(name="backfillSource")
    def backfill_source(self) -> Optional[pulumi.Input['FeatureEngineeringKafkaConfigBackfillSourceArgs']]:
        """
        A user-provided and managed source for backfilling data. Historical data is used when creating a training set from streaming features linked to this Kafka config.
        In the future, a separate table will be maintained by Databricks for forward filling data.
        The schema for this source must match exactly that of the key and value schemas specified for this Kafka config
        """
        return pulumi.get(self, "backfill_source")

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

    @_builtins.property
    @pulumi.getter(name="bootstrapServers")
    def bootstrap_servers(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A comma-separated list of host/port pairs pointing to Kafka cluster
        """
        return pulumi.get(self, "bootstrap_servers")

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

    @_builtins.property
    @pulumi.getter(name="extraOptions")
    def extra_options(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        Catch-all for miscellaneous options. Keys should be source options or Kafka consumer options (kafka.*)
        """
        return pulumi.get(self, "extra_options")

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

    @_builtins.property
    @pulumi.getter(name="keySchema")
    def key_schema(self) -> Optional[pulumi.Input['FeatureEngineeringKafkaConfigKeySchemaArgs']]:
        """
        Schema configuration for extracting message keys from topics. At least one of key_schema and value_schema must be provided
        """
        return pulumi.get(self, "key_schema")

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

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        (string) - Name that uniquely identifies this Kafka config within the metastore. This will be the identifier used from the Feature object to reference these configs for a feature.
        Can be distinct from topic name
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="providerConfig")
    def provider_config(self) -> Optional[pulumi.Input['FeatureEngineeringKafkaConfigProviderConfigArgs']]:
        """
        Configure the provider for management through account provider.
        """
        return pulumi.get(self, "provider_config")

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

    @_builtins.property
    @pulumi.getter(name="subscriptionMode")
    def subscription_mode(self) -> Optional[pulumi.Input['FeatureEngineeringKafkaConfigSubscriptionModeArgs']]:
        """
        Options to configure which Kafka topics to pull data from
        """
        return pulumi.get(self, "subscription_mode")

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

    @_builtins.property
    @pulumi.getter(name="valueSchema")
    def value_schema(self) -> Optional[pulumi.Input['FeatureEngineeringKafkaConfigValueSchemaArgs']]:
        """
        Schema configuration for extracting message values from topics. At least one of key_schema and value_schema must be provided
        """
        return pulumi.get(self, "value_schema")

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


@pulumi.type_token("databricks:index/featureEngineeringKafkaConfig:FeatureEngineeringKafkaConfig")
class FeatureEngineeringKafkaConfig(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 auth_config: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigAuthConfigArgs', 'FeatureEngineeringKafkaConfigAuthConfigArgsDict']]] = None,
                 backfill_source: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigBackfillSourceArgs', 'FeatureEngineeringKafkaConfigBackfillSourceArgsDict']]] = None,
                 bootstrap_servers: Optional[pulumi.Input[_builtins.str]] = None,
                 extra_options: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 key_schema: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigKeySchemaArgs', 'FeatureEngineeringKafkaConfigKeySchemaArgsDict']]] = None,
                 provider_config: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigProviderConfigArgs', 'FeatureEngineeringKafkaConfigProviderConfigArgsDict']]] = None,
                 subscription_mode: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigSubscriptionModeArgs', 'FeatureEngineeringKafkaConfigSubscriptionModeArgsDict']]] = None,
                 value_schema: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigValueSchemaArgs', 'FeatureEngineeringKafkaConfigValueSchemaArgsDict']]] = None,
                 __props__=None):
        """
        [![Private Preview](https://img.shields.io/badge/Release_Stage-Private_Preview-blueviolet)](https://docs.databricks.com/aws/en/release-notes/release-types)

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Union['FeatureEngineeringKafkaConfigAuthConfigArgs', 'FeatureEngineeringKafkaConfigAuthConfigArgsDict']] auth_config: Authentication configuration for connection to topics
        :param pulumi.Input[Union['FeatureEngineeringKafkaConfigBackfillSourceArgs', 'FeatureEngineeringKafkaConfigBackfillSourceArgsDict']] backfill_source: A user-provided and managed source for backfilling data. Historical data is used when creating a training set from streaming features linked to this Kafka config.
               In the future, a separate table will be maintained by Databricks for forward filling data.
               The schema for this source must match exactly that of the key and value schemas specified for this Kafka config
        :param pulumi.Input[_builtins.str] bootstrap_servers: A comma-separated list of host/port pairs pointing to Kafka cluster
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] extra_options: Catch-all for miscellaneous options. Keys should be source options or Kafka consumer options (kafka.*)
        :param pulumi.Input[Union['FeatureEngineeringKafkaConfigKeySchemaArgs', 'FeatureEngineeringKafkaConfigKeySchemaArgsDict']] key_schema: Schema configuration for extracting message keys from topics. At least one of key_schema and value_schema must be provided
        :param pulumi.Input[Union['FeatureEngineeringKafkaConfigProviderConfigArgs', 'FeatureEngineeringKafkaConfigProviderConfigArgsDict']] provider_config: Configure the provider for management through account provider.
        :param pulumi.Input[Union['FeatureEngineeringKafkaConfigSubscriptionModeArgs', 'FeatureEngineeringKafkaConfigSubscriptionModeArgsDict']] subscription_mode: Options to configure which Kafka topics to pull data from
        :param pulumi.Input[Union['FeatureEngineeringKafkaConfigValueSchemaArgs', 'FeatureEngineeringKafkaConfigValueSchemaArgsDict']] value_schema: Schema configuration for extracting message values from topics. At least one of key_schema and value_schema must be provided
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: FeatureEngineeringKafkaConfigArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        [![Private Preview](https://img.shields.io/badge/Release_Stage-Private_Preview-blueviolet)](https://docs.databricks.com/aws/en/release-notes/release-types)

        :param str resource_name: The name of the resource.
        :param FeatureEngineeringKafkaConfigArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(FeatureEngineeringKafkaConfigArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 auth_config: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigAuthConfigArgs', 'FeatureEngineeringKafkaConfigAuthConfigArgsDict']]] = None,
                 backfill_source: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigBackfillSourceArgs', 'FeatureEngineeringKafkaConfigBackfillSourceArgsDict']]] = None,
                 bootstrap_servers: Optional[pulumi.Input[_builtins.str]] = None,
                 extra_options: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 key_schema: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigKeySchemaArgs', 'FeatureEngineeringKafkaConfigKeySchemaArgsDict']]] = None,
                 provider_config: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigProviderConfigArgs', 'FeatureEngineeringKafkaConfigProviderConfigArgsDict']]] = None,
                 subscription_mode: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigSubscriptionModeArgs', 'FeatureEngineeringKafkaConfigSubscriptionModeArgsDict']]] = None,
                 value_schema: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigValueSchemaArgs', 'FeatureEngineeringKafkaConfigValueSchemaArgsDict']]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = FeatureEngineeringKafkaConfigArgs.__new__(FeatureEngineeringKafkaConfigArgs)

            if auth_config is None and not opts.urn:
                raise TypeError("Missing required property 'auth_config'")
            __props__.__dict__["auth_config"] = auth_config
            __props__.__dict__["backfill_source"] = backfill_source
            if bootstrap_servers is None and not opts.urn:
                raise TypeError("Missing required property 'bootstrap_servers'")
            __props__.__dict__["bootstrap_servers"] = bootstrap_servers
            __props__.__dict__["extra_options"] = extra_options
            __props__.__dict__["key_schema"] = key_schema
            __props__.__dict__["provider_config"] = provider_config
            if subscription_mode is None and not opts.urn:
                raise TypeError("Missing required property 'subscription_mode'")
            __props__.__dict__["subscription_mode"] = subscription_mode
            __props__.__dict__["value_schema"] = value_schema
            __props__.__dict__["name"] = None
        super(FeatureEngineeringKafkaConfig, __self__).__init__(
            'databricks:index/featureEngineeringKafkaConfig:FeatureEngineeringKafkaConfig',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            auth_config: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigAuthConfigArgs', 'FeatureEngineeringKafkaConfigAuthConfigArgsDict']]] = None,
            backfill_source: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigBackfillSourceArgs', 'FeatureEngineeringKafkaConfigBackfillSourceArgsDict']]] = None,
            bootstrap_servers: Optional[pulumi.Input[_builtins.str]] = None,
            extra_options: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
            key_schema: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigKeySchemaArgs', 'FeatureEngineeringKafkaConfigKeySchemaArgsDict']]] = None,
            name: Optional[pulumi.Input[_builtins.str]] = None,
            provider_config: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigProviderConfigArgs', 'FeatureEngineeringKafkaConfigProviderConfigArgsDict']]] = None,
            subscription_mode: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigSubscriptionModeArgs', 'FeatureEngineeringKafkaConfigSubscriptionModeArgsDict']]] = None,
            value_schema: Optional[pulumi.Input[Union['FeatureEngineeringKafkaConfigValueSchemaArgs', 'FeatureEngineeringKafkaConfigValueSchemaArgsDict']]] = None) -> 'FeatureEngineeringKafkaConfig':
        """
        Get an existing FeatureEngineeringKafkaConfig resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Union['FeatureEngineeringKafkaConfigAuthConfigArgs', 'FeatureEngineeringKafkaConfigAuthConfigArgsDict']] auth_config: Authentication configuration for connection to topics
        :param pulumi.Input[Union['FeatureEngineeringKafkaConfigBackfillSourceArgs', 'FeatureEngineeringKafkaConfigBackfillSourceArgsDict']] backfill_source: A user-provided and managed source for backfilling data. Historical data is used when creating a training set from streaming features linked to this Kafka config.
               In the future, a separate table will be maintained by Databricks for forward filling data.
               The schema for this source must match exactly that of the key and value schemas specified for this Kafka config
        :param pulumi.Input[_builtins.str] bootstrap_servers: A comma-separated list of host/port pairs pointing to Kafka cluster
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] extra_options: Catch-all for miscellaneous options. Keys should be source options or Kafka consumer options (kafka.*)
        :param pulumi.Input[Union['FeatureEngineeringKafkaConfigKeySchemaArgs', 'FeatureEngineeringKafkaConfigKeySchemaArgsDict']] key_schema: Schema configuration for extracting message keys from topics. At least one of key_schema and value_schema must be provided
        :param pulumi.Input[_builtins.str] name: (string) - Name that uniquely identifies this Kafka config within the metastore. This will be the identifier used from the Feature object to reference these configs for a feature.
               Can be distinct from topic name
        :param pulumi.Input[Union['FeatureEngineeringKafkaConfigProviderConfigArgs', 'FeatureEngineeringKafkaConfigProviderConfigArgsDict']] provider_config: Configure the provider for management through account provider.
        :param pulumi.Input[Union['FeatureEngineeringKafkaConfigSubscriptionModeArgs', 'FeatureEngineeringKafkaConfigSubscriptionModeArgsDict']] subscription_mode: Options to configure which Kafka topics to pull data from
        :param pulumi.Input[Union['FeatureEngineeringKafkaConfigValueSchemaArgs', 'FeatureEngineeringKafkaConfigValueSchemaArgsDict']] value_schema: Schema configuration for extracting message values from topics. At least one of key_schema and value_schema must be provided
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _FeatureEngineeringKafkaConfigState.__new__(_FeatureEngineeringKafkaConfigState)

        __props__.__dict__["auth_config"] = auth_config
        __props__.__dict__["backfill_source"] = backfill_source
        __props__.__dict__["bootstrap_servers"] = bootstrap_servers
        __props__.__dict__["extra_options"] = extra_options
        __props__.__dict__["key_schema"] = key_schema
        __props__.__dict__["name"] = name
        __props__.__dict__["provider_config"] = provider_config
        __props__.__dict__["subscription_mode"] = subscription_mode
        __props__.__dict__["value_schema"] = value_schema
        return FeatureEngineeringKafkaConfig(resource_name, opts=opts, __props__=__props__)

    @_builtins.property
    @pulumi.getter(name="authConfig")
    def auth_config(self) -> pulumi.Output['outputs.FeatureEngineeringKafkaConfigAuthConfig']:
        """
        Authentication configuration for connection to topics
        """
        return pulumi.get(self, "auth_config")

    @_builtins.property
    @pulumi.getter(name="backfillSource")
    def backfill_source(self) -> pulumi.Output[Optional['outputs.FeatureEngineeringKafkaConfigBackfillSource']]:
        """
        A user-provided and managed source for backfilling data. Historical data is used when creating a training set from streaming features linked to this Kafka config.
        In the future, a separate table will be maintained by Databricks for forward filling data.
        The schema for this source must match exactly that of the key and value schemas specified for this Kafka config
        """
        return pulumi.get(self, "backfill_source")

    @_builtins.property
    @pulumi.getter(name="bootstrapServers")
    def bootstrap_servers(self) -> pulumi.Output[_builtins.str]:
        """
        A comma-separated list of host/port pairs pointing to Kafka cluster
        """
        return pulumi.get(self, "bootstrap_servers")

    @_builtins.property
    @pulumi.getter(name="extraOptions")
    def extra_options(self) -> pulumi.Output[Optional[Mapping[str, _builtins.str]]]:
        """
        Catch-all for miscellaneous options. Keys should be source options or Kafka consumer options (kafka.*)
        """
        return pulumi.get(self, "extra_options")

    @_builtins.property
    @pulumi.getter(name="keySchema")
    def key_schema(self) -> pulumi.Output[Optional['outputs.FeatureEngineeringKafkaConfigKeySchema']]:
        """
        Schema configuration for extracting message keys from topics. At least one of key_schema and value_schema must be provided
        """
        return pulumi.get(self, "key_schema")

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Output[_builtins.str]:
        """
        (string) - Name that uniquely identifies this Kafka config within the metastore. This will be the identifier used from the Feature object to reference these configs for a feature.
        Can be distinct from topic name
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="providerConfig")
    def provider_config(self) -> pulumi.Output[Optional['outputs.FeatureEngineeringKafkaConfigProviderConfig']]:
        """
        Configure the provider for management through account provider.
        """
        return pulumi.get(self, "provider_config")

    @_builtins.property
    @pulumi.getter(name="subscriptionMode")
    def subscription_mode(self) -> pulumi.Output['outputs.FeatureEngineeringKafkaConfigSubscriptionMode']:
        """
        Options to configure which Kafka topics to pull data from
        """
        return pulumi.get(self, "subscription_mode")

    @_builtins.property
    @pulumi.getter(name="valueSchema")
    def value_schema(self) -> pulumi.Output[Optional['outputs.FeatureEngineeringKafkaConfigValueSchema']]:
        """
        Schema configuration for extracting message values from topics. At least one of key_schema and value_schema must be provided
        """
        return pulumi.get(self, "value_schema")

