// M-Files Server gRPC API 26.11. Generated from the M-Files Server IDL; do not edit.
// Documentation: https://developer.m-files.com/APIs/gRPC-API/
syntax = "proto3";

package MFiles;

import "mfiles/api/annotations.proto";
import "mfiles/enums.proto";
import "mfiles/structs.proto";

option csharp_namespace = "MFiles.Grpc";
option go_package = "github.com/M-Files/mfiles-grpc-api/go/mfiles;mfiles";
option java_multiple_files = true;
option java_package = "com.mfiles.grpc";
option objc_class_prefix = "MF_";

// An interface for retrieving data for indexing.
//
// This interface provides methods for retrieving the information of objects and files that
// must be indexed based on a logical timestamp. Methods for getting the data of objects for
// metadata indexing and file contents for file data indexing are also provided.
//
// **For M-Files components only.** Search indexers use this service to crawl the vault: they ask
// which objects and files have changed since their last position and fetch the data to index.
// Applications should not call it; to search, use [IRPCSearch](mfiles:MFiles.IRPCSearch).
//
// - **Callers:** the M-Files indexing service (the indexer process that M-Files Server runs for the
//   vault's search indexes) uses all methods. M-Files' cloud search indexing services use the
//   combined enumerator ([GetNextObjectsForIX](mfiles:MFiles.IRPCIndexingDataSource.GetNextObjectsForIX)
//   and its companions) together with
//   [IRPCIndexingDataSource2](mfiles:MFiles.IRPCIndexingDataSource2).
// - **Authentication:** the M-Files indexing service logs in to the vault with Windows
//   authentication as an internal process of M-Files Server, under the server's own service
//   account, and so has the system administrator server role.
// - **Rights, data methods** (enumerators, `HasMore...`, `GetSmallestTimestamp...`, downloads and
//   file caching): a vault session with the vault rights `see_all_objects` and
//   `see_deleted_objects`; no server role is needed. The data is returned regardless of object
//   permissions, with the objects' permissions included for the index.
// - **Rights, configuration methods** (`GetFullTextSearchLanguage`, `GetObjectTypesWithPropertyDefs`,
//   `GetEnabledIndexes`, `ConvertDestructionTimestampToLogical`, `GetFacetSources`,
//   `GetIndexingOptions`, `GetVaultTempFilePath`, `NotifyObjectSkippedIndexing`): the system
//   administrator server role (server right `log_in_to_any_vault`). A vault administrator without it
//   gets "You do not have the server-level access rights required by this operation." (codes
//   0x800400A8 and 0x800407E4).
// - **Crawl model:** every enumerator call carries an [IndexingRequest](mfiles:MFiles.IndexingRequest)
//   that names the index and the caller's last indexed position as a
//   [LogicalTimestamp](mfiles:MFiles.LogicalTimestamp). The `...ForIX` methods serve a combined
//   index of metadata and file content; the `...ForMIX` and `...ForFIX` methods serve separate
//   metadata and file data indexes. `HasMore...` checks whether there is work,
//   `GetNext...` returns a batch and the new position, and `GetSmallestTimestamp...` maps a
//   Change Tracking version to a logical timestamp.
service IRPCIndexingDataSource {
	option (mfiles.api.service) = { book: "integration" level: LEVEL_SPECIALIZED title: "Indexing data source" };

	// Gets next objects and their data for metadata indexing.
	//
	// **For M-Files components only.** Search indexers call it to fetch the next batch for a metadata
	// index. Applications should not call it.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`.
	rpc GetNextObjectsForMIX( GetNextObjectsForMIXRequest ) returns ( GetNextObjectsForMIXResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Gets next object files for file data indexing.
	//
	// **For M-Files components only.** Search indexers call it to fetch the next batch of files for a
	// file data index. Applications should not call it.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`.
	rpc GetNextFilesForFIX( GetNextFilesForFIXRequest ) returns ( GetNextFilesForFIXResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Begins downloading a file for file data indexing.
	//
	// **For M-Files components only.** Search indexers call it to read file content for indexing.
	// Applications should not call it.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`.
	// - Read the content with
	//   [DownloadFile_ReadBlockForFIX](mfiles:MFiles.IRPCIndexingDataSource.DownloadFile_ReadBlockForFIX)
	//   and close the download with
	//   [DownloadFile_EndForFIX](mfiles:MFiles.IRPCIndexingDataSource.DownloadFile_EndForFIX).
	rpc DownloadFile_BeginForFIX( DownloadFile_BeginForFIXRequest ) returns ( DownloadFile_BeginForFIXResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Ends downloading a file for file data indexing.
	//
	// **For M-Files components only.** Search indexers call it to close a download started with
	// [DownloadFile_BeginForFIX](mfiles:MFiles.IRPCIndexingDataSource.DownloadFile_BeginForFIX).
	// Applications should not call it.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`.
	rpc DownloadFile_EndForFIX( DownloadFile_EndForFIXRequest ) returns ( DownloadFile_EndForFIXResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Gets a specific block from a file from the server for file data indexing.
	//
	// **For M-Files components only.** Search indexers call it to read a block of a file opened with
	// [DownloadFile_BeginForFIX](mfiles:MFiles.IRPCIndexingDataSource.DownloadFile_BeginForFIX).
	// Applications should not call it.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`.
	rpc DownloadFile_ReadBlockForFIX( DownloadFile_ReadBlockForFIXRequest ) returns ( DownloadFile_ReadBlockForFIXResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Checks whether objects are waiting for a metadata index, and optionally how many.
	//
	// **For M-Files components only.** Search indexers call it. Applications should not call it.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`.
	rpc HasMoreObjectsForMetadataIX( HasMoreObjectsForMetadataIXRequest ) returns ( HasMoreObjectsForMetadataIXResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Checks whether object files are waiting for a file data index, and optionally how many.
	//
	// **For M-Files components only.** Search indexers call it. Applications should not call it.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`.
	rpc HasMoreObjectsForFiledataIX( HasMoreObjectsForFiledataIXRequest ) returns ( HasMoreObjectsForFiledataIXResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Gets the full-text search languages of the vault.
	//
	// **For M-Files components only.** Search indexers call it. Applications should not call it.
	// - Requires the system administrator server role (server right `log_in_to_any_vault`); a vault
	//   administrator is denied.
	rpc GetFullTextSearchLanguage( GetFullTextSearchLanguageRequest ) returns ( GetFullTextSearchLanguageResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Gets object types with associated property defs.
	//
	// **For M-Files components only.** Search indexers call it to learn which properties to index per
	// object type. Applications should use [GetObjectTypes](mfiles:MFiles.IRPCObjectTypes.GetObjectTypes)
	// and [GetPropertyDefs](mfiles:MFiles.IRPCPropertyDefs.GetPropertyDefs).
	// - Requires the system administrator server role (server right `log_in_to_any_vault`).
	rpc GetObjectTypesWithPropertyDefs( GetObjectTypesWithPropertyDefsRequest ) returns ( GetObjectTypesWithPropertyDefsResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Gets next objects and their data for indexing.
	//
	// **For M-Files components only.** Search indexers call it to fetch the next batch for a combined
	// index. Applications should not call it.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`.
	// - To fetch one object by ID outside a crawl, indexers use
	//   [GetObjectForIXById](mfiles:MFiles.IRPCIndexingDataSource2.GetObjectForIXById).
	rpc GetNextObjectsForIX( GetNextObjectsForIXRequest ) returns ( GetNextObjectsForIXResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Checks whether objects are waiting for a combined index, and optionally how many.
	//
	// **For M-Files components only.** Search indexers call it. Applications should not call it.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`; a
	//   normal user is denied.
	// - `indexing_request.index_name` must name an index; an empty index name fails with "The
	//   parameter is incorrect.".
	rpc HasMoreObjectsForIX( HasMoreObjectsForIXRequest ) returns ( HasMoreObjectsForIXResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Gets the smallest timestamp of an object that has been modified since specific Change Tracking version. Returns also the current Change Tracking version.
	//
	// **For M-Files components only.** Search indexers call it to map the Change Tracking version of
	// their last position to the oldest change that they must still process. Applications should not
	// call it.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`.
	rpc GetSmallestTimestampForMetadataIX( GetSmallestTimestampForMetadataIXRequest ) returns ( GetSmallestTimestampForMetadataIXResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Gets the smallest timestamp of a file that has been modified since specific Change Tracking version. Returns also the current Change Tracking version.
	//
	// **For M-Files components only.** Search indexers call it, like
	// [GetSmallestTimestampForMetadataIX](mfiles:MFiles.IRPCIndexingDataSource.GetSmallestTimestampForMetadataIX)
	// but for files. Applications should not call it.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`.
	rpc GetSmallestTimestampForFiledataIX( GetSmallestTimestampForFiledataIXRequest ) returns ( GetSmallestTimestampForFiledataIXResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Gets the names of the enabled indexes.
	//
	// **For M-Files components only.** Search indexers call it to learn which indexes of the vault are
	// enabled. Applications should not call it.
	// - Requires the system administrator server role (server right `log_in_to_any_vault`); a vault
	//   administrator is denied.
	rpc GetEnabledIndexes( GetEnabledIndexesRequest ) returns ( GetEnabledIndexesResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Writes a file version, in the requested format, to a temporary folder on the server computer and
	// returns its local path.
	//
	// **For M-Files components only.** The M-Files indexing service, which runs on the server computer,
	// calls it. Applications should not call it: the result is a path on the server's own disk.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`.
	// - Creates a file that the caller owns and must delete. `sub_dir` must stay inside the indexing
	//   temporary folder; a path that leaves it fails with "The parameter is incorrect.".
	rpc CacheFileForIndexing( CacheFileForIndexingRequest ) returns ( CacheFileForIndexingResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Converts a destruction time (a Windows FILETIME value) to the vault's logical destruction
	// timestamp.
	//
	// **For M-Files components only.** Search indexers call it. Applications should not call it.
	// - Requires the system administrator server role (server right `log_in_to_any_vault`).
	rpc ConvertDestructionTimestampToLogical( ConvertDestructionTimestampToLogicalRequest ) returns ( ConvertDestructionTimestampToLogicalResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Gets the facet definitions configured for the vault, as JSON.
	//
	// **For M-Files components only.** Search indexers call it. Applications should not call it.
	// - Requires the system administrator server role (server right `log_in_to_any_vault`).
	rpc GetFacetSources( GetFacetSourcesRequest ) returns ( GetFacetSourcesResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Gets the indexing options of one index, or of all indexes, as JSON.
	//
	// **For M-Files components only.** Search indexers call it. Applications should not call it.
	// - Requires the system administrator server role (server right `log_in_to_any_vault`).
	rpc GetIndexingOptions( GetIndexingOptionsRequest ) returns ( GetIndexingOptionsResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Gets the local path of the vault's temporary file folder on the server computer.
	//
	// **For M-Files components only.** The M-Files indexing service, which runs on the server
	// computer, calls it. Applications should not call it.
	// - Requires the system administrator server role (server right `log_in_to_any_vault`); a vault
	//   administrator is denied.
	rpc GetVaultTempFilePath( GetVaultTempFilePathRequest ) returns ( GetVaultTempFilePathResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Reports objects or files that an indexer skipped, and why.
	//
	// **For M-Files components only.** Search indexers call it. Applications should not call it.
	// - The skipped-indexing feature behind this method is not enabled in production servers. There
	//   the call does nothing and succeeds.
	// - Otherwise requires the system administrator server role (server right `log_in_to_any_vault`).
	rpc NotifyObjectSkippedIndexing( NotifyObjectSkippedIndexingRequest ) returns ( NotifyObjectSkippedIndexingResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}

	// Like CacheFileForIndexing, for up to 20 file versions in one call, processed in parallel.
	//
	// **For M-Files components only.** The M-Files indexing service, which runs on the server
	// computer, calls it. Applications should not call it: the results are paths on the server's own
	// disk.
	// - Requires a vault session with the vault rights `see_all_objects` and `see_deleted_objects`.
	// - `indexing_elements` must have 1 to 20 entries. `max_threads` above 20 is reduced to 20.
	rpc CacheFileForIndexingCollective( CacheFileForIndexingCollectiveRequest ) returns ( CacheFileForIndexingCollectiveResponse ) {
		option (mfiles.api.method) = { session: SESSION_REQUIREMENT_SESSION internal: true };
	}
}

// The request of GetNextObjectsForMIX.
message GetNextObjectsForMIXRequest {

	// General information about the request.
	IndexingRequest indexing_request = 1;

	// Last indexed object ID. If unset, ignored.
	ObjID last_for_mix = 2;

	// The number of objects requested.
	uint32 count = 3;
}

// The response of GetNextObjectsForMIX.
message GetNextObjectsForMIXResponse {

	// The ID information of the objects for metadata indexing. If an empty array is returned, no more objects are available.
	repeated ObjIDInfoForMIX objects = 1;

	// The data of the object versions. Can have more entries than `objects` (several versions per object); the versions of one object are consecutive.
	repeated ObjVerDataForMIX data = 2;

	// Last seen object ID. Currently relevant for combined indexer only.
	ObjID last_seen_obj_id = 3;

	// Last seen logical timestamp within the returned objects or the timestamp after trying to fetch the batch even if no objects were returned (relevant for indexing external repositories).
	LogicalTimestamp last_seen_version_for_mix = 4;
}

// The request of GetNextFilesForFIX.
message GetNextFilesForFIXRequest {

	// General information about the request.
	IndexingRequest indexing_request = 1;

	// The number of files requested. Ignored when `file_ver_array` is set.
	uint32 count = 2;

	// If true, the received FileInfoForFIX data will include the full set of file IDs that co-exist (on a particular object version) with the file to be indexed.
	bool include_full_set_of_file_ids = 3;

	// If set, explicitly specifies the file versions to be retrieved.
	FileVerArray file_ver_array = 4;
}

// The response of GetNextFilesForFIX.
message GetNextFilesForFIXResponse {

	// Object files.
	repeated FileInfoForFIX files = 1;

	// Last seen logical timestamp within the returned files or the timestamp after trying to fetch the batch even if no files were returned (relevant for indexing external repositories).
	LogicalTimestamp last_seen_version_for_fix = 2;
}

// The request of DownloadFile_BeginForFIX.
message DownloadFile_BeginForFIXRequest {

	// File version.
	ObjFileVer obj_file_ver = 1;

	// Data file version.
	int32 data_file_version = 2;
}

// The response of DownloadFile_BeginForFIX.
message DownloadFile_BeginForFIXResponse {

	// Receives the identifier of the download session.
	int32 download_id = 1;

	// Receives outline information of the file.
	FileOutline outline = 2;
}

// The request of DownloadFile_EndForFIX.
message DownloadFile_EndForFIXRequest {

	// The download session to end.
	int32 download_id = 1;
}

// The response of DownloadFile_EndForFIX.
message DownloadFile_EndForFIXResponse {
}

// The request of DownloadFile_ReadBlockForFIX.
message DownloadFile_ReadBlockForFIXRequest {

	// Download session identifier.
	int32 download_id = 1;

	// The number of bytes wanted.
	uint32 block_size = 2;

	// The offset to start reading from.
	int64 offset = 3;
}

// The response of DownloadFile_ReadBlockForFIX.
message DownloadFile_ReadBlockForFIXResponse {

	// Block data.
	bytes data = 1;
}

// The request of HasMoreObjectsForMetadataIX.
message HasMoreObjectsForMetadataIXRequest {

	// General information about the request.
	IndexingRequest indexing_request = 1;

	// Last indexed object ID. If unset, ignored.
	ObjID last_for_mix = 2;

	// If 0, mere existence is checked. Non-zero values trigger the threshold check for available objects.
	uint32 threshold = 3;
}

// The response of HasMoreObjectsForMetadataIX.
message HasMoreObjectsForMetadataIXResponse {

	// 0 if no objects wait. If more than `threshold` objects wait, 4294967295; otherwise the exact number.
	uint32 more_objects = 1;

	// Last seen logical timestamp in case there are no objects to be indexed. Note that logical timestamp may go forward even when there are no matching objects to be indexed.
	LogicalTimestamp last_seen_version_for_mix = 2;
}

// The request of HasMoreObjectsForFiledataIX.
message HasMoreObjectsForFiledataIXRequest {

	// General information about the request.
	IndexingRequest indexing_request = 1;

	// If 0, mere existence is checked. Non-zero values trigger the threshold check for available objects.
	uint32 threshold = 2;
}

// The response of HasMoreObjectsForFiledataIX.
message HasMoreObjectsForFiledataIXResponse {

	// 0 if no files wait. If more than `threshold` files wait, 4294967295; otherwise the exact number.
	uint32 more_objects = 1;

	// Last seen logical timestamp in case there are no object files to be indexed. Note that logical timestamp may go forward even when there are no matching object files to be indexed.
	LogicalTimestamp last_seen_version_for_fix = 2;
}

// The request of GetFullTextSearchLanguage.
message GetFullTextSearchLanguageRequest {
}

// The response of GetFullTextSearchLanguage.
message GetFullTextSearchLanguageResponse {

	// Receives the full-text search language of the vault.
	FullTextSearchLanguage full_text_search_lang = 1;
}

// The request of GetObjectTypesWithPropertyDefs.
message GetObjectTypesWithPropertyDefsRequest {
}

// The response of GetObjectTypesWithPropertyDefs.
message GetObjectTypesWithPropertyDefsResponse {

	// Items.
	repeated ObjectTypeWithPropertyDefs items = 1;
}

// The request of GetNextObjectsForIX.
message GetNextObjectsForIXRequest {

	// General information about the request.
	IndexingRequest indexing_request = 1;

	// Last indexed object ID. If unset, ignored.
	ObjID last_for_ix = 2;

	// The number of objects requested.
	uint32 count = 3;
}

// The response of GetNextObjectsForIX.
message GetNextObjectsForIXResponse {

	// The data of the object versions for indexing.
	repeated ObjectDataForIX data = 1;

	// Last seen object ID.
	ObjID last_seen_obj_id = 2;

	// Last seen logical timestamp within the returned objects or the timestamp after trying to fetch the batch even if no objects were returned (relevant for indexing external repositories).
	LogicalTimestamp last_seen_version_for_ix = 3;

	// Flags that tell which kinds of indexer data are available.
	IndexerDataAvailability peida = 4;
}

// The request of HasMoreObjectsForIX.
message HasMoreObjectsForIXRequest {

	// General information about the request.
	IndexingRequest indexing_request = 1;

	// Last indexed object ID. If unset, ignored.
	ObjID last_for_ix = 2;

	// If 0, mere existence is checked. Non-zero values trigger the threshold check for available objects.
	uint32 threshold = 3;
}

// The response of HasMoreObjectsForIX.
message HasMoreObjectsForIXResponse {

	// 0 if no objects wait. If more than `threshold` objects wait, 4294967295; otherwise the exact number.
	uint32 more_objects = 1;

	// Last seen logical timestamp in case there are no objects to be indexed. Note that logical timestamp may go forward even when there are no matching objects to be indexed.
	LogicalTimestamp last_seen_version_for_ix = 2;

	// Flags that tell which kinds of indexer data are available.
	IndexerDataAvailability peida = 3;
}

// The request of GetSmallestTimestampForMetadataIX.
message GetSmallestTimestampForMetadataIXRequest {

	// General information about the request.
	IndexingRequest indexing_request = 1;
}

// The response of GetSmallestTimestampForMetadataIX.
message GetSmallestTimestampForMetadataIXResponse {

	// Receives the smallest object version that has changed since provided change tracking version.
	LogicalTimestamp smallest_changed_version_for_mix = 1;

	// Receives the current change tracking version.
	LogicalTimestamp current_change_tracking_version = 2;
}

// The request of GetSmallestTimestampForFiledataIX.
message GetSmallestTimestampForFiledataIXRequest {

	// General information about the request.
	IndexingRequest indexing_request = 1;
}

// The response of GetSmallestTimestampForFiledataIX.
message GetSmallestTimestampForFiledataIXResponse {

	// Receives the smallest file version that has changed since provided change tracking version.
	LogicalTimestamp smallest_changed_version_for_fix = 1;

	// Receives the current change tracking version.
	LogicalTimestamp current_change_tracking_version = 2;
}

// The request of GetEnabledIndexes.
message GetEnabledIndexesRequest {
}

// The response of GetEnabledIndexes.
message GetEnabledIndexesResponse {

	// Index names.
	repeated IndexName index_names = 1;
}

// A structure that specifies cache file for indexing request.
message CacheFileForIndexingRequest {

	// File info for indexing.
	FileInfoForFIX file_info_for_fix = 1;

	// Specifies the requested file format to cache.
	FileFormat file_format = 2;

	// Optional subfolder under the vault's indexing temporary folder (`Filedata/Temp/FIX`).
	string sub_dir = 3;
}

// A structure that specifies cache file for indexing response.
message CacheFileForIndexingResponse {

	// The full local path of the cached file on the server computer.
	string full_path = 1;

	// The format actually produced, which can differ from the requested one.
	FileFormat file_format = 2;
}

// The request of ConvertDestructionTimestampToLogical.
message ConvertDestructionTimestampToLogicalRequest {

	// The time as a Windows FILETIME value (100-nanosecond intervals since 1601-01-01 UTC), in a timestamp with a single integer value.
	LogicalTimestamp timestamp_filetime = 1;
}

// The response of ConvertDestructionTimestampToLogical.
message ConvertDestructionTimestampToLogicalResponse {

	// Receives the logical destruction timestamp that matches the given FILETIME timestamp.
	LogicalTimestamp timestamp_logical = 1;
}

// The request of GetFacetSources.
message GetFacetSourcesRequest {
}

// The response of GetFacetSources.
message GetFacetSourcesResponse {

	// Receives the facet sources object.
	string facet_sources_json = 1;
}

// The request of GetIndexingOptions.
message GetIndexingOptionsRequest {

	// The target indexer. If empty, indexing options for all indexes are returned.
	IndexName index_name = 1;
}

// The response of GetIndexingOptions.
message GetIndexingOptionsResponse {

	// Receives the indexing options object. Empty if the index is currently disabled.
	string indexing_options_json = 1;
}

// The request of GetVaultTempFilePath.
message GetVaultTempFilePathRequest {
}

// The response of GetVaultTempFilePath.
message GetVaultTempFilePathResponse {

	// Receives the path to the root of vault-specific temporary files directory.
	string vault_temp_file_path = 1;
}

// The request of NotifyObjectSkippedIndexing.
message NotifyObjectSkippedIndexingRequest {

	// The object skipped indexing state array.
	repeated ObjectSkippedIndexingState object_skipped_indexing_state_array = 1;
}

// The response of NotifyObjectSkippedIndexing.
message NotifyObjectSkippedIndexingResponse {
}

// A structure that specifies cache file for indexing request.
message CacheFileForIndexingCollectiveRequest {

	// The file versions to cache, with an optional subfolder each.
	repeated CacheFileForIndexingElement indexing_elements = 1;

	// The maximum number of files to cache in parallel, at most 20.
	uint32 max_threads = 2;
}

// A structure that specifies cache file for indexing response.
message CacheFileForIndexingCollectiveResponse {

	// The cache file for indexing array.
	repeated CacheFileForIndexingCollectiveResponseElement indexing_elements = 1;
}
