• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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