xref: /aosp_15_r20/external/googleapis/google/cloud/servicedirectory/v1/registration_service.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.servicedirectory.v1;
18
19import "google/api/annotations.proto";
20import "google/api/client.proto";
21import "google/api/field_behavior.proto";
22import "google/api/resource.proto";
23import "google/cloud/servicedirectory/v1/endpoint.proto";
24import "google/cloud/servicedirectory/v1/namespace.proto";
25import "google/cloud/servicedirectory/v1/service.proto";
26import "google/iam/v1/iam_policy.proto";
27import "google/iam/v1/policy.proto";
28import "google/protobuf/empty.proto";
29import "google/protobuf/field_mask.proto";
30
31option cc_enable_arenas = true;
32option csharp_namespace = "Google.Cloud.ServiceDirectory.V1";
33option go_package = "cloud.google.com/go/servicedirectory/apiv1/servicedirectorypb;servicedirectorypb";
34option java_multiple_files = true;
35option java_outer_classname = "RegistrationServiceProto";
36option java_package = "com.google.cloud.servicedirectory.v1";
37option php_namespace = "Google\\Cloud\\ServiceDirectory\\V1";
38option ruby_package = "Google::Cloud::ServiceDirectory::V1";
39
40// Service Directory API for registering services. It defines the following
41// resource model:
42//
43// - The API has a collection of
44// [Namespace][google.cloud.servicedirectory.v1.Namespace]
45// resources, named `projects/*/locations/*/namespaces/*`.
46//
47// - Each Namespace has a collection of
48// [Service][google.cloud.servicedirectory.v1.Service] resources, named
49// `projects/*/locations/*/namespaces/*/services/*`.
50//
51// - Each Service has a collection of
52// [Endpoint][google.cloud.servicedirectory.v1.Endpoint]
53// resources, named
54// `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
55service RegistrationService {
56  option (google.api.default_host) = "servicedirectory.googleapis.com";
57  option (google.api.oauth_scopes) =
58      "https://www.googleapis.com/auth/cloud-platform";
59
60  // Creates a namespace, and returns the new namespace.
61  rpc CreateNamespace(CreateNamespaceRequest) returns (Namespace) {
62    option (google.api.http) = {
63      post: "/v1/{parent=projects/*/locations/*}/namespaces"
64      body: "namespace"
65    };
66    option (google.api.method_signature) = "parent,namespace,namespace_id";
67  }
68
69  // Lists all namespaces.
70  rpc ListNamespaces(ListNamespacesRequest) returns (ListNamespacesResponse) {
71    option (google.api.http) = {
72      get: "/v1/{parent=projects/*/locations/*}/namespaces"
73    };
74    option (google.api.method_signature) = "parent";
75  }
76
77  // Gets a namespace.
78  rpc GetNamespace(GetNamespaceRequest) returns (Namespace) {
79    option (google.api.http) = {
80      get: "/v1/{name=projects/*/locations/*/namespaces/*}"
81    };
82    option (google.api.method_signature) = "name";
83  }
84
85  // Updates a namespace.
86  rpc UpdateNamespace(UpdateNamespaceRequest) returns (Namespace) {
87    option (google.api.http) = {
88      patch: "/v1/{namespace.name=projects/*/locations/*/namespaces/*}"
89      body: "namespace"
90    };
91    option (google.api.method_signature) = "namespace,update_mask";
92  }
93
94  // Deletes a namespace. This also deletes all services and endpoints in
95  // the namespace.
96  rpc DeleteNamespace(DeleteNamespaceRequest) returns (google.protobuf.Empty) {
97    option (google.api.http) = {
98      delete: "/v1/{name=projects/*/locations/*/namespaces/*}"
99    };
100    option (google.api.method_signature) = "name";
101  }
102
103  // Creates a service, and returns the new service.
104  rpc CreateService(CreateServiceRequest) returns (Service) {
105    option (google.api.http) = {
106      post: "/v1/{parent=projects/*/locations/*/namespaces/*}/services"
107      body: "service"
108    };
109    option (google.api.method_signature) = "parent,service,service_id";
110  }
111
112  // Lists all services belonging to a namespace.
113  rpc ListServices(ListServicesRequest) returns (ListServicesResponse) {
114    option (google.api.http) = {
115      get: "/v1/{parent=projects/*/locations/*/namespaces/*}/services"
116    };
117    option (google.api.method_signature) = "parent";
118  }
119
120  // Gets a service.
121  rpc GetService(GetServiceRequest) returns (Service) {
122    option (google.api.http) = {
123      get: "/v1/{name=projects/*/locations/*/namespaces/*/services/*}"
124    };
125    option (google.api.method_signature) = "name";
126  }
127
128  // Updates a service.
129  rpc UpdateService(UpdateServiceRequest) returns (Service) {
130    option (google.api.http) = {
131      patch: "/v1/{service.name=projects/*/locations/*/namespaces/*/services/*}"
132      body: "service"
133    };
134    option (google.api.method_signature) = "service,update_mask";
135  }
136
137  // Deletes a service. This also deletes all endpoints associated with
138  // the service.
139  rpc DeleteService(DeleteServiceRequest) returns (google.protobuf.Empty) {
140    option (google.api.http) = {
141      delete: "/v1/{name=projects/*/locations/*/namespaces/*/services/*}"
142    };
143    option (google.api.method_signature) = "name";
144  }
145
146  // Creates an endpoint, and returns the new endpoint.
147  rpc CreateEndpoint(CreateEndpointRequest) returns (Endpoint) {
148    option (google.api.http) = {
149      post: "/v1/{parent=projects/*/locations/*/namespaces/*/services/*}/endpoints"
150      body: "endpoint"
151    };
152    option (google.api.method_signature) = "parent,endpoint,endpoint_id";
153  }
154
155  // Lists all endpoints.
156  rpc ListEndpoints(ListEndpointsRequest) returns (ListEndpointsResponse) {
157    option (google.api.http) = {
158      get: "/v1/{parent=projects/*/locations/*/namespaces/*/services/*}/endpoints"
159    };
160    option (google.api.method_signature) = "parent";
161  }
162
163  // Gets an endpoint.
164  rpc GetEndpoint(GetEndpointRequest) returns (Endpoint) {
165    option (google.api.http) = {
166      get: "/v1/{name=projects/*/locations/*/namespaces/*/services/*/endpoints/*}"
167    };
168    option (google.api.method_signature) = "name";
169  }
170
171  // Updates an endpoint.
172  rpc UpdateEndpoint(UpdateEndpointRequest) returns (Endpoint) {
173    option (google.api.http) = {
174      patch: "/v1/{endpoint.name=projects/*/locations/*/namespaces/*/services/*/endpoints/*}"
175      body: "endpoint"
176    };
177    option (google.api.method_signature) = "endpoint,update_mask";
178  }
179
180  // Deletes an endpoint.
181  rpc DeleteEndpoint(DeleteEndpointRequest) returns (google.protobuf.Empty) {
182    option (google.api.http) = {
183      delete: "/v1/{name=projects/*/locations/*/namespaces/*/services/*/endpoints/*}"
184    };
185    option (google.api.method_signature) = "name";
186  }
187
188  // Gets the IAM Policy for a resource (namespace or service only).
189  rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest)
190      returns (google.iam.v1.Policy) {
191    option (google.api.http) = {
192      post: "/v1/{resource=projects/*/locations/*/namespaces/*}:getIamPolicy"
193      body: "*"
194      additional_bindings {
195        post: "/v1/{resource=projects/*/locations/*/namespaces/*/services/*}:getIamPolicy"
196        body: "*"
197      }
198    };
199  }
200
201  // Sets the IAM Policy for a resource (namespace or service only).
202  rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest)
203      returns (google.iam.v1.Policy) {
204    option (google.api.http) = {
205      post: "/v1/{resource=projects/*/locations/*/namespaces/*}:setIamPolicy"
206      body: "*"
207      additional_bindings {
208        post: "/v1/{resource=projects/*/locations/*/namespaces/*/services/*}:setIamPolicy"
209        body: "*"
210      }
211    };
212  }
213
214  // Tests IAM permissions for a resource (namespace or service only).
215  rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest)
216      returns (google.iam.v1.TestIamPermissionsResponse) {
217    option (google.api.http) = {
218      post: "/v1/{resource=projects/*/locations/*/namespaces/*}:testIamPermissions"
219      body: "*"
220      additional_bindings {
221        post: "/v1/{resource=projects/*/locations/*/namespaces/*/services/*}:testIamPermissions"
222        body: "*"
223      }
224    };
225  }
226}
227
228// The request message for
229// [RegistrationService.CreateNamespace][google.cloud.servicedirectory.v1.RegistrationService.CreateNamespace].
230message CreateNamespaceRequest {
231  // Required. The resource name of the project and location the namespace
232  // will be created in.
233  string parent = 1 [
234    (google.api.field_behavior) = REQUIRED,
235    (google.api.resource_reference) = {
236      type: "locations.googleapis.com/Location"
237    }
238  ];
239
240  // Required. The Resource ID must be 1-63 characters long, and comply with
241  // <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
242  // Specifically, the name must be 1-63 characters long and match the regular
243  // expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
244  // character must be a lowercase letter, and all following characters must
245  // be a dash, lowercase letter, or digit, except the last character, which
246  // cannot be a dash.
247  string namespace_id = 2 [(google.api.field_behavior) = REQUIRED];
248
249  // Required. A namespace with initial fields set.
250  Namespace namespace = 3 [(google.api.field_behavior) = REQUIRED];
251}
252
253// The request message for
254// [RegistrationService.ListNamespaces][google.cloud.servicedirectory.v1.RegistrationService.ListNamespaces].
255message ListNamespacesRequest {
256  // Required. The resource name of the project and location whose namespaces
257  // you'd like to list.
258  string parent = 1 [
259    (google.api.field_behavior) = REQUIRED,
260    (google.api.resource_reference) = {
261      type: "locations.googleapis.com/Location"
262    }
263  ];
264
265  // Optional. The maximum number of items to return.
266  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
267
268  // Optional. The next_page_token value returned from a previous List request,
269  // if any.
270  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
271
272  // Optional. The filter to list results by.
273  //
274  // General `filter` string syntax:
275  // `<field> <operator> <value> (<logical connector>)`
276  //
277  // *   `<field>` can be `name` or `labels.<key>` for map field
278  // *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
279  //     means `HAS`, and is roughly the same as `=`
280  // *   `<value>` must be the same data type as field
281  // *   `<logical connector>` can be `AND`, `OR`, `NOT`
282  //
283  // Examples of valid filters:
284  //
285  // *   `labels.owner` returns namespaces that have a label with the key
286  //     `owner`, this is the same as `labels:owner`
287  // *   `labels.owner=sd` returns namespaces that have key/value
288  //     `owner=sd`
289  // *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
290  //     returns namespaces that have name that is alphabetically later than the
291  //     string, so "namespace-e" is returned but "namespace-a" is not
292  // *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
293  //     `owner` in label key but value is not `sd` AND have key/value `foo=bar`
294  // *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
295  //     doesn't have a field called "doesnotexist". Since the filter does not
296  //     match any namespaces, it returns no results
297  //
298  // For more information about filtering, see
299  // [API Filtering](https://aip.dev/160).
300  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
301
302  // Optional. The order to list results by.
303  //
304  // General `order_by` string syntax: `<field> (<asc|desc>) (,)`
305  //
306  // *   `<field>` allows value: `name`
307  // *   `<asc|desc>` ascending or descending order by `<field>`. If this is
308  //     left blank, `asc` is used
309  //
310  // Note that an empty `order_by` string results in default order, which is
311  // order by `name` in ascending order.
312  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
313}
314
315// The response message for
316// [RegistrationService.ListNamespaces][google.cloud.servicedirectory.v1.RegistrationService.ListNamespaces].
317message ListNamespacesResponse {
318  // The list of namespaces.
319  repeated Namespace namespaces = 1;
320
321  // Token to retrieve the next page of results, or empty if there are no
322  // more results in the list.
323  string next_page_token = 2;
324}
325
326// The request message for
327// [RegistrationService.GetNamespace][google.cloud.servicedirectory.v1.RegistrationService.GetNamespace].
328message GetNamespaceRequest {
329  // Required. The name of the namespace to retrieve.
330  string name = 1 [
331    (google.api.field_behavior) = REQUIRED,
332    (google.api.resource_reference) = {
333      type: "servicedirectory.googleapis.com/Namespace"
334    }
335  ];
336}
337
338// The request message for
339// [RegistrationService.UpdateNamespace][google.cloud.servicedirectory.v1.RegistrationService.UpdateNamespace].
340message UpdateNamespaceRequest {
341  // Required. The updated namespace.
342  Namespace namespace = 1 [(google.api.field_behavior) = REQUIRED];
343
344  // Required. List of fields to be updated in this request.
345  google.protobuf.FieldMask update_mask = 2
346      [(google.api.field_behavior) = REQUIRED];
347}
348
349// The request message for
350// [RegistrationService.DeleteNamespace][google.cloud.servicedirectory.v1.RegistrationService.DeleteNamespace].
351message DeleteNamespaceRequest {
352  // Required. The name of the namespace to delete.
353  string name = 1 [
354    (google.api.field_behavior) = REQUIRED,
355    (google.api.resource_reference) = {
356      type: "servicedirectory.googleapis.com/Namespace"
357    }
358  ];
359}
360
361// The request message for
362// [RegistrationService.CreateService][google.cloud.servicedirectory.v1.RegistrationService.CreateService].
363message CreateServiceRequest {
364  // Required. The resource name of the namespace this service will belong to.
365  string parent = 1 [
366    (google.api.field_behavior) = REQUIRED,
367    (google.api.resource_reference) = {
368      type: "servicedirectory.googleapis.com/Namespace"
369    }
370  ];
371
372  // Required. The Resource ID must be 1-63 characters long, and comply with
373  // <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
374  // Specifically, the name must be 1-63 characters long and match the regular
375  // expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
376  // character must be a lowercase letter, and all following characters must
377  // be a dash, lowercase letter, or digit, except the last character, which
378  // cannot be a dash.
379  string service_id = 2 [(google.api.field_behavior) = REQUIRED];
380
381  // Required. A service  with initial fields set.
382  Service service = 3 [(google.api.field_behavior) = REQUIRED];
383}
384
385// The request message for
386// [RegistrationService.ListServices][google.cloud.servicedirectory.v1.RegistrationService.ListServices].
387message ListServicesRequest {
388  // Required. The resource name of the namespace whose services you'd
389  // like to list.
390  string parent = 1 [
391    (google.api.field_behavior) = REQUIRED,
392    (google.api.resource_reference) = {
393      type: "servicedirectory.googleapis.com/Namespace"
394    }
395  ];
396
397  // Optional. The maximum number of items to return.
398  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
399
400  // Optional. The next_page_token value returned from a previous List request,
401  // if any.
402  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
403
404  // Optional. The filter to list results by.
405  //
406  // General `filter` string syntax:
407  // `<field> <operator> <value> (<logical connector>)`
408  //
409  // *   `<field>` can be `name` or `annotations.<key>` for map field
410  // *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
411  //     means `HAS`, and is roughly the same as `=`
412  // *   `<value>` must be the same data type as field
413  // *   `<logical connector>` can be `AND`, `OR`, `NOT`
414  //
415  // Examples of valid filters:
416  //
417  // *   `annotations.owner` returns services that have a annotation with the
418  //     key `owner`, this is the same as `annotations:owner`
419  // *   `annotations.protocol=gRPC` returns services that have key/value
420  //     `protocol=gRPC`
421  // *
422  // `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
423  //     returns services that have name that is alphabetically later than the
424  //     string, so "service-e" is returned but "service-a" is not
425  // *   `annotations.owner!=sd AND annotations.foo=bar` returns services that
426  //     have `owner` in annotation key but value is not `sd` AND have
427  //     key/value `foo=bar`
428  // *   `doesnotexist.foo=bar` returns an empty list. Note that service
429  //     doesn't have a field called "doesnotexist". Since the filter does not
430  //     match any services, it returns no results
431  //
432  // For more information about filtering, see
433  // [API Filtering](https://aip.dev/160).
434  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
435
436  // Optional. The order to list results by.
437  //
438  // General `order_by` string syntax: `<field> (<asc|desc>) (,)`
439  //
440  // *   `<field>` allows value: `name`
441  // *   `<asc|desc>` ascending or descending order by `<field>`. If this is
442  //     left blank, `asc` is used
443  //
444  // Note that an empty `order_by` string results in default order, which is
445  // order by `name` in ascending order.
446  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
447}
448
449// The response message for
450// [RegistrationService.ListServices][google.cloud.servicedirectory.v1.RegistrationService.ListServices].
451message ListServicesResponse {
452  // The list of services.
453  repeated Service services = 1;
454
455  // Token to retrieve the next page of results, or empty if there are no
456  // more results in the list.
457  string next_page_token = 2;
458}
459
460// The request message for
461// [RegistrationService.GetService][google.cloud.servicedirectory.v1.RegistrationService.GetService].
462// This should not be used for looking up a service. Instead, use the `resolve`
463// method as it contains all endpoints and associated annotations.
464message GetServiceRequest {
465  // Required. The name of the service to get.
466  string name = 1 [
467    (google.api.field_behavior) = REQUIRED,
468    (google.api.resource_reference) = {
469      type: "servicedirectory.googleapis.com/Service"
470    }
471  ];
472}
473
474// The request message for
475// [RegistrationService.UpdateService][google.cloud.servicedirectory.v1.RegistrationService.UpdateService].
476message UpdateServiceRequest {
477  // Required. The updated service.
478  Service service = 1 [(google.api.field_behavior) = REQUIRED];
479
480  // Required. List of fields to be updated in this request.
481  google.protobuf.FieldMask update_mask = 2
482      [(google.api.field_behavior) = REQUIRED];
483}
484
485// The request message for
486// [RegistrationService.DeleteService][google.cloud.servicedirectory.v1.RegistrationService.DeleteService].
487message DeleteServiceRequest {
488  // Required. The name of the service to delete.
489  string name = 1 [
490    (google.api.field_behavior) = REQUIRED,
491    (google.api.resource_reference) = {
492      type: "servicedirectory.googleapis.com/Service"
493    }
494  ];
495}
496
497// The request message for
498// [RegistrationService.CreateEndpoint][google.cloud.servicedirectory.v1.RegistrationService.CreateEndpoint].
499message CreateEndpointRequest {
500  // Required. The resource name of the service that this endpoint provides.
501  string parent = 1 [
502    (google.api.field_behavior) = REQUIRED,
503    (google.api.resource_reference) = {
504      type: "servicedirectory.googleapis.com/Service"
505    }
506  ];
507
508  // Required. The Resource ID must be 1-63 characters long, and comply with
509  // <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
510  // Specifically, the name must be 1-63 characters long and match the regular
511  // expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
512  // character must be a lowercase letter, and all following characters must
513  // be a dash, lowercase letter, or digit, except the last character, which
514  // cannot be a dash.
515  string endpoint_id = 2 [(google.api.field_behavior) = REQUIRED];
516
517  // Required. A endpoint with initial fields set.
518  Endpoint endpoint = 3 [(google.api.field_behavior) = REQUIRED];
519}
520
521// The request message for
522// [RegistrationService.ListEndpoints][google.cloud.servicedirectory.v1.RegistrationService.ListEndpoints].
523message ListEndpointsRequest {
524  // Required. The resource name of the service whose endpoints you'd like to
525  // list.
526  string parent = 1 [
527    (google.api.field_behavior) = REQUIRED,
528    (google.api.resource_reference) = {
529      type: "servicedirectory.googleapis.com/Service"
530    }
531  ];
532
533  // Optional. The maximum number of items to return.
534  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
535
536  // Optional. The next_page_token value returned from a previous List request,
537  // if any.
538  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
539
540  // Optional. The filter to list results by.
541  //
542  // General `filter` string syntax:
543  // `<field> <operator> <value> (<logical connector>)`
544  //
545  // *   `<field>` can be `name`, `address`, `port`, or `annotations.<key>` for
546  //      map field
547  // *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
548  //     means `HAS`, and is roughly the same as `=`
549  // *   `<value>` must be the same data type as field
550  // *   `<logical connector>` can be `AND`, `OR`, `NOT`
551  //
552  // Examples of valid filters:
553  //
554  // *   `annotations.owner` returns endpoints that have a annotation with the
555  //     key `owner`, this is the same as `annotations:owner`
556  // *   `annotations.protocol=gRPC` returns endpoints that have key/value
557  //     `protocol=gRPC`
558  // *   `address=192.108.1.105` returns endpoints that have this address
559  // *   `port>8080` returns endpoints that have port number larger than 8080
560  // *
561  // `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
562  //     returns endpoints that have name that is alphabetically later than the
563  //     string, so "endpoint-e" is returned but "endpoint-a" is not
564  // *   `annotations.owner!=sd AND annotations.foo=bar` returns endpoints that
565  //     have `owner` in annotation key but value is not `sd` AND have
566  //     key/value `foo=bar`
567  // *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
568  //     doesn't have a field called "doesnotexist". Since the filter does not
569  //     match any endpoints, it returns no results
570  //
571  // For more information about filtering, see
572  // [API Filtering](https://aip.dev/160).
573  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
574
575  // Optional. The order to list results by.
576  //
577  // General `order_by` string syntax: `<field> (<asc|desc>) (,)`
578  //
579  // *   `<field>` allows values: `name`, `address`, `port`
580  // *   `<asc|desc>` ascending or descending order by `<field>`. If this is
581  //     left blank, `asc` is used
582  //
583  // Note that an empty `order_by` string results in default order, which is
584  // order by `name` in ascending order.
585  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
586}
587
588// The response message for
589// [RegistrationService.ListEndpoints][google.cloud.servicedirectory.v1.RegistrationService.ListEndpoints].
590message ListEndpointsResponse {
591  // The list of endpoints.
592  repeated Endpoint endpoints = 1;
593
594  // Token to retrieve the next page of results, or empty if there are no
595  // more results in the list.
596  string next_page_token = 2;
597}
598
599// The request message for
600// [RegistrationService.GetEndpoint][google.cloud.servicedirectory.v1.RegistrationService.GetEndpoint].
601// This should not be used to lookup endpoints at runtime. Instead, use
602// the `resolve` method.
603message GetEndpointRequest {
604  // Required. The name of the endpoint to get.
605  string name = 1 [
606    (google.api.field_behavior) = REQUIRED,
607    (google.api.resource_reference) = {
608      type: "servicedirectory.googleapis.com/Endpoint"
609    }
610  ];
611}
612
613// The request message for
614// [RegistrationService.UpdateEndpoint][google.cloud.servicedirectory.v1.RegistrationService.UpdateEndpoint].
615message UpdateEndpointRequest {
616  // Required. The updated endpoint.
617  Endpoint endpoint = 1 [(google.api.field_behavior) = REQUIRED];
618
619  // Required. List of fields to be updated in this request.
620  google.protobuf.FieldMask update_mask = 2
621      [(google.api.field_behavior) = REQUIRED];
622}
623
624// The request message for
625// [RegistrationService.DeleteEndpoint][google.cloud.servicedirectory.v1.RegistrationService.DeleteEndpoint].
626message DeleteEndpointRequest {
627  // Required. The name of the endpoint to delete.
628  string name = 1 [
629    (google.api.field_behavior) = REQUIRED,
630    (google.api.resource_reference) = {
631      type: "servicedirectory.googleapis.com/Endpoint"
632    }
633  ];
634}
635