• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.video.stitcher.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/video/stitcher/v1/ad_tag_details.proto";
24import "google/cloud/video/stitcher/v1/cdn_keys.proto";
25import "google/cloud/video/stitcher/v1/live_configs.proto";
26import "google/cloud/video/stitcher/v1/sessions.proto";
27import "google/cloud/video/stitcher/v1/slates.proto";
28import "google/cloud/video/stitcher/v1/stitch_details.proto";
29import "google/longrunning/operations.proto";
30import "google/protobuf/empty.proto";
31import "google/protobuf/field_mask.proto";
32import "google/protobuf/timestamp.proto";
33
34option go_package = "cloud.google.com/go/video/stitcher/apiv1/stitcherpb;stitcherpb";
35option java_multiple_files = true;
36option java_outer_classname = "VideoStitcherServiceProto";
37option java_package = "com.google.cloud.video.stitcher.v1";
38
39// Video-On-Demand content stitching API allows you to insert ads
40// into (VoD) video on demand files. You will be able to render custom
41// scrubber bars with highlighted ads, enforce ad policies, allow
42// seamless playback and tracking on native players and monetize
43// content with any standard VMAP compliant ad server.
44service VideoStitcherService {
45  option (google.api.default_host) = "videostitcher.googleapis.com";
46  option (google.api.oauth_scopes) =
47      "https://www.googleapis.com/auth/cloud-platform";
48
49  // Creates a new CDN key.
50  rpc CreateCdnKey(CreateCdnKeyRequest) returns (google.longrunning.Operation) {
51    option (google.api.http) = {
52      post: "/v1/{parent=projects/*/locations/*}/cdnKeys"
53      body: "cdn_key"
54    };
55    option (google.api.method_signature) = "parent,cdn_key,cdn_key_id";
56    option (google.longrunning.operation_info) = {
57      response_type: "google.cloud.video.stitcher.v1.CdnKey"
58      metadata_type: "google.cloud.video.stitcher.v1.OperationMetadata"
59    };
60  }
61
62  // Lists all CDN keys in the specified project and location.
63  rpc ListCdnKeys(ListCdnKeysRequest) returns (ListCdnKeysResponse) {
64    option (google.api.http) = {
65      get: "/v1/{parent=projects/*/locations/*}/cdnKeys"
66    };
67    option (google.api.method_signature) = "parent";
68  }
69
70  // Returns the specified CDN key.
71  rpc GetCdnKey(GetCdnKeyRequest) returns (CdnKey) {
72    option (google.api.http) = {
73      get: "/v1/{name=projects/*/locations/*/cdnKeys/*}"
74    };
75    option (google.api.method_signature) = "name";
76  }
77
78  // Deletes the specified CDN key.
79  rpc DeleteCdnKey(DeleteCdnKeyRequest) returns (google.longrunning.Operation) {
80    option (google.api.http) = {
81      delete: "/v1/{name=projects/*/locations/*/cdnKeys/*}"
82    };
83    option (google.api.method_signature) = "name";
84    option (google.longrunning.operation_info) = {
85      response_type: "google.protobuf.Empty"
86      metadata_type: "google.cloud.video.stitcher.v1.OperationMetadata"
87    };
88  }
89
90  // Updates the specified CDN key. Only update fields specified
91  // in the call method body.
92  rpc UpdateCdnKey(UpdateCdnKeyRequest) returns (google.longrunning.Operation) {
93    option (google.api.http) = {
94      patch: "/v1/{cdn_key.name=projects/*/locations/*/cdnKeys/*}"
95      body: "cdn_key"
96    };
97    option (google.api.method_signature) = "cdn_key,update_mask";
98    option (google.longrunning.operation_info) = {
99      response_type: "google.cloud.video.stitcher.v1.CdnKey"
100      metadata_type: "google.cloud.video.stitcher.v1.OperationMetadata"
101    };
102  }
103
104  // Creates a client side playback VOD session and returns the full
105  // tracking and playback metadata of the session.
106  rpc CreateVodSession(CreateVodSessionRequest) returns (VodSession) {
107    option (google.api.http) = {
108      post: "/v1/{parent=projects/*/locations/*}/vodSessions"
109      body: "vod_session"
110    };
111    option (google.api.method_signature) = "parent,vod_session";
112  }
113
114  // Returns the full tracking, playback metadata, and relevant ad-ops
115  // logs for the specified VOD session.
116  rpc GetVodSession(GetVodSessionRequest) returns (VodSession) {
117    option (google.api.http) = {
118      get: "/v1/{name=projects/*/locations/*/vodSessions/*}"
119    };
120    option (google.api.method_signature) = "name";
121  }
122
123  // Returns a list of detailed stitching information of the specified VOD
124  // session.
125  rpc ListVodStitchDetails(ListVodStitchDetailsRequest)
126      returns (ListVodStitchDetailsResponse) {
127    option (google.api.http) = {
128      get: "/v1/{parent=projects/*/locations/*/vodSessions/*}/vodStitchDetails"
129    };
130    option (google.api.method_signature) = "parent";
131  }
132
133  // Returns the specified stitching information for the specified VOD session.
134  rpc GetVodStitchDetail(GetVodStitchDetailRequest) returns (VodStitchDetail) {
135    option (google.api.http) = {
136      get: "/v1/{name=projects/*/locations/*/vodSessions/*/vodStitchDetails/*}"
137    };
138    option (google.api.method_signature) = "name";
139  }
140
141  // Return the list of ad tag details for the specified VOD session.
142  rpc ListVodAdTagDetails(ListVodAdTagDetailsRequest)
143      returns (ListVodAdTagDetailsResponse) {
144    option (google.api.http) = {
145      get: "/v1/{parent=projects/*/locations/*/vodSessions/*}/vodAdTagDetails"
146    };
147    option (google.api.method_signature) = "parent";
148  }
149
150  // Returns the specified ad tag detail for the specified VOD session.
151  rpc GetVodAdTagDetail(GetVodAdTagDetailRequest) returns (VodAdTagDetail) {
152    option (google.api.http) = {
153      get: "/v1/{name=projects/*/locations/*/vodSessions/*/vodAdTagDetails/*}"
154    };
155    option (google.api.method_signature) = "name";
156  }
157
158  // Return the list of ad tag details for the specified live session.
159  rpc ListLiveAdTagDetails(ListLiveAdTagDetailsRequest)
160      returns (ListLiveAdTagDetailsResponse) {
161    option (google.api.http) = {
162      get: "/v1/{parent=projects/*/locations/*/liveSessions/*}/liveAdTagDetails"
163    };
164    option (google.api.method_signature) = "parent";
165  }
166
167  // Returns the specified ad tag detail for the specified live session.
168  rpc GetLiveAdTagDetail(GetLiveAdTagDetailRequest) returns (LiveAdTagDetail) {
169    option (google.api.http) = {
170      get: "/v1/{name=projects/*/locations/*/liveSessions/*/liveAdTagDetails/*}"
171    };
172    option (google.api.method_signature) = "name";
173  }
174
175  // Creates a slate.
176  rpc CreateSlate(CreateSlateRequest) returns (google.longrunning.Operation) {
177    option (google.api.http) = {
178      post: "/v1/{parent=projects/*/locations/*}/slates"
179      body: "slate"
180    };
181    option (google.api.method_signature) = "parent,slate,slate_id";
182    option (google.longrunning.operation_info) = {
183      response_type: "google.cloud.video.stitcher.v1.Slate"
184      metadata_type: "google.cloud.video.stitcher.v1.OperationMetadata"
185    };
186  }
187
188  // Lists all slates in the specified project and location.
189  rpc ListSlates(ListSlatesRequest) returns (ListSlatesResponse) {
190    option (google.api.http) = {
191      get: "/v1/{parent=projects/*/locations/*}/slates"
192    };
193    option (google.api.method_signature) = "parent";
194  }
195
196  // Returns the specified slate.
197  rpc GetSlate(GetSlateRequest) returns (Slate) {
198    option (google.api.http) = {
199      get: "/v1/{name=projects/*/locations/*/slates/*}"
200    };
201    option (google.api.method_signature) = "name";
202  }
203
204  // Updates the specified slate.
205  rpc UpdateSlate(UpdateSlateRequest) returns (google.longrunning.Operation) {
206    option (google.api.http) = {
207      patch: "/v1/{slate.name=projects/*/locations/*/slates/*}"
208      body: "slate"
209    };
210    option (google.api.method_signature) = "slate,update_mask";
211    option (google.longrunning.operation_info) = {
212      response_type: "google.cloud.video.stitcher.v1.Slate"
213      metadata_type: "google.cloud.video.stitcher.v1.OperationMetadata"
214    };
215  }
216
217  // Deletes the specified slate.
218  rpc DeleteSlate(DeleteSlateRequest) returns (google.longrunning.Operation) {
219    option (google.api.http) = {
220      delete: "/v1/{name=projects/*/locations/*/slates/*}"
221    };
222    option (google.api.method_signature) = "name";
223    option (google.longrunning.operation_info) = {
224      response_type: "google.protobuf.Empty"
225      metadata_type: "google.cloud.video.stitcher.v1.OperationMetadata"
226    };
227  }
228
229  // Creates a new live session.
230  rpc CreateLiveSession(CreateLiveSessionRequest) returns (LiveSession) {
231    option (google.api.http) = {
232      post: "/v1/{parent=projects/*/locations/*}/liveSessions"
233      body: "live_session"
234    };
235    option (google.api.method_signature) = "parent,live_session";
236  }
237
238  // Returns the details for the specified live session.
239  rpc GetLiveSession(GetLiveSessionRequest) returns (LiveSession) {
240    option (google.api.http) = {
241      get: "/v1/{name=projects/*/locations/*/liveSessions/*}"
242    };
243    option (google.api.method_signature) = "name";
244  }
245
246  // Registers the live config with the provided unique ID in
247  // the specified region.
248  rpc CreateLiveConfig(CreateLiveConfigRequest)
249      returns (google.longrunning.Operation) {
250    option (google.api.http) = {
251      post: "/v1/{parent=projects/*/locations/*}/liveConfigs"
252      body: "live_config"
253    };
254    option (google.api.method_signature) = "parent,live_config,live_config_id";
255    option (google.longrunning.operation_info) = {
256      response_type: "google.cloud.video.stitcher.v1.LiveConfig"
257      metadata_type: "google.cloud.video.stitcher.v1.OperationMetadata"
258    };
259  }
260
261  // Lists all live configs managed by the Video Stitcher that
262  // belong to the specified project and region.
263  rpc ListLiveConfigs(ListLiveConfigsRequest)
264      returns (ListLiveConfigsResponse) {
265    option (google.api.http) = {
266      get: "/v1/{parent=projects/*/locations/*}/liveConfigs"
267    };
268    option (google.api.method_signature) = "parent";
269  }
270
271  // Returns the specified live config managed by the Video
272  // Stitcher service.
273  rpc GetLiveConfig(GetLiveConfigRequest) returns (LiveConfig) {
274    option (google.api.http) = {
275      get: "/v1/{name=projects/*/locations/*/liveConfigs/*}"
276    };
277    option (google.api.method_signature) = "name";
278  }
279
280  // Deletes the specified live config.
281  rpc DeleteLiveConfig(DeleteLiveConfigRequest)
282      returns (google.longrunning.Operation) {
283    option (google.api.http) = {
284      delete: "/v1/{name=projects/*/locations/*/liveConfigs/*}"
285    };
286    option (google.api.method_signature) = "name";
287    option (google.longrunning.operation_info) = {
288      response_type: "google.protobuf.Empty"
289      metadata_type: "google.cloud.video.stitcher.v1.OperationMetadata"
290    };
291  }
292}
293
294// Request message for VideoStitcherService.createCdnKey.
295message CreateCdnKeyRequest {
296  // Required. The project in which the CDN key should be created, in the form
297  // of `projects/{project_number}/locations/{location}`.
298  string parent = 1 [
299    (google.api.field_behavior) = REQUIRED,
300    (google.api.resource_reference) = {
301      child_type: "videostitcher.googleapis.com/CdnKey"
302    }
303  ];
304
305  // Required. The CDN key resource to create.
306  CdnKey cdn_key = 2 [(google.api.field_behavior) = REQUIRED];
307
308  // Required. The ID to use for the CDN key, which will become the final
309  // component of the CDN key's resource name.
310  //
311  // This value should conform to RFC-1034, which restricts to
312  // lower-case letters, numbers, and hyphen, with the first character a
313  // letter, the last a letter or a number, and a 63 character maximum.
314  string cdn_key_id = 3 [(google.api.field_behavior) = REQUIRED];
315}
316
317// Request message for VideoStitcherService.listCdnKeys.
318message ListCdnKeysRequest {
319  // Required. The project that contains the list of CDN keys, in the form of
320  // `projects/{project_number}/locations/{location}`.
321  string parent = 1 [
322    (google.api.field_behavior) = REQUIRED,
323    (google.api.resource_reference) = {
324      child_type: "videostitcher.googleapis.com/CdnKey"
325    }
326  ];
327
328  // Requested page size. Server may return fewer items than requested.
329  // If unspecified, server will pick an appropriate default.
330  int32 page_size = 2;
331
332  // A token identifying a page of results the server should return.
333  string page_token = 3;
334
335  // Filtering results
336  string filter = 4;
337
338  // Hint for how to order the results
339  string order_by = 5;
340}
341
342// Response message for VideoStitcher.ListCdnKeys.
343message ListCdnKeysResponse {
344  // List of CDN keys.
345  repeated CdnKey cdn_keys = 1;
346
347  // A token identifying a page of results the server should return.
348  string next_page_token = 2;
349
350  // Locations that could not be reached.
351  repeated string unreachable = 3;
352}
353
354// Request message for VideoStitcherService.getCdnKey.
355message GetCdnKeyRequest {
356  // Required. The name of the CDN key to be retrieved, in the form of
357  // `projects/{project}/locations/{location}/cdnKeys/{id}`.
358  string name = 1 [
359    (google.api.field_behavior) = REQUIRED,
360    (google.api.resource_reference) = {
361      type: "videostitcher.googleapis.com/CdnKey"
362    }
363  ];
364}
365
366// Request message for VideoStitcherService.deleteCdnKey.
367message DeleteCdnKeyRequest {
368  // Required. The name of the CDN key to be deleted, in the form of
369  // `projects/{project_number}/locations/{location}/cdnKeys/{id}`.
370  string name = 1 [
371    (google.api.field_behavior) = REQUIRED,
372    (google.api.resource_reference) = {
373      type: "videostitcher.googleapis.com/CdnKey"
374    }
375  ];
376}
377
378// Request message for VideoStitcherService.updateCdnKey.
379message UpdateCdnKeyRequest {
380  // Required. The CDN key resource which replaces the resource on the server.
381  CdnKey cdn_key = 1 [(google.api.field_behavior) = REQUIRED];
382
383  // Required. The update mask applies to the resource.
384  // For the `FieldMask` definition, see
385  // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
386  google.protobuf.FieldMask update_mask = 2
387      [(google.api.field_behavior) = REQUIRED];
388}
389
390// Request message for VideoStitcherService.createVodSession
391message CreateVodSessionRequest {
392  // Required. The project and location in which the VOD session should be
393  // created, in the form of `projects/{project_number}/locations/{location}`.
394  string parent = 1 [
395    (google.api.field_behavior) = REQUIRED,
396    (google.api.resource_reference) = {
397      child_type: "videostitcher.googleapis.com/VodSession"
398    }
399  ];
400
401  // Required. Parameters for creating a session.
402  VodSession vod_session = 2 [(google.api.field_behavior) = REQUIRED];
403}
404
405// Request message for VideoStitcherService.getVodSession
406message GetVodSessionRequest {
407  // Required. The name of the VOD session to be retrieved, in the form of
408  // `projects/{project_number}/locations/{location}/vodSessions/{id}`.
409  string name = 1 [
410    (google.api.field_behavior) = REQUIRED,
411    (google.api.resource_reference) = {
412      type: "videostitcher.googleapis.com/VodSession"
413    }
414  ];
415}
416
417// Request message for VideoStitcherService.listVodStitchDetails.
418message ListVodStitchDetailsRequest {
419  // Required. The VOD session where the stitch details belong to, in the form
420  // of `projects/{project}/locations/{location}/vodSessions/{id}`.
421  string parent = 1 [
422    (google.api.field_behavior) = REQUIRED,
423    (google.api.resource_reference) = {
424      child_type: "videostitcher.googleapis.com/VodStitchDetail"
425    }
426  ];
427
428  // The maximum number of items to return.
429  int32 page_size = 2;
430
431  // The next_page_token value returned from a previous List request, if any.
432  string page_token = 3;
433}
434
435// Response message for VideoStitcherService.listVodStitchDetails.
436message ListVodStitchDetailsResponse {
437  // A List of stitch Details.
438  repeated VodStitchDetail vod_stitch_details = 1;
439
440  // The pagination token.
441  string next_page_token = 2;
442}
443
444// Request message for VideoStitcherService.getVodStitchDetail.
445message GetVodStitchDetailRequest {
446  // Required. The name of the stitch detail in the specified VOD session, in
447  // the form of
448  // `projects/{project}/locations/{location}/vodSessions/{vod_session_id}/vodStitchDetails/{id}`.
449  string name = 1 [
450    (google.api.field_behavior) = REQUIRED,
451    (google.api.resource_reference) = {
452      type: "videostitcher.googleapis.com/VodStitchDetail"
453    }
454  ];
455}
456
457// Request message for VideoStitcherService.listVodAdTagDetails.
458message ListVodAdTagDetailsRequest {
459  // Required. The VOD session which the ad tag details belong to, in the form
460  // of `projects/{project}/locations/{location}/vodSessions/{vod_session_id}`.
461  string parent = 1 [
462    (google.api.field_behavior) = REQUIRED,
463    (google.api.resource_reference) = {
464      child_type: "videostitcher.googleapis.com/VodAdTagDetail"
465    }
466  ];
467
468  // The maximum number of items to return.
469  int32 page_size = 2;
470
471  // The next_page_token value returned from a previous List request, if any.
472  string page_token = 3;
473}
474
475// Response message for VideoStitcherService.listVodAdTagDetails.
476message ListVodAdTagDetailsResponse {
477  // A List of ad tag details.
478  repeated VodAdTagDetail vod_ad_tag_details = 1;
479
480  // The pagination token.
481  string next_page_token = 2;
482}
483
484// Request message for VideoStitcherService.getVodAdTagDetail
485message GetVodAdTagDetailRequest {
486  // Required. The name of the ad tag detail for the specified VOD session, in
487  // the form of
488  // `projects/{project}/locations/{location}/vodSessions/{vod_session_id}/vodAdTagDetails/{vod_ad_tag_detail}`.
489  string name = 1 [
490    (google.api.field_behavior) = REQUIRED,
491    (google.api.resource_reference) = {
492      type: "videostitcher.googleapis.com/VodAdTagDetail"
493    }
494  ];
495}
496
497// Request message for VideoStitcherService.listLiveAdTagDetails.
498message ListLiveAdTagDetailsRequest {
499  // Required. The resource parent in the form of
500  // `projects/{project}/locations/{location}/liveSessions/{live_session}`.
501  string parent = 1 [
502    (google.api.field_behavior) = REQUIRED,
503    (google.api.resource_reference) = {
504      child_type: "videostitcher.googleapis.com/LiveAdTagDetail"
505    }
506  ];
507
508  // The maximum number of items to return.
509  int32 page_size = 2;
510
511  // The pagination token returned from a previous List request.
512  string page_token = 3;
513}
514
515// Response message for VideoStitcherService.listLiveAdTagDetails.
516message ListLiveAdTagDetailsResponse {
517  // A list of live session ad tag details.
518  repeated LiveAdTagDetail live_ad_tag_details = 1;
519
520  // The pagination token.
521  string next_page_token = 2;
522}
523
524// Request message for VideoStitcherService.getLiveAdTagDetail
525message GetLiveAdTagDetailRequest {
526  // Required. The resource name in the form of
527  // `projects/{project}/locations/{location}/liveSessions/{live_session}/liveAdTagDetails/{live_ad_tag_detail}`.
528  string name = 1 [
529    (google.api.field_behavior) = REQUIRED,
530    (google.api.resource_reference) = {
531      type: "videostitcher.googleapis.com/LiveAdTagDetail"
532    }
533  ];
534}
535
536// Request message for VideoStitcherService.createSlate.
537message CreateSlateRequest {
538  // Required. The project in which the slate should be created, in the form of
539  // `projects/{project_number}/locations/{location}`.
540  string parent = 1 [
541    (google.api.field_behavior) = REQUIRED,
542    (google.api.resource_reference) = {
543      child_type: "videostitcher.googleapis.com/Slate"
544    }
545  ];
546
547  // Required. The unique identifier for the slate.
548  // This value should conform to RFC-1034, which restricts to
549  // lower-case letters, numbers, and hyphen, with the first character a
550  // letter, the last a letter or a number, and a 63 character maximum.
551  string slate_id = 2 [(google.api.field_behavior) = REQUIRED];
552
553  // Required. The slate to create.
554  Slate slate = 3 [(google.api.field_behavior) = REQUIRED];
555
556  // A request ID to identify requests. Specify a unique request ID
557  // so that if you must retry your request, the server will know to ignore
558  // the request if it has already been completed. The server will guarantee
559  // that for at least 60 minutes since the first request.
560  //
561  // For example, consider a situation where you make an initial request and the
562  // request times out. If you make the request again with the same request ID,
563  // the server can check if original operation with the same request ID was
564  // received, and if so, will ignore the second request. This prevents clients
565  // from accidentally creating duplicate commitments.
566  //
567  // The request ID must be a valid UUID with the exception that zero UUID is
568  // not supported `(00000000-0000-0000-0000-000000000000)`.
569  string request_id = 4;
570}
571
572// Request message for VideoStitcherService.getSlate.
573message GetSlateRequest {
574  // Required. The name of the slate to be retrieved, of the slate, in the form
575  // of `projects/{project_number}/locations/{location}/slates/{id}`.
576  string name = 1 [
577    (google.api.field_behavior) = REQUIRED,
578    (google.api.resource_reference) = {
579      type: "videostitcher.googleapis.com/Slate"
580    }
581  ];
582}
583
584// Request message for VideoStitcherService.listSlates.
585message ListSlatesRequest {
586  // Required. The project to list slates, in the form of
587  // `projects/{project_number}/locations/{location}`.
588  string parent = 1 [
589    (google.api.field_behavior) = REQUIRED,
590    (google.api.resource_reference) = {
591      child_type: "videostitcher.googleapis.com/Slate"
592    }
593  ];
594
595  // Requested page size. Server may return fewer items than requested.
596  // If unspecified, server will pick an appropriate default.
597  int32 page_size = 2;
598
599  // A token identifying a page of results the server should return.
600  string page_token = 3;
601
602  // Filtering results
603  string filter = 4;
604
605  // Hint for how to order the results
606  string order_by = 5;
607}
608
609// Response message for VideoStitcherService.listSlates.
610message ListSlatesResponse {
611  // The list of slates
612  repeated Slate slates = 1;
613
614  // A token identifying a page of results the server should return.
615  string next_page_token = 2;
616
617  // Locations that could not be reached.
618  repeated string unreachable = 3;
619}
620
621// Request message for VideoStitcherService.updateSlate.
622message UpdateSlateRequest {
623  // Required. The resource with updated fields.
624  Slate slate = 1 [(google.api.field_behavior) = REQUIRED];
625
626  // Required. The update mask which specifies fields which should be updated.
627  google.protobuf.FieldMask update_mask = 2
628      [(google.api.field_behavior) = REQUIRED];
629}
630
631// Request message for VideoStitcherService.deleteSlate.
632message DeleteSlateRequest {
633  // Required. The name of the slate to be deleted, in the form of
634  // `projects/{project_number}/locations/{location}/slates/{id}`.
635  string name = 1 [
636    (google.api.field_behavior) = REQUIRED,
637    (google.api.resource_reference) = {
638      type: "videostitcher.googleapis.com/Slate"
639    }
640  ];
641}
642
643// Request message for VideoStitcherService.createLiveSession.
644message CreateLiveSessionRequest {
645  // Required. The project and location in which the live session should be
646  // created, in the form of `projects/{project_number}/locations/{location}`.
647  string parent = 1 [
648    (google.api.field_behavior) = REQUIRED,
649    (google.api.resource_reference) = {
650      child_type: "videostitcher.googleapis.com/LiveSession"
651    }
652  ];
653
654  // Required. Parameters for creating a live session.
655  LiveSession live_session = 2 [(google.api.field_behavior) = REQUIRED];
656}
657
658// Request message for VideoStitcherService.getSession.
659message GetLiveSessionRequest {
660  // Required. The name of the live session, in the form of
661  // `projects/{project_number}/locations/{location}/liveSessions/{id}`.
662  string name = 1 [
663    (google.api.field_behavior) = REQUIRED,
664    (google.api.resource_reference) = {
665      type: "videostitcher.googleapis.com/LiveSession"
666    }
667  ];
668}
669
670// Request message for VideoStitcherService.createLiveConfig
671message CreateLiveConfigRequest {
672  // Required. The project in which the live config should be created, in
673  // the form of `projects/{project_number}/locations/{location}`.
674  string parent = 1 [
675    (google.api.field_behavior) = REQUIRED,
676    (google.api.resource_reference) = {
677      child_type: "videostitcher.googleapis.com/LiveConfig"
678    }
679  ];
680
681  // Required. The unique identifier ID to use for the live config.
682  string live_config_id = 2 [(google.api.field_behavior) = REQUIRED];
683
684  // Required. The live config resource to create.
685  LiveConfig live_config = 3 [(google.api.field_behavior) = REQUIRED];
686
687  // A request ID to identify requests. Specify a unique request ID
688  // so that if you must retry your request, the server will know to ignore
689  // the request if it has already been completed. The server will guarantee
690  // that for at least 60 minutes since the first request.
691  //
692  // For example, consider a situation where you make an initial request and the
693  // request times out. If you make the request again with the same request ID,
694  // the server can check if original operation with the same request ID was
695  // received, and if so, will ignore the second request. This prevents clients
696  // from accidentally creating duplicate commitments.
697  //
698  // The request ID must be a valid UUID with the exception that zero UUID is
699  // not supported `(00000000-0000-0000-0000-000000000000)`.
700  string request_id = 4;
701}
702
703// Request message for VideoStitcherService.listLiveConfig.
704message ListLiveConfigsRequest {
705  // Required. The project that contains the list of live configs, in the
706  // form of `projects/{project_number}/locations/{location}`.
707  string parent = 1 [
708    (google.api.field_behavior) = REQUIRED,
709    (google.api.resource_reference) = {
710      child_type: "videostitcher.googleapis.com/LiveConfig"
711    }
712  ];
713
714  // The maximum number of items to return.
715  int32 page_size = 2;
716
717  // The next_page_token value returned from a previous List request, if any.
718  string page_token = 3;
719
720  // Optional. The filter to apply to list results (see
721  // [Filtering](https://google.aip.dev/160)).
722  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
723
724  // Optional. Specifies the ordering of results following
725  // [Cloud API
726  // syntax](https://cloud.google.com/apis/design/design_patterns#sorting_order).
727  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
728}
729
730// Response message for VideoStitcher.ListLiveConfig.
731message ListLiveConfigsResponse {
732  // List of live configs.
733  repeated LiveConfig live_configs = 1;
734
735  // The pagination token.
736  string next_page_token = 2;
737
738  // Locations that could not be reached.
739  repeated string unreachable = 3;
740}
741
742// Request message for VideoStitcherService.getLiveConfig.
743message GetLiveConfigRequest {
744  // Required. The name of the live config to be retrieved, in the form
745  // of
746  // `projects/{project_number}/locations/{location}/liveConfigs/{id}`.
747  string name = 1 [
748    (google.api.field_behavior) = REQUIRED,
749    (google.api.resource_reference) = {
750      type: "videostitcher.googleapis.com/LiveConfig"
751    }
752  ];
753}
754
755// Request message for VideoStitcherService.deleteLiveConfig.
756message DeleteLiveConfigRequest {
757  // Required. The name of the live config to be deleted, in the form of
758  // `projects/{project_number}/locations/{location}/liveConfigs/{id}`.
759  string name = 1 [
760    (google.api.field_behavior) = REQUIRED,
761    (google.api.resource_reference) = {
762      type: "videostitcher.googleapis.com/LiveConfig"
763    }
764  ];
765}
766
767// Represents the metadata of the long-running operation.
768message OperationMetadata {
769  // The time the operation was created.
770  google.protobuf.Timestamp create_time = 1;
771
772  // The time the operation finished running.
773  google.protobuf.Timestamp end_time = 2;
774
775  // Server-defined resource path for the target of the operation.
776  string target = 3;
777
778  // Name of the verb executed by the operation.
779  string verb = 4;
780}
781