| syntax = "proto2"; |
| option go_package = "search"; |
| |
| package search; |
| |
| message Scope { |
| enum Type { |
| USER_BY_CANONICAL_ID = 1; |
| USER_BY_EMAIL = 2; |
| GROUP_BY_CANONICAL_ID = 3; |
| GROUP_BY_EMAIL = 4; |
| GROUP_BY_DOMAIN = 5; |
| ALL_USERS = 6; |
| ALL_AUTHENTICATED_USERS = 7; |
| } |
| |
| optional Type type = 1; |
| optional string value = 2; |
| } |
| |
| message Entry { |
| enum Permission { |
| READ = 1; |
| WRITE = 2; |
| FULL_CONTROL = 3; |
| } |
| |
| optional Scope scope = 1; |
| optional Permission permission = 2; |
| optional string display_name = 3; |
| } |
| |
| message AccessControlList { |
| optional string owner = 1; |
| repeated Entry entries = 2; |
| } |
| |
| message FieldValue { |
| enum ContentType { |
| TEXT = 0; |
| HTML = 1; |
| ATOM = 2; |
| DATE = 3; |
| NUMBER = 4; |
| GEO = 5; |
| } |
| |
| optional ContentType type = 1 [default = TEXT]; |
| |
| optional string language = 2 [default = "en"]; |
| |
| optional string string_value = 3; |
| |
| optional group Geo = 4 { |
| required double lat = 5; |
| required double lng = 6; |
| } |
| } |
| |
| message Field { |
| required string name = 1; |
| required FieldValue value = 2; |
| } |
| |
| message FieldTypes { |
| required string name = 1; |
| repeated FieldValue.ContentType type = 2; |
| } |
| |
| message IndexShardSettings { |
| repeated int32 prev_num_shards = 1; |
| required int32 num_shards = 2 [default=1]; |
| repeated int32 prev_num_shards_search_false = 3; |
| optional string local_replica = 4 [default = ""]; |
| } |
| |
| message FacetValue { |
| enum ContentType { |
| ATOM = 2; |
| NUMBER = 4; |
| } |
| |
| optional ContentType type = 1 [default = ATOM]; |
| optional string string_value = 3; |
| } |
| |
| message Facet { |
| required string name = 1; |
| required FacetValue value = 2; |
| } |
| |
| message DocumentMetadata { |
| optional int64 version = 1; |
| optional int64 committed_st_version = 2; |
| } |
| |
| message Document { |
| optional string id = 1; |
| optional string language = 2 [default = "en"]; |
| repeated Field field = 3; |
| optional int32 order_id = 4; |
| optional OrderIdSource order_id_source = 6 [default = SUPPLIED]; |
| |
| enum OrderIdSource { |
| DEFAULTED = 0; |
| SUPPLIED = 1; |
| } |
| |
| enum Storage { |
| DISK = 0; |
| } |
| |
| optional Storage storage = 5 [default = DISK]; |
| repeated Facet facet = 8; |
| } |
| |
| message SearchServiceError { |
| enum ErrorCode { |
| OK = 0; |
| INVALID_REQUEST = 1; |
| TRANSIENT_ERROR = 2; |
| INTERNAL_ERROR = 3; |
| PERMISSION_DENIED = 4; |
| TIMEOUT = 5; |
| CONCURRENT_TRANSACTION = 6; |
| } |
| } |
| |
| message RequestStatus { |
| required SearchServiceError.ErrorCode code = 1; |
| optional string error_detail = 2; |
| optional int32 canonical_code = 3; |
| } |
| |
| message IndexSpec { |
| required string name = 1; |
| |
| enum Consistency { |
| GLOBAL = 0; |
| PER_DOCUMENT = 1; |
| } |
| optional Consistency consistency = 2 [default = PER_DOCUMENT]; |
| |
| optional string namespace = 3; |
| optional int32 version = 4; |
| |
| enum Source { |
| SEARCH = 0; |
| DATASTORE = 1; |
| CLOUD_STORAGE = 2; |
| } |
| optional Source source = 5 [default = SEARCH]; |
| |
| enum Mode { |
| PRIORITY = 0; |
| BACKGROUND = 1; |
| } |
| optional Mode mode = 6 [default = PRIORITY]; |
| } |
| |
| message IndexMetadata { |
| required IndexSpec index_spec = 1; |
| |
| repeated FieldTypes field = 2; |
| |
| message Storage { |
| optional int64 amount_used = 1; |
| optional int64 limit = 2; |
| } |
| optional Storage storage = 3; |
| } |
| |
| message IndexDocumentParams { |
| repeated Document document = 1; |
| |
| enum Freshness { |
| SYNCHRONOUSLY = 0; |
| WHEN_CONVENIENT = 1; |
| } |
| optional Freshness freshness = 2 [default = SYNCHRONOUSLY, deprecated=true]; |
| |
| required IndexSpec index_spec = 3; |
| } |
| |
| message IndexDocumentRequest { |
| required IndexDocumentParams params = 1; |
| |
| optional bytes app_id = 3; |
| } |
| |
| message IndexDocumentResponse { |
| repeated RequestStatus status = 1; |
| |
| repeated string doc_id = 2; |
| } |
| |
| message DeleteDocumentParams { |
| repeated string doc_id = 1; |
| |
| required IndexSpec index_spec = 2; |
| } |
| |
| message DeleteDocumentRequest { |
| required DeleteDocumentParams params = 1; |
| |
| optional bytes app_id = 3; |
| } |
| |
| message DeleteDocumentResponse { |
| repeated RequestStatus status = 1; |
| } |
| |
| message ListDocumentsParams { |
| required IndexSpec index_spec = 1; |
| optional string start_doc_id = 2; |
| optional bool include_start_doc = 3 [default = true]; |
| optional int32 limit = 4 [default = 100]; |
| optional bool keys_only = 5; |
| } |
| |
| message ListDocumentsRequest { |
| required ListDocumentsParams params = 1; |
| |
| optional bytes app_id = 2; |
| } |
| |
| message ListDocumentsResponse { |
| required RequestStatus status = 1; |
| |
| repeated Document document = 2; |
| } |
| |
| message ListIndexesParams { |
| optional bool fetch_schema = 1; |
| optional int32 limit = 2 [default = 20]; |
| optional string namespace = 3; |
| optional string start_index_name = 4; |
| optional bool include_start_index = 5 [default = true]; |
| optional string index_name_prefix = 6; |
| optional int32 offset = 7; |
| optional IndexSpec.Source source = 8 [default = SEARCH]; |
| } |
| |
| message ListIndexesRequest { |
| required ListIndexesParams params = 1; |
| |
| optional bytes app_id = 3; |
| } |
| |
| message ListIndexesResponse { |
| required RequestStatus status = 1; |
| repeated IndexMetadata index_metadata = 2; |
| } |
| |
| message DeleteSchemaParams { |
| optional IndexSpec.Source source = 1 [default = SEARCH]; |
| repeated IndexSpec index_spec = 2; |
| } |
| |
| message DeleteSchemaRequest { |
| required DeleteSchemaParams params = 1; |
| |
| optional bytes app_id = 3; |
| } |
| |
| message DeleteSchemaResponse { |
| repeated RequestStatus status = 1; |
| } |
| |
| message SortSpec { |
| required string sort_expression = 1; |
| optional bool sort_descending = 2 [default = true]; |
| optional string default_value_text = 4; |
| optional double default_value_numeric = 5; |
| } |
| |
| message ScorerSpec { |
| enum Scorer { |
| RESCORING_MATCH_SCORER = 0; |
| MATCH_SCORER = 2; |
| } |
| optional Scorer scorer = 1 [default = MATCH_SCORER]; |
| |
| optional int32 limit = 2 [default = 1000]; |
| optional string match_scorer_parameters = 9; |
| } |
| |
| message FieldSpec { |
| repeated string name = 1; |
| |
| repeated group Expression = 2 { |
| required string name = 3; |
| required string expression = 4; |
| } |
| } |
| |
| message FacetRange { |
| optional string name = 1; |
| optional string start = 2; |
| optional string end = 3; |
| } |
| |
| message FacetRequestParam { |
| optional int32 value_limit = 1; |
| repeated FacetRange range = 2; |
| repeated string value_constraint = 3; |
| } |
| |
| message FacetAutoDetectParam { |
| optional int32 value_limit = 1 [default = 10]; |
| } |
| |
| message FacetRequest { |
| required string name = 1; |
| optional FacetRequestParam params = 2; |
| } |
| |
| message FacetRefinement { |
| required string name = 1; |
| optional string value = 2; |
| |
| message Range { |
| optional string start = 1; |
| optional string end = 2; |
| } |
| optional Range range = 3; |
| } |
| |
| message SearchParams { |
| required IndexSpec index_spec = 1; |
| required string query = 2; |
| optional string cursor = 4; |
| optional int32 offset = 11; |
| |
| enum CursorType { |
| NONE = 0; |
| SINGLE = 1; |
| PER_RESULT = 2; |
| } |
| optional CursorType cursor_type = 5 [default = NONE]; |
| |
| optional int32 limit = 6 [default = 20]; |
| optional int32 matched_count_accuracy = 7; |
| repeated SortSpec sort_spec = 8; |
| optional ScorerSpec scorer_spec = 9; |
| optional FieldSpec field_spec = 10; |
| optional bool keys_only = 12; |
| |
| enum ParsingMode { |
| STRICT = 0; |
| RELAXED = 1; |
| } |
| optional ParsingMode parsing_mode = 13 [default = STRICT]; |
| |
| optional int32 auto_discover_facet_count = 15 [default = 0]; |
| repeated FacetRequest include_facet = 16; |
| repeated FacetRefinement facet_refinement = 17; |
| optional FacetAutoDetectParam facet_auto_detect_param = 18; |
| optional int32 facet_depth = 19 [default=1000]; |
| } |
| |
| message SearchRequest { |
| required SearchParams params = 1; |
| |
| optional bytes app_id = 3; |
| } |
| |
| message FacetResultValue { |
| required string name = 1; |
| required int32 count = 2; |
| required FacetRefinement refinement = 3; |
| } |
| |
| message FacetResult { |
| required string name = 1; |
| repeated FacetResultValue value = 2; |
| } |
| |
| message SearchResult { |
| required Document document = 1; |
| repeated Field expression = 4; |
| repeated double score = 2; |
| optional string cursor = 3; |
| } |
| |
| message SearchResponse { |
| repeated SearchResult result = 1; |
| required int64 matched_count = 2; |
| required RequestStatus status = 3; |
| optional string cursor = 4; |
| repeated FacetResult facet_result = 5; |
| |
| extensions 1000 to 9999; |
| } |