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/schema.proto"; 24import "google/longrunning/operations.proto"; 25import "google/protobuf/empty.proto"; 26import "google/protobuf/timestamp.proto"; 27 28option csharp_namespace = "Google.Cloud.DiscoveryEngine.V1"; 29option go_package = "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb;discoveryenginepb"; 30option java_multiple_files = true; 31option java_outer_classname = "SchemaServiceProto"; 32option java_package = "com.google.cloud.discoveryengine.v1"; 33option objc_class_prefix = "DISCOVERYENGINE"; 34option php_namespace = "Google\\Cloud\\DiscoveryEngine\\V1"; 35option ruby_package = "Google::Cloud::DiscoveryEngine::V1"; 36 37// Service for managing [Schema][google.cloud.discoveryengine.v1.Schema]s. 38service SchemaService { 39 option (google.api.default_host) = "discoveryengine.googleapis.com"; 40 option (google.api.oauth_scopes) = 41 "https://www.googleapis.com/auth/cloud-platform"; 42 43 // Gets a [Schema][google.cloud.discoveryengine.v1.Schema]. 44 rpc GetSchema(GetSchemaRequest) returns (Schema) { 45 option (google.api.http) = { 46 get: "/v1/{name=projects/*/locations/*/dataStores/*/schemas/*}" 47 additional_bindings { 48 get: "/v1/{name=projects/*/locations/*/collections/*/dataStores/*/schemas/*}" 49 } 50 }; 51 option (google.api.method_signature) = "name"; 52 } 53 54 // Gets a list of [Schema][google.cloud.discoveryengine.v1.Schema]s. 55 rpc ListSchemas(ListSchemasRequest) returns (ListSchemasResponse) { 56 option (google.api.http) = { 57 get: "/v1/{parent=projects/*/locations/*/dataStores/*}/schemas" 58 additional_bindings { 59 get: "/v1/{parent=projects/*/locations/*/collections/*/dataStores/*}/schemas" 60 } 61 }; 62 option (google.api.method_signature) = "parent"; 63 } 64 65 // Creates a [Schema][google.cloud.discoveryengine.v1.Schema]. 66 rpc CreateSchema(CreateSchemaRequest) returns (google.longrunning.Operation) { 67 option (google.api.http) = { 68 post: "/v1/{parent=projects/*/locations/*/dataStores/*}/schemas" 69 body: "schema" 70 additional_bindings { 71 post: "/v1/{parent=projects/*/locations/*/collections/*/dataStores/*}/schemas" 72 body: "schema" 73 } 74 }; 75 option (google.api.method_signature) = "parent,schema,schema_id"; 76 option (google.longrunning.operation_info) = { 77 response_type: "google.cloud.discoveryengine.v1.Schema" 78 metadata_type: "google.cloud.discoveryengine.v1.CreateSchemaMetadata" 79 }; 80 } 81 82 // Updates a [Schema][google.cloud.discoveryengine.v1.Schema]. 83 rpc UpdateSchema(UpdateSchemaRequest) returns (google.longrunning.Operation) { 84 option (google.api.http) = { 85 patch: "/v1/{schema.name=projects/*/locations/*/dataStores/*/schemas/*}" 86 body: "schema" 87 additional_bindings { 88 patch: "/v1/{schema.name=projects/*/locations/*/collections/*/dataStores/*/schemas/*}" 89 body: "schema" 90 } 91 }; 92 option (google.longrunning.operation_info) = { 93 response_type: "google.cloud.discoveryengine.v1.Schema" 94 metadata_type: "google.cloud.discoveryengine.v1.UpdateSchemaMetadata" 95 }; 96 } 97 98 // Deletes a [Schema][google.cloud.discoveryengine.v1.Schema]. 99 rpc DeleteSchema(DeleteSchemaRequest) returns (google.longrunning.Operation) { 100 option (google.api.http) = { 101 delete: "/v1/{name=projects/*/locations/*/dataStores/*/schemas/*}" 102 additional_bindings { 103 delete: "/v1/{name=projects/*/locations/*/collections/*/dataStores/*/schemas/*}" 104 } 105 }; 106 option (google.api.method_signature) = "name"; 107 option (google.longrunning.operation_info) = { 108 response_type: "google.protobuf.Empty" 109 metadata_type: "google.cloud.discoveryengine.v1.DeleteSchemaMetadata" 110 }; 111 } 112} 113 114// Request message for 115// [SchemaService.GetSchema][google.cloud.discoveryengine.v1.SchemaService.GetSchema] 116// method. 117message GetSchemaRequest { 118 // Required. The full resource name of the schema, in the format of 119 // `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/schemas/{schema}`. 120 string name = 1 [ 121 (google.api.field_behavior) = REQUIRED, 122 (google.api.resource_reference) = { 123 type: "discoveryengine.googleapis.com/Schema" 124 } 125 ]; 126} 127 128// Request message for 129// [SchemaService.ListSchemas][google.cloud.discoveryengine.v1.SchemaService.ListSchemas] 130// method. 131message ListSchemasRequest { 132 // Required. The parent data store resource name, in the format of 133 // `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}`. 134 string parent = 1 [ 135 (google.api.field_behavior) = REQUIRED, 136 (google.api.resource_reference) = { 137 type: "discoveryengine.googleapis.com/DataStore" 138 } 139 ]; 140 141 // The maximum number of [Schema][google.cloud.discoveryengine.v1.Schema]s to 142 // return. The service may return fewer than this value. 143 // 144 // If unspecified, at most 100 145 // [Schema][google.cloud.discoveryengine.v1.Schema]s will be returned. 146 // 147 // The maximum value is 1000; values above 1000 will be coerced to 1000. 148 int32 page_size = 2; 149 150 // A page token, received from a previous 151 // [SchemaService.ListSchemas][google.cloud.discoveryengine.v1.SchemaService.ListSchemas] 152 // call. Provide this to retrieve the subsequent page. 153 // 154 // When paginating, all other parameters provided to 155 // [SchemaService.ListSchemas][google.cloud.discoveryengine.v1.SchemaService.ListSchemas] 156 // must match the call that provided the page token. 157 string page_token = 3; 158} 159 160// Response message for 161// [SchemaService.ListSchemas][google.cloud.discoveryengine.v1.SchemaService.ListSchemas] 162// method. 163message ListSchemasResponse { 164 // The [Schema][google.cloud.discoveryengine.v1.Schema]s. 165 repeated Schema schemas = 1; 166 167 // A token that can be sent as 168 // [ListSchemasRequest.page_token][google.cloud.discoveryengine.v1.ListSchemasRequest.page_token] 169 // to retrieve the next page. If this field is omitted, there are no 170 // subsequent pages. 171 string next_page_token = 2; 172} 173 174// Request message for 175// [SchemaService.CreateSchema][google.cloud.discoveryengine.v1.SchemaService.CreateSchema] 176// method. 177message CreateSchemaRequest { 178 // Required. The parent data store resource name, in the format of 179 // `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}`. 180 string parent = 1 [ 181 (google.api.field_behavior) = REQUIRED, 182 (google.api.resource_reference) = { 183 type: "discoveryengine.googleapis.com/DataStore" 184 } 185 ]; 186 187 // Required. The [Schema][google.cloud.discoveryengine.v1.Schema] to create. 188 Schema schema = 2 [(google.api.field_behavior) = REQUIRED]; 189 190 // Required. The ID to use for the 191 // [Schema][google.cloud.discoveryengine.v1.Schema], which will become the 192 // final component of the 193 // [Schema.name][google.cloud.discoveryengine.v1.Schema.name]. 194 // 195 // This field should conform to 196 // [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length 197 // limit of 63 characters. 198 string schema_id = 3 [(google.api.field_behavior) = REQUIRED]; 199} 200 201// Request message for 202// [SchemaService.UpdateSchema][google.cloud.discoveryengine.v1.SchemaService.UpdateSchema] 203// method. 204message UpdateSchemaRequest { 205 // Required. The [Schema][google.cloud.discoveryengine.v1.Schema] to update. 206 Schema schema = 1 [(google.api.field_behavior) = REQUIRED]; 207 208 // If set to true, and the [Schema][google.cloud.discoveryengine.v1.Schema] is 209 // not found, a new [Schema][google.cloud.discoveryengine.v1.Schema] will be 210 // created. In this situation, `update_mask` is ignored. 211 bool allow_missing = 3; 212} 213 214// Request message for 215// [SchemaService.DeleteSchema][google.cloud.discoveryengine.v1.SchemaService.DeleteSchema] 216// method. 217message DeleteSchemaRequest { 218 // Required. The full resource name of the schema, in the format of 219 // `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/schemas/{schema}`. 220 string name = 1 [ 221 (google.api.field_behavior) = REQUIRED, 222 (google.api.resource_reference) = { 223 type: "discoveryengine.googleapis.com/Schema" 224 } 225 ]; 226} 227 228// Metadata for Create Schema LRO. 229message CreateSchemaMetadata { 230 // Operation create time. 231 google.protobuf.Timestamp create_time = 1; 232 233 // Operation last update time. If the operation is done, this is also the 234 // finish time. 235 google.protobuf.Timestamp update_time = 2; 236} 237 238// Metadata for UpdateSchema LRO. 239message UpdateSchemaMetadata { 240 // Operation create time. 241 google.protobuf.Timestamp create_time = 1; 242 243 // Operation last update time. If the operation is done, this is also the 244 // finish time. 245 google.protobuf.Timestamp update_time = 2; 246} 247 248// Metadata for DeleteSchema LRO. 249message DeleteSchemaMetadata { 250 // Operation create time. 251 google.protobuf.Timestamp create_time = 1; 252 253 // Operation last update time. If the operation is done, this is also the 254 // finish time. 255 google.protobuf.Timestamp update_time = 2; 256} 257