xref: /aosp_15_r20/external/googleapis/google/cloud/datastream/v1/datastream.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.datastream.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/datastream/v1/datastream_resources.proto";
24import "google/longrunning/operations.proto";
25import "google/protobuf/empty.proto";
26import "google/protobuf/field_mask.proto";
27import "google/protobuf/timestamp.proto";
28
29option csharp_namespace = "Google.Cloud.Datastream.V1";
30option go_package = "cloud.google.com/go/datastream/apiv1/datastreampb;datastreampb";
31option java_multiple_files = true;
32option java_outer_classname = "DatastreamProto";
33option java_package = "com.google.cloud.datastream.v1";
34option php_namespace = "Google\\Cloud\\Datastream\\V1";
35option ruby_package = "Google::Cloud::Datastream::V1";
36
37// Datastream service
38service Datastream {
39  option (google.api.default_host) = "datastream.googleapis.com";
40  option (google.api.oauth_scopes) =
41      "https://www.googleapis.com/auth/cloud-platform";
42
43  // Use this method to list connection profiles created in a project and
44  // location.
45  rpc ListConnectionProfiles(ListConnectionProfilesRequest)
46      returns (ListConnectionProfilesResponse) {
47    option (google.api.http) = {
48      get: "/v1/{parent=projects/*/locations/*}/connectionProfiles"
49    };
50    option (google.api.method_signature) = "parent";
51  }
52
53  // Use this method to get details about a connection profile.
54  rpc GetConnectionProfile(GetConnectionProfileRequest)
55      returns (ConnectionProfile) {
56    option (google.api.http) = {
57      get: "/v1/{name=projects/*/locations/*/connectionProfiles/*}"
58    };
59    option (google.api.method_signature) = "name";
60  }
61
62  // Use this method to create a connection profile in a project and location.
63  rpc CreateConnectionProfile(CreateConnectionProfileRequest)
64      returns (google.longrunning.Operation) {
65    option (google.api.http) = {
66      post: "/v1/{parent=projects/*/locations/*}/connectionProfiles"
67      body: "connection_profile"
68    };
69    option (google.api.method_signature) =
70        "parent,connection_profile,connection_profile_id";
71    option (google.longrunning.operation_info) = {
72      response_type: "ConnectionProfile"
73      metadata_type: "OperationMetadata"
74    };
75  }
76
77  // Use this method to update the parameters of a connection profile.
78  rpc UpdateConnectionProfile(UpdateConnectionProfileRequest)
79      returns (google.longrunning.Operation) {
80    option (google.api.http) = {
81      patch: "/v1/{connection_profile.name=projects/*/locations/*/connectionProfiles/*}"
82      body: "connection_profile"
83    };
84    option (google.api.method_signature) = "connection_profile,update_mask";
85    option (google.longrunning.operation_info) = {
86      response_type: "ConnectionProfile"
87      metadata_type: "OperationMetadata"
88    };
89  }
90
91  // Use this method to delete a connection profile.
92  rpc DeleteConnectionProfile(DeleteConnectionProfileRequest)
93      returns (google.longrunning.Operation) {
94    option (google.api.http) = {
95      delete: "/v1/{name=projects/*/locations/*/connectionProfiles/*}"
96    };
97    option (google.api.method_signature) = "name";
98    option (google.longrunning.operation_info) = {
99      response_type: "google.protobuf.Empty"
100      metadata_type: "OperationMetadata"
101    };
102  }
103
104  // Use this method to discover a connection profile.
105  // The discover API call exposes the data objects and metadata belonging to
106  // the profile. Typically, a request returns children data objects of a
107  // parent data object that's optionally supplied in the request.
108  rpc DiscoverConnectionProfile(DiscoverConnectionProfileRequest)
109      returns (DiscoverConnectionProfileResponse) {
110    option (google.api.http) = {
111      post: "/v1/{parent=projects/*/locations/*}/connectionProfiles:discover"
112      body: "*"
113    };
114  }
115
116  // Use this method to list streams in a project and location.
117  rpc ListStreams(ListStreamsRequest) returns (ListStreamsResponse) {
118    option (google.api.http) = {
119      get: "/v1/{parent=projects/*/locations/*}/streams"
120    };
121    option (google.api.method_signature) = "parent";
122  }
123
124  // Use this method to get details about a stream.
125  rpc GetStream(GetStreamRequest) returns (Stream) {
126    option (google.api.http) = {
127      get: "/v1/{name=projects/*/locations/*/streams/*}"
128    };
129    option (google.api.method_signature) = "name";
130  }
131
132  // Use this method to create a stream.
133  rpc CreateStream(CreateStreamRequest) returns (google.longrunning.Operation) {
134    option (google.api.http) = {
135      post: "/v1/{parent=projects/*/locations/*}/streams"
136      body: "stream"
137    };
138    option (google.api.method_signature) = "parent,stream,stream_id";
139    option (google.longrunning.operation_info) = {
140      response_type: "Stream"
141      metadata_type: "OperationMetadata"
142    };
143  }
144
145  // Use this method to update the configuration of a stream.
146  rpc UpdateStream(UpdateStreamRequest) returns (google.longrunning.Operation) {
147    option (google.api.http) = {
148      patch: "/v1/{stream.name=projects/*/locations/*/streams/*}"
149      body: "stream"
150    };
151    option (google.api.method_signature) = "stream,update_mask";
152    option (google.longrunning.operation_info) = {
153      response_type: "Stream"
154      metadata_type: "OperationMetadata"
155    };
156  }
157
158  // Use this method to delete a stream.
159  rpc DeleteStream(DeleteStreamRequest) returns (google.longrunning.Operation) {
160    option (google.api.http) = {
161      delete: "/v1/{name=projects/*/locations/*/streams/*}"
162    };
163    option (google.api.method_signature) = "name";
164    option (google.longrunning.operation_info) = {
165      response_type: "google.protobuf.Empty"
166      metadata_type: "OperationMetadata"
167    };
168  }
169
170  // Use this method to get details about a stream object.
171  rpc GetStreamObject(GetStreamObjectRequest) returns (StreamObject) {
172    option (google.api.http) = {
173      get: "/v1/{name=projects/*/locations/*/streams/*/objects/*}"
174    };
175    option (google.api.method_signature) = "name";
176  }
177
178  // Use this method to look up a stream object by its source object identifier.
179  rpc LookupStreamObject(LookupStreamObjectRequest) returns (StreamObject) {
180    option (google.api.http) = {
181      post: "/v1/{parent=projects/*/locations/*/streams/*}/objects:lookup"
182      body: "*"
183    };
184  }
185
186  // Use this method to list the objects of a specific stream.
187  rpc ListStreamObjects(ListStreamObjectsRequest)
188      returns (ListStreamObjectsResponse) {
189    option (google.api.http) = {
190      get: "/v1/{parent=projects/*/locations/*/streams/*}/objects"
191    };
192    option (google.api.method_signature) = "parent";
193  }
194
195  // Use this method to start a backfill job for the specified stream object.
196  rpc StartBackfillJob(StartBackfillJobRequest)
197      returns (StartBackfillJobResponse) {
198    option (google.api.http) = {
199      post: "/v1/{object=projects/*/locations/*/streams/*/objects/*}:startBackfillJob"
200      body: "*"
201    };
202    option (google.api.method_signature) = "object";
203  }
204
205  // Use this method to stop a backfill job for the specified stream object.
206  rpc StopBackfillJob(StopBackfillJobRequest)
207      returns (StopBackfillJobResponse) {
208    option (google.api.http) = {
209      post: "/v1/{object=projects/*/locations/*/streams/*/objects/*}:stopBackfillJob"
210      body: "*"
211    };
212    option (google.api.method_signature) = "object";
213  }
214
215  // The FetchStaticIps API call exposes the static IP addresses used by
216  // Datastream.
217  rpc FetchStaticIps(FetchStaticIpsRequest) returns (FetchStaticIpsResponse) {
218    option (google.api.http) = {
219      get: "/v1/{name=projects/*/locations/*}:fetchStaticIps"
220    };
221    option (google.api.method_signature) = "name";
222  }
223
224  // Use this method to create a private connectivity configuration.
225  rpc CreatePrivateConnection(CreatePrivateConnectionRequest)
226      returns (google.longrunning.Operation) {
227    option (google.api.http) = {
228      post: "/v1/{parent=projects/*/locations/*}/privateConnections"
229      body: "private_connection"
230    };
231    option (google.api.method_signature) =
232        "parent,private_connection,private_connection_id";
233    option (google.longrunning.operation_info) = {
234      response_type: "PrivateConnection"
235      metadata_type: "OperationMetadata"
236    };
237  }
238
239  // Use this method to get details about a private connectivity configuration.
240  rpc GetPrivateConnection(GetPrivateConnectionRequest)
241      returns (PrivateConnection) {
242    option (google.api.http) = {
243      get: "/v1/{name=projects/*/locations/*/privateConnections/*}"
244    };
245    option (google.api.method_signature) = "name";
246  }
247
248  // Use this method to list private connectivity configurations in a project
249  // and location.
250  rpc ListPrivateConnections(ListPrivateConnectionsRequest)
251      returns (ListPrivateConnectionsResponse) {
252    option (google.api.http) = {
253      get: "/v1/{parent=projects/*/locations/*}/privateConnections"
254    };
255    option (google.api.method_signature) = "parent";
256  }
257
258  // Use this method to delete a private connectivity configuration.
259  rpc DeletePrivateConnection(DeletePrivateConnectionRequest)
260      returns (google.longrunning.Operation) {
261    option (google.api.http) = {
262      delete: "/v1/{name=projects/*/locations/*/privateConnections/*}"
263    };
264    option (google.api.method_signature) = "name";
265    option (google.longrunning.operation_info) = {
266      response_type: "google.protobuf.Empty"
267      metadata_type: "OperationMetadata"
268    };
269  }
270
271  // Use this method to create a route for a private connectivity configuration
272  // in a project and location.
273  rpc CreateRoute(CreateRouteRequest) returns (google.longrunning.Operation) {
274    option (google.api.http) = {
275      post: "/v1/{parent=projects/*/locations/*/privateConnections/*}/routes"
276      body: "route"
277    };
278    option (google.api.method_signature) = "parent,route,route_id";
279    option (google.longrunning.operation_info) = {
280      response_type: "Route"
281      metadata_type: "OperationMetadata"
282    };
283  }
284
285  // Use this method to get details about a route.
286  rpc GetRoute(GetRouteRequest) returns (Route) {
287    option (google.api.http) = {
288      get: "/v1/{name=projects/*/locations/*/privateConnections/*/routes/*}"
289    };
290    option (google.api.method_signature) = "name";
291  }
292
293  // Use this method to list routes created for a private connectivity
294  // configuration in a project and location.
295  rpc ListRoutes(ListRoutesRequest) returns (ListRoutesResponse) {
296    option (google.api.http) = {
297      get: "/v1/{parent=projects/*/locations/*/privateConnections/*}/routes"
298    };
299    option (google.api.method_signature) = "parent";
300  }
301
302  // Use this method to delete a route.
303  rpc DeleteRoute(DeleteRouteRequest) returns (google.longrunning.Operation) {
304    option (google.api.http) = {
305      delete: "/v1/{name=projects/*/locations/*/privateConnections/*/routes/*}"
306    };
307    option (google.api.method_signature) = "name";
308    option (google.longrunning.operation_info) = {
309      response_type: "google.protobuf.Empty"
310      metadata_type: "OperationMetadata"
311    };
312  }
313}
314
315// Request message for 'discover' ConnectionProfile request.
316message DiscoverConnectionProfileRequest {
317  // Required. The parent resource of the connection profile type. Must be in
318  // the format `projects/*/locations/*`.
319  string parent = 1 [
320    (google.api.field_behavior) = REQUIRED,
321    (google.api.resource_reference) = {
322      child_type: "datastream.googleapis.com/ConnectionProfile"
323    }
324  ];
325
326  // The connection profile on which to run discover.
327  oneof target {
328    // An ad-hoc connection profile configuration.
329    ConnectionProfile connection_profile = 200;
330
331    // A reference to an existing connection profile.
332    string connection_profile_name = 201;
333  }
334
335  // The depth of the retrieved hierarchy of data objects.
336  oneof hierarchy {
337    // Whether to retrieve the full hierarchy of data objects (TRUE) or only the
338    // current level (FALSE).
339    bool full_hierarchy = 3;
340
341    // The number of hierarchy levels below the current level to be retrieved.
342    int32 hierarchy_depth = 4;
343  }
344
345  // The data object to populate with child data objects and metadata.
346  oneof data_object {
347    // Oracle RDBMS to enrich with child data objects and metadata.
348    OracleRdbms oracle_rdbms = 100;
349
350    // MySQL RDBMS to enrich with child data objects and metadata.
351    MysqlRdbms mysql_rdbms = 101;
352
353    // PostgreSQL RDBMS to enrich with child data objects and metadata.
354    PostgresqlRdbms postgresql_rdbms = 102;
355  }
356}
357
358// Response from a discover request.
359message DiscoverConnectionProfileResponse {
360  // The data object that has been enriched by the discover API call.
361  oneof data_object {
362    // Enriched Oracle RDBMS object.
363    OracleRdbms oracle_rdbms = 100;
364
365    // Enriched MySQL RDBMS object.
366    MysqlRdbms mysql_rdbms = 101;
367
368    // Enriched PostgreSQL RDBMS object.
369    PostgresqlRdbms postgresql_rdbms = 102;
370  }
371}
372
373// Request message for 'FetchStaticIps' request.
374message FetchStaticIpsRequest {
375  // Required. The resource name for the location for which static IPs should be
376  // returned. Must be in the format `projects/*/locations/*`.
377  string name = 1 [
378    (google.api.field_behavior) = REQUIRED,
379    (google.api.resource_reference) = {
380      type: "locations.googleapis.com/Location"
381    }
382  ];
383
384  // Maximum number of Ips to return, will likely not be specified.
385  int32 page_size = 2;
386
387  // A page token, received from a previous `ListStaticIps` call.
388  // will likely not be specified.
389  string page_token = 3;
390}
391
392// Response message for a 'FetchStaticIps' response.
393message FetchStaticIpsResponse {
394  // list of static ips by account
395  repeated string static_ips = 1;
396
397  // A token that can be sent as `page_token` to retrieve the next page.
398  // If this field is omitted, there are no subsequent pages.
399  string next_page_token = 2;
400}
401
402// Request message for listing connection profiles.
403message ListConnectionProfilesRequest {
404  // Required. The parent that owns the collection of connection profiles.
405  string parent = 1 [
406    (google.api.field_behavior) = REQUIRED,
407    (google.api.resource_reference) = {
408      child_type: "datastream.googleapis.com/ConnectionProfile"
409    }
410  ];
411
412  // Maximum number of connection profiles to return.
413  // If unspecified, at most 50 connection profiles will be returned.
414  // The maximum value is 1000; values above 1000 will be coerced to 1000.
415  int32 page_size = 2;
416
417  // Page token received from a previous `ListConnectionProfiles` call.
418  // Provide this to retrieve the subsequent page.
419  //
420  // When paginating, all other parameters provided to `ListConnectionProfiles`
421  // must match the call that provided the page token.
422  string page_token = 3;
423
424  // Filter request.
425  string filter = 4;
426
427  // Order by fields for the result.
428  string order_by = 5;
429}
430
431// Response message for listing connection profiles.
432message ListConnectionProfilesResponse {
433  // List of connection profiles.
434  repeated ConnectionProfile connection_profiles = 1;
435
436  // A token, which can be sent as `page_token` to retrieve the next page.
437  // If this field is omitted, there are no subsequent pages.
438  string next_page_token = 2;
439
440  // Locations that could not be reached.
441  repeated string unreachable = 3;
442}
443
444// Request message for getting a connection profile.
445message GetConnectionProfileRequest {
446  // Required. The name of the connection profile resource to get.
447  string name = 1 [
448    (google.api.field_behavior) = REQUIRED,
449    (google.api.resource_reference) = {
450      type: "datastream.googleapis.com/ConnectionProfile"
451    }
452  ];
453}
454
455// Request message for creating a connection profile.
456message CreateConnectionProfileRequest {
457  // Required. The parent that owns the collection of ConnectionProfiles.
458  string parent = 1 [
459    (google.api.field_behavior) = REQUIRED,
460    (google.api.resource_reference) = {
461      child_type: "datastream.googleapis.com/ConnectionProfile"
462    }
463  ];
464
465  // Required. The connection profile identifier.
466  string connection_profile_id = 2 [(google.api.field_behavior) = REQUIRED];
467
468  // Required. The connection profile resource to create.
469  ConnectionProfile connection_profile = 3
470      [(google.api.field_behavior) = REQUIRED];
471
472  // Optional. A request ID to identify requests. Specify a unique request ID
473  // so that if you must retry your request, the server will know to ignore
474  // the request if it has already been completed. The server will guarantee
475  // that for at least 60 minutes since the first request.
476  //
477  // For example, consider a situation where you make an initial request and the
478  // request times out. If you make the request again with the same request ID,
479  // the server can check if original operation with the same request ID was
480  // received, and if so, will ignore the second request. This prevents clients
481  // from accidentally creating duplicate commitments.
482  //
483  // The request ID must be a valid UUID with the exception that zero UUID is
484  // not supported (00000000-0000-0000-0000-000000000000).
485  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
486
487  // Optional. Only validate the connection profile, but don't create any
488  // resources. The default is false.
489  bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL];
490
491  // Optional. Create the connection profile without validating it.
492  bool force = 6 [(google.api.field_behavior) = OPTIONAL];
493}
494
495// Connection profile update message.
496message UpdateConnectionProfileRequest {
497  // Optional. Field mask is used to specify the fields to be overwritten in the
498  // ConnectionProfile resource by the update.
499  // The fields specified in the update_mask are relative to the resource, not
500  // the full request. A field will be overwritten if it is in the mask. If the
501  // user does not provide a mask then all fields will be overwritten.
502  google.protobuf.FieldMask update_mask = 1
503      [(google.api.field_behavior) = OPTIONAL];
504
505  // Required. The connection profile to update.
506  ConnectionProfile connection_profile = 2
507      [(google.api.field_behavior) = REQUIRED];
508
509  // Optional. A request ID to identify requests. Specify a unique request ID
510  // so that if you must retry your request, the server will know to ignore
511  // the request if it has already been completed. The server will guarantee
512  // that for at least 60 minutes since the first request.
513  //
514  // For example, consider a situation where you make an initial request and the
515  // request times out. If you make the request again with the same request ID,
516  // the server can check if original operation with the same request ID was
517  // received, and if so, will ignore the second request. This prevents clients
518  // from accidentally creating duplicate commitments.
519  //
520  // The request ID must be a valid UUID with the exception that zero UUID is
521  // not supported (00000000-0000-0000-0000-000000000000).
522  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
523
524  // Optional. Only validate the connection profile, but don't update any
525  // resources. The default is false.
526  bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL];
527
528  // Optional. Update the connection profile without validating it.
529  bool force = 5 [(google.api.field_behavior) = OPTIONAL];
530}
531
532// Request message for deleting a connection profile.
533message DeleteConnectionProfileRequest {
534  // Required. The name of the connection profile resource to delete.
535  string name = 1 [
536    (google.api.field_behavior) = REQUIRED,
537    (google.api.resource_reference) = {
538      type: "datastream.googleapis.com/ConnectionProfile"
539    }
540  ];
541
542  // Optional. A request ID to identify requests. Specify a unique request ID
543  // so that if you must retry your request, the server will know to ignore
544  // the request if it has already been completed. The server will guarantee
545  // that for at least 60 minutes after the first request.
546  //
547  // For example, consider a situation where you make an initial request and the
548  // request times out. If you make the request again with the same request ID,
549  // the server can check if original operation with the same request ID was
550  // received, and if so, will ignore the second request. This prevents clients
551  // from accidentally creating duplicate commitments.
552  //
553  // The request ID must be a valid UUID with the exception that zero UUID is
554  // not supported (00000000-0000-0000-0000-000000000000).
555  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
556}
557
558// Request message for listing streams.
559message ListStreamsRequest {
560  // Required. The parent that owns the collection of streams.
561  string parent = 1 [
562    (google.api.field_behavior) = REQUIRED,
563    (google.api.resource_reference) = {
564      child_type: "datastream.googleapis.com/Stream"
565    }
566  ];
567
568  // Maximum number of streams to return.
569  // If unspecified, at most 50 streams will  be returned. The maximum
570  // value is 1000; values above 1000 will be coerced to 1000.
571  int32 page_size = 2;
572
573  // Page token received from a previous `ListStreams` call.
574  // Provide this to retrieve the subsequent page.
575  //
576  // When paginating, all other parameters provided to `ListStreams`
577  // must match the call that provided the page token.
578  string page_token = 3;
579
580  // Filter request.
581  string filter = 4;
582
583  // Order by fields for the result.
584  string order_by = 5;
585}
586
587// Response message for listing streams.
588message ListStreamsResponse {
589  // List of streams
590  repeated Stream streams = 1;
591
592  // A token, which can be sent as `page_token` to retrieve the next page.
593  // If this field is omitted, there are no subsequent pages.
594  string next_page_token = 2;
595
596  // Locations that could not be reached.
597  repeated string unreachable = 3;
598}
599
600// Request message for getting a stream.
601message GetStreamRequest {
602  // Required. The name of the stream resource to get.
603  string name = 1 [
604    (google.api.field_behavior) = REQUIRED,
605    (google.api.resource_reference) = {
606      type: "datastream.googleapis.com/Stream"
607    }
608  ];
609}
610
611// Request message for creating a stream.
612message CreateStreamRequest {
613  // Required. The parent that owns the collection of streams.
614  string parent = 1 [
615    (google.api.field_behavior) = REQUIRED,
616    (google.api.resource_reference) = {
617      child_type: "datastream.googleapis.com/Stream"
618    }
619  ];
620
621  // Required. The stream identifier.
622  string stream_id = 2 [(google.api.field_behavior) = REQUIRED];
623
624  // Required. The stream resource to create.
625  Stream stream = 3 [(google.api.field_behavior) = REQUIRED];
626
627  // Optional. A request ID to identify requests. Specify a unique request ID
628  // so that if you must retry your request, the server will know to ignore
629  // the request if it has already been completed. The server will guarantee
630  // that for at least 60 minutes since the first request.
631  //
632  // For example, consider a situation where you make an initial request and the
633  // request times out. If you make the request again with the same request ID,
634  // the server can check if original operation with the same request ID was
635  // received, and if so, will ignore the second request. This prevents clients
636  // from accidentally creating duplicate commitments.
637  //
638  // The request ID must be a valid UUID with the exception that zero UUID is
639  // not supported (00000000-0000-0000-0000-000000000000).
640  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
641
642  // Optional. Only validate the stream, but don't create any resources.
643  // The default is false.
644  bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL];
645
646  // Optional. Create the stream without validating it.
647  bool force = 6 [(google.api.field_behavior) = OPTIONAL];
648}
649
650// Request message for updating a stream.
651message UpdateStreamRequest {
652  // Optional. Field mask is used to specify the fields to be overwritten in the
653  // stream resource by the update.
654  // The fields specified in the update_mask are relative to the resource, not
655  // the full request. A field will be overwritten if it is in the mask. If the
656  // user does not provide a mask then all fields will be overwritten.
657  google.protobuf.FieldMask update_mask = 1
658      [(google.api.field_behavior) = OPTIONAL];
659
660  // Required. The stream resource to update.
661  Stream stream = 2 [(google.api.field_behavior) = REQUIRED];
662
663  // Optional. A request ID to identify requests. Specify a unique request ID
664  // so that if you must retry your request, the server will know to ignore
665  // the request if it has already been completed. The server will guarantee
666  // that for at least 60 minutes since the first request.
667  //
668  // For example, consider a situation where you make an initial request and the
669  // request times out. If you make the request again with the same request ID,
670  // the server can check if original operation with the same request ID was
671  // received, and if so, will ignore the second request. This prevents clients
672  // from accidentally creating duplicate commitments.
673  //
674  // The request ID must be a valid UUID with the exception that zero UUID is
675  // not supported (00000000-0000-0000-0000-000000000000).
676  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
677
678  // Optional. Only validate the stream with the changes, without actually
679  // updating it. The default is false.
680  bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL];
681
682  // Optional. Update the stream without validating it.
683  bool force = 5 [(google.api.field_behavior) = OPTIONAL];
684}
685
686// Request message for deleting a stream.
687message DeleteStreamRequest {
688  // Required. The name of the stream resource to delete.
689  string name = 1 [
690    (google.api.field_behavior) = REQUIRED,
691    (google.api.resource_reference) = {
692      type: "datastream.googleapis.com/Stream"
693    }
694  ];
695
696  // Optional. A request ID to identify requests. Specify a unique request ID
697  // so that if you must retry your request, the server will know to ignore
698  // the request if it has already been completed. The server will guarantee
699  // that for at least 60 minutes after the first request.
700  //
701  // For example, consider a situation where you make an initial request and the
702  // request times out. If you make the request again with the same request ID,
703  // the server can check if original operation with the same request ID was
704  // received, and if so, will ignore the second request. This prevents clients
705  // from accidentally creating duplicate commitments.
706  //
707  // The request ID must be a valid UUID with the exception that zero UUID is
708  // not supported (00000000-0000-0000-0000-000000000000).
709  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
710}
711
712// Request for fetching a specific stream object.
713message GetStreamObjectRequest {
714  // Required. The name of the stream object resource to get.
715  string name = 1 [
716    (google.api.field_behavior) = REQUIRED,
717    (google.api.resource_reference) = {
718      type: "datastream.googleapis.com/StreamObject"
719    }
720  ];
721}
722
723// Request for looking up a specific stream object by its source object
724// identifier.
725message LookupStreamObjectRequest {
726  // Required. The parent stream that owns the collection of objects.
727  string parent = 1 [
728    (google.api.field_behavior) = REQUIRED,
729    (google.api.resource_reference) = {
730      type: "datastream.googleapis.com/Stream"
731    }
732  ];
733
734  // Required. The source object identifier which maps to the stream object.
735  SourceObjectIdentifier source_object_identifier = 2
736      [(google.api.field_behavior) = REQUIRED];
737}
738
739// Request for manually initiating a backfill job for a specific stream object.
740message StartBackfillJobRequest {
741  // Required. The name of the stream object resource to start a backfill job
742  // for.
743  string object = 1 [
744    (google.api.field_behavior) = REQUIRED,
745    (google.api.resource_reference) = {
746      type: "datastream.googleapis.com/StreamObject"
747    }
748  ];
749}
750
751// Response for manually initiating a backfill job for a specific stream object.
752message StartBackfillJobResponse {
753  // The stream object resource a backfill job was started for.
754  StreamObject object = 1;
755}
756
757// Request for manually stopping a running backfill job for a specific stream
758// object.
759message StopBackfillJobRequest {
760  // Required. The name of the stream object resource to stop the backfill job
761  // for.
762  string object = 1 [
763    (google.api.field_behavior) = REQUIRED,
764    (google.api.resource_reference) = {
765      type: "datastream.googleapis.com/StreamObject"
766    }
767  ];
768}
769
770// Response for manually stop a backfill job for a specific stream object.
771message StopBackfillJobResponse {
772  // The stream object resource the backfill job was stopped for.
773  StreamObject object = 1;
774}
775
776// Request for listing all objects for a specific stream.
777message ListStreamObjectsRequest {
778  // Required. The parent stream that owns the collection of objects.
779  string parent = 1 [
780    (google.api.field_behavior) = REQUIRED,
781    (google.api.resource_reference) = {
782      child_type: "datastream.googleapis.com/StreamObject"
783    }
784  ];
785
786  // Maximum number of objects to return. Default is 50.
787  // The maximum value is 1000; values above 1000 will be coerced to 1000.
788  int32 page_size = 2;
789
790  // Page token received from a previous `ListStreamObjectsRequest` call.
791  // Provide this to retrieve the subsequent page.
792  //
793  // When paginating, all other parameters provided to
794  // `ListStreamObjectsRequest` must match the call that provided the page
795  // token.
796  string page_token = 3;
797}
798
799// Response containing the objects for a stream.
800message ListStreamObjectsResponse {
801  // List of stream objects.
802  repeated StreamObject stream_objects = 1;
803
804  // A token, which can be sent as `page_token` to retrieve the next page.
805  string next_page_token = 2;
806}
807
808// Represents the metadata of the long-running operation.
809message OperationMetadata {
810  // Output only. The time the operation was created.
811  google.protobuf.Timestamp create_time = 1
812      [(google.api.field_behavior) = OUTPUT_ONLY];
813
814  // Output only. The time the operation finished running.
815  google.protobuf.Timestamp end_time = 2
816      [(google.api.field_behavior) = OUTPUT_ONLY];
817
818  // Output only. Server-defined resource path for the target of the operation.
819  string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
820
821  // Output only. Name of the verb executed by the operation.
822  string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
823
824  // Output only. Human-readable status of the operation, if any.
825  string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
826
827  // Output only. Identifies whether the user has requested cancellation
828  // of the operation. Operations that have successfully been cancelled
829  // have [Operation.error][] value with a
830  // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to
831  // `Code.CANCELLED`.
832  bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
833
834  // Output only. API version used to start the operation.
835  string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
836
837  // Output only. Results of executed validations if there are any.
838  ValidationResult validation_result = 8
839      [(google.api.field_behavior) = OUTPUT_ONLY];
840}
841
842// Request for creating a private connection.
843message CreatePrivateConnectionRequest {
844  // Required. The parent that owns the collection of PrivateConnections.
845  string parent = 1 [
846    (google.api.field_behavior) = REQUIRED,
847    (google.api.resource_reference) = {
848      child_type: "datastream.googleapis.com/PrivateConnection"
849    }
850  ];
851
852  // Required. The private connectivity identifier.
853  string private_connection_id = 2 [(google.api.field_behavior) = REQUIRED];
854
855  // Required. The Private Connectivity resource to create.
856  PrivateConnection private_connection = 3
857      [(google.api.field_behavior) = REQUIRED];
858
859  // Optional. A request ID to identify requests. Specify a unique request ID
860  // so that if you must retry your request, the server will know to ignore
861  // the request if it has already been completed. The server will guarantee
862  // that for at least 60 minutes since the first request.
863  //
864  // For example, consider a situation where you make an initial request and the
865  // request times out. If you make the request again with the same request ID,
866  // the server can check if original operation with the same request ID was
867  // received, and if so, will ignore the second request. This prevents clients
868  // from accidentally creating duplicate commitments.
869  //
870  // The request ID must be a valid UUID with the exception that zero UUID is
871  // not supported (00000000-0000-0000-0000-000000000000).
872  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
873
874  // Optional. If set to true, will skip validations.
875  bool force = 6 [(google.api.field_behavior) = OPTIONAL];
876}
877
878// Request for listing private connections.
879message ListPrivateConnectionsRequest {
880  // Required. The parent that owns the collection of private connectivity
881  // configurations.
882  string parent = 1 [
883    (google.api.field_behavior) = REQUIRED,
884    (google.api.resource_reference) = {
885      child_type: "datastream.googleapis.com/PrivateConnection"
886    }
887  ];
888
889  // Maximum number of private connectivity configurations to return.
890  // If unspecified, at most 50 private connectivity configurations that will be
891  // returned. The maximum value is 1000; values above 1000 will be coerced to
892  // 1000.
893  int32 page_size = 2;
894
895  // Page token received from a previous `ListPrivateConnections` call.
896  // Provide this to retrieve the subsequent page.
897  //
898  // When paginating, all other parameters provided to
899  // `ListPrivateConnections` must match the call that provided the page
900  // token.
901  string page_token = 3;
902
903  // Filter request.
904  string filter = 4;
905
906  // Order by fields for the result.
907  string order_by = 5;
908}
909
910// Response containing a list of private connection configurations.
911message ListPrivateConnectionsResponse {
912  // List of private connectivity configurations.
913  repeated PrivateConnection private_connections = 1;
914
915  // A token, which can be sent as `page_token` to retrieve the next page.
916  // If this field is omitted, there are no subsequent pages.
917  string next_page_token = 2;
918
919  // Locations that could not be reached.
920  repeated string unreachable = 3;
921}
922
923// Request to delete a private connection.
924message DeletePrivateConnectionRequest {
925  // Required. The name of the private connectivity configuration to delete.
926  string name = 1 [
927    (google.api.field_behavior) = REQUIRED,
928    (google.api.resource_reference) = {
929      type: "datastream.googleapis.com/PrivateConnection"
930    }
931  ];
932
933  // Optional. A request ID to identify requests. Specify a unique request ID
934  // so that if you must retry your request, the server will know to ignore
935  // the request if it has already been completed. The server will guarantee
936  // that for at least 60 minutes after the first request.
937  //
938  // For example, consider a situation where you make an initial request and the
939  // request times out. If you make the request again with the same request ID,
940  // the server can check if original operation with the same request ID was
941  // received, and if so, will ignore the second request. This prevents clients
942  // from accidentally creating duplicate commitments.
943  //
944  // The request ID must be a valid UUID with the exception that zero UUID is
945  // not supported (00000000-0000-0000-0000-000000000000).
946  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
947
948  // Optional. If set to true, any child routes that belong to this
949  // PrivateConnection will also be deleted.
950  bool force = 3 [(google.api.field_behavior) = OPTIONAL];
951}
952
953// Request to get a private connection configuration.
954message GetPrivateConnectionRequest {
955  // Required. The name of the  private connectivity configuration to get.
956  string name = 1 [
957    (google.api.field_behavior) = REQUIRED,
958    (google.api.resource_reference) = {
959      type: "datastream.googleapis.com/PrivateConnection"
960    }
961  ];
962}
963
964// Route creation request.
965message CreateRouteRequest {
966  // Required. The parent that owns the collection of Routes.
967  string parent = 1 [
968    (google.api.field_behavior) = REQUIRED,
969    (google.api.resource_reference) = {
970      child_type: "datastream.googleapis.com/Route"
971    }
972  ];
973
974  // Required. The Route identifier.
975  string route_id = 2 [(google.api.field_behavior) = REQUIRED];
976
977  // Required. The Route resource to create.
978  Route route = 3 [(google.api.field_behavior) = REQUIRED];
979
980  // Optional. A request ID to identify requests. Specify a unique request ID
981  // so that if you must retry your request, the server will know to ignore
982  // the request if it has already been completed. The server will guarantee
983  // that for at least 60 minutes since the first request.
984  //
985  // For example, consider a situation where you make an initial request and the
986  // request times out. If you make the request again with the same request ID,
987  // the server can check if original operation with the same request ID was
988  // received, and if so, will ignore the second request. This prevents clients
989  // from accidentally creating duplicate commitments.
990  //
991  // The request ID must be a valid UUID with the exception that zero UUID is
992  // not supported (00000000-0000-0000-0000-000000000000).
993  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
994}
995
996// Route list request.
997message ListRoutesRequest {
998  // Required. The parent that owns the collection of Routess.
999  string parent = 1 [
1000    (google.api.field_behavior) = REQUIRED,
1001    (google.api.resource_reference) = {
1002      child_type: "datastream.googleapis.com/Route"
1003    }
1004  ];
1005
1006  // Maximum number of Routes to return. The service may return
1007  // fewer than this value. If unspecified, at most 50 Routes
1008  // will be returned. The maximum value is 1000; values above 1000 will be
1009  // coerced to 1000.
1010  int32 page_size = 2;
1011
1012  // Page token received from a previous `ListRoutes` call.
1013  // Provide this to retrieve the subsequent page.
1014  //
1015  // When paginating, all other parameters provided to
1016  // `ListRoutes` must match the call that provided the page
1017  // token.
1018  string page_token = 3;
1019
1020  // Filter request.
1021  string filter = 4;
1022
1023  // Order by fields for the result.
1024  string order_by = 5;
1025}
1026
1027// Route list response.
1028message ListRoutesResponse {
1029  // List of Routes.
1030  repeated Route routes = 1;
1031
1032  // A token, which can be sent as `page_token` to retrieve the next page.
1033  // If this field is omitted, there are no subsequent pages.
1034  string next_page_token = 2;
1035
1036  // Locations that could not be reached.
1037  repeated string unreachable = 3;
1038}
1039
1040// Route deletion request.
1041message DeleteRouteRequest {
1042  // Required. The name of the Route resource to delete.
1043  string name = 1 [
1044    (google.api.field_behavior) = REQUIRED,
1045    (google.api.resource_reference) = {
1046      type: "datastream.googleapis.com/Route"
1047    }
1048  ];
1049
1050  // Optional. A request ID to identify requests. Specify a unique request ID
1051  // so that if you must retry your request, the server will know to ignore
1052  // the request if it has already been completed. The server will guarantee
1053  // that for at least 60 minutes after the first request.
1054  //
1055  // For example, consider a situation where you make an initial request and the
1056  // request times out. If you make the request again with the same request ID,
1057  // the server can check if original operation with the same request ID was
1058  // received, and if so, will ignore the second request. This prevents clients
1059  // from accidentally creating duplicate commitments.
1060  //
1061  // The request ID must be a valid UUID with the exception that zero UUID is
1062  // not supported (00000000-0000-0000-0000-000000000000).
1063  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1064}
1065
1066// Route get request.
1067message GetRouteRequest {
1068  // Required. The name of the Route resource to get.
1069  string name = 1 [
1070    (google.api.field_behavior) = REQUIRED,
1071    (google.api.resource_reference) = {
1072      type: "datastream.googleapis.com/Route"
1073    }
1074  ];
1075}
1076