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.v1; 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/v1/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.V1"; 32option go_package = "cloud.google.com/go/networkservices/apiv1/networkservicespb;networkservicespb"; 33option java_multiple_files = true; 34option java_outer_classname = "DepProto"; 35option java_package = "com.google.cloud.networkservices.v1"; 36option php_namespace = "Google\\Cloud\\NetworkServices\\V1"; 37option ruby_package = "Google::Cloud::NetworkServices::V1"; 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: "/v1/{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: "/v1/{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: "/v1/{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: "/v1/{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: "/v1/{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: "/v1/{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: "/v1/{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: "/v1/{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: "/v1/{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: "/v1/{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 222 // [CEL matcher language 223 // reference](https://cloud.google.com/service-extensions/docs/cel-matcher-language-reference). 224 string cel_expression = 1 [(google.api.field_behavior) = REQUIRED]; 225 } 226 227 // A single extension in the chain to execute for the matching request. 228 message Extension { 229 // Required. The name for this extension. 230 // The name is logged as part of the HTTP request logs. 231 // The name must conform with RFC-1034, is restricted to lower-cased 232 // letters, numbers and hyphens, and can have a maximum length of 63 233 // characters. Additionally, the first character must be a letter and the 234 // last a letter or a number. 235 string name = 1 [(google.api.field_behavior) = REQUIRED]; 236 237 // Optional. The `:authority` header in the gRPC request sent from Envoy 238 // to the extension service. 239 // Required for Callout extensions. 240 string authority = 2 [(google.api.field_behavior) = OPTIONAL]; 241 242 // Required. The reference to the service that runs the extension. 243 // 244 // Currently only callout extensions are supported here. 245 // 246 // To configure a callout extension, `service` must be a fully-qualified 247 // reference 248 // to a [backend 249 // service](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices) 250 // in the format: 251 // `https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}` 252 // or 253 // `https://www.googleapis.com/compute/v1/projects/{project}/global/backendServices/{backendService}`. 254 string service = 3 [(google.api.field_behavior) = REQUIRED]; 255 256 // Optional. A set of events during request or response processing for which 257 // this extension is called. This field is required for the 258 // `LbTrafficExtension` resource. It's not relevant for the 259 // `LbRouteExtension` resource. 260 repeated EventType supported_events = 4 261 [(google.api.field_behavior) = OPTIONAL]; 262 263 // Optional. Specifies the timeout for each individual message on the 264 // stream. The timeout must be between 10-1000 milliseconds. Required for 265 // Callout extensions. 266 google.protobuf.Duration timeout = 5 267 [(google.api.field_behavior) = OPTIONAL]; 268 269 // Optional. Determines how the proxy behaves if the call to the extension 270 // fails or times out. 271 // 272 // When set to `TRUE`, request or response processing continues without 273 // error. Any subsequent extensions in the extension chain are also 274 // executed. When set to `FALSE` or the default setting of `FALSE` is used, 275 // one of the following happens: 276 // * If response headers have not been delivered to the downstream client, 277 // a generic 500 error is returned to the client. The error response can be 278 // tailored by configuring a custom error response in the load balancer. 279 // 280 // * If response headers have been delivered, then the HTTP stream to the 281 // downstream client is reset. 282 bool fail_open = 6 [(google.api.field_behavior) = OPTIONAL]; 283 284 // Optional. List of the HTTP headers to forward to the extension 285 // (from the client or backend). If omitted, all headers are sent. 286 // Each element is a string indicating the header name. 287 repeated string forward_headers = 7 288 [(google.api.field_behavior) = OPTIONAL]; 289 } 290 291 // Required. The name for this extension chain. 292 // The name is logged as part of the HTTP request logs. 293 // The name must conform with RFC-1034, is restricted to lower-cased letters, 294 // numbers and hyphens, and can have a maximum length of 63 characters. 295 // Additionally, the first character must be a letter and the last a letter or 296 // a number. 297 string name = 1 [(google.api.field_behavior) = REQUIRED]; 298 299 // Required. Conditions under which this chain is invoked for a request. 300 MatchCondition match_condition = 2 [(google.api.field_behavior) = REQUIRED]; 301 302 // Required. A set of extensions to execute for the matching request. 303 // At least one extension is required. 304 // Up to 3 extensions can be defined for each extension chain 305 // for `LbTrafficExtension` resource. 306 // `LbRouteExtension` chains are limited to 1 extension per extension chain. 307 repeated Extension extensions = 3 [(google.api.field_behavior) = REQUIRED]; 308} 309 310// `LbTrafficExtension` is a resource that lets the extension service modify the 311// headers and payloads of both requests and responses without impacting the 312// choice of backend services or any other security policies associated with the 313// backend service. 314message LbTrafficExtension { 315 option (google.api.resource) = { 316 type: "networkservices.googleapis.com/LbTrafficExtension" 317 pattern: "projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}" 318 plural: "lbTrafficExtensions" 319 singular: "lbTrafficExtension" 320 }; 321 322 // Required. Identifier. Name of the `LbTrafficExtension` resource in the 323 // following format: 324 // `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`. 325 string name = 1 [ 326 (google.api.field_behavior) = REQUIRED, 327 (google.api.field_behavior) = IDENTIFIER 328 ]; 329 330 // Output only. The timestamp when the resource was created. 331 google.protobuf.Timestamp create_time = 2 332 [(google.api.field_behavior) = OUTPUT_ONLY]; 333 334 // Output only. The timestamp when the resource was updated. 335 google.protobuf.Timestamp update_time = 3 336 [(google.api.field_behavior) = OUTPUT_ONLY]; 337 338 // Optional. A human-readable description of the resource. 339 string description = 9 [(google.api.field_behavior) = OPTIONAL]; 340 341 // Optional. Set of labels associated with the `LbTrafficExtension` resource. 342 // 343 // The format must comply with [the requirements for 344 // labels](https://cloud.google.com/compute/docs/labeling-resources#requirements) for Google Cloud 345 // resources. 346 map<string, string> labels = 4 [(google.api.field_behavior) = OPTIONAL]; 347 348 // Required. A list of references to the forwarding rules to which this 349 // service extension is attached to. At least one forwarding rule is required. 350 // There can be only one `LBTrafficExtension` resource per forwarding rule. 351 repeated string forwarding_rules = 5 [(google.api.field_behavior) = REQUIRED]; 352 353 // Required. A set of ordered extension chains that contain the match 354 // conditions and extensions to execute. Match conditions for each extension 355 // chain are evaluated in sequence for a given request. The first extension 356 // chain that has a condition that matches the request is executed. 357 // Any subsequent extension chains do not execute. 358 // Limited to 5 extension chains per resource. 359 repeated ExtensionChain extension_chains = 7 360 [(google.api.field_behavior) = REQUIRED]; 361 362 // Required. All backend services and forwarding rules referenced by this 363 // extension must share the same load balancing scheme. Supported values: 364 // `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to 365 // [Choosing a load 366 // balancer](https://cloud.google.com/load-balancing/docs/backend-service). 367 LoadBalancingScheme load_balancing_scheme = 8 368 [(google.api.field_behavior) = REQUIRED]; 369} 370 371// Message for requesting list of `LbTrafficExtension` resources. 372message ListLbTrafficExtensionsRequest { 373 // Required. The project and location from which the `LbTrafficExtension` 374 // resources are listed, specified in the following format: 375 // `projects/{project}/locations/{location}`. 376 string parent = 1 [ 377 (google.api.field_behavior) = REQUIRED, 378 (google.api.resource_reference) = { 379 child_type: "networkservices.googleapis.com/LbTrafficExtension" 380 } 381 ]; 382 383 // Optional. Requested page size. The server might return fewer items than 384 // requested. If unspecified, the server picks an appropriate default. 385 int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; 386 387 // Optional. A token identifying a page of results that the server returns. 388 string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; 389 390 // Optional. Filtering results. 391 string filter = 4 [(google.api.field_behavior) = OPTIONAL]; 392 393 // Optional. Hint for how to order the results. 394 string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; 395} 396 397// Message for response to listing `LbTrafficExtension` resources. 398message ListLbTrafficExtensionsResponse { 399 // The list of `LbTrafficExtension` resources. 400 repeated LbTrafficExtension lb_traffic_extensions = 1; 401 402 // A token identifying a page of results that the server returns. 403 string next_page_token = 2; 404 405 // Locations that could not be reached. 406 repeated string unreachable = 3; 407} 408 409// Message for getting a `LbTrafficExtension` resource. 410message GetLbTrafficExtensionRequest { 411 // Required. A name of the `LbTrafficExtension` resource to get. Must be in 412 // the format 413 // `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`. 414 string name = 1 [ 415 (google.api.field_behavior) = REQUIRED, 416 (google.api.resource_reference) = { 417 type: "networkservices.googleapis.com/LbTrafficExtension" 418 } 419 ]; 420} 421 422// Message for creating a `LbTrafficExtension` resource. 423message CreateLbTrafficExtensionRequest { 424 // Required. The parent resource of the `LbTrafficExtension` resource. Must be 425 // in the format `projects/{project}/locations/{location}`. 426 string parent = 1 [ 427 (google.api.field_behavior) = REQUIRED, 428 (google.api.resource_reference) = { 429 child_type: "networkservices.googleapis.com/LbTrafficExtension" 430 } 431 ]; 432 433 // Required. User-provided ID of the `LbTrafficExtension` resource to be 434 // created. 435 string lb_traffic_extension_id = 2 [(google.api.field_behavior) = REQUIRED]; 436 437 // Required. `LbTrafficExtension` resource to be created. 438 LbTrafficExtension lb_traffic_extension = 3 439 [(google.api.field_behavior) = REQUIRED]; 440 441 // Optional. An optional request ID to identify requests. Specify a unique 442 // request ID so that if you must retry your request, the server can ignore 443 // the request if it has already been completed. The server guarantees 444 // that for at least 60 minutes since the first request. 445 // 446 // For example, consider a situation where you make an initial request and the 447 // request times out. If you make the request again with the same request 448 // ID, the server can check if original operation with the same request ID 449 // was received, and if so, ignores the second request. This prevents 450 // clients from accidentally creating duplicate commitments. 451 // 452 // The request ID must be a valid UUID with the exception that zero UUID is 453 // not supported (00000000-0000-0000-0000-000000000000). 454 string request_id = 4 [ 455 (google.api.field_info).format = UUID4, 456 (google.api.field_behavior) = OPTIONAL 457 ]; 458} 459 460// Message for updating a `LbTrafficExtension` resource. 461message UpdateLbTrafficExtensionRequest { 462 // Required. Used to specify the fields to be overwritten in the 463 // `LbTrafficExtension` resource by the update. 464 // The fields specified in the update_mask are relative to the resource, not 465 // the full request. A field is overwritten if it is in the mask. If the 466 // user does not specify a mask, then all fields are overwritten. 467 google.protobuf.FieldMask update_mask = 1 468 [(google.api.field_behavior) = REQUIRED]; 469 470 // Required. `LbTrafficExtension` resource being updated. 471 LbTrafficExtension lb_traffic_extension = 2 472 [(google.api.field_behavior) = REQUIRED]; 473 474 // Optional. An optional request ID to identify requests. Specify a unique 475 // request ID so that if you must retry your request, the server can ignore 476 // the request if it has already been completed. The server guarantees 477 // that for at least 60 minutes since the first request. 478 // 479 // For example, consider a situation where you make an initial request and the 480 // request times out. If you make the request again with the same request 481 // ID, the server can check if original operation with the same request ID 482 // was received, and if so, ignores the second request. This prevents 483 // clients from accidentally creating duplicate commitments. 484 // 485 // The request ID must be a valid UUID with the exception that zero UUID is 486 // not supported (00000000-0000-0000-0000-000000000000). 487 string request_id = 3 [ 488 (google.api.field_info).format = UUID4, 489 (google.api.field_behavior) = OPTIONAL 490 ]; 491} 492 493// Message for deleting a `LbTrafficExtension` resource. 494message DeleteLbTrafficExtensionRequest { 495 // Required. The name of the `LbTrafficExtension` resource to delete. Must be 496 // in the format 497 // `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`. 498 string name = 1 [ 499 (google.api.field_behavior) = REQUIRED, 500 (google.api.resource_reference) = { 501 type: "networkservices.googleapis.com/LbTrafficExtension" 502 } 503 ]; 504 505 // Optional. An optional request ID to identify requests. Specify a unique 506 // request ID so that if you must retry your request, the server can ignore 507 // the request if it has already been completed. The server guarantees 508 // that for at least 60 minutes after the first request. 509 // 510 // For example, consider a situation where you make an initial request and the 511 // request times out. If you make the request again with the same request 512 // ID, the server can check if original operation with the same request ID 513 // was received, and if so, ignores the second request. This prevents 514 // clients from accidentally creating duplicate commitments. 515 // 516 // The request ID must be a valid UUID with the exception that zero UUID is 517 // not supported (00000000-0000-0000-0000-000000000000). 518 string request_id = 2 [ 519 (google.api.field_info).format = UUID4, 520 (google.api.field_behavior) = OPTIONAL 521 ]; 522} 523 524// `LbRouteExtension` is a resource that lets you control where traffic is 525// routed to for a given request. 526message LbRouteExtension { 527 option (google.api.resource) = { 528 type: "networkservices.googleapis.com/LbRouteExtension" 529 pattern: "projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}" 530 plural: "lbRouteExtensions" 531 singular: "lbRouteExtension" 532 }; 533 534 // Required. Identifier. Name of the `LbRouteExtension` resource in the 535 // following format: 536 // `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`. 537 string name = 1 [ 538 (google.api.field_behavior) = REQUIRED, 539 (google.api.field_behavior) = IDENTIFIER 540 ]; 541 542 // Output only. The timestamp when the resource was created. 543 google.protobuf.Timestamp create_time = 2 544 [(google.api.field_behavior) = OUTPUT_ONLY]; 545 546 // Output only. The timestamp when the resource was updated. 547 google.protobuf.Timestamp update_time = 3 548 [(google.api.field_behavior) = OUTPUT_ONLY]; 549 550 // Optional. A human-readable description of the resource. 551 string description = 9 [(google.api.field_behavior) = OPTIONAL]; 552 553 // Optional. Set of labels associated with the `LbRouteExtension` resource. 554 // 555 // The format must comply with [the requirements for 556 // labels](https://cloud.google.com/compute/docs/labeling-resources#requirements) for Google Cloud 557 // resources. 558 map<string, string> labels = 4 [(google.api.field_behavior) = OPTIONAL]; 559 560 // Required. A list of references to the forwarding rules to which this 561 // service extension is attached to. At least one forwarding rule is required. 562 // There can be only one `LbRouteExtension` resource per forwarding rule. 563 repeated string forwarding_rules = 5 [(google.api.field_behavior) = REQUIRED]; 564 565 // Required. A set of ordered extension chains that contain the match 566 // conditions and extensions to execute. Match conditions for each extension 567 // chain are evaluated in sequence for a given request. The first extension 568 // chain that has a condition that matches the request is executed. 569 // Any subsequent extension chains do not execute. 570 // Limited to 5 extension chains per resource. 571 repeated ExtensionChain extension_chains = 7 572 [(google.api.field_behavior) = REQUIRED]; 573 574 // Required. All backend services and forwarding rules referenced by this 575 // extension must share the same load balancing scheme. Supported values: 576 // `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to 577 // [Choosing a load 578 // balancer](https://cloud.google.com/load-balancing/docs/backend-service). 579 LoadBalancingScheme load_balancing_scheme = 8 580 [(google.api.field_behavior) = REQUIRED]; 581} 582 583// Message for requesting list of `LbRouteExtension` resources. 584message ListLbRouteExtensionsRequest { 585 // Required. The project and location from which the `LbRouteExtension` 586 // resources are listed, specified in the following format: 587 // `projects/{project}/locations/{location}`. 588 string parent = 1 [ 589 (google.api.field_behavior) = REQUIRED, 590 (google.api.resource_reference) = { 591 child_type: "networkservices.googleapis.com/LbRouteExtension" 592 } 593 ]; 594 595 // Optional. Requested page size. The server might return fewer items than 596 // requested. If unspecified, the server picks an appropriate default. 597 int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; 598 599 // Optional. A token identifying a page of results that the server returns. 600 string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; 601 602 // Optional. Filtering results. 603 string filter = 4 [(google.api.field_behavior) = OPTIONAL]; 604 605 // Optional. Hint for how to order the results. 606 string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; 607} 608 609// Message for response to listing `LbRouteExtension` resources. 610message ListLbRouteExtensionsResponse { 611 // The list of `LbRouteExtension` resources. 612 repeated LbRouteExtension lb_route_extensions = 1; 613 614 // A token identifying a page of results that the server returns. 615 string next_page_token = 2; 616 617 // Locations that could not be reached. 618 repeated string unreachable = 3; 619} 620 621// Message for getting a `LbRouteExtension` resource. 622message GetLbRouteExtensionRequest { 623 // Required. A name of the `LbRouteExtension` resource to get. Must be in the 624 // format 625 // `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`. 626 string name = 1 [ 627 (google.api.field_behavior) = REQUIRED, 628 (google.api.resource_reference) = { 629 type: "networkservices.googleapis.com/LbRouteExtension" 630 } 631 ]; 632} 633 634// Message for creating a `LbRouteExtension` resource. 635message CreateLbRouteExtensionRequest { 636 // Required. The parent resource of the `LbRouteExtension` resource. Must be 637 // in the format `projects/{project}/locations/{location}`. 638 string parent = 1 [ 639 (google.api.field_behavior) = REQUIRED, 640 (google.api.resource_reference) = { 641 child_type: "networkservices.googleapis.com/LbRouteExtension" 642 } 643 ]; 644 645 // Required. User-provided ID of the `LbRouteExtension` resource to be 646 // created. 647 string lb_route_extension_id = 2 [(google.api.field_behavior) = REQUIRED]; 648 649 // Required. `LbRouteExtension` resource to be created. 650 LbRouteExtension lb_route_extension = 3 651 [(google.api.field_behavior) = REQUIRED]; 652 653 // Optional. An optional request ID to identify requests. Specify a unique 654 // request ID so that if you must retry your request, the server can ignore 655 // the request if it has already been completed. The server guarantees 656 // that for at least 60 minutes since the first request. 657 // 658 // For example, consider a situation where you make an initial request and the 659 // request times out. If you make the request again with the same request 660 // ID, the server can check if original operation with the same request ID 661 // was received, and if so, ignores the second request. This prevents 662 // clients from accidentally creating duplicate commitments. 663 // 664 // The request ID must be a valid UUID with the exception that zero UUID is 665 // not supported (00000000-0000-0000-0000-000000000000). 666 string request_id = 4 [ 667 (google.api.field_info).format = UUID4, 668 (google.api.field_behavior) = OPTIONAL 669 ]; 670} 671 672// Message for updating a `LbRouteExtension` resource. 673message UpdateLbRouteExtensionRequest { 674 // Required. Used to specify the fields to be overwritten in the 675 // `LbRouteExtension` resource by the update. 676 // The fields specified in the update_mask are relative to the resource, not 677 // the full request. A field is overwritten if it is in the mask. If the 678 // user does not specify a mask, then all fields are overwritten. 679 google.protobuf.FieldMask update_mask = 1 680 [(google.api.field_behavior) = REQUIRED]; 681 682 // Required. `LbRouteExtension` resource being updated. 683 LbRouteExtension lb_route_extension = 2 684 [(google.api.field_behavior) = REQUIRED]; 685 686 // Optional. An optional request ID to identify requests. Specify a unique 687 // request ID so that if you must retry your request, the server can ignore 688 // the request if it has already been completed. The server guarantees 689 // that for at least 60 minutes since the first request. 690 // 691 // For example, consider a situation where you make an initial request and the 692 // request times out. If you make the request again with the same request 693 // ID, the server can check if original operation with the same request ID 694 // was received, and if so, ignores the second request. This prevents 695 // clients from accidentally creating duplicate commitments. 696 // 697 // The request ID must be a valid UUID with the exception that zero UUID is 698 // not supported (00000000-0000-0000-0000-000000000000). 699 string request_id = 3 [ 700 (google.api.field_info).format = UUID4, 701 (google.api.field_behavior) = OPTIONAL 702 ]; 703} 704 705// Message for deleting a `LbRouteExtension` resource. 706message DeleteLbRouteExtensionRequest { 707 // Required. The name of the `LbRouteExtension` resource to delete. Must be in 708 // the format 709 // `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`. 710 string name = 1 [ 711 (google.api.field_behavior) = REQUIRED, 712 (google.api.resource_reference) = { 713 type: "networkservices.googleapis.com/LbRouteExtension" 714 } 715 ]; 716 717 // Optional. An optional request ID to identify requests. Specify a unique 718 // request ID so that if you must retry your request, the server can ignore 719 // the request if it has already been completed. The server guarantees 720 // that for at least 60 minutes after the first request. 721 // 722 // For example, consider a situation where you make an initial request and the 723 // request times out. If you make the request again with the same request 724 // ID, the server can check if original operation with the same request ID 725 // was received, and if so, ignores the second request. This prevents 726 // clients from accidentally creating duplicate commitments. 727 // 728 // The request ID must be a valid UUID with the exception that zero UUID is 729 // not supported (00000000-0000-0000-0000-000000000000). 730 string request_id = 2 [ 731 (google.api.field_info).format = UUID4, 732 (google.api.field_behavior) = OPTIONAL 733 ]; 734} 735