// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.cloud.video.stitcher.v1; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/cloud/video/stitcher/v1/ad_tag_details.proto"; import "google/cloud/video/stitcher/v1/cdn_keys.proto"; import "google/cloud/video/stitcher/v1/sessions.proto"; import "google/cloud/video/stitcher/v1/slates.proto"; import "google/cloud/video/stitcher/v1/stitch_details.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; option go_package = "google.golang.org/genproto/googleapis/cloud/video/stitcher/v1;stitcher"; option java_multiple_files = true; option java_outer_classname = "VideoStitcherServiceProto"; option java_package = "com.google.cloud.video.stitcher.v1"; // Video-On-Demand content stitching API allows you to insert ads // into (VoD) video on demand files. You will be able to render custom // scrubber bars with highlighted ads, enforce ad policies, allow // seamless playback and tracking on native players and monetize // content with any standard VMAP compliant ad server. service VideoStitcherService { option (google.api.default_host) = "videostitcher.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; // Creates a new CDN key. rpc CreateCdnKey(CreateCdnKeyRequest) returns (CdnKey) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/cdnKeys" body: "cdn_key" }; option (google.api.method_signature) = "parent,cdn_key,cdn_key_id"; } // Lists all CDN keys in the specified project and location. rpc ListCdnKeys(ListCdnKeysRequest) returns (ListCdnKeysResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/cdnKeys" }; option (google.api.method_signature) = "parent"; } // Returns the specified CDN key. rpc GetCdnKey(GetCdnKeyRequest) returns (CdnKey) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/cdnKeys/*}" }; option (google.api.method_signature) = "name"; } // Deletes the specified CDN key. rpc DeleteCdnKey(DeleteCdnKeyRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/cdnKeys/*}" }; option (google.api.method_signature) = "name"; } // Updates the specified CDN key. Only update fields specified // in the call method body. rpc UpdateCdnKey(UpdateCdnKeyRequest) returns (CdnKey) { option (google.api.http) = { patch: "/v1/{cdn_key.name=projects/*/locations/*/cdnKeys/*}" body: "cdn_key" }; option (google.api.method_signature) = "cdn_key,update_mask"; } // Creates a client side playback VOD session and returns the full // tracking and playback metadata of the session. rpc CreateVodSession(CreateVodSessionRequest) returns (VodSession) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/vodSessions" body: "vod_session" }; option (google.api.method_signature) = "parent,vod_session"; } // Returns the full tracking, playback metadata, and relevant ad-ops // logs for the specified VOD session. rpc GetVodSession(GetVodSessionRequest) returns (VodSession) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/vodSessions/*}" }; option (google.api.method_signature) = "name"; } // Returns a list of detailed stitching information of the specified VOD // session. rpc ListVodStitchDetails(ListVodStitchDetailsRequest) returns (ListVodStitchDetailsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*/vodSessions/*}/vodStitchDetails" }; option (google.api.method_signature) = "parent"; } // Returns the specified stitching information for the specified VOD session. rpc GetVodStitchDetail(GetVodStitchDetailRequest) returns (VodStitchDetail) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/vodSessions/*/vodStitchDetails/*}" }; option (google.api.method_signature) = "name"; } // Return the list of ad tag details for the specified VOD session. rpc ListVodAdTagDetails(ListVodAdTagDetailsRequest) returns (ListVodAdTagDetailsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*/vodSessions/*}/vodAdTagDetails" }; option (google.api.method_signature) = "parent"; } // Returns the specified ad tag detail for the specified VOD session. rpc GetVodAdTagDetail(GetVodAdTagDetailRequest) returns (VodAdTagDetail) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/vodSessions/*/vodAdTagDetails/*}" }; option (google.api.method_signature) = "name"; } // Return the list of ad tag details for the specified live session. rpc ListLiveAdTagDetails(ListLiveAdTagDetailsRequest) returns (ListLiveAdTagDetailsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*/liveSessions/*}/liveAdTagDetails" }; option (google.api.method_signature) = "parent"; } // Returns the specified ad tag detail for the specified live session. rpc GetLiveAdTagDetail(GetLiveAdTagDetailRequest) returns (LiveAdTagDetail) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/liveSessions/*/liveAdTagDetails/*}" }; option (google.api.method_signature) = "name"; } // Creates a slate. rpc CreateSlate(CreateSlateRequest) returns (Slate) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/slates" body: "slate" }; option (google.api.method_signature) = "parent,slate,slate_id"; } // Lists all slates in the specified project and location. rpc ListSlates(ListSlatesRequest) returns (ListSlatesResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/slates" }; option (google.api.method_signature) = "parent"; } // Returns the specified slate. rpc GetSlate(GetSlateRequest) returns (Slate) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/slates/*}" }; option (google.api.method_signature) = "name"; } // Updates the specified slate. rpc UpdateSlate(UpdateSlateRequest) returns (Slate) { option (google.api.http) = { patch: "/v1/{slate.name=projects/*/locations/*/slates/*}" body: "slate" }; option (google.api.method_signature) = "slate,update_mask"; } // Deletes the specified slate. rpc DeleteSlate(DeleteSlateRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/slates/*}" }; option (google.api.method_signature) = "name"; } // Creates a new live session. rpc CreateLiveSession(CreateLiveSessionRequest) returns (LiveSession) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/liveSessions" body: "live_session" }; option (google.api.method_signature) = "parent,live_session"; } // Returns the details for the specified live session. rpc GetLiveSession(GetLiveSessionRequest) returns (LiveSession) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/liveSessions/*}" }; option (google.api.method_signature) = "name"; } } // Request message for VideoStitcherService.createCdnKey. message CreateCdnKeyRequest { // Required. The project in which the CDN key should be created, in the form of // `projects/{project_number}/locations/{location}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "videostitcher.googleapis.com/CdnKey" } ]; // Required. The CDN key resource to create. CdnKey cdn_key = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The ID to use for the CDN key, which will become the final component of // the CDN key's resource name. // // This value should conform to RFC-1034, which restricts to // lower-case letters, numbers, and hyphen, with the first character a // letter, the last a letter or a number, and a 63 character maximum. string cdn_key_id = 3 [(google.api.field_behavior) = REQUIRED]; } // Request message for VideoStitcherService.listCdnKeys. message ListCdnKeysRequest { // Required. The project that contains the list of CDN keys, in the form of // `projects/{project_number}/locations/{location}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "videostitcher.googleapis.com/CdnKey" } ]; // Requested page size. Server may return fewer items than requested. // If unspecified, server will pick an appropriate default. int32 page_size = 2; // A token identifying a page of results the server should return. string page_token = 3; // Filtering results string filter = 4; // Hint for how to order the results string order_by = 5; } // Response message for VideoStitcher.ListCdnKeys. message ListCdnKeysResponse { // List of CDN keys. repeated CdnKey cdn_keys = 1; // A token identifying a page of results the server should return. string next_page_token = 2; // Locations that could not be reached. repeated string unreachable = 3; } // Request message for VideoStitcherService.getCdnKey. message GetCdnKeyRequest { // Required. The name of the CDN key to be retrieved, in the form of // `projects/{project}/locations/{location}/cdnKeys/{id}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "videostitcher.googleapis.com/CdnKey" } ]; } // Request message for VideoStitcherService.deleteCdnKey. message DeleteCdnKeyRequest { // Required. The name of the CDN key to be deleted, in the form of // `projects/{project_number}/locations/{location}/cdnKeys/{id}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "videostitcher.googleapis.com/CdnKey" } ]; } // Request message for VideoStitcherService.updateCdnKey. message UpdateCdnKeyRequest { // Required. The CDN key resource which replaces the resource on the server. CdnKey cdn_key = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The update mask applies to the resource. // For the `FieldMask` definition, see // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for VideoStitcherService.createVodSession message CreateVodSessionRequest { // Required. The project and location in which the VOD session should be created, in the // form of `projects/{project_number}/locations/{location}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "videostitcher.googleapis.com/VodSession" } ]; // Required. Parameters for creating a session. VodSession vod_session = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for VideoStitcherService.getVodSession message GetVodSessionRequest { // Required. The name of the VOD session to be retrieved, in the form of // `projects/{project_number}/locations/{location}/vodSessions/{id}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "videostitcher.googleapis.com/VodSession" } ]; } // Request message for VideoStitcherService.listVodStitchDetails. message ListVodStitchDetailsRequest { // Required. The VOD session where the stitch details belong to, in the form of // `projects/{project}/locations/{location}/vodSessions/{id}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "videostitcher.googleapis.com/VodStitchDetail" } ]; // The maximum number of items to return. int32 page_size = 2; // The next_page_token value returned from a previous List request, if any. string page_token = 3; } // Response message for VideoStitcherService.listVodStitchDetails. message ListVodStitchDetailsResponse { // A List of stitch Details. repeated VodStitchDetail vod_stitch_details = 1; // The pagination token. string next_page_token = 2; } // Request message for VideoStitcherService.getVodStitchDetail. message GetVodStitchDetailRequest { // Required. The name of the stitch detail in the specified VOD session, in the form of // `projects/{project}/locations/{location}/vodSessions/{vod_session_id}/vodStitchDetails/{id}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "videostitcher.googleapis.com/VodStitchDetail" } ]; } // Request message for VideoStitcherService.listVodAdTagDetails. message ListVodAdTagDetailsRequest { // Required. The VOD session which the ad tag details belong to, in the form of // `projects/{project}/locations/{location}/vodSessions/{vod_session_id}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "videostitcher.googleapis.com/VodAdTagDetail" } ]; // The maximum number of items to return. int32 page_size = 2; // The next_page_token value returned from a previous List request, if any. string page_token = 3; } // Response message for VideoStitcherService.listVodAdTagDetails. message ListVodAdTagDetailsResponse { // A List of ad tag details. repeated VodAdTagDetail vod_ad_tag_details = 1; // The pagination token. string next_page_token = 2; } // Request message for VideoStitcherService.getVodAdTagDetail message GetVodAdTagDetailRequest { // Required. The name of the ad tag detail for the specified VOD session, in the form of // `projects/{project}/locations/{location}/vodSessions/{vod_session_id}/vodAdTagDetails/{vod_ad_tag_detail}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "videostitcher.googleapis.com/VodAdTagDetail" } ]; } // Request message for VideoStitcherService.listLiveAdTagDetails. message ListLiveAdTagDetailsRequest { // Required. The resource parent in the form of // `projects/{project}/locations/{location}/liveSessions/{live_session}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "videostitcher.googleapis.com/LiveAdTagDetail" } ]; // The maximum number of items to return. int32 page_size = 2; // The pagination token returned from a previous List request. string page_token = 3; } // Response message for VideoStitcherService.listLiveAdTagDetails. message ListLiveAdTagDetailsResponse { // A list of live session ad tag details. repeated LiveAdTagDetail live_ad_tag_details = 1; // The pagination token. string next_page_token = 2; } // Request message for VideoStitcherService.getLiveAdTagDetail message GetLiveAdTagDetailRequest { // Required. The resource name in the form of // `projects/{project}/locations/{location}/liveSessions/{live_session}/liveAdTagDetails/{live_ad_tag_detail}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "videostitcher.googleapis.com/LiveAdTagDetail" } ]; } // Request message for VideoStitcherService.createSlate. message CreateSlateRequest { // Required. The project in which the slate should be created, in the form of // `projects/{project_number}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "videostitcher.googleapis.com/Slate" } ]; // Required. The unique identifier for the slate. // This value should conform to RFC-1034, which restricts to // lower-case letters, numbers, and hyphen, with the first character a // letter, the last a letter or a number, and a 63 character maximum. string slate_id = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The slate to create. Slate slate = 3 [(google.api.field_behavior) = REQUIRED]; } // Request message for VideoStitcherService.getSlate. message GetSlateRequest { // Required. The name of the slate to be retrieved, of the slate, in the form of // `projects/{project_number}/locations/{location}/slates/{id}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "videostitcher.googleapis.com/Slate" } ]; } // Request message for VideoStitcherService.listSlates. message ListSlatesRequest { // Required. The project to list slates, in the form of `projects/{project_number}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "videostitcher.googleapis.com/Slate" } ]; // Requested page size. Server may return fewer items than requested. // If unspecified, server will pick an appropriate default. int32 page_size = 2; // A token identifying a page of results the server should return. string page_token = 3; // Filtering results string filter = 4; // Hint for how to order the results string order_by = 5; } // Response message for VideoStitcherService.listSlates. message ListSlatesResponse { // The list of slates repeated Slate slates = 1; // A token identifying a page of results the server should return. string next_page_token = 2; // Locations that could not be reached. repeated string unreachable = 3; } // Request message for VideoStitcherService.updateSlate. message UpdateSlateRequest { // Required. The resource with updated fields. Slate slate = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The update mask which specifies fields which should be updated. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for VideoStitcherService.deleteSlate. message DeleteSlateRequest { // Required. The name of the slate to be deleted, in the form of // `projects/{project_number}/locations/{location}/slates/{id}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "videostitcher.googleapis.com/Slate" } ]; } // Request message for VideoStitcherService.createLiveSession. message CreateLiveSessionRequest { // Required. The project and location in which the live session should be created, // in the form of `projects/{project_number}/locations/{location}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "videostitcher.googleapis.com/LiveSession" } ]; // Required. Parameters for creating a live session. LiveSession live_session = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for VideoStitcherService.getSession. message GetLiveSessionRequest { // Required. The name of the live session, in the form of // `projects/{project_number}/locations/{location}/liveSessions/{id}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "videostitcher.googleapis.com/LiveSession" } ]; }