xref: /aosp_15_r20/external/googleapis/google/cloud/visionai/v1/streams_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.visionai.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/visionai/v1/common.proto";
24import "google/cloud/visionai/v1/streams_resources.proto";
25import "google/longrunning/operations.proto";
26import "google/protobuf/empty.proto";
27import "google/protobuf/field_mask.proto";
28import "google/protobuf/timestamp.proto";
29
30option csharp_namespace = "Google.Cloud.VisionAI.V1";
31option go_package = "cloud.google.com/go/visionai/apiv1/visionaipb;visionaipb";
32option java_multiple_files = true;
33option java_outer_classname = "StreamsServiceProto";
34option java_package = "com.google.cloud.visionai.v1";
35option php_namespace = "Google\\Cloud\\VisionAI\\V1";
36option ruby_package = "Google::Cloud::VisionAI::V1";
37
38// Service describing handlers for resources.
39// Vision API and Vision AI API are two independent APIs developed by the same
40// team. Vision API is for people to annotate their image while Vision AI is an
41// e2e solution for customer to build their own computer vision application.
42service StreamsService {
43  option (google.api.default_host) = "visionai.googleapis.com";
44  option (google.api.oauth_scopes) =
45      "https://www.googleapis.com/auth/cloud-platform";
46
47  // Lists Clusters in a given project and location.
48  rpc ListClusters(ListClustersRequest) returns (ListClustersResponse) {
49    option (google.api.http) = {
50      get: "/v1/{parent=projects/*/locations/*}/clusters"
51    };
52    option (google.api.method_signature) = "parent";
53  }
54
55  // Gets details of a single Cluster.
56  rpc GetCluster(GetClusterRequest) returns (Cluster) {
57    option (google.api.http) = {
58      get: "/v1/{name=projects/*/locations/*/clusters/*}"
59    };
60    option (google.api.method_signature) = "name";
61  }
62
63  // Creates a new Cluster in a given project and location.
64  rpc CreateCluster(CreateClusterRequest)
65      returns (google.longrunning.Operation) {
66    option (google.api.http) = {
67      post: "/v1/{parent=projects/*/locations/*}/clusters"
68      body: "cluster"
69    };
70    option (google.api.method_signature) = "parent,cluster,cluster_id";
71    option (google.longrunning.operation_info) = {
72      response_type: "Cluster"
73      metadata_type: "OperationMetadata"
74    };
75  }
76
77  // Updates the parameters of a single Cluster.
78  rpc UpdateCluster(UpdateClusterRequest)
79      returns (google.longrunning.Operation) {
80    option (google.api.http) = {
81      patch: "/v1/{cluster.name=projects/*/locations/*/clusters/*}"
82      body: "cluster"
83    };
84    option (google.api.method_signature) = "cluster,update_mask";
85    option (google.longrunning.operation_info) = {
86      response_type: "Cluster"
87      metadata_type: "OperationMetadata"
88    };
89  }
90
91  // Deletes a single Cluster.
92  rpc DeleteCluster(DeleteClusterRequest)
93      returns (google.longrunning.Operation) {
94    option (google.api.http) = {
95      delete: "/v1/{name=projects/*/locations/*/clusters/*}"
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  // Lists Streams in a given project and location.
105  rpc ListStreams(ListStreamsRequest) returns (ListStreamsResponse) {
106    option (google.api.http) = {
107      get: "/v1/{parent=projects/*/locations/*/clusters/*}/streams"
108    };
109    option (google.api.method_signature) = "parent";
110  }
111
112  // Gets details of a single Stream.
113  rpc GetStream(GetStreamRequest) returns (Stream) {
114    option (google.api.http) = {
115      get: "/v1/{name=projects/*/locations/*/clusters/*/streams/*}"
116    };
117    option (google.api.method_signature) = "name";
118  }
119
120  // Creates a new Stream in a given project and location.
121  rpc CreateStream(CreateStreamRequest) returns (google.longrunning.Operation) {
122    option (google.api.http) = {
123      post: "/v1/{parent=projects/*/locations/*/clusters/*}/streams"
124      body: "stream"
125    };
126    option (google.api.method_signature) = "parent,stream,stream_id";
127    option (google.longrunning.operation_info) = {
128      response_type: "Stream"
129      metadata_type: "OperationMetadata"
130    };
131  }
132
133  // Updates the parameters of a single Stream.
134  rpc UpdateStream(UpdateStreamRequest) returns (google.longrunning.Operation) {
135    option (google.api.http) = {
136      patch: "/v1/{stream.name=projects/*/locations/*/clusters/*/streams/*}"
137      body: "stream"
138    };
139    option (google.api.method_signature) = "stream,update_mask";
140    option (google.longrunning.operation_info) = {
141      response_type: "Stream"
142      metadata_type: "OperationMetadata"
143    };
144  }
145
146  // Deletes a single Stream.
147  rpc DeleteStream(DeleteStreamRequest) returns (google.longrunning.Operation) {
148    option (google.api.http) = {
149      delete: "/v1/{name=projects/*/locations/*/clusters/*/streams/*}"
150    };
151    option (google.api.method_signature) = "name";
152    option (google.longrunning.operation_info) = {
153      response_type: "google.protobuf.Empty"
154      metadata_type: "OperationMetadata"
155    };
156  }
157
158  // Gets the thumbnail (image snapshot) of a single Stream.
159  rpc GetStreamThumbnail(GetStreamThumbnailRequest)
160      returns (google.longrunning.Operation) {
161    option (google.api.http) = {
162      post: "/v1/{stream=projects/*/locations/*/clusters/*/streams/*}:getThumbnail"
163      body: "*"
164    };
165    option (google.api.method_signature) = "stream,gcs_object_name";
166    option (google.longrunning.operation_info) = {
167      response_type: "GetStreamThumbnailResponse"
168      metadata_type: "OperationMetadata"
169    };
170  }
171
172  // Generate the JWT auth token required to get the stream HLS contents.
173  rpc GenerateStreamHlsToken(GenerateStreamHlsTokenRequest)
174      returns (GenerateStreamHlsTokenResponse) {
175    option (google.api.http) = {
176      post: "/v1/{stream=projects/*/locations/*/clusters/*/streams/*}:generateStreamHlsToken"
177      body: "*"
178    };
179    option (google.api.method_signature) = "stream";
180  }
181
182  // Lists Events in a given project and location.
183  rpc ListEvents(ListEventsRequest) returns (ListEventsResponse) {
184    option (google.api.http) = {
185      get: "/v1/{parent=projects/*/locations/*/clusters/*}/events"
186    };
187    option (google.api.method_signature) = "parent";
188  }
189
190  // Gets details of a single Event.
191  rpc GetEvent(GetEventRequest) returns (Event) {
192    option (google.api.http) = {
193      get: "/v1/{name=projects/*/locations/*/clusters/*/events/*}"
194    };
195    option (google.api.method_signature) = "name";
196  }
197
198  // Creates a new Event in a given project and location.
199  rpc CreateEvent(CreateEventRequest) returns (google.longrunning.Operation) {
200    option (google.api.http) = {
201      post: "/v1/{parent=projects/*/locations/*/clusters/*}/events"
202      body: "event"
203    };
204    option (google.api.method_signature) = "parent,event,event_id";
205    option (google.longrunning.operation_info) = {
206      response_type: "Event"
207      metadata_type: "OperationMetadata"
208    };
209  }
210
211  // Updates the parameters of a single Event.
212  rpc UpdateEvent(UpdateEventRequest) returns (google.longrunning.Operation) {
213    option (google.api.http) = {
214      patch: "/v1/{event.name=projects/*/locations/*/clusters/*/events/*}"
215      body: "event"
216    };
217    option (google.api.method_signature) = "event,update_mask";
218    option (google.longrunning.operation_info) = {
219      response_type: "Event"
220      metadata_type: "OperationMetadata"
221    };
222  }
223
224  // Deletes a single Event.
225  rpc DeleteEvent(DeleteEventRequest) returns (google.longrunning.Operation) {
226    option (google.api.http) = {
227      delete: "/v1/{name=projects/*/locations/*/clusters/*/events/*}"
228    };
229    option (google.api.method_signature) = "name";
230    option (google.longrunning.operation_info) = {
231      response_type: "google.protobuf.Empty"
232      metadata_type: "OperationMetadata"
233    };
234  }
235
236  // Lists Series in a given project and location.
237  rpc ListSeries(ListSeriesRequest) returns (ListSeriesResponse) {
238    option (google.api.http) = {
239      get: "/v1/{parent=projects/*/locations/*/clusters/*}/series"
240    };
241    option (google.api.method_signature) = "parent";
242  }
243
244  // Gets details of a single Series.
245  rpc GetSeries(GetSeriesRequest) returns (Series) {
246    option (google.api.http) = {
247      get: "/v1/{name=projects/*/locations/*/clusters/*/series/*}"
248    };
249    option (google.api.method_signature) = "name";
250  }
251
252  // Creates a new Series in a given project and location.
253  rpc CreateSeries(CreateSeriesRequest) returns (google.longrunning.Operation) {
254    option (google.api.http) = {
255      post: "/v1/{parent=projects/*/locations/*/clusters/*}/series"
256      body: "series"
257    };
258    option (google.api.method_signature) = "parent,series,series_id";
259    option (google.longrunning.operation_info) = {
260      response_type: "Series"
261      metadata_type: "OperationMetadata"
262    };
263  }
264
265  // Updates the parameters of a single Event.
266  rpc UpdateSeries(UpdateSeriesRequest) returns (google.longrunning.Operation) {
267    option (google.api.http) = {
268      patch: "/v1/{series.name=projects/*/locations/*/clusters/*/series/*}"
269      body: "series"
270    };
271    option (google.api.method_signature) = "series,update_mask";
272    option (google.longrunning.operation_info) = {
273      response_type: "Series"
274      metadata_type: "OperationMetadata"
275    };
276  }
277
278  // Deletes a single Series.
279  rpc DeleteSeries(DeleteSeriesRequest) returns (google.longrunning.Operation) {
280    option (google.api.http) = {
281      delete: "/v1/{name=projects/*/locations/*/clusters/*/series/*}"
282    };
283    option (google.api.method_signature) = "name";
284    option (google.longrunning.operation_info) = {
285      response_type: "google.protobuf.Empty"
286      metadata_type: "OperationMetadata"
287    };
288  }
289
290  // Materialize a channel.
291  rpc MaterializeChannel(MaterializeChannelRequest)
292      returns (google.longrunning.Operation) {
293    option (google.api.http) = {
294      post: "/v1/{parent=projects/*/locations/*/clusters/*}/channels"
295      body: "channel"
296    };
297    option (google.api.method_signature) = "parent,channel,channel_id";
298    option (google.longrunning.operation_info) = {
299      response_type: "Channel"
300      metadata_type: "OperationMetadata"
301    };
302  }
303}
304
305// Message for requesting list of Clusters.
306message ListClustersRequest {
307  // Required. Parent value for ListClustersRequest.
308  string parent = 1 [
309    (google.api.field_behavior) = REQUIRED,
310    (google.api.resource_reference) = {
311      type: "locations.googleapis.com/Location"
312    }
313  ];
314
315  // Requested page size. Server may return fewer items than requested.
316  // If unspecified, server will pick an appropriate default.
317  int32 page_size = 2;
318
319  // A token identifying a page of results the server should return.
320  string page_token = 3;
321
322  // Filtering results.
323  string filter = 4;
324
325  // Hint for how to order the results.
326  string order_by = 5;
327}
328
329// Message for response to listing Clusters.
330message ListClustersResponse {
331  // The list of Cluster.
332  repeated Cluster clusters = 1;
333
334  // A token identifying a page of results the server should return.
335  string next_page_token = 2;
336
337  // Locations that could not be reached.
338  repeated string unreachable = 3;
339}
340
341// Message for getting a Cluster.
342message GetClusterRequest {
343  // Required. Name of the resource.
344  string name = 1 [
345    (google.api.field_behavior) = REQUIRED,
346    (google.api.resource_reference) = {
347      type: "visionai.googleapis.com/Cluster"
348    }
349  ];
350}
351
352// Message for creating a Cluster.
353message CreateClusterRequest {
354  // Required. Value for parent.
355  string parent = 1 [
356    (google.api.field_behavior) = REQUIRED,
357    (google.api.resource_reference) = {
358      child_type: "visionai.googleapis.com/Cluster"
359    }
360  ];
361
362  // Required. Id of the requesting object.
363  string cluster_id = 2 [(google.api.field_behavior) = REQUIRED];
364
365  // Required. The resource being created.
366  Cluster cluster = 3 [(google.api.field_behavior) = REQUIRED];
367
368  // Optional. An optional request ID to identify requests. Specify a unique
369  // request ID so that if you must retry your request, the server will know to
370  // ignore the request if it has already been completed. The server will
371  // guarantee that for at least 60 minutes since the first request.
372  //
373  // For example, consider a situation where you make an initial request and the
374  // request times out. If you make the request again with the same request ID,
375  // the server can check if original operation with the same request ID was
376  // received, and if so, will ignore the second request. This prevents clients
377  // from accidentally creating duplicate commitments.
378  //
379  // The request ID must be a valid UUID with the exception that zero UUID is
380  // not supported (00000000-0000-0000-0000-000000000000).
381  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
382}
383
384// Message for updating a Cluster.
385message UpdateClusterRequest {
386  // Required. Field mask is used to specify the fields to be overwritten in the
387  // Cluster resource by the update.
388  // The fields specified in the update_mask are relative to the resource, not
389  // the full request. A field will be overwritten if it is in the mask. If the
390  // user does not provide a mask then all fields will be overwritten.
391  google.protobuf.FieldMask update_mask = 1
392      [(google.api.field_behavior) = REQUIRED];
393
394  // Required. The resource being updated
395  Cluster cluster = 2 [(google.api.field_behavior) = REQUIRED];
396
397  // Optional. An optional request ID to identify requests. Specify a unique
398  // request ID so that if you must retry your request, the server will know to
399  // ignore the request if it has already been completed. The server will
400  // guarantee that for at least 60 minutes since the first request.
401  //
402  // For example, consider a situation where you make an initial request and the
403  // request times out. If you make the request again with the same request ID,
404  // the server can check if original operation with the same request ID was
405  // received, and if so, will ignore the second request. This prevents clients
406  // from accidentally creating duplicate commitments.
407  //
408  // The request ID must be a valid UUID with the exception that zero UUID is
409  // not supported (00000000-0000-0000-0000-000000000000).
410  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
411}
412
413// Message for deleting a Cluster.
414message DeleteClusterRequest {
415  // Required. Name of the resource
416  string name = 1 [
417    (google.api.field_behavior) = REQUIRED,
418    (google.api.resource_reference) = {
419      type: "visionai.googleapis.com/Cluster"
420    }
421  ];
422
423  // Optional. An optional request ID to identify requests. Specify a unique
424  // request ID so that if you must retry your request, the server will know to
425  // ignore the request if it has already been completed. The server will
426  // guarantee that for at least 60 minutes after the first request.
427  //
428  // For example, consider a situation where you make an initial request and the
429  // request times out. If you make the request again with the same request ID,
430  // the server can check if original operation with the same request ID was
431  // received, and if so, will ignore the second request. This prevents clients
432  // from accidentally creating duplicate commitments.
433  //
434  // The request ID must be a valid UUID with the exception that zero UUID is
435  // not supported (00000000-0000-0000-0000-000000000000).
436  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
437}
438
439// Message for requesting list of Streams.
440message ListStreamsRequest {
441  // Required. Parent value for ListStreamsRequest.
442  string parent = 1 [
443    (google.api.field_behavior) = REQUIRED,
444    (google.api.resource_reference) = {
445      type: "visionai.googleapis.com/Cluster"
446    }
447  ];
448
449  // Requested page size. Server may return fewer items than requested.
450  // If unspecified, server will pick an appropriate default.
451  int32 page_size = 2;
452
453  // A token identifying a page of results the server should return.
454  string page_token = 3;
455
456  // Filtering results.
457  string filter = 4;
458
459  // Hint for how to order the results.
460  string order_by = 5;
461}
462
463// Message for response to listing Streams.
464message ListStreamsResponse {
465  // The list of Stream.
466  repeated Stream streams = 1;
467
468  // A token identifying a page of results the server should return.
469  string next_page_token = 2;
470
471  // Locations that could not be reached.
472  repeated string unreachable = 3;
473}
474
475// Message for getting a Stream.
476message GetStreamRequest {
477  // Required. Name of the resource.
478  string name = 1 [
479    (google.api.field_behavior) = REQUIRED,
480    (google.api.resource_reference) = { type: "visionai.googleapis.com/Stream" }
481  ];
482}
483
484// Message for creating a Stream.
485message CreateStreamRequest {
486  // Required. Value for parent.
487  string parent = 1 [
488    (google.api.field_behavior) = REQUIRED,
489    (google.api.resource_reference) = {
490      type: "visionai.googleapis.com/Cluster"
491    }
492  ];
493
494  // Required. Id of the requesting object.
495  string stream_id = 2 [(google.api.field_behavior) = REQUIRED];
496
497  // Required. The resource being created.
498  Stream stream = 3 [(google.api.field_behavior) = REQUIRED];
499
500  // Optional. An optional request ID to identify requests. Specify a unique
501  // request ID so that if you must retry your request, the server will know to
502  // ignore the request if it has already been completed. The server will
503  // guarantee that for at least 60 minutes since the first request.
504  //
505  // For example, consider a situation where you make an initial request and the
506  // request times out. If you make the request again with the same request ID,
507  // the server can check if original operation with the same request ID was
508  // received, and if so, will ignore the second request. This prevents clients
509  // from accidentally creating duplicate commitments.
510  //
511  // The request ID must be a valid UUID with the exception that zero UUID is
512  // not supported (00000000-0000-0000-0000-000000000000).
513  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
514}
515
516// Message for updating a Stream.
517message UpdateStreamRequest {
518  // Required. Field mask is used to specify the fields to be overwritten in the
519  // Stream resource by the update.
520  // The fields specified in the update_mask are relative to the resource, not
521  // the full request. A field will be overwritten if it is in the mask. If the
522  // user does not provide a mask then all fields will be overwritten.
523  google.protobuf.FieldMask update_mask = 1
524      [(google.api.field_behavior) = REQUIRED];
525
526  // Required. The resource being updated.
527  Stream stream = 2 [(google.api.field_behavior) = REQUIRED];
528
529  // Optional. An optional request ID to identify requests. Specify a unique
530  // request ID so that if you must retry your request, the server will know to
531  // ignore the request if it has already been completed. The server will
532  // guarantee that for at least 60 minutes since the first request.
533  //
534  // For example, consider a situation where you make an initial request and the
535  // request times out. If you make the request again with the same request ID,
536  // the server can check if original operation with the same request ID was
537  // received, and if so, will ignore the second request. This prevents clients
538  // from accidentally creating duplicate commitments.
539  //
540  // The request ID must be a valid UUID with the exception that zero UUID is
541  // not supported (00000000-0000-0000-0000-000000000000).
542  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
543}
544
545// Message for deleting a Stream.
546message DeleteStreamRequest {
547  // Required. Name of the resource.
548  string name = 1 [
549    (google.api.field_behavior) = REQUIRED,
550    (google.api.resource_reference) = { type: "visionai.googleapis.com/Stream" }
551  ];
552
553  // Optional. An optional request ID to identify requests. Specify a unique
554  // request ID so that if you must retry your request, the server will know to
555  // ignore the request if it has already been completed. The server will
556  // guarantee that for at least 60 minutes after the first request.
557  //
558  // For example, consider a situation where you make an initial request and the
559  // request times out. If you make the request again with the same request ID,
560  // the server can check if original operation with the same request ID was
561  // received, and if so, will ignore the second request. This prevents clients
562  // from accidentally creating duplicate commitments.
563  //
564  // The request ID must be a valid UUID with the exception that zero UUID is
565  // not supported (00000000-0000-0000-0000-000000000000).
566  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
567}
568
569// Message for getting the thumbnail of a Stream.
570message GetStreamThumbnailRequest {
571  // Required. The name of the stream for to get the thumbnail from.
572  string stream = 1 [(google.api.field_behavior) = REQUIRED];
573
574  // Required. The name of the GCS object to store the thumbnail image.
575  string gcs_object_name = 2 [(google.api.field_behavior) = REQUIRED];
576
577  // Optional. The name of the event. If unspecified, the thumbnail will be
578  // retrieved from the latest event.
579  string event = 3 [(google.api.field_behavior) = OPTIONAL];
580
581  // Optional. An optional request ID to identify the requests. Specify a unique
582  // request ID so that if you must retry your request, the server will know to
583  // ignore the request if it has already been completed. The server will
584  // guarantee that for at least 60 minutes since the first request.
585  //
586  // For example, consider a situation where you make an initial request and the
587  // request times out. If you make the request again with the same request ID,
588  // the server can check if original operation with the same request ID was
589  // received, and if so, will ignore the second request. This prevents clients
590  // from accidentally creating duplicate commitments.
591  //
592  // The request ID must be a valid UUID with the exception that zero UUID is
593  // not supported (00000000-0000-0000-0000-000000000000).
594  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
595}
596
597// Message for the response of GetStreamThumbnail. The empty response message
598// indicates the thumbnail image has been uploaded to GCS successfully.
599message GetStreamThumbnailResponse {}
600
601// Request message for getting the auth token to access the stream HLS contents.
602message GenerateStreamHlsTokenRequest {
603  // Required. The name of the stream.
604  string stream = 1 [(google.api.field_behavior) = REQUIRED];
605}
606
607// Response message for GenerateStreamHlsToken.
608message GenerateStreamHlsTokenResponse {
609  // The generated JWT token.
610  //
611  // The caller should insert this token to the authorization header of the HTTP
612  // requests to get the HLS playlist manifest and the video chunks.
613  // eg: curl -H "Authorization: Bearer $TOKEN"
614  //     https://domain.com/test-stream.playback/master.m3u8
615  string token = 1;
616
617  // The expiration time of the token.
618  google.protobuf.Timestamp expiration_time = 2;
619}
620
621// Message for requesting list of Events.
622message ListEventsRequest {
623  // Required. Parent value for ListEventsRequest.
624  string parent = 1 [
625    (google.api.field_behavior) = REQUIRED,
626    (google.api.resource_reference) = {
627      type: "visionai.googleapis.com/Cluster"
628    }
629  ];
630
631  // Requested page size. Server may return fewer items than requested.
632  // If unspecified, server will pick an appropriate default.
633  int32 page_size = 2;
634
635  // A token identifying a page of results the server should return.
636  string page_token = 3;
637
638  // Filtering results.
639  string filter = 4;
640
641  // Hint for how to order the results.
642  string order_by = 5;
643}
644
645// Message for response to listing Events.
646message ListEventsResponse {
647  // The list of Event.
648  repeated Event events = 1;
649
650  // A token identifying a page of results the server should return.
651  string next_page_token = 2;
652
653  // Locations that could not be reached.
654  repeated string unreachable = 3;
655}
656
657// Message for getting a Event.
658message GetEventRequest {
659  // Required. Name of the resource.
660  string name = 1 [
661    (google.api.field_behavior) = REQUIRED,
662    (google.api.resource_reference) = { type: "visionai.googleapis.com/Event" }
663  ];
664}
665
666// Message for creating a Event.
667message CreateEventRequest {
668  // Required. Value for parent.
669  string parent = 1 [
670    (google.api.field_behavior) = REQUIRED,
671    (google.api.resource_reference) = {
672      type: "visionai.googleapis.com/Cluster"
673    }
674  ];
675
676  // Required. Id of the requesting object.
677  string event_id = 2 [(google.api.field_behavior) = REQUIRED];
678
679  // Required. The resource being created.
680  Event event = 3 [(google.api.field_behavior) = REQUIRED];
681
682  // Optional. An optional request ID to identify requests. Specify a unique
683  // request ID so that if you must retry your request, the server will know to
684  // ignore the request if it has already been completed. The server will
685  // guarantee that for at least 60 minutes since the first request.
686  //
687  // For example, consider a situation where you make an initial request and the
688  // request times out. If you make the request again with the same request ID,
689  // the server can check if original operation with the same request ID was
690  // received, and if so, will ignore the second request. This prevents clients
691  // from accidentally creating duplicate commitments.
692  //
693  // The request ID must be a valid UUID with the exception that zero UUID is
694  // not supported (00000000-0000-0000-0000-000000000000).
695  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
696}
697
698// Message for updating a Event.
699message UpdateEventRequest {
700  // Required. Field mask is used to specify the fields to be overwritten in the
701  // Event resource by the update.
702  // The fields specified in the update_mask are relative to the resource, not
703  // the full request. A field will be overwritten if it is in the mask. If the
704  // user does not provide a mask then all fields will be overwritten.
705  google.protobuf.FieldMask update_mask = 1
706      [(google.api.field_behavior) = REQUIRED];
707
708  // Required. The resource being updated.
709  Event event = 2 [(google.api.field_behavior) = REQUIRED];
710
711  // Optional. An optional request ID to identify requests. Specify a unique
712  // request ID so that if you must retry your request, the server will know to
713  // ignore the request if it has already been completed. The server will
714  // guarantee that for at least 60 minutes since the first request.
715  //
716  // For example, consider a situation where you make an initial request and the
717  // request times out. If you make the request again with the same request ID,
718  // the server can check if original operation with the same request ID was
719  // received, and if so, will ignore the second request. This prevents clients
720  // from accidentally creating duplicate commitments.
721  //
722  // The request ID must be a valid UUID with the exception that zero UUID is
723  // not supported (00000000-0000-0000-0000-000000000000).
724  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
725}
726
727// Message for deleting a Event.
728message DeleteEventRequest {
729  // Required. Name of the resource.
730  string name = 1 [
731    (google.api.field_behavior) = REQUIRED,
732    (google.api.resource_reference) = { type: "visionai.googleapis.com/Event" }
733  ];
734
735  // Optional. An optional request ID to identify requests. Specify a unique
736  // request ID so that if you must retry your request, the server will know to
737  // ignore the request if it has already been completed. The server will
738  // guarantee that for at least 60 minutes after the first request.
739  //
740  // For example, consider a situation where you make an initial request and the
741  // request times out. If you make the request again with the same request ID,
742  // the server can check if original operation with the same request ID was
743  // received, and if so, will ignore the second request. This prevents clients
744  // from accidentally creating duplicate commitments.
745  //
746  // The request ID must be a valid UUID with the exception that zero UUID is
747  // not supported (00000000-0000-0000-0000-000000000000).
748  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
749}
750
751// Message for requesting list of Series.
752message ListSeriesRequest {
753  // Required. Parent value for ListSeriesRequest.
754  string parent = 1 [
755    (google.api.field_behavior) = REQUIRED,
756    (google.api.resource_reference) = {
757      type: "visionai.googleapis.com/Cluster"
758    }
759  ];
760
761  // Requested page size. Server may return fewer items than requested.
762  // If unspecified, server will pick an appropriate default.
763  int32 page_size = 2;
764
765  // A token identifying a page of results the server should return.
766  string page_token = 3;
767
768  // Filtering results.
769  string filter = 4;
770
771  // Hint for how to order the results.
772  string order_by = 5;
773}
774
775// Message for response to listing Series.
776message ListSeriesResponse {
777  // The list of Series.
778  repeated Series series = 1;
779
780  // A token identifying a page of results the server should return.
781  string next_page_token = 2;
782
783  // Locations that could not be reached.
784  repeated string unreachable = 3;
785}
786
787// Message for getting a Series.
788message GetSeriesRequest {
789  // Required. Name of the resource.
790  string name = 1 [
791    (google.api.field_behavior) = REQUIRED,
792    (google.api.resource_reference) = { type: "visionai.googleapis.com/Series" }
793  ];
794}
795
796// Message for creating a Series.
797message CreateSeriesRequest {
798  // Required. Value for parent.
799  string parent = 1 [
800    (google.api.field_behavior) = REQUIRED,
801    (google.api.resource_reference) = {
802      type: "visionai.googleapis.com/Cluster"
803    }
804  ];
805
806  // Required. Id of the requesting object.
807  string series_id = 2 [(google.api.field_behavior) = REQUIRED];
808
809  // Required. The resource being created.
810  Series series = 3 [(google.api.field_behavior) = REQUIRED];
811
812  // Optional. An optional request ID to identify requests. Specify a unique
813  // request ID so that if you must retry your request, the server will know to
814  // ignore the request if it has already been completed. The server will
815  // guarantee that for at least 60 minutes since the first request.
816  //
817  // For example, consider a situation where you make an initial request and the
818  // request times out. If you make the request again with the same request ID,
819  // the server can check if original operation with the same request ID was
820  // received, and if so, will ignore the second request. This prevents clients
821  // from accidentally creating duplicate commitments.
822  //
823  // The request ID must be a valid UUID with the exception that zero UUID is
824  // not supported (00000000-0000-0000-0000-000000000000).
825  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
826}
827
828// Message for updating a Series.
829message UpdateSeriesRequest {
830  // Required. Field mask is used to specify the fields to be overwritten in the
831  // Series resource by the update. The fields specified in the update_mask are
832  // relative to the resource, not the full request. A field will be overwritten
833  // if it is in the mask. If the user does not provide a mask then all fields
834  // will be overwritten.
835  google.protobuf.FieldMask update_mask = 1
836      [(google.api.field_behavior) = REQUIRED];
837
838  // Required. The resource being updated
839  Series series = 2 [(google.api.field_behavior) = REQUIRED];
840
841  // Optional. An optional request ID to identify requests. Specify a unique
842  // request ID so that if you must retry your request, the server will know to
843  // ignore the request if it has already been completed. The server will
844  // guarantee that for at least 60 minutes since the first request.
845  //
846  // For example, consider a situation where you make an initial request and the
847  // request times out. If you make the request again with the same request ID,
848  // the server can check if original operation with the same request ID was
849  // received, and if so, will ignore the second request. This prevents clients
850  // from accidentally creating duplicate commitments.
851  //
852  // The request ID must be a valid UUID with the exception that zero UUID is
853  // not supported (00000000-0000-0000-0000-000000000000).
854  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
855}
856
857// Message for deleting a Series.
858message DeleteSeriesRequest {
859  // Required. Name of the resource.
860  string name = 1 [
861    (google.api.field_behavior) = REQUIRED,
862    (google.api.resource_reference) = { type: "visionai.googleapis.com/Series" }
863  ];
864
865  // Optional. An optional request ID to identify requests. Specify a unique
866  // request ID so that if you must retry your request, the server will know to
867  // ignore the request if it has already been completed. The server will
868  // guarantee that for at least 60 minutes after the first request.
869  //
870  // For example, consider a situation where you make an initial request and the
871  // request times out. If you make the request again with the same request ID,
872  // the server can check if original operation with the same request ID was
873  // received, and if so, will ignore the second request. This prevents clients
874  // from accidentally creating duplicate commitments.
875  //
876  // The request ID must be a valid UUID with the exception that zero UUID is
877  // not supported (00000000-0000-0000-0000-000000000000).
878  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
879}
880
881// Message for materializing a channel.
882message MaterializeChannelRequest {
883  // Required. Value for parent.
884  string parent = 1 [
885    (google.api.field_behavior) = REQUIRED,
886    (google.api.resource_reference) = {
887      type: "visionai.googleapis.com/Cluster"
888    }
889  ];
890
891  // Required. Id of the channel.
892  string channel_id = 2 [(google.api.field_behavior) = REQUIRED];
893
894  // Required. The resource being created.
895  Channel channel = 3 [(google.api.field_behavior) = REQUIRED];
896
897  // Optional. An optional request ID to identify requests. Specify a unique
898  // request ID so that if you must retry your request, the server will know to
899  // ignore the request if it has already been completed. The server will
900  // guarantee that for at least 60 minutes since the first request.
901  //
902  // For example, consider a situation where you make an initial request and the
903  // request times out. If you make the request again with the same request ID,
904  // the server can check if original operation with the same request ID was
905  // received, and if so, will ignore the second request. This prevents clients
906  // from accidentally creating duplicate commitments.
907  //
908  // The request ID must be a valid UUID with the exception that zero UUID is
909  // not supported (00000000-0000-0000-0000-000000000000).
910  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
911}
912