# 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__ = [
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionDateTimeTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionEnumTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionFloatTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionIntegerTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionMapTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionDateTimeTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionEnumTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionFloatTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionIntegerTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionMapTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionSchemaSourceArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionTextTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionTimestampTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionTextTypeOptionsArgs',
    'DocumentAiWarehouseDocumentSchemaPropertyDefinitionTimestampTypeOptionsArgs',
]

@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 date_time_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionDateTimeTypeOptionsArgs']] = None,
                 display_name: Optional[pulumi.Input[str]] = None,
                 enum_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionEnumTypeOptionsArgs']] = None,
                 float_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionFloatTypeOptionsArgs']] = None,
                 integer_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionIntegerTypeOptionsArgs']] = None,
                 is_filterable: Optional[pulumi.Input[bool]] = None,
                 is_metadata: Optional[pulumi.Input[bool]] = None,
                 is_repeatable: Optional[pulumi.Input[bool]] = None,
                 is_required: Optional[pulumi.Input[bool]] = None,
                 is_searchable: Optional[pulumi.Input[bool]] = None,
                 map_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionMapTypeOptionsArgs']] = None,
                 property_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsArgs']] = None,
                 retrieval_importance: Optional[pulumi.Input[str]] = None,
                 schema_sources: Optional[pulumi.Input[Sequence[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs']]]] = None,
                 text_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionTextTypeOptionsArgs']] = None,
                 timestamp_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionTimestampTypeOptionsArgs']] = None):
        """
        :param pulumi.Input[str] name: The name of the metadata property.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionDateTimeTypeOptionsArgs'] date_time_type_options: Date time property. Not supported by CMEK compliant deployment.
        :param pulumi.Input[str] display_name: The display-name for the property, used for front-end.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionEnumTypeOptionsArgs'] enum_type_options: Enum/categorical property.
               Structure is documented below.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionFloatTypeOptionsArgs'] float_type_options: Float property.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionIntegerTypeOptionsArgs'] integer_type_options: Integer property.
        :param pulumi.Input[bool] is_filterable: Whether the property can be filtered. If this is a sub-property, all the parent properties must be marked filterable.
        :param pulumi.Input[bool] is_metadata: Whether the property is user supplied metadata.
        :param pulumi.Input[bool] is_repeatable: Whether the property can have multiple values.
        :param pulumi.Input[bool] is_required: Whether the property is mandatory.
        :param pulumi.Input[bool] is_searchable: Indicates that the property should be included in a global search.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionMapTypeOptionsArgs'] map_type_options: Map property.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsArgs'] property_type_options: Nested structured data property.
               Structure is documented below.
        :param pulumi.Input[str] retrieval_importance: Stores the retrieval importance.
               Possible values are: `HIGHEST`, `HIGHER`, `HIGH`, `MEDIUM`, `LOW`, `LOWEST`.
        :param pulumi.Input[Sequence[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs']]] schema_sources: The schema source information.
               Structure is documented below.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionTextTypeOptionsArgs'] text_type_options: Text property.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionTimestampTypeOptionsArgs'] timestamp_type_options: Timestamp property. Not supported by CMEK compliant deployment.
        """
        pulumi.set(__self__, "name", name)
        if date_time_type_options is not None:
            pulumi.set(__self__, "date_time_type_options", date_time_type_options)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if enum_type_options is not None:
            pulumi.set(__self__, "enum_type_options", enum_type_options)
        if float_type_options is not None:
            pulumi.set(__self__, "float_type_options", float_type_options)
        if integer_type_options is not None:
            pulumi.set(__self__, "integer_type_options", integer_type_options)
        if is_filterable is not None:
            pulumi.set(__self__, "is_filterable", is_filterable)
        if is_metadata is not None:
            pulumi.set(__self__, "is_metadata", is_metadata)
        if is_repeatable is not None:
            pulumi.set(__self__, "is_repeatable", is_repeatable)
        if is_required is not None:
            pulumi.set(__self__, "is_required", is_required)
        if is_searchable is not None:
            pulumi.set(__self__, "is_searchable", is_searchable)
        if map_type_options is not None:
            pulumi.set(__self__, "map_type_options", map_type_options)
        if property_type_options is not None:
            pulumi.set(__self__, "property_type_options", property_type_options)
        if retrieval_importance is not None:
            pulumi.set(__self__, "retrieval_importance", retrieval_importance)
        if schema_sources is not None:
            pulumi.set(__self__, "schema_sources", schema_sources)
        if text_type_options is not None:
            pulumi.set(__self__, "text_type_options", text_type_options)
        if timestamp_type_options is not None:
            pulumi.set(__self__, "timestamp_type_options", timestamp_type_options)

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

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

    @property
    @pulumi.getter(name="dateTimeTypeOptions")
    def date_time_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionDateTimeTypeOptionsArgs']]:
        """
        Date time property. Not supported by CMEK compliant deployment.
        """
        return pulumi.get(self, "date_time_type_options")

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

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[pulumi.Input[str]]:
        """
        The display-name for the property, used for front-end.
        """
        return pulumi.get(self, "display_name")

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

    @property
    @pulumi.getter(name="enumTypeOptions")
    def enum_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionEnumTypeOptionsArgs']]:
        """
        Enum/categorical property.
        Structure is documented below.
        """
        return pulumi.get(self, "enum_type_options")

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

    @property
    @pulumi.getter(name="floatTypeOptions")
    def float_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionFloatTypeOptionsArgs']]:
        """
        Float property.
        """
        return pulumi.get(self, "float_type_options")

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

    @property
    @pulumi.getter(name="integerTypeOptions")
    def integer_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionIntegerTypeOptionsArgs']]:
        """
        Integer property.
        """
        return pulumi.get(self, "integer_type_options")

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

    @property
    @pulumi.getter(name="isFilterable")
    def is_filterable(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether the property can be filtered. If this is a sub-property, all the parent properties must be marked filterable.
        """
        return pulumi.get(self, "is_filterable")

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

    @property
    @pulumi.getter(name="isMetadata")
    def is_metadata(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether the property is user supplied metadata.
        """
        return pulumi.get(self, "is_metadata")

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

    @property
    @pulumi.getter(name="isRepeatable")
    def is_repeatable(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether the property can have multiple values.
        """
        return pulumi.get(self, "is_repeatable")

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

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether the property is mandatory.
        """
        return pulumi.get(self, "is_required")

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

    @property
    @pulumi.getter(name="isSearchable")
    def is_searchable(self) -> Optional[pulumi.Input[bool]]:
        """
        Indicates that the property should be included in a global search.
        """
        return pulumi.get(self, "is_searchable")

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

    @property
    @pulumi.getter(name="mapTypeOptions")
    def map_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionMapTypeOptionsArgs']]:
        """
        Map property.
        """
        return pulumi.get(self, "map_type_options")

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

    @property
    @pulumi.getter(name="propertyTypeOptions")
    def property_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsArgs']]:
        """
        Nested structured data property.
        Structure is documented below.
        """
        return pulumi.get(self, "property_type_options")

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

    @property
    @pulumi.getter(name="retrievalImportance")
    def retrieval_importance(self) -> Optional[pulumi.Input[str]]:
        """
        Stores the retrieval importance.
        Possible values are: `HIGHEST`, `HIGHER`, `HIGH`, `MEDIUM`, `LOW`, `LOWEST`.
        """
        return pulumi.get(self, "retrieval_importance")

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

    @property
    @pulumi.getter(name="schemaSources")
    def schema_sources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs']]]]:
        """
        The schema source information.
        Structure is documented below.
        """
        return pulumi.get(self, "schema_sources")

    @schema_sources.setter
    def schema_sources(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs']]]]):
        pulumi.set(self, "schema_sources", value)

    @property
    @pulumi.getter(name="textTypeOptions")
    def text_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionTextTypeOptionsArgs']]:
        """
        Text property.
        """
        return pulumi.get(self, "text_type_options")

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

    @property
    @pulumi.getter(name="timestampTypeOptions")
    def timestamp_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionTimestampTypeOptionsArgs']]:
        """
        Timestamp property. Not supported by CMEK compliant deployment.
        """
        return pulumi.get(self, "timestamp_type_options")

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


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionDateTimeTypeOptionsArgs:
    def __init__(__self__):
        pass


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionEnumTypeOptionsArgs:
    def __init__(__self__, *,
                 possible_values: pulumi.Input[Sequence[pulumi.Input[str]]],
                 validation_check_disabled: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] possible_values: List of possible enum values.
        :param pulumi.Input[bool] validation_check_disabled: Make sure the enum property value provided in the document is in the possile value list during document creation. The validation check runs by default.
               
               - - -
        """
        pulumi.set(__self__, "possible_values", possible_values)
        if validation_check_disabled is not None:
            pulumi.set(__self__, "validation_check_disabled", validation_check_disabled)

    @property
    @pulumi.getter(name="possibleValues")
    def possible_values(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        """
        List of possible enum values.
        """
        return pulumi.get(self, "possible_values")

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

    @property
    @pulumi.getter(name="validationCheckDisabled")
    def validation_check_disabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Make sure the enum property value provided in the document is in the possile value list during document creation. The validation check runs by default.

        - - -
        """
        return pulumi.get(self, "validation_check_disabled")

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


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionFloatTypeOptionsArgs:
    def __init__(__self__):
        pass


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionIntegerTypeOptionsArgs:
    def __init__(__self__):
        pass


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionMapTypeOptionsArgs:
    def __init__(__self__):
        pass


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsArgs:
    def __init__(__self__, *,
                 property_definitions: pulumi.Input[Sequence[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionArgs']]]):
        """
        :param pulumi.Input[Sequence[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionArgs']]] property_definitions: Defines the metadata for a schema property.
               Structure is documented below.
        """
        pulumi.set(__self__, "property_definitions", property_definitions)

    @property
    @pulumi.getter(name="propertyDefinitions")
    def property_definitions(self) -> pulumi.Input[Sequence[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionArgs']]]:
        """
        Defines the metadata for a schema property.
        Structure is documented below.
        """
        return pulumi.get(self, "property_definitions")

    @property_definitions.setter
    def property_definitions(self, value: pulumi.Input[Sequence[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionArgs']]]):
        pulumi.set(self, "property_definitions", value)


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 date_time_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionDateTimeTypeOptionsArgs']] = None,
                 display_name: Optional[pulumi.Input[str]] = None,
                 enum_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionEnumTypeOptionsArgs']] = None,
                 float_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionFloatTypeOptionsArgs']] = None,
                 integer_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionIntegerTypeOptionsArgs']] = None,
                 is_filterable: Optional[pulumi.Input[bool]] = None,
                 is_metadata: Optional[pulumi.Input[bool]] = None,
                 is_repeatable: Optional[pulumi.Input[bool]] = None,
                 is_required: Optional[pulumi.Input[bool]] = None,
                 is_searchable: Optional[pulumi.Input[bool]] = None,
                 map_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionMapTypeOptionsArgs']] = None,
                 retrieval_importance: Optional[pulumi.Input[str]] = None,
                 schema_sources: Optional[pulumi.Input[Sequence[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionSchemaSourceArgs']]]] = None,
                 text_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionTextTypeOptionsArgs']] = None,
                 timestamp_type_options: Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionTimestampTypeOptionsArgs']] = None):
        """
        :param pulumi.Input[str] name: The name of the metadata property.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionDateTimeTypeOptionsArgs'] date_time_type_options: Date time property. Not supported by CMEK compliant deployment.
        :param pulumi.Input[str] display_name: The display-name for the property, used for front-end.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionEnumTypeOptionsArgs'] enum_type_options: Enum/categorical property.
               Structure is documented below.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionFloatTypeOptionsArgs'] float_type_options: Float property.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionIntegerTypeOptionsArgs'] integer_type_options: Integer property.
        :param pulumi.Input[bool] is_filterable: Whether the property can be filtered. If this is a sub-property, all the parent properties must be marked filterable.
        :param pulumi.Input[bool] is_metadata: Whether the property is user supplied metadata.
        :param pulumi.Input[bool] is_repeatable: Whether the property can have multiple values.
        :param pulumi.Input[bool] is_required: Whether the property is mandatory.
        :param pulumi.Input[bool] is_searchable: Indicates that the property should be included in a global search.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionMapTypeOptionsArgs'] map_type_options: Map property.
        :param pulumi.Input[str] retrieval_importance: Stores the retrieval importance.
               Possible values are: `HIGHEST`, `HIGHER`, `HIGH`, `MEDIUM`, `LOW`, `LOWEST`.
        :param pulumi.Input[Sequence[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionSchemaSourceArgs']]] schema_sources: The schema source information.
               Structure is documented below.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionTextTypeOptionsArgs'] text_type_options: Text property.
        :param pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionTimestampTypeOptionsArgs'] timestamp_type_options: Timestamp property. Not supported by CMEK compliant deployment.
        """
        pulumi.set(__self__, "name", name)
        if date_time_type_options is not None:
            pulumi.set(__self__, "date_time_type_options", date_time_type_options)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if enum_type_options is not None:
            pulumi.set(__self__, "enum_type_options", enum_type_options)
        if float_type_options is not None:
            pulumi.set(__self__, "float_type_options", float_type_options)
        if integer_type_options is not None:
            pulumi.set(__self__, "integer_type_options", integer_type_options)
        if is_filterable is not None:
            pulumi.set(__self__, "is_filterable", is_filterable)
        if is_metadata is not None:
            pulumi.set(__self__, "is_metadata", is_metadata)
        if is_repeatable is not None:
            pulumi.set(__self__, "is_repeatable", is_repeatable)
        if is_required is not None:
            pulumi.set(__self__, "is_required", is_required)
        if is_searchable is not None:
            pulumi.set(__self__, "is_searchable", is_searchable)
        if map_type_options is not None:
            pulumi.set(__self__, "map_type_options", map_type_options)
        if retrieval_importance is not None:
            pulumi.set(__self__, "retrieval_importance", retrieval_importance)
        if schema_sources is not None:
            pulumi.set(__self__, "schema_sources", schema_sources)
        if text_type_options is not None:
            pulumi.set(__self__, "text_type_options", text_type_options)
        if timestamp_type_options is not None:
            pulumi.set(__self__, "timestamp_type_options", timestamp_type_options)

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

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

    @property
    @pulumi.getter(name="dateTimeTypeOptions")
    def date_time_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionDateTimeTypeOptionsArgs']]:
        """
        Date time property. Not supported by CMEK compliant deployment.
        """
        return pulumi.get(self, "date_time_type_options")

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

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[pulumi.Input[str]]:
        """
        The display-name for the property, used for front-end.
        """
        return pulumi.get(self, "display_name")

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

    @property
    @pulumi.getter(name="enumTypeOptions")
    def enum_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionEnumTypeOptionsArgs']]:
        """
        Enum/categorical property.
        Structure is documented below.
        """
        return pulumi.get(self, "enum_type_options")

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

    @property
    @pulumi.getter(name="floatTypeOptions")
    def float_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionFloatTypeOptionsArgs']]:
        """
        Float property.
        """
        return pulumi.get(self, "float_type_options")

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

    @property
    @pulumi.getter(name="integerTypeOptions")
    def integer_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionIntegerTypeOptionsArgs']]:
        """
        Integer property.
        """
        return pulumi.get(self, "integer_type_options")

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

    @property
    @pulumi.getter(name="isFilterable")
    def is_filterable(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether the property can be filtered. If this is a sub-property, all the parent properties must be marked filterable.
        """
        return pulumi.get(self, "is_filterable")

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

    @property
    @pulumi.getter(name="isMetadata")
    def is_metadata(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether the property is user supplied metadata.
        """
        return pulumi.get(self, "is_metadata")

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

    @property
    @pulumi.getter(name="isRepeatable")
    def is_repeatable(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether the property can have multiple values.
        """
        return pulumi.get(self, "is_repeatable")

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

    @property
    @pulumi.getter(name="isRequired")
    def is_required(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether the property is mandatory.
        """
        return pulumi.get(self, "is_required")

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

    @property
    @pulumi.getter(name="isSearchable")
    def is_searchable(self) -> Optional[pulumi.Input[bool]]:
        """
        Indicates that the property should be included in a global search.
        """
        return pulumi.get(self, "is_searchable")

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

    @property
    @pulumi.getter(name="mapTypeOptions")
    def map_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionMapTypeOptionsArgs']]:
        """
        Map property.
        """
        return pulumi.get(self, "map_type_options")

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

    @property
    @pulumi.getter(name="retrievalImportance")
    def retrieval_importance(self) -> Optional[pulumi.Input[str]]:
        """
        Stores the retrieval importance.
        Possible values are: `HIGHEST`, `HIGHER`, `HIGH`, `MEDIUM`, `LOW`, `LOWEST`.
        """
        return pulumi.get(self, "retrieval_importance")

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

    @property
    @pulumi.getter(name="schemaSources")
    def schema_sources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionSchemaSourceArgs']]]]:
        """
        The schema source information.
        Structure is documented below.
        """
        return pulumi.get(self, "schema_sources")

    @schema_sources.setter
    def schema_sources(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionSchemaSourceArgs']]]]):
        pulumi.set(self, "schema_sources", value)

    @property
    @pulumi.getter(name="textTypeOptions")
    def text_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionTextTypeOptionsArgs']]:
        """
        Text property.
        """
        return pulumi.get(self, "text_type_options")

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

    @property
    @pulumi.getter(name="timestampTypeOptions")
    def timestamp_type_options(self) -> Optional[pulumi.Input['DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionTimestampTypeOptionsArgs']]:
        """
        Timestamp property. Not supported by CMEK compliant deployment.
        """
        return pulumi.get(self, "timestamp_type_options")

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


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionDateTimeTypeOptionsArgs:
    def __init__(__self__):
        pass


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionEnumTypeOptionsArgs:
    def __init__(__self__, *,
                 possible_values: pulumi.Input[Sequence[pulumi.Input[str]]],
                 validation_check_disabled: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] possible_values: List of possible enum values.
        :param pulumi.Input[bool] validation_check_disabled: Make sure the enum property value provided in the document is in the possile value list during document creation. The validation check runs by default.
               
               - - -
        """
        pulumi.set(__self__, "possible_values", possible_values)
        if validation_check_disabled is not None:
            pulumi.set(__self__, "validation_check_disabled", validation_check_disabled)

    @property
    @pulumi.getter(name="possibleValues")
    def possible_values(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        """
        List of possible enum values.
        """
        return pulumi.get(self, "possible_values")

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

    @property
    @pulumi.getter(name="validationCheckDisabled")
    def validation_check_disabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Make sure the enum property value provided in the document is in the possile value list during document creation. The validation check runs by default.

        - - -
        """
        return pulumi.get(self, "validation_check_disabled")

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


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionFloatTypeOptionsArgs:
    def __init__(__self__):
        pass


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionIntegerTypeOptionsArgs:
    def __init__(__self__):
        pass


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionMapTypeOptionsArgs:
    def __init__(__self__):
        pass


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionSchemaSourceArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[str]] = None,
                 processor_type: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: The schema name in the source.
        :param pulumi.Input[str] processor_type: The Doc AI processor type name.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if processor_type is not None:
            pulumi.set(__self__, "processor_type", processor_type)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        The schema name in the source.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="processorType")
    def processor_type(self) -> Optional[pulumi.Input[str]]:
        """
        The Doc AI processor type name.
        """
        return pulumi.get(self, "processor_type")

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


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionTextTypeOptionsArgs:
    def __init__(__self__):
        pass


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionPropertyTypeOptionsPropertyDefinitionTimestampTypeOptionsArgs:
    def __init__(__self__):
        pass


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[str]] = None,
                 processor_type: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: The schema name in the source.
        :param pulumi.Input[str] processor_type: The Doc AI processor type name.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if processor_type is not None:
            pulumi.set(__self__, "processor_type", processor_type)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        The schema name in the source.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="processorType")
    def processor_type(self) -> Optional[pulumi.Input[str]]:
        """
        The Doc AI processor type name.
        """
        return pulumi.get(self, "processor_type")

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


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionTextTypeOptionsArgs:
    def __init__(__self__):
        pass


@pulumi.input_type
class DocumentAiWarehouseDocumentSchemaPropertyDefinitionTimestampTypeOptionsArgs:
    def __init__(__self__):
        pass


