xref: /aosp_15_r20/external/googleapis/google/cloud/networkservices/v1/dep.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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