import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Data store is a collection of websites and documents used to find answers for
 * end-user's questions in Discovery Engine (a.k.a. Vertex AI Search and
 * Conversation).
 *
 * To get more information about DataStore, see:
 *
 * * [API documentation](https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.dataStores)
 * * How-to Guides
 *     * [Create a search data store](https://cloud.google.com/generative-ai-app-builder/docs/create-data-store-es)
 *
 * ## Example Usage
 *
 * ### Discoveryengine Datastore Basic
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const basic = new gcp.discoveryengine.DataStore("basic", {
 *     location: "global",
 *     dataStoreId: "data-store-id",
 *     displayName: "tf-test-structured-datastore",
 *     industryVertical: "GENERIC",
 *     contentConfig: "NO_CONTENT",
 *     solutionTypes: ["SOLUTION_TYPE_SEARCH"],
 *     createAdvancedSiteSearch: false,
 *     skipDefaultSchemaCreation: false,
 * });
 * ```
 * ### Discoveryengine Datastore Kms Key Name
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const kmsKeyName = new gcp.discoveryengine.DataStore("kms_key_name", {
 *     location: "us",
 *     dataStoreId: "data-store-id",
 *     displayName: "tf-test-structured-datastore",
 *     industryVertical: "GENERIC",
 *     contentConfig: "NO_CONTENT",
 *     solutionTypes: ["SOLUTION_TYPE_SEARCH"],
 *     kmsKeyName: "kms-key",
 *     createAdvancedSiteSearch: false,
 *     skipDefaultSchemaCreation: false,
 * });
 * ```
 * ### Discoveryengine Datastore Document Processing Config
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const documentProcessingConfig = new gcp.discoveryengine.DataStore("document_processing_config", {
 *     location: "global",
 *     dataStoreId: "data-store-id",
 *     displayName: "tf-test-structured-datastore",
 *     industryVertical: "GENERIC",
 *     contentConfig: "NO_CONTENT",
 *     solutionTypes: ["SOLUTION_TYPE_SEARCH"],
 *     createAdvancedSiteSearch: false,
 *     documentProcessingConfig: {
 *         defaultParsingConfig: {
 *             digitalParsingConfig: {},
 *         },
 *         parsingConfigOverrides: [{
 *             fileType: "pdf",
 *             ocrParsingConfig: {
 *                 useNativeText: true,
 *             },
 *         }],
 *     },
 * });
 * ```
 * ### Discoveryengine Datastore Advanced Site Search Config
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const advancedSiteSearchConfig = new gcp.discoveryengine.DataStore("advanced_site_search_config", {
 *     location: "global",
 *     dataStoreId: "data-store-id",
 *     displayName: "tf-test-advanced-site-search-config-datastore",
 *     industryVertical: "GENERIC",
 *     contentConfig: "PUBLIC_WEBSITE",
 *     solutionTypes: ["SOLUTION_TYPE_CHAT"],
 *     createAdvancedSiteSearch: true,
 *     skipDefaultSchemaCreation: false,
 *     advancedSiteSearchConfig: {
 *         disableInitialIndex: true,
 *         disableAutomaticRefresh: true,
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * DataStore can be imported using any of these accepted formats:
 *
 * * `projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}`
 *
 * * `{{project}}/{{location}}/{{data_store_id}}`
 *
 * * `{{location}}/{{data_store_id}}`
 *
 * When using the `pulumi import` command, DataStore can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:discoveryengine/dataStore:DataStore default projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:discoveryengine/dataStore:DataStore default {{project}}/{{location}}/{{data_store_id}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:discoveryengine/dataStore:DataStore default {{location}}/{{data_store_id}}
 * ```
 */
export declare class DataStore extends pulumi.CustomResource {
    /**
     * Get an existing DataStore resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: DataStoreState, opts?: pulumi.CustomResourceOptions): DataStore;
    /**
     * Returns true if the given object is an instance of DataStore.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is DataStore;
    /**
     * Configuration data for advance site search.
     * Structure is documented below.
     */
    readonly advancedSiteSearchConfig: pulumi.Output<outputs.discoveryengine.DataStoreAdvancedSiteSearchConfig>;
    /**
     * The content config of the data store.
     * Possible values are: `NO_CONTENT`, `CONTENT_REQUIRED`, `PUBLIC_WEBSITE`.
     */
    readonly contentConfig: pulumi.Output<string>;
    /**
     * If true, an advanced data store for site search will be created. If the
     * data store is not configured as site search (GENERIC vertical and
     * PUBLIC_WEBSITE contentConfig), this flag will be ignored.
     */
    readonly createAdvancedSiteSearch: pulumi.Output<boolean | undefined>;
    /**
     * Timestamp when the DataStore was created.
     */
    readonly createTime: pulumi.Output<string>;
    /**
     * The unique id of the data store.
     */
    readonly dataStoreId: pulumi.Output<string>;
    /**
     * The id of the default Schema associated with this data store.
     */
    readonly defaultSchemaId: pulumi.Output<string>;
    /**
     * The display name of the data store. This field must be a UTF-8 encoded
     * string with a length limit of 128 characters.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * Configuration for Document understanding and enrichment.
     * Structure is documented below.
     */
    readonly documentProcessingConfig: pulumi.Output<outputs.discoveryengine.DataStoreDocumentProcessingConfig | undefined>;
    /**
     * The industry vertical that the data store registers.
     * Possible values are: `GENERIC`, `MEDIA`, `HEALTHCARE_FHIR`.
     */
    readonly industryVertical: pulumi.Output<string>;
    /**
     * KMS key resource name which will be used to encrypt resources:
     * `/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{keyId}`
     * The KMS key to be used to protect this DataStore at creation time. Must be
     * set for requests that need to comply with CMEK Org Policy protections.
     * If this field is set and processed successfully, the DataStore will be
     * protected by the KMS key, as indicated in the cmekConfig field.
     */
    readonly kmsKeyName: pulumi.Output<string | undefined>;
    /**
     * The geographic location where the data store should reside. The value can
     * only be one of "global", "us" and "eu".
     */
    readonly location: pulumi.Output<string>;
    /**
     * The unique full resource name of the data store. Values are of the format
     * `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}`.
     * This field must be a UTF-8 encoded string with a length limit of 1024
     * characters.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    readonly project: pulumi.Output<string>;
    /**
     * A boolean flag indicating whether to skip the default schema creation for
     * the data store. Only enable this flag if you are certain that the default
     * schema is incompatible with your use case.
     * If set to true, you must manually create a schema for the data store
     * before any documents can be ingested.
     * This flag cannot be specified if `data_store.starting_schema` is
     * specified.
     */
    readonly skipDefaultSchemaCreation: pulumi.Output<boolean | undefined>;
    /**
     * The solutions that the data store enrolls.
     * Each value may be one of: `SOLUTION_TYPE_RECOMMENDATION`, `SOLUTION_TYPE_SEARCH`, `SOLUTION_TYPE_CHAT`, `SOLUTION_TYPE_GENERATIVE_CHAT`.
     */
    readonly solutionTypes: pulumi.Output<string[] | undefined>;
    /**
     * Create a DataStore resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: DataStoreArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering DataStore resources.
 */
export interface DataStoreState {
    /**
     * Configuration data for advance site search.
     * Structure is documented below.
     */
    advancedSiteSearchConfig?: pulumi.Input<inputs.discoveryengine.DataStoreAdvancedSiteSearchConfig>;
    /**
     * The content config of the data store.
     * Possible values are: `NO_CONTENT`, `CONTENT_REQUIRED`, `PUBLIC_WEBSITE`.
     */
    contentConfig?: pulumi.Input<string>;
    /**
     * If true, an advanced data store for site search will be created. If the
     * data store is not configured as site search (GENERIC vertical and
     * PUBLIC_WEBSITE contentConfig), this flag will be ignored.
     */
    createAdvancedSiteSearch?: pulumi.Input<boolean>;
    /**
     * Timestamp when the DataStore was created.
     */
    createTime?: pulumi.Input<string>;
    /**
     * The unique id of the data store.
     */
    dataStoreId?: pulumi.Input<string>;
    /**
     * The id of the default Schema associated with this data store.
     */
    defaultSchemaId?: pulumi.Input<string>;
    /**
     * The display name of the data store. This field must be a UTF-8 encoded
     * string with a length limit of 128 characters.
     */
    displayName?: pulumi.Input<string>;
    /**
     * Configuration for Document understanding and enrichment.
     * Structure is documented below.
     */
    documentProcessingConfig?: pulumi.Input<inputs.discoveryengine.DataStoreDocumentProcessingConfig>;
    /**
     * The industry vertical that the data store registers.
     * Possible values are: `GENERIC`, `MEDIA`, `HEALTHCARE_FHIR`.
     */
    industryVertical?: pulumi.Input<string>;
    /**
     * KMS key resource name which will be used to encrypt resources:
     * `/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{keyId}`
     * The KMS key to be used to protect this DataStore at creation time. Must be
     * set for requests that need to comply with CMEK Org Policy protections.
     * If this field is set and processed successfully, the DataStore will be
     * protected by the KMS key, as indicated in the cmekConfig field.
     */
    kmsKeyName?: pulumi.Input<string>;
    /**
     * The geographic location where the data store should reside. The value can
     * only be one of "global", "us" and "eu".
     */
    location?: pulumi.Input<string>;
    /**
     * The unique full resource name of the data store. Values are of the format
     * `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}`.
     * This field must be a UTF-8 encoded string with a length limit of 1024
     * characters.
     */
    name?: pulumi.Input<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
    /**
     * A boolean flag indicating whether to skip the default schema creation for
     * the data store. Only enable this flag if you are certain that the default
     * schema is incompatible with your use case.
     * If set to true, you must manually create a schema for the data store
     * before any documents can be ingested.
     * This flag cannot be specified if `data_store.starting_schema` is
     * specified.
     */
    skipDefaultSchemaCreation?: pulumi.Input<boolean>;
    /**
     * The solutions that the data store enrolls.
     * Each value may be one of: `SOLUTION_TYPE_RECOMMENDATION`, `SOLUTION_TYPE_SEARCH`, `SOLUTION_TYPE_CHAT`, `SOLUTION_TYPE_GENERATIVE_CHAT`.
     */
    solutionTypes?: pulumi.Input<pulumi.Input<string>[]>;
}
/**
 * The set of arguments for constructing a DataStore resource.
 */
export interface DataStoreArgs {
    /**
     * Configuration data for advance site search.
     * Structure is documented below.
     */
    advancedSiteSearchConfig?: pulumi.Input<inputs.discoveryengine.DataStoreAdvancedSiteSearchConfig>;
    /**
     * The content config of the data store.
     * Possible values are: `NO_CONTENT`, `CONTENT_REQUIRED`, `PUBLIC_WEBSITE`.
     */
    contentConfig: pulumi.Input<string>;
    /**
     * If true, an advanced data store for site search will be created. If the
     * data store is not configured as site search (GENERIC vertical and
     * PUBLIC_WEBSITE contentConfig), this flag will be ignored.
     */
    createAdvancedSiteSearch?: pulumi.Input<boolean>;
    /**
     * The unique id of the data store.
     */
    dataStoreId: pulumi.Input<string>;
    /**
     * The display name of the data store. This field must be a UTF-8 encoded
     * string with a length limit of 128 characters.
     */
    displayName: pulumi.Input<string>;
    /**
     * Configuration for Document understanding and enrichment.
     * Structure is documented below.
     */
    documentProcessingConfig?: pulumi.Input<inputs.discoveryengine.DataStoreDocumentProcessingConfig>;
    /**
     * The industry vertical that the data store registers.
     * Possible values are: `GENERIC`, `MEDIA`, `HEALTHCARE_FHIR`.
     */
    industryVertical: pulumi.Input<string>;
    /**
     * KMS key resource name which will be used to encrypt resources:
     * `/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{keyId}`
     * The KMS key to be used to protect this DataStore at creation time. Must be
     * set for requests that need to comply with CMEK Org Policy protections.
     * If this field is set and processed successfully, the DataStore will be
     * protected by the KMS key, as indicated in the cmekConfig field.
     */
    kmsKeyName?: pulumi.Input<string>;
    /**
     * The geographic location where the data store should reside. The value can
     * only be one of "global", "us" and "eu".
     */
    location: pulumi.Input<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
    /**
     * A boolean flag indicating whether to skip the default schema creation for
     * the data store. Only enable this flag if you are certain that the default
     * schema is incompatible with your use case.
     * If set to true, you must manually create a schema for the data store
     * before any documents can be ingested.
     * This flag cannot be specified if `data_store.starting_schema` is
     * specified.
     */
    skipDefaultSchemaCreation?: pulumi.Input<boolean>;
    /**
     * The solutions that the data store enrolls.
     * Each value may be one of: `SOLUTION_TYPE_RECOMMENDATION`, `SOLUTION_TYPE_SEARCH`, `SOLUTION_TYPE_CHAT`, `SOLUTION_TYPE_GENERATIVE_CHAT`.
     */
    solutionTypes?: pulumi.Input<pulumi.Input<string>[]>;
}
