1// Copyright 2023 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.networkservices.v1beta1; 18 19import "google/api/annotations.proto"; 20import "google/api/client.proto"; 21import "google/api/field_behavior.proto"; 22import "google/api/field_info.proto"; 23import "google/api/resource.proto"; 24import "google/cloud/networkservices/v1beta1/common.proto"; 25import "google/longrunning/operations.proto"; 26import "google/protobuf/duration.proto"; 27import "google/protobuf/empty.proto"; 28import "google/protobuf/field_mask.proto"; 29import "google/protobuf/timestamp.proto"; 30 31option csharp_namespace = "Google.Cloud.NetworkServices.V1Beta1"; 32option go_package = "cloud.google.com/go/networkservices/apiv1beta1/networkservicespb;networkservicespb"; 33option java_multiple_files = true; 34option java_outer_classname = "DepProto"; 35option java_package = "com.google.cloud.networkservices.v1beta1"; 36option php_namespace = "Google\\Cloud\\NetworkServices\\V1beta1"; 37option ruby_package = "Google::Cloud::NetworkServices::V1beta1"; 38 39// Service describing handlers for resources. 40service DepService { 41 option (google.api.default_host) = "networkservices.googleapis.com"; 42 option (google.api.oauth_scopes) = 43 "https://www.googleapis.com/auth/cloud-platform"; 44 45 // Lists `LbTrafficExtension` resources in a given project and location. 46 rpc ListLbTrafficExtensions(ListLbTrafficExtensionsRequest) 47 returns (ListLbTrafficExtensionsResponse) { 48 option (google.api.http) = { 49 get: "/v1beta1/{parent=projects/*/locations/*}/lbTrafficExtensions" 50 }; 51 option (google.api.method_signature) = "parent"; 52 } 53 54 // Gets details of the specified `LbTrafficExtension` resource. 55 rpc GetLbTrafficExtension(GetLbTrafficExtensionRequest) 56 returns (LbTrafficExtension) { 57 option (google.api.http) = { 58 get: "/v1beta1/{name=projects/*/locations/*/lbTrafficExtensions/*}" 59 }; 60 option (google.api.method_signature) = "name"; 61 } 62 63 // Creates a new `LbTrafficExtension` resource in a given project and 64 // location. 65 rpc CreateLbTrafficExtension(CreateLbTrafficExtensionRequest) 66 returns (google.longrunning.Operation) { 67 option (google.api.http) = { 68 post: "/v1beta1/{parent=projects/*/locations/*}/lbTrafficExtensions" 69 body: "lb_traffic_extension" 70 }; 71 option (google.api.method_signature) = 72 "parent,lb_traffic_extension,lb_traffic_extension_id"; 73 option (google.longrunning.operation_info) = { 74 response_type: "LbTrafficExtension" 75 metadata_type: "OperationMetadata" 76 }; 77 } 78 79 // Updates the parameters of the specified `LbTrafficExtension` resource. 80 rpc UpdateLbTrafficExtension(UpdateLbTrafficExtensionRequest) 81 returns (google.longrunning.Operation) { 82 option (google.api.http) = { 83 patch: "/v1beta1/{lb_traffic_extension.name=projects/*/locations/*/lbTrafficExtensions/*}" 84 body: "lb_traffic_extension" 85 }; 86 option (google.api.method_signature) = "lb_traffic_extension,update_mask"; 87 option (google.longrunning.operation_info) = { 88 response_type: "LbTrafficExtension" 89 metadata_type: "OperationMetadata" 90 }; 91 } 92 93 // Deletes the specified `LbTrafficExtension` resource. 94 rpc DeleteLbTrafficExtension(DeleteLbTrafficExtensionRequest) 95 returns (google.longrunning.Operation) { 96 option (google.api.http) = { 97 delete: "/v1beta1/{name=projects/*/locations/*/lbTrafficExtensions/*}" 98 }; 99 option (google.api.method_signature) = "name"; 100 option (google.longrunning.operation_info) = { 101 response_type: "google.protobuf.Empty" 102 metadata_type: "OperationMetadata" 103 }; 104 } 105 106 // Lists `LbRouteExtension` resources in a given project and location. 107 rpc ListLbRouteExtensions(ListLbRouteExtensionsRequest) 108 returns (ListLbRouteExtensionsResponse) { 109 option (google.api.http) = { 110 get: "/v1beta1/{parent=projects/*/locations/*}/lbRouteExtensions" 111 }; 112 option (google.api.method_signature) = "parent"; 113 } 114 115 // Gets details of the specified `LbRouteExtension` resource. 116 rpc GetLbRouteExtension(GetLbRouteExtensionRequest) 117 returns (LbRouteExtension) { 118 option (google.api.http) = { 119 get: "/v1beta1/{name=projects/*/locations/*/lbRouteExtensions/*}" 120 }; 121 option (google.api.method_signature) = "name"; 122 } 123 124 // Creates a new `LbRouteExtension` resource in a given project and location. 125 rpc CreateLbRouteExtension(CreateLbRouteExtensionRequest) 126 returns (google.longrunning.Operation) { 127 option (google.api.http) = { 128 post: "/v1beta1/{parent=projects/*/locations/*}/lbRouteExtensions" 129 body: "lb_route_extension" 130 }; 131 option (google.api.method_signature) = 132 "parent,lb_route_extension,lb_route_extension_id"; 133 option (google.longrunning.operation_info) = { 134 response_type: "LbRouteExtension" 135 metadata_type: "OperationMetadata" 136 }; 137 } 138 139 // Updates the parameters of the specified `LbRouteExtension` resource. 140 rpc UpdateLbRouteExtension(UpdateLbRouteExtensionRequest) 141 returns (google.longrunning.Operation) { 142 option (google.api.http) = { 143 patch: "/v1beta1/{lb_route_extension.name=projects/*/locations/*/lbRouteExtensions/*}" 144 body: "lb_route_extension" 145 }; 146 option (google.api.method_signature) = "lb_route_extension,update_mask"; 147 option (google.longrunning.operation_info) = { 148 response_type: "LbRouteExtension" 149 metadata_type: "OperationMetadata" 150 }; 151 } 152 153 // Deletes the specified `LbRouteExtension` resource. 154 rpc DeleteLbRouteExtension(DeleteLbRouteExtensionRequest) 155 returns (google.longrunning.Operation) { 156 option (google.api.http) = { 157 delete: "/v1beta1/{name=projects/*/locations/*/lbRouteExtensions/*}" 158 }; 159 option (google.api.method_signature) = "name"; 160 option (google.longrunning.operation_info) = { 161 response_type: "google.protobuf.Empty" 162 metadata_type: "OperationMetadata" 163 }; 164 } 165} 166 167// The part of the request or response for which the extension is called. 168enum EventType { 169 // Unspecified value. Do not use. 170 EVENT_TYPE_UNSPECIFIED = 0; 171 172 // If included in `supported_events`, 173 // the extension is called when the HTTP request headers arrive. 174 REQUEST_HEADERS = 1; 175 176 // If included in `supported_events`, 177 // the extension is called when the HTTP request body arrives. 178 REQUEST_BODY = 2; 179 180 // If included in `supported_events`, 181 // the extension is called when the HTTP response headers arrive. 182 RESPONSE_HEADERS = 3; 183 184 // If included in `supported_events`, 185 // the extension is called when the HTTP response body arrives. 186 RESPONSE_BODY = 4; 187 188 // If included in `supported_events`, 189 // the extension is called when the HTTP request trailers arrives. 190 REQUEST_TRAILERS = 5; 191 192 // If included in `supported_events`, 193 // the extension is called when the HTTP response trailers arrives. 194 RESPONSE_TRAILERS = 6; 195} 196 197// Load balancing schemes supported by the `LbTrafficExtension` resource and 198// `LbRouteExtension` resource. 199// For more information, refer to [Choosing a load 200// balancer](https://cloud.google.com/load-balancing/docs/backend-service). 201enum LoadBalancingScheme { 202 // Default value. Do not use. 203 LOAD_BALANCING_SCHEME_UNSPECIFIED = 0; 204 205 // Signifies that this is used for Internal HTTP(S) Load Balancing. 206 INTERNAL_MANAGED = 1; 207 208 // Signifies that this is used for External Managed HTTP(S) Load 209 // Balancing. 210 EXTERNAL_MANAGED = 2; 211} 212 213// A single extension chain wrapper that contains the match conditions and 214// extensions to execute. 215message ExtensionChain { 216 // Conditions under which this chain is invoked for a request. 217 message MatchCondition { 218 // Required. A Common Expression Language (CEL) expression that is used to 219 // match requests for which the extension chain is executed. 220 // 221 // For more information, see [CEL matcher language 222 // reference](https://cloud.google.com/service-extensions/docs/cel-matcher-language-reference). 223 string cel_expression = 1 [(google.api.field_behavior) = REQUIRED]; 224 } 225 226 // A single extension in the chain to execute for the matching request. 227 message Extension { 228 // Required. The name for this extension. 229 // The name is logged as part of the HTTP request logs. 230 // The name must conform with RFC-1034, is restricted to lower-cased 231 // letters, numbers and hyphens, and can have a maximum length of 63 232 // characters. Additionally, the first character must be a letter and the 233 // last a letter or a number. 234 string name = 1 [(google.api.field_behavior) = REQUIRED]; 235 236 // Optional. The `:authority` header in the gRPC request sent from Envoy 237 // to the extension service. 238 // Required for Callout extensions. 239 string authority = 2 [(google.api.field_behavior) = OPTIONAL]; 240 241 // Required. The reference to the service that runs the extension. 242 // 243 // Currently only callout extensions are supported here. 244 // 245 // To configure a callout extension, `service` must be a fully-qualified 246 // reference 247 // to a [backend 248 // service](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices) 249 // in the format: 250 // `https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}` 251 // or 252 // `https://www.googleapis.com/compute/v1/projects/{project}/global/backendServices/{backendService}`. 253 string service = 3 [(google.api.field_behavior) = REQUIRED]; 254 255 // Optional. A set of events during request or response processing for which 256 // this extension is called. This field is required for the 257 // `LbTrafficExtension` resource. It's not relevant for the 258 // `LbRouteExtension` resource. 259 repeated EventType supported_events = 4 260 [(google.api.field_behavior) = OPTIONAL]; 261 262 // Optional. Specifies the timeout for each individual message on the 263 // stream. The timeout must be between 10-1000 milliseconds. Required for 264 // Callout extensions. 265 google.protobuf.Duration timeout = 5 266 [(google.api.field_behavior) = OPTIONAL]; 267 268 // Optional. Determines how the proxy behaves if the call to the extension 269 // fails or times out. 270 // 271 // When set to `TRUE`, request or response processing continues without 272 // error. Any subsequent extensions in the extension chain are also 273 // executed. When set to `FALSE` or the default setting of `FALSE` is used, 274 // one of the following happens: 275 // * If response headers have not been delivered to the downstream client, 276 // a generic 500 error is returned to the client. The error response can be 277 // tailored by configuring a custom error response in the load balancer. 278 // 279 // * If response headers have been delivered, then the HTTP stream to the 280 // downstream client is reset. 281 bool fail_open = 6 [(google.api.field_behavior) = OPTIONAL]; 282 283 // Optional. List of the HTTP headers to forward to the extension 284 // (from the client or backend). If omitted, all headers are sent. 285 // Each element is a string indicating the header name. 286 repeated string forward_headers = 7 287 [(google.api.field_behavior) = OPTIONAL]; 288 } 289 290 // Required. The name for this extension chain. 291 // The name is logged as part of the HTTP request logs. 292 // The name must conform with RFC-1034, is restricted to lower-cased letters, 293 // numbers and hyphens, and can have a maximum length of 63 characters. 294 // Additionally, the first character must be a letter and the last a letter or 295 // a number. 296 string name = 1 [(google.api.field_behavior) = REQUIRED]; 297 298 // Required. Conditions under which this chain is invoked for a request. 299 MatchCondition match_condition = 2 [(google.api.field_behavior) = REQUIRED]; 300 301 // Required. A set of extensions to execute for the matching request. 302 // At least one extension is required. 303 // Up to 3 extensions can be defined for each extension chain 304 // for `LbTrafficExtension` resource. 305 // `LbRouteExtension` chains are limited to 1 extension per extension chain. 306 repeated Extension extensions = 3 [(google.api.field_behavior) = REQUIRED]; 307} 308 309// `LbTrafficExtension` is a resource that lets the extension service modify the 310// headers and payloads of both requests and responses without impacting the 311// choice of backend services or any other security policies associated with the 312// backend service. 313message LbTrafficExtension { 314 option (google.api.resource) = { 315 type: "networkservices.googleapis.com/LbTrafficExtension" 316 pattern: "projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}" 317 plural: "lbTrafficExtensions" 318 singular: "lbTrafficExtension" 319 }; 320 321 // Required. Identifier. Name of the `LbTrafficExtension` resource in the 322 // following format: 323 // `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`. 324 string name = 1 [ 325 (google.api.field_behavior) = REQUIRED, 326 (google.api.field_behavior) = IDENTIFIER 327 ]; 328 329 // Output only. The timestamp when the resource was created. 330 google.protobuf.Timestamp create_time = 2 331 [(google.api.field_behavior) = OUTPUT_ONLY]; 332 333 // Output only. The timestamp when the resource was updated. 334 google.protobuf.Timestamp update_time = 3 335 [(google.api.field_behavior) = OUTPUT_ONLY]; 336 337 // Optional. A human-readable description of the resource. 338 string description = 9 [(google.api.field_behavior) = OPTIONAL]; 339 340 // Optional. Set of labels associated with the `LbTrafficExtension` resource. 341 // 342 // The format must comply with [the requirements for 343 // labels](https://cloud.google.com/compute/docs/labeling-resources#requirements) 344 // for Google Cloud resources. 345 map<string, string> labels = 4 [(google.api.field_behavior) = OPTIONAL]; 346 347 // Required. A list of references to the forwarding rules to which this 348 // service extension is attached to. At least one forwarding rule is required. 349 // There can be only one `LBTrafficExtension` resource per forwarding rule. 350 repeated string forwarding_rules = 5 [(google.api.field_behavior) = REQUIRED]; 351 352 // Required. A set of ordered extension chains that contain the match 353 // conditions and extensions to execute. Match conditions for each extension 354 // chain are evaluated in sequence for a given request. The first extension 355 // chain that has a condition that matches the request is executed. 356 // Any subsequent extension chains do not execute. 357 // Limited to 5 extension chains per resource. 358 repeated ExtensionChain extension_chains = 7 359 [(google.api.field_behavior) = REQUIRED]; 360 361 // Required. All backend services and forwarding rules referenced by this 362 // extension must share the same load balancing scheme. Supported values: 363 // `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to 364 // [Choosing a load 365 // balancer](https://cloud.google.com/load-balancing/docs/backend-service). 366 LoadBalancingScheme load_balancing_scheme = 8 367 [(google.api.field_behavior) = REQUIRED]; 368} 369 370// Message for requesting list of `LbTrafficExtension` resources. 371message ListLbTrafficExtensionsRequest { 372 // Required. The project and location from which the `LbTrafficExtension` 373 // resources are listed, specified in the following format: 374 // `projects/{project}/locations/{location}`. 375 string parent = 1 [ 376 (google.api.field_behavior) = REQUIRED, 377 (google.api.resource_reference) = { 378 child_type: "networkservices.googleapis.com/LbTrafficExtension" 379 } 380 ]; 381 382 // Optional. Requested page size. The server might return fewer items than 383 // requested. If unspecified, the server picks an appropriate default. 384 int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; 385 386 // Optional. A token identifying a page of results that the server returns. 387 string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; 388 389 // Optional. Filtering results. 390 string filter = 4 [(google.api.field_behavior) = OPTIONAL]; 391 392 // Optional. Hint for how to order the results. 393 string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; 394} 395 396// Message for response to listing `LbTrafficExtension` resources. 397message ListLbTrafficExtensionsResponse { 398 // The list of `LbTrafficExtension` resources. 399 repeated LbTrafficExtension lb_traffic_extensions = 1; 400 401 // A token identifying a page of results that the server returns. 402 string next_page_token = 2; 403 404 // Locations that could not be reached. 405 repeated string unreachable = 3; 406} 407 408// Message for getting a `LbTrafficExtension` resource. 409message GetLbTrafficExtensionRequest { 410 // Required. A name of the `LbTrafficExtension` resource to get. Must be in 411 // the format 412 // `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`. 413 string name = 1 [ 414 (google.api.field_behavior) = REQUIRED, 415 (google.api.resource_reference) = { 416 type: "networkservices.googleapis.com/LbTrafficExtension" 417 } 418 ]; 419} 420 421// Message for creating a `LbTrafficExtension` resource. 422message CreateLbTrafficExtensionRequest { 423 // Required. The parent resource of the `LbTrafficExtension` resource. Must be 424 // in the format `projects/{project}/locations/{location}`. 425 string parent = 1 [ 426 (google.api.field_behavior) = REQUIRED, 427 (google.api.resource_reference) = { 428 child_type: "networkservices.googleapis.com/LbTrafficExtension" 429 } 430 ]; 431 432 // Required. User-provided ID of the `LbTrafficExtension` resource to be 433 // created. 434 string lb_traffic_extension_id = 2 [(google.api.field_behavior) = REQUIRED]; 435 436 // Required. `LbTrafficExtension` resource to be created. 437 LbTrafficExtension lb_traffic_extension = 3 438 [(google.api.field_behavior) = REQUIRED]; 439 440 // Optional. An optional request ID to identify requests. Specify a unique 441 // request ID so that if you must retry your request, the server can ignore 442 // the request if it has already been completed. The server guarantees 443 // that for at least 60 minutes since the first request. 444 // 445 // For example, consider a situation where you make an initial request and the 446 // request times out. If you make the request again with the same request 447 // ID, the server can check if original operation with the same request ID 448 // was received, and if so, ignores the second request. This prevents 449 // clients from accidentally creating duplicate commitments. 450 // 451 // The request ID must be a valid UUID with the exception that zero UUID is 452 // not supported (00000000-0000-0000-0000-000000000000). 453 string request_id = 4 [ 454 (google.api.field_info).format = UUID4, 455 (google.api.field_behavior) = OPTIONAL 456 ]; 457} 458 459// Message for updating a `LbTrafficExtension` resource. 460message UpdateLbTrafficExtensionRequest { 461 // Required. Used to specify the fields to be overwritten in the 462 // `LbTrafficExtension` resource by the update. 463 // The fields specified in the update_mask are relative to the resource, not 464 // the full request. A field is overwritten if it is in the mask. If the 465 // user does not specify a mask, then all fields are overwritten. 466 google.protobuf.FieldMask update_mask = 1 467 [(google.api.field_behavior) = REQUIRED]; 468 469 // Required. `LbTrafficExtension` resource being updated. 470 LbTrafficExtension lb_traffic_extension = 2 471 [(google.api.field_behavior) = REQUIRED]; 472 473 // Optional. An optional request ID to identify requests. Specify a unique 474 // request ID so that if you must retry your request, the server can ignore 475 // the request if it has already been completed. The server guarantees 476 // that for at least 60 minutes since the first request. 477 // 478 // For example, consider a situation where you make an initial request and the 479 // request times out. If you make the request again with the same request 480 // ID, the server can check if original operation with the same request ID 481 // was received, and if so, ignores the second request. This prevents 482 // clients from accidentally creating duplicate commitments. 483 // 484 // The request ID must be a valid UUID with the exception that zero UUID is 485 // not supported (00000000-0000-0000-0000-000000000000). 486 string request_id = 3 [ 487 (google.api.field_info).format = UUID4, 488 (google.api.field_behavior) = OPTIONAL 489 ]; 490} 491 492// Message for deleting a `LbTrafficExtension` resource. 493message DeleteLbTrafficExtensionRequest { 494 // Required. The name of the `LbTrafficExtension` resource to delete. Must be 495 // in the format 496 // `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`. 497 string name = 1 [ 498 (google.api.field_behavior) = REQUIRED, 499 (google.api.resource_reference) = { 500 type: "networkservices.googleapis.com/LbTrafficExtension" 501 } 502 ]; 503 504 // Optional. An optional request ID to identify requests. Specify a unique 505 // request ID so that if you must retry your request, the server can ignore 506 // the request if it has already been completed. The server guarantees 507 // that for at least 60 minutes after the first request. 508 // 509 // For example, consider a situation where you make an initial request and the 510 // request times out. If you make the request again with the same request 511 // ID, the server can check if original operation with the same request ID 512 // was received, and if so, ignores the second request. This prevents 513 // clients from accidentally creating duplicate commitments. 514 // 515 // The request ID must be a valid UUID with the exception that zero UUID is 516 // not supported (00000000-0000-0000-0000-000000000000). 517 string request_id = 2 [ 518 (google.api.field_info).format = UUID4, 519 (google.api.field_behavior) = OPTIONAL 520 ]; 521} 522 523// `LbRouteExtension` is a resource that lets you control where traffic is 524// routed to for a given request. 525message LbRouteExtension { 526 option (google.api.resource) = { 527 type: "networkservices.googleapis.com/LbRouteExtension" 528 pattern: "projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}" 529 plural: "lbRouteExtensions" 530 singular: "lbRouteExtension" 531 }; 532 533 // Required. Identifier. Name of the `LbRouteExtension` resource in the 534 // following format: 535 // `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`. 536 string name = 1 [ 537 (google.api.field_behavior) = REQUIRED, 538 (google.api.field_behavior) = IDENTIFIER 539 ]; 540 541 // Output only. The timestamp when the resource was created. 542 google.protobuf.Timestamp create_time = 2 543 [(google.api.field_behavior) = OUTPUT_ONLY]; 544 545 // Output only. The timestamp when the resource was updated. 546 google.protobuf.Timestamp update_time = 3 547 [(google.api.field_behavior) = OUTPUT_ONLY]; 548 549 // Optional. A human-readable description of the resource. 550 string description = 9 [(google.api.field_behavior) = OPTIONAL]; 551 552 // Optional. Set of labels associated with the `LbRouteExtension` resource. 553 // 554 // The format must comply with [the requirements for 555 // labels](https://cloud.google.com/compute/docs/labeling-resources#requirements) 556 // for Google Cloud resources. 557 map<string, string> labels = 4 [(google.api.field_behavior) = OPTIONAL]; 558 559 // Required. A list of references to the forwarding rules to which this 560 // service extension is attached to. At least one forwarding rule is required. 561 // There can be only one `LbRouteExtension` resource per forwarding rule. 562 repeated string forwarding_rules = 5 [(google.api.field_behavior) = REQUIRED]; 563 564 // Required. A set of ordered extension chains that contain the match 565 // conditions and extensions to execute. Match conditions for each extension 566 // chain are evaluated in sequence for a given request. The first extension 567 // chain that has a condition that matches the request is executed. 568 // Any subsequent extension chains do not execute. 569 // Limited to 5 extension chains per resource. 570 repeated ExtensionChain extension_chains = 7 571 [(google.api.field_behavior) = REQUIRED]; 572 573 // Required. All backend services and forwarding rules referenced by this 574 // extension must share the same load balancing scheme. Supported values: 575 // `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to 576 // [Choosing a load 577 // balancer](https://cloud.google.com/load-balancing/docs/backend-service). 578 LoadBalancingScheme load_balancing_scheme = 8 579 [(google.api.field_behavior) = REQUIRED]; 580} 581 582// Message for requesting list of `LbRouteExtension` resources. 583message ListLbRouteExtensionsRequest { 584 // Required. The project and location from which the `LbRouteExtension` 585 // resources are listed, specified in the following format: 586 // `projects/{project}/locations/{location}`. 587 string parent = 1 [ 588 (google.api.field_behavior) = REQUIRED, 589 (google.api.resource_reference) = { 590 child_type: "networkservices.googleapis.com/LbRouteExtension" 591 } 592 ]; 593 594 // Optional. Requested page size. The server might return fewer items than 595 // requested. If unspecified, the server picks an appropriate default. 596 int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; 597 598 // Optional. A token identifying a page of results that the server returns. 599 string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; 600 601 // Optional. Filtering results. 602 string filter = 4 [(google.api.field_behavior) = OPTIONAL]; 603 604 // Optional. Hint for how to order the results. 605 string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; 606} 607 608// Message for response to listing `LbRouteExtension` resources. 609message ListLbRouteExtensionsResponse { 610 // The list of `LbRouteExtension` resources. 611 repeated LbRouteExtension lb_route_extensions = 1; 612 613 // A token identifying a page of results that the server returns. 614 string next_page_token = 2; 615 616 // Locations that could not be reached. 617 repeated string unreachable = 3; 618} 619 620// Message for getting a `LbRouteExtension` resource. 621message GetLbRouteExtensionRequest { 622 // Required. A name of the `LbRouteExtension` resource to get. Must be in the 623 // format 624 // `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`. 625 string name = 1 [ 626 (google.api.field_behavior) = REQUIRED, 627 (google.api.resource_reference) = { 628 type: "networkservices.googleapis.com/LbRouteExtension" 629 } 630 ]; 631} 632 633// Message for creating a `LbRouteExtension` resource. 634message CreateLbRouteExtensionRequest { 635 // Required. The parent resource of the `LbRouteExtension` resource. Must be 636 // in the format `projects/{project}/locations/{location}`. 637 string parent = 1 [ 638 (google.api.field_behavior) = REQUIRED, 639 (google.api.resource_reference) = { 640 child_type: "networkservices.googleapis.com/LbRouteExtension" 641 } 642 ]; 643 644 // Required. User-provided ID of the `LbRouteExtension` resource to be 645 // created. 646 string lb_route_extension_id = 2 [(google.api.field_behavior) = REQUIRED]; 647 648 // Required. `LbRouteExtension` resource to be created. 649 LbRouteExtension lb_route_extension = 3 650 [(google.api.field_behavior) = REQUIRED]; 651 652 // Optional. An optional request ID to identify requests. Specify a unique 653 // request ID so that if you must retry your request, the server can ignore 654 // the request if it has already been completed. The server guarantees 655 // that for at least 60 minutes since the first request. 656 // 657 // For example, consider a situation where you make an initial request and the 658 // request times out. If you make the request again with the same request 659 // ID, the server can check if original operation with the same request ID 660 // was received, and if so, ignores the second request. This prevents 661 // clients from accidentally creating duplicate commitments. 662 // 663 // The request ID must be a valid UUID with the exception that zero UUID is 664 // not supported (00000000-0000-0000-0000-000000000000). 665 string request_id = 4 [ 666 (google.api.field_info).format = UUID4, 667 (google.api.field_behavior) = OPTIONAL 668 ]; 669} 670 671// Message for updating a `LbRouteExtension` resource. 672message UpdateLbRouteExtensionRequest { 673 // Required. Used to specify the fields to be overwritten in the 674 // `LbRouteExtension` resource by the update. 675 // The fields specified in the update_mask are relative to the resource, not 676 // the full request. A field is overwritten if it is in the mask. If the 677 // user does not specify a mask, then all fields are overwritten. 678 google.protobuf.FieldMask update_mask = 1 679 [(google.api.field_behavior) = REQUIRED]; 680 681 // Required. `LbRouteExtension` resource being updated. 682 LbRouteExtension lb_route_extension = 2 683 [(google.api.field_behavior) = REQUIRED]; 684 685 // Optional. An optional request ID to identify requests. Specify a unique 686 // request ID so that if you must retry your request, the server can ignore 687 // the request if it has already been completed. The server guarantees 688 // that for at least 60 minutes since the first request. 689 // 690 // For example, consider a situation where you make an initial request and the 691 // request times out. If you make the request again with the same request 692 // ID, the server can check if original operation with the same request ID 693 // was received, and if so, ignores the second request. This prevents 694 // clients from accidentally creating duplicate commitments. 695 // 696 // The request ID must be a valid UUID with the exception that zero UUID is 697 // not supported (00000000-0000-0000-0000-000000000000). 698 string request_id = 3 [ 699 (google.api.field_info).format = UUID4, 700 (google.api.field_behavior) = OPTIONAL 701 ]; 702} 703 704// Message for deleting a `LbRouteExtension` resource. 705message DeleteLbRouteExtensionRequest { 706 // Required. The name of the `LbRouteExtension` resource to delete. Must be in 707 // the format 708 // `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`. 709 string name = 1 [ 710 (google.api.field_behavior) = REQUIRED, 711 (google.api.resource_reference) = { 712 type: "networkservices.googleapis.com/LbRouteExtension" 713 } 714 ]; 715 716 // Optional. An optional request ID to identify requests. Specify a unique 717 // request ID so that if you must retry your request, the server can ignore 718 // the request if it has already been completed. The server guarantees 719 // that for at least 60 minutes after the first request. 720 // 721 // For example, consider a situation where you make an initial request and the 722 // request times out. If you make the request again with the same request 723 // ID, the server can check if original operation with the same request ID 724 // was received, and if so, ignores the second request. This prevents 725 // clients from accidentally creating duplicate commitments. 726 // 727 // The request ID must be a valid UUID with the exception that zero UUID is 728 // not supported (00000000-0000-0000-0000-000000000000). 729 string request_id = 2 [ 730 (google.api.field_info).format = UUID4, 731 (google.api.field_behavior) = OPTIONAL 732 ]; 733} 734