1// Copyright 2022 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15syntax = "proto3"; 16 17package google.cloud.discoveryengine.v1; 18 19import "google/api/annotations.proto"; 20import "google/api/client.proto"; 21import "google/api/field_behavior.proto"; 22import "google/api/resource.proto"; 23import "google/cloud/discoveryengine/v1/data_store.proto"; 24import "google/longrunning/operations.proto"; 25import "google/protobuf/empty.proto"; 26import "google/protobuf/field_mask.proto"; 27import "google/protobuf/timestamp.proto"; 28 29option csharp_namespace = "Google.Cloud.DiscoveryEngine.V1"; 30option go_package = "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb;discoveryenginepb"; 31option java_multiple_files = true; 32option java_outer_classname = "DataStoreServiceProto"; 33option java_package = "com.google.cloud.discoveryengine.v1"; 34option objc_class_prefix = "DISCOVERYENGINE"; 35option php_namespace = "Google\\Cloud\\DiscoveryEngine\\V1"; 36option ruby_package = "Google::Cloud::DiscoveryEngine::V1"; 37 38// Service for managing [DataStore][google.cloud.discoveryengine.v1.DataStore] 39// configuration. 40service DataStoreService { 41 option (google.api.default_host) = "discoveryengine.googleapis.com"; 42 option (google.api.oauth_scopes) = 43 "https://www.googleapis.com/auth/cloud-platform"; 44 45 // Creates a [DataStore][google.cloud.discoveryengine.v1.DataStore]. 46 // 47 // DataStore is for storing 48 // [Documents][google.cloud.discoveryengine.v1.Document]. To serve these 49 // documents for Search, or Recommendation use case, an 50 // [Engine][google.cloud.discoveryengine.v1.Engine] needs to be created 51 // separately. 52 rpc CreateDataStore(CreateDataStoreRequest) 53 returns (google.longrunning.Operation) { 54 option (google.api.http) = { 55 post: "/v1/{parent=projects/*/locations/*}/dataStores" 56 body: "data_store" 57 additional_bindings { 58 post: "/v1/{parent=projects/*/locations/*/collections/*}/dataStores" 59 body: "data_store" 60 } 61 }; 62 option (google.api.method_signature) = "parent,data_store,data_store_id"; 63 option (google.longrunning.operation_info) = { 64 response_type: "google.cloud.discoveryengine.v1.DataStore" 65 metadata_type: "google.cloud.discoveryengine.v1.CreateDataStoreMetadata" 66 }; 67 } 68 69 // Gets a [DataStore][google.cloud.discoveryengine.v1.DataStore]. 70 rpc GetDataStore(GetDataStoreRequest) returns (DataStore) { 71 option (google.api.http) = { 72 get: "/v1/{name=projects/*/locations/*/dataStores/*}" 73 additional_bindings { 74 get: "/v1/{name=projects/*/locations/*/collections/*/dataStores/*}" 75 } 76 }; 77 option (google.api.method_signature) = "name"; 78 } 79 80 // Lists all the [DataStore][google.cloud.discoveryengine.v1.DataStore]s 81 // associated with the project. 82 rpc ListDataStores(ListDataStoresRequest) returns (ListDataStoresResponse) { 83 option (google.api.http) = { 84 get: "/v1/{parent=projects/*/locations/*}/dataStores" 85 additional_bindings { 86 get: "/v1/{parent=projects/*/locations/*/collections/*}/dataStores" 87 } 88 }; 89 option (google.api.method_signature) = "parent"; 90 } 91 92 // Deletes a [DataStore][google.cloud.discoveryengine.v1.DataStore]. 93 rpc DeleteDataStore(DeleteDataStoreRequest) 94 returns (google.longrunning.Operation) { 95 option (google.api.http) = { 96 delete: "/v1/{name=projects/*/locations/*/dataStores/*}" 97 additional_bindings { 98 delete: "/v1/{name=projects/*/locations/*/collections/*/dataStores/*}" 99 } 100 }; 101 option (google.api.method_signature) = "name"; 102 option (google.longrunning.operation_info) = { 103 response_type: "google.protobuf.Empty" 104 metadata_type: "google.cloud.discoveryengine.v1.DeleteDataStoreMetadata" 105 }; 106 } 107 108 // Updates a [DataStore][google.cloud.discoveryengine.v1.DataStore] 109 rpc UpdateDataStore(UpdateDataStoreRequest) returns (DataStore) { 110 option (google.api.http) = { 111 patch: "/v1/{data_store.name=projects/*/locations/*/dataStores/*}" 112 body: "data_store" 113 additional_bindings { 114 patch: "/v1/{data_store.name=projects/*/locations/*/collections/*/dataStores/*}" 115 body: "data_store" 116 } 117 }; 118 option (google.api.method_signature) = "data_store,update_mask"; 119 } 120} 121 122// Request for 123// [DataStoreService.CreateDataStore][google.cloud.discoveryengine.v1.DataStoreService.CreateDataStore] 124// method. 125message CreateDataStoreRequest { 126 // Required. The parent resource name, such as 127 // `projects/{project}/locations/{location}/collections/{collection}`. 128 string parent = 1 [ 129 (google.api.field_behavior) = REQUIRED, 130 (google.api.resource_reference) = { 131 type: "discoveryengine.googleapis.com/Collection" 132 } 133 ]; 134 135 // Required. The [DataStore][google.cloud.discoveryengine.v1.DataStore] to 136 // create. 137 DataStore data_store = 2 [(google.api.field_behavior) = REQUIRED]; 138 139 // Required. The ID to use for the 140 // [DataStore][google.cloud.discoveryengine.v1.DataStore], which will become 141 // the final component of the 142 // [DataStore][google.cloud.discoveryengine.v1.DataStore]'s resource name. 143 // 144 // This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) 145 // standard with a length limit of 63 characters. Otherwise, an 146 // INVALID_ARGUMENT error is returned. 147 string data_store_id = 3 [(google.api.field_behavior) = REQUIRED]; 148 149 // A boolean flag indicating whether user want to directly create an advanced 150 // data store for site search. 151 // If the data store is not configured as site 152 // search (GENERIC vertical and PUBLIC_WEBSITE content_config), this flag will 153 // be ignored. 154 bool create_advanced_site_search = 4; 155} 156 157// Request message for 158// [DataStoreService.GetDataStore][google.cloud.discoveryengine.v1.DataStoreService.GetDataStore] 159// method. 160message GetDataStoreRequest { 161 // Required. Full resource name of 162 // [DataStore][google.cloud.discoveryengine.v1.DataStore], such as 163 // `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}`. 164 // 165 // If the caller does not have permission to access the 166 // [DataStore][google.cloud.discoveryengine.v1.DataStore], regardless of 167 // whether or not it exists, a PERMISSION_DENIED error is returned. 168 // 169 // If the requested [DataStore][google.cloud.discoveryengine.v1.DataStore] 170 // does not exist, a NOT_FOUND error is returned. 171 string name = 1 [ 172 (google.api.field_behavior) = REQUIRED, 173 (google.api.resource_reference) = { 174 type: "discoveryengine.googleapis.com/DataStore" 175 } 176 ]; 177} 178 179// Metadata related to the progress of the 180// [DataStoreService.CreateDataStore][google.cloud.discoveryengine.v1.DataStoreService.CreateDataStore] 181// operation. This will be returned by the google.longrunning.Operation.metadata 182// field. 183message CreateDataStoreMetadata { 184 // Operation create time. 185 google.protobuf.Timestamp create_time = 1; 186 187 // Operation last update time. If the operation is done, this is also the 188 // finish time. 189 google.protobuf.Timestamp update_time = 2; 190} 191 192// Request message for 193// [DataStoreService.ListDataStores][google.cloud.discoveryengine.v1.DataStoreService.ListDataStores] 194// method. 195message ListDataStoresRequest { 196 // Required. The parent branch resource name, such as 197 // `projects/{project}/locations/{location}/collections/{collection_id}`. 198 // 199 // If the caller does not have permission to list 200 // [DataStore][google.cloud.discoveryengine.v1.DataStore]s under this 201 // location, regardless of whether or not this data store exists, a 202 // PERMISSION_DENIED error is returned. 203 string parent = 1 [ 204 (google.api.field_behavior) = REQUIRED, 205 (google.api.resource_reference) = { 206 type: "discoveryengine.googleapis.com/Collection" 207 } 208 ]; 209 210 // Maximum number of [DataStore][google.cloud.discoveryengine.v1.DataStore]s 211 // to return. If unspecified, defaults to 10. The maximum allowed value is 50. 212 // Values above 50 will be coerced to 50. 213 // 214 // If this field is negative, an INVALID_ARGUMENT is returned. 215 int32 page_size = 2; 216 217 // A page token 218 // [ListDataStoresResponse.next_page_token][google.cloud.discoveryengine.v1.ListDataStoresResponse.next_page_token], 219 // received from a previous 220 // [DataStoreService.ListDataStores][google.cloud.discoveryengine.v1.DataStoreService.ListDataStores] 221 // call. Provide this to retrieve the subsequent page. 222 // 223 // When paginating, all other parameters provided to 224 // [DataStoreService.ListDataStores][google.cloud.discoveryengine.v1.DataStoreService.ListDataStores] 225 // must match the call that provided the page token. Otherwise, an 226 // INVALID_ARGUMENT error is returned. 227 string page_token = 3; 228 229 // Filter by solution type. For example: filter = 230 // 'solution_type:SOLUTION_TYPE_SEARCH' 231 string filter = 4; 232} 233 234// Response message for 235// [DataStoreService.ListDataStores][google.cloud.discoveryengine.v1.DataStoreService.ListDataStores] 236// method. 237message ListDataStoresResponse { 238 // All the customer's [DataStore][google.cloud.discoveryengine.v1.DataStore]s. 239 repeated DataStore data_stores = 1; 240 241 // A token that can be sent as 242 // [ListDataStoresRequest.page_token][google.cloud.discoveryengine.v1.ListDataStoresRequest.page_token] 243 // to retrieve the next page. If this field is omitted, there are no 244 // subsequent pages. 245 string next_page_token = 2; 246} 247 248// Request message for 249// [DataStoreService.DeleteDataStore][google.cloud.discoveryengine.v1.DataStoreService.DeleteDataStore] 250// method. 251message DeleteDataStoreRequest { 252 // Required. Full resource name of 253 // [DataStore][google.cloud.discoveryengine.v1.DataStore], such as 254 // `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}`. 255 // 256 // If the caller does not have permission to delete the 257 // [DataStore][google.cloud.discoveryengine.v1.DataStore], regardless of 258 // whether or not it exists, a PERMISSION_DENIED error is returned. 259 // 260 // If the [DataStore][google.cloud.discoveryengine.v1.DataStore] to delete 261 // does not exist, a NOT_FOUND error is returned. 262 string name = 1 [ 263 (google.api.field_behavior) = REQUIRED, 264 (google.api.resource_reference) = { 265 type: "discoveryengine.googleapis.com/DataStore" 266 } 267 ]; 268} 269 270// Request message for 271// [DataStoreService.UpdateDataStore][google.cloud.discoveryengine.v1.DataStoreService.UpdateDataStore] 272// method. 273message UpdateDataStoreRequest { 274 // Required. The [DataStore][google.cloud.discoveryengine.v1.DataStore] to 275 // update. 276 // 277 // If the caller does not have permission to update the 278 // [DataStore][google.cloud.discoveryengine.v1.DataStore], regardless of 279 // whether or not it exists, a PERMISSION_DENIED error is returned. 280 // 281 // If the [DataStore][google.cloud.discoveryengine.v1.DataStore] to update 282 // does not exist, a NOT_FOUND error is returned. 283 DataStore data_store = 1 [(google.api.field_behavior) = REQUIRED]; 284 285 // Indicates which fields in the provided 286 // [DataStore][google.cloud.discoveryengine.v1.DataStore] to update. 287 // 288 // If an unsupported or unknown field is provided, an INVALID_ARGUMENT error 289 // is returned. 290 google.protobuf.FieldMask update_mask = 2; 291} 292 293// Metadata related to the progress of the 294// [DataStoreService.DeleteDataStore][google.cloud.discoveryengine.v1.DataStoreService.DeleteDataStore] 295// operation. This will be returned by the google.longrunning.Operation.metadata 296// field. 297message DeleteDataStoreMetadata { 298 // Operation create time. 299 google.protobuf.Timestamp create_time = 1; 300 301 // Operation last update time. If the operation is done, this is also the 302 // finish time. 303 google.protobuf.Timestamp update_time = 2; 304} 305