aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video
diff options
context:
space:
mode:
authoriddqd <iddqd@yandex-team.com>2024-06-11 10:12:13 +0300
committeriddqd <iddqd@yandex-team.com>2024-06-11 10:22:43 +0300
commit07f57e35443ab7f09471caf2dbf1afbcced4d9f7 (patch)
treea4a7b66ead62e83fa988a2ec2ce6576311c1f4b1 /contrib/libs/yandex-cloud-api-protos/yandex/cloud/video
parent6db3b8ca95e44179e48306a58656fb1f9317d9c3 (diff)
downloadydb-07f57e35443ab7f09471caf2dbf1afbcced4d9f7.tar.gz
add contrib/python/yandexcloud to import
03b7d3cad2237366b55b393e18d4dc5eb222798c
Diffstat (limited to 'contrib/libs/yandex-cloud-api-protos/yandex/cloud/video')
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/channel.proto31
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/channel_service.proto134
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/episode.proto64
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/episode_service.proto239
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream.proto79
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream_line.proto113
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream_line_service.proto259
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream_service.proto197
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/thumbnail.proto19
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/thumbnail_service.proto89
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/video.proto91
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/video_service.proto225
12 files changed, 1540 insertions, 0 deletions
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/channel.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/channel.proto
new file mode 100644
index 0000000000..e7f4d2a833
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/channel.proto
@@ -0,0 +1,31 @@
+syntax = "proto3";
+
+package yandex.cloud.video.v1;
+
+import "google/protobuf/timestamp.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/video/v1;video";
+option java_package = "yandex.cloud.api.video.v1";
+
+// Root entity for content separation.
+message Channel {
+ reserved 102 to 199;
+ reserved 5 to 99;
+ // ID of the channel.
+ string id = 1;
+ // ID of the organization where channel should be created.
+ string organization_id = 2;
+
+ // Channel title.
+ string title = 3;
+ // Channel description.
+ string description = 4;
+
+ // Time when channel was created.
+ google.protobuf.Timestamp created_at = 100;
+ // Time of last channel update.
+ google.protobuf.Timestamp updated_at = 101;
+
+ // Custom labels as `` key:value `` pairs. Maximum 64 per resource.
+ map<string, string> labels = 200;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/channel_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/channel_service.proto
new file mode 100644
index 0000000000..4f138c95e7
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/channel_service.proto
@@ -0,0 +1,134 @@
+syntax = "proto3";
+
+package yandex.cloud.video.v1;
+
+import "google/protobuf/field_mask.proto";
+import "yandex/cloud/api/operation.proto";
+import "yandex/cloud/operation/operation.proto";
+import "yandex/cloud/video/v1/channel.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/video/v1;video";
+option java_package = "yandex.cloud.api.video.v1";
+
+// Channel management service.
+service ChannelService {
+ // Returns the specific channel.
+ rpc Get(GetChannelRequest) returns (Channel) {}
+
+ // List channels for organization.
+ rpc List(ListChannelsRequest) returns (ListChannelsResponse) {}
+
+ // Create channel.
+ rpc Create(CreateChannelRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "CreateChannelMetadata"
+ response: "Channel"
+ };
+ }
+
+ // Update channel.
+ rpc Update(UpdateChannelRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "UpdateChannelMetadata"
+ response: "Channel"
+ };
+ }
+
+ // Delete channel.
+ rpc Delete(DeleteChannelRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "DeleteChannelMetadata"
+ response: "google.protobuf.Empty"
+ };
+ }
+}
+
+message GetChannelRequest {
+ // ID of the channel.
+ string channel_id = 1;
+}
+
+message ListChannelsRequest {
+ reserved 2 to 99;
+ // ID of the organization.
+ string organization_id = 1;
+
+ // The maximum number of the results per page to return. Default value: 100.
+ int64 page_size = 100;
+ // Page token for getting the next page of the result.
+ string page_token = 101;
+
+ // By which column the listing should be ordered and in which direction,
+ // format is "createdAt desc". "id asc" if omitted.
+ // Possible fields: ["id", "createdAt", "updatedAt"]
+ // Both snake_case and camelCase are supported for fields.
+ string order_by = 102;
+
+ // Filter expression that filters resources listed in the response.
+ // Expressions are composed of terms connected by logic operators.
+ // Value in quotes: `'` or `"`
+ // Example: "key1='value' AND key2='value'"
+ // Supported operators: ["AND"].
+ // Supported fields: ["title"]
+ // Both snake_case and camelCase are supported for fields.
+ string filter = 103;
+}
+
+message ListChannelsResponse {
+ reserved 2 to 99;
+ // List of channels for specific organization.
+ repeated Channel channels = 1;
+
+ // Token for getting the next page.
+ string next_page_token = 100;
+}
+
+message CreateChannelRequest {
+ reserved 4 to 199;
+ // ID of the organization.
+ string organization_id = 1;
+
+ // Channel title.
+ string title = 2;
+ // Channel description.
+ string description = 3;
+
+ // Custom labels as `` key:value `` pairs. Maximum 64 per resource.
+ map<string, string> labels = 200;
+}
+
+message CreateChannelMetadata {
+ // ID of the channel.
+ string channel_id = 1;
+}
+
+message UpdateChannelRequest {
+ reserved 5 to 199;
+ // ID of the channel.
+ string channel_id = 1;
+ // Field mask that specifies which fields of the channel are going to be updated.
+ google.protobuf.FieldMask field_mask = 2;
+
+ // Channel title.
+ string title = 3;
+ // Channel description.
+ string description = 4;
+
+ // Custom labels as `` key:value `` pairs. Maximum 64 per resource.
+ map<string, string> labels = 200;
+}
+
+message UpdateChannelMetadata {
+ // ID of the channel.
+ string channel_id = 1;
+}
+
+message DeleteChannelRequest {
+ // ID of the channel.
+ string channel_id = 1;
+}
+
+message DeleteChannelMetadata {
+ // ID of the channel.
+ string channel_id = 1;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/episode.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/episode.proto
new file mode 100644
index 0000000000..85ddb2d354
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/episode.proto
@@ -0,0 +1,64 @@
+syntax = "proto3";
+
+package yandex.cloud.video.v1;
+
+import "google/protobuf/timestamp.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/video/v1;video";
+option java_package = "yandex.cloud.api.video.v1";
+
+message Episode {
+ reserved 102 to 999;
+ reserved 11 to 99;
+ reserved 1001;
+
+ // ID of the episode.
+ string id = 1;
+ // ID of the stream. Optional, empty if the episode is linked to the line
+ string stream_id = 2;
+ // ID of the line. Optional, empty if the episode is linked to the stream
+ string line_id = 3;
+
+ // Channel title.
+ string title = 4;
+ // Channel description.
+ string description = 5;
+ // ID of the thumbnail.
+ string thumbnail_id = 6;
+
+ // Episode start time.
+ google.protobuf.Timestamp start_time = 7;
+ // Episode finish time.
+ google.protobuf.Timestamp finish_time = 8;
+ // Enables episode DVR mode. DVR seconds determines how many last seconds of the stream are available.
+ //
+ // possible values:
+ // * `0`: infinite dvr size, the full length of the stream allowed to display
+ // * `>0`: size of dvr window in seconds, the minimum value is 30s
+ int64 dvr_seconds = 9;
+
+ VisibilityStatus visibility_status = 10;
+
+ // Episode access rights.
+ oneof access_rights {
+ // Episode is available to everyone.
+ EpisodePublicAccessRights public_access = 1000;
+ // Checking access rights using the authorization system.
+ EpisodeAuthSystemAccessRights auth_system_access = 1002;
+ }
+
+ // Time when episode was created.
+ google.protobuf.Timestamp created_at = 100;
+ // Time of last episode update.
+ google.protobuf.Timestamp updated_at = 101;
+
+ enum VisibilityStatus {
+ VISIBILITY_STATUS_UNSPECIFIED = 0;
+ PUBLISHED = 1;
+ UNPUBLISHED = 2;
+ }
+}
+
+message EpisodePublicAccessRights {}
+
+message EpisodeAuthSystemAccessRights {}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/episode_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/episode_service.proto
new file mode 100644
index 0000000000..cf0ecad2c7
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/episode_service.proto
@@ -0,0 +1,239 @@
+syntax = "proto3";
+
+package yandex.cloud.video.v1;
+
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/timestamp.proto";
+import "yandex/cloud/api/operation.proto";
+import "yandex/cloud/operation/operation.proto";
+import "yandex/cloud/video/v1/episode.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/video/v1;video";
+option java_package = "yandex.cloud.api.video.v1";
+
+// Episode management service.
+service EpisodeService {
+ // Returns the specific channel.
+ rpc Get(GetEpisodeRequest) returns (Episode) {}
+
+ // List episodes for stream or line.
+ rpc List(ListEpisodesRequest) returns (ListEpisodesResponse) {}
+
+ // Create episode.
+ rpc Create(CreateEpisodeRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "CreateEpisodeMetadata"
+ response: "Episode"
+ };
+ }
+
+ // Update episode.
+ rpc Update(UpdateEpisodeRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "UpdateEpisodeMetadata"
+ response: "Episode"
+ };
+ }
+
+ // Delete episode.
+ rpc Delete(DeleteEpisodeRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "DeleteEpisodeMetadata"
+ response: "google.protobuf.Empty"
+ };
+ }
+
+ // Perform an action on the episode.
+ rpc PerformAction(PerformEpisodeActionRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "PerformEpisodeActionMetadata"
+ response: "Episode"
+ };
+ }
+
+ // Returns url to the player.
+ rpc GetPlayerURL(GetEpisodePlayerURLRequest) returns (GetEpisodePlayerURLResponse) {}
+}
+
+message GetEpisodeRequest {
+ // ID of the episode.
+ string episode_id = 1;
+}
+
+message ListEpisodesRequest {
+ reserved 3 to 99;
+ oneof parent_id {
+ // ID of the stream.
+ string stream_id = 1;
+ // ID of the line.
+ string line_id = 2;
+ }
+
+ // The maximum number of the results per page to return. Default value: 100.
+ int64 page_size = 100;
+ // Page token for getting the next page of the result.
+ string page_token = 101;
+
+ // By which column the listing should be ordered and in which direction,
+ // format is "createdAt desc". "id asc" if omitted.
+ // Possible fields: ["id", "createdAt", "updatedAt"]
+ // Both snake_case and camelCase are supported for fields.
+ string order_by = 102;
+
+ // Filter expression that filters resources listed in the response.
+ // Expressions are composed of terms connected by logic operators.
+ // Value in quotes: `'` or `"`
+ // Example: "key1='value' AND key2='value'"
+ // Supported operators: ["AND"].
+ // Supported fields: ["title"]
+ // Both snake_case and camelCase are supported for fields.
+ string filter = 103;
+}
+
+message ListEpisodesResponse {
+ reserved 2 to 99;
+ // List of episodes for specific parent_id.
+ repeated Episode episodes = 1;
+
+ // Token for getting the next page.
+ string next_page_token = 100;
+}
+
+message CreateEpisodeRequest {
+ reserved 102 to 999;
+ reserved 8 to 99;
+ reserved 1, 1001;
+
+ oneof parent_id {
+ // ID of the stream.
+ string stream_id = 100;
+ // ID of the line.
+ string line_id = 101;
+ }
+
+ // Episode title.
+ string title = 2;
+ // Episode description.
+ string description = 3;
+ // ID of the thumbnail.
+ string thumbnail_id = 4;
+ // Episode start time.
+ google.protobuf.Timestamp start_time = 5;
+ // Episode finish time.
+ google.protobuf.Timestamp finish_time = 6;
+ // Enables episode DVR mode. DVR seconds determines how many last seconds of the stream are available.
+ //
+ // possible values:
+ // * `0`: infinite dvr size, the full length of the stream allowed to display
+ // * `>0`: size of dvr window in seconds, the minimum value is 30s
+ int64 dvr_seconds = 7;
+
+ // Episode access rights.
+ oneof access_rights {
+ // Episode is available to everyone.
+ EpisodePublicAccessParams public_access = 1000;
+ // Checking access rights using the authorization system.
+ EpisodeAuthSystemAccessParams auth_system_access = 1002;
+ }
+}
+
+message EpisodePublicAccessParams {}
+
+message EpisodeAuthSystemAccessParams {}
+
+message CreateEpisodeMetadata {
+ // ID of the episode.
+ string episode_id = 1;
+}
+
+message UpdateEpisodeRequest {
+ reserved 9 to 999;
+ reserved 1001;
+
+ // ID of the episode.
+ string episode_id = 1;
+ // Field mask that specifies which fields of the episode are going to be updated.
+ google.protobuf.FieldMask field_mask = 2;
+
+ // Episode title.
+ string title = 3;
+ // Episode description.
+ string description = 4;
+ // ID of the thumbnail.
+ string thumbnail_id = 5;
+ google.protobuf.Timestamp start_time = 6;
+ // Episode finish time.
+ google.protobuf.Timestamp finish_time = 7;
+ // Enables episode DVR mode. DVR seconds determines how many last seconds of the stream are available.
+ //
+ // possible values:
+ // * `0`: infinite dvr size, the full length of the stream allowed to display
+ // * `>0`: size of dvr window in seconds, the minimum value is 30s
+ int64 dvr_seconds = 8;
+
+ // Episode access rights.
+ oneof access_rights {
+ // Episode is available to everyone.
+ EpisodePublicAccessParams public_access = 1000;
+ // Checking access rights using the authorization system.
+ EpisodeAuthSystemAccessParams auth_system_access = 1002;
+ }
+}
+
+message UpdateEpisodeMetadata {
+ // ID of the episode.
+ string episode_id = 1;
+}
+
+message DeleteEpisodeRequest {
+ // ID of the episode.
+ string episode_id = 1;
+}
+
+message DeleteEpisodeMetadata {
+ // ID of the episode.
+ string episode_id = 1;
+}
+
+message PerformEpisodeActionRequest {
+ reserved 2 to 999;
+ reserved 1000, 1001;
+
+ // ID of the episode.
+ string episode_id = 1;
+ oneof action {
+ PublishEpisodeAction publish = 1002;
+ UnpublishEpisodeAction unpublish = 1003;
+ }
+}
+
+message PublishEpisodeAction {}
+
+message UnpublishEpisodeAction {}
+
+message PerformEpisodeActionMetadata {
+ // ID of the episode.
+ string episode_id = 1;
+}
+
+message GetEpisodePlayerURLRequest {
+ // ID of the episode.
+ string episode_id = 1;
+ EpisodePlayerParams params = 2;
+}
+
+message EpisodePlayerParams {
+ // If true, a player will be muted by default.
+ bool mute = 1;
+ // If true, playback will start automatically.
+ bool autoplay = 2;
+ // If true, a player interface will be hidden by default.
+ bool hidden = 3;
+}
+
+message GetEpisodePlayerURLResponse {
+ // Direct link to the video.
+ string player_url = 1;
+ // HTML embed code in Iframe format.
+ string html = 2;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream.proto
new file mode 100644
index 0000000000..4173fe9fec
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream.proto
@@ -0,0 +1,79 @@
+syntax = "proto3";
+
+package yandex.cloud.video.v1;
+
+import "google/protobuf/timestamp.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/video/v1;video";
+option java_package = "yandex.cloud.api.video.v1";
+
+message Stream {
+ reserved 102 to 199;
+ reserved 201 to 999;
+ reserved 12 to 99;
+ reserved 7;
+
+ // ID of the stream.
+ string id = 1;
+ // ID of the channel where the stream was created.
+ string channel_id = 2;
+ // ID of the line to which stream is linked.
+ string line_id = 3;
+
+ // Stream title.
+ string title = 4;
+ // Stream description.
+ string description = 5;
+ // ID of the thumbnail.
+ string thumbnail_id = 6;
+
+ // Stream status.
+ StreamStatus status = 8;
+ // Stream start time.
+ google.protobuf.Timestamp start_time = 9;
+ // Stream publish time. Time when stream switched to ONAIR status.
+ google.protobuf.Timestamp publish_time = 10;
+ // Stream finish time.
+ google.protobuf.Timestamp finish_time = 11;
+
+ // Stream type.
+ oneof stream_type {
+ // On demand stream. It starts immediately when a signal appears.
+ OnDemand on_demand = 1000;
+ // Schedule stream. Determines when to start receiving the signal or finish time.
+ Schedule schedule = 1001;
+ }
+
+ // Time when stream was created.
+ google.protobuf.Timestamp created_at = 100;
+ // Time of last stream update.
+ google.protobuf.Timestamp updated_at = 101;
+
+ // Custom labels as `` key:value `` pairs. Maximum 64 per resource.
+ map<string, string> labels = 200;
+
+ // Stream status.
+ enum StreamStatus {
+ // Stream status unspecified.
+ STREAM_STATUS_UNSPECIFIED = 0;
+ // Stream offline.
+ OFFLINE = 1;
+ // Preparing the infrastructure for receiving video signal.
+ PREPARING = 2;
+ // Everything is ready to launch stream.
+ READY = 3;
+ // Stream onair.
+ ONAIR = 4;
+ // Stream finished.
+ FINISHED = 5;
+ }
+}
+
+// If "OnDemand" is used, client should start and finish explicitly.
+message OnDemand {}
+
+// If "Schedule" is used, stream automatically start and finish at this time.
+message Schedule {
+ google.protobuf.Timestamp start_time = 1;
+ google.protobuf.Timestamp finish_time = 2;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream_line.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream_line.proto
new file mode 100644
index 0000000000..23bb14a581
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream_line.proto
@@ -0,0 +1,113 @@
+syntax = "proto3";
+
+package yandex.cloud.video.v1;
+
+import "google/protobuf/timestamp.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/video/v1;video";
+option java_package = "yandex.cloud.api.video.v1";
+
+// Entity that is responsible for the incoming video signal settings.
+message StreamLine {
+ reserved 102 to 199;
+ reserved 201 to 999;
+ reserved 1005;
+ reserved 1007 to 1999;
+ reserved 5 to 99;
+ // ID of the line.
+ string id = 1;
+ // ID of the channel where the line was created.
+ string channel_id = 2;
+
+ // Line title.
+ string title = 3;
+ // ID of the thumbnail.
+ string thumbnail_id = 4;
+
+ // Video signal settings.
+ oneof input_type {
+ // RTMP push input type.
+ RTMPPushInput rtmp_push = 1000;
+ // SRT push input type.
+ SRTPushInput srt_push = 1001;
+ // RTMP pull input type.
+ RTMPPullInput rtmp_pull = 1002;
+ // SRT pull input type.
+ SRTPullInput srt_pull = 1003;
+ // TCP pull input type.
+ TCPPullInput tcp_pull = 1004;
+ // RTSP pull input type.
+ RTSPPullInput rtsp_pull = 1006;
+ }
+
+ // Line type.
+ oneof line_type {
+ // Manual control of stream.
+ ManualLine manual_line = 2000;
+ // Automatic control of stream.
+ AutoLine auto_line = 2001;
+ }
+
+ // Time when line was created.
+ google.protobuf.Timestamp created_at = 100;
+ // Time of last line update.
+ google.protobuf.Timestamp updated_at = 101;
+
+ // Custom labels as `` key:value `` pairs. Maximum 64 per resource.
+ map<string, string> labels = 200;
+}
+
+// Push stream key.
+message PushStreamKey {
+ // Unique stream key.
+ string key = 1;
+}
+
+message RTMPPushInput {
+ // RTMP server url.
+ string url = 1;
+}
+
+message SRTPushInput {
+ // SRT server url.
+ string url = 1;
+}
+
+message RTMPPullInput {
+ // RTMP url for receiving video signal.
+ string url = 1;
+}
+
+message SRTPullInput {
+ // SRT url for receiving video signal.
+ string url = 1;
+}
+
+message TCPPullInput {
+ // TCP url for receiving video signal.
+ string url = 1;
+}
+
+message RTSPPullInput {
+ // RTSP url for receiving video signal.
+ string url = 1;
+}
+
+// Manual line type.
+message ManualLine {}
+
+// Auto line type.
+message AutoLine {
+ // Status of auto line.
+ AutoLineStatus status = 1;
+
+ // Auto line status.
+ enum AutoLineStatus {
+ // Auto line status unspecified.
+ AUTO_LINE_STATUS_UNSPECIFIED = 0;
+ // Auto line deactivated.
+ DEACTIVATED = 1;
+ // Auto line active.
+ ACTIVE = 2;
+ }
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream_line_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream_line_service.proto
new file mode 100644
index 0000000000..bb145f6ceb
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream_line_service.proto
@@ -0,0 +1,259 @@
+syntax = "proto3";
+
+package yandex.cloud.video.v1;
+
+import "google/protobuf/field_mask.proto";
+import "yandex/cloud/api/operation.proto";
+import "yandex/cloud/operation/operation.proto";
+import "yandex/cloud/video/v1/stream_line.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/video/v1;video";
+option java_package = "yandex.cloud.api.video.v1";
+
+// Stream line management service.
+service StreamLineService {
+ // Returns the specific stream line.
+ rpc Get(GetStreamLineRequest) returns (StreamLine) {}
+
+ // List lines for channel.
+ rpc List(ListStreamLinesRequest) returns (ListStreamLinesResponse) {}
+
+ // Create stream line.
+ rpc Create(CreateStreamLineRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "CreateStreamLineMetadata"
+ response: "StreamLine"
+ };
+ }
+
+ // Update stream line.
+ rpc Update(UpdateStreamLineRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "UpdateStreamLineMetadata"
+ response: "StreamLine"
+ };
+ }
+
+ // Delete stream line.
+ rpc Delete(DeleteStreamLineRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "DeleteStreamLineMetadata"
+ response: "google.protobuf.Empty"
+ };
+ }
+
+ // Perform an action on the line.
+ rpc PerformAction(PerformLineActionRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "PerformLineActionMetadata"
+ response: "StreamLine"
+ };
+ }
+
+ // Returns unique stream key.
+ rpc GetStreamKey(GetStreamKeyRequest) returns (PushStreamKey) {}
+
+ // Change stream key.
+ rpc UpdateStreamKey(UpdateStreamKeyRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "UpdateStreamKeyMetadata"
+ response: "PushStreamKey"
+ };
+ }
+}
+
+message GetStreamLineRequest {
+ // ID of the line.
+ string stream_line_id = 1;
+}
+
+message ListStreamLinesRequest {
+ reserved 2 to 99;
+ // ID of the channel.
+ string channel_id = 1;
+
+ // The maximum number of the results per page to return. Default value: 100.
+ int64 page_size = 100;
+ // Page token for getting the next page of the result.
+ string page_token = 101;
+
+ // By which column the listing should be ordered and in which direction,
+ // format is "createdAt desc". "id asc" if omitted.
+ // Possible fields: ["id", "title", "createdAt", "updatedAt"]
+ // Both snake_case and camelCase are supported for fields.
+ string order_by = 102;
+
+ // Filter expression that filters resources listed in the response.
+ // Expressions are composed of terms connected by logic operators.
+ // Value in quotes: `'` or `"`
+ // Example: "key1='value' AND key2='value'"
+ // Supported operators: ["AND"].
+ // Supported fields: ["title"]
+ // Both snake_case and camelCase are supported for fields.
+ string filter = 103;
+}
+
+message ListStreamLinesResponse {
+ reserved 2 to 99;
+ // List of lines for channel.
+ repeated StreamLine stream_lines = 1;
+
+ // Token for getting the next page.
+ string next_page_token = 100;
+}
+
+message CreateStreamLineRequest {
+ reserved 201 to 999;
+ reserved 1005;
+ reserved 1007 to 1999;
+ reserved 4 to 199;
+ // ID of the channel.
+ string channel_id = 1;
+ // Line title.
+ string title = 2;
+ // ID of the thumbnail.
+ string thumbnail_id = 3;
+
+ // Custom labels as `` key:value `` pairs. Maximum 64 per resource.
+ map<string, string> labels = 200;
+
+ // Video signal settings.
+ oneof input_params {
+ // RTMP push input type.
+ RTMPPushParams rtmp_push = 1000;
+ // SRT push input type.
+ SRTPushParams srt_push = 1001;
+ // RTMP pull input type.
+ RTMPPullParams rtmp_pull = 1002;
+ // SRT pull input type.
+ SRTPullParams srt_pull = 1003;
+ // TCP pull input type.
+ TCPPullParams tcp_pull = 1004;
+ // RTSP pull input type.
+ RTSPPullParams rtsp_pull = 1006;
+ }
+
+ // Line type.
+ oneof line_type_params {
+ // Manual control of stream.
+ ManualLineParams manual_line = 2000;
+ // Automatic control of stream.
+ AutoLineParams auto_line = 2001;
+ }
+}
+
+message CreateStreamLineMetadata {
+ // ID of the line.
+ string stream_line_id = 1;
+}
+
+message UpdateStreamLineRequest {
+ reserved 201 to 999;
+ reserved 1005;
+ reserved 5 to 199;
+ // ID of the line.
+ string stream_line_id = 1;
+ // Field mask that specifies which fields of the line are going to be updated.
+ google.protobuf.FieldMask field_mask = 2;
+
+ // Line title.
+ string title = 3;
+ // ID of the thumbnail.
+ string thumbnail_id = 4;
+
+ // Custom labels as `` key:value `` pairs. Maximum 64 per resource.
+ map<string, string> labels = 200;
+
+ // Video signal settings.
+ oneof input_params {
+ // RTMP push input type.
+ RTMPPushParams rtmp_push = 1000;
+ // SRT push input type.
+ SRTPushParams srt_push = 1001;
+ // RTMP pull input type.
+ RTMPPullParams rtmp_pull = 1002;
+ // SRT pull input type.
+ SRTPullParams srt_pull = 1003;
+ // TCP pull input type.
+ TCPPullParams tcp_pull = 1004;
+ // RTSP pull input type.
+ RTSPPullParams rtsp_pull = 1006;
+ }
+}
+
+message UpdateStreamLineMetadata {
+ // ID of the line.
+ string stream_line_id = 1;
+}
+
+message DeleteStreamLineRequest {
+ // ID of the line.
+ string stream_line_id = 1;
+}
+
+message DeleteStreamLineMetadata {
+ // ID of the line.
+ string stream_line_id = 1;
+}
+
+message PerformLineActionRequest {
+ reserved 2 to 999;
+ // ID of the line.
+ string stream_line_id = 1;
+ oneof action {
+ ActivateAction activate = 1000;
+ DeactivateAction deactivate = 1001;
+ }
+}
+
+message PerformLineActionMetadata {
+ // ID of the line.
+ string stream_line_id = 1;
+}
+
+message RTMPPushParams {}
+
+message SRTPushParams {}
+
+message RTMPPullParams {
+ // URL of a RTMP streaming server.
+ string url = 1;
+}
+
+message SRTPullParams {
+ // URL of a SRT streaming server.
+ string url = 1;
+}
+
+message TCPPullParams {
+ // URL of a TCP streaming server.
+ string url = 2;
+}
+
+message RTSPPullParams {
+ // URL of a RTSP streaming server.
+ string url = 1;
+}
+
+message ManualLineParams {}
+
+message AutoLineParams {}
+
+message ActivateAction {}
+
+message DeactivateAction {}
+
+message GetStreamKeyRequest {
+ // ID of the line.
+ string stream_line_id = 1;
+}
+
+message UpdateStreamKeyRequest {
+ // ID of the line.
+ string stream_line_id = 1;
+}
+
+message UpdateStreamKeyMetadata {
+ // ID of the line.
+ string stream_line_id = 1;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream_service.proto
new file mode 100644
index 0000000000..f3f8cd8689
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/stream_service.proto
@@ -0,0 +1,197 @@
+syntax = "proto3";
+
+package yandex.cloud.video.v1;
+
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/timestamp.proto";
+import "yandex/cloud/api/operation.proto";
+import "yandex/cloud/operation/operation.proto";
+import "yandex/cloud/video/v1/stream.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/video/v1;video";
+option java_package = "yandex.cloud.api.video.v1";
+
+// Stream management service.
+service StreamService {
+ // Returns the specific stream.
+ rpc Get(GetStreamRequest) returns (Stream) {}
+
+ // List streams for channel.
+ rpc List(ListStreamsRequest) returns (ListStreamsResponse) {}
+
+ // Create stream.
+ rpc Create(CreateStreamRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "CreateStreamMetadata"
+ response: "Stream"
+ };
+ }
+
+ // Update stream.
+ rpc Update(UpdateStreamRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "UpdateStreamMetadata"
+ response: "Stream"
+ };
+ }
+
+ // Delete stream.
+ rpc Delete(DeleteStreamRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "DeleteStreamMetadata"
+ response: "google.protobuf.Empty"
+ };
+ }
+
+ // Perform an action on the episode.
+ rpc PerformAction(PerformStreamActionRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "PerformStreamActionMetadata"
+ response: "Stream"
+ };
+ }
+}
+
+message GetStreamRequest {
+ // ID of the stream.
+ string stream_id = 1;
+}
+
+message ListStreamsRequest {
+ reserved 2 to 99;
+ // ID of the channel.
+ string channel_id = 1;
+
+ // The maximum number of the results per page to return. Default value: 100.
+ int64 page_size = 100;
+ // Page token for getting the next page of the result.
+ string page_token = 101;
+
+ // By which column the listing should be ordered and in which direction,
+ // format is "createdAt desc". "id asc" if omitted.
+ // Possible fields: ["id", "title", "startTime", "finishTime", "createdAt", "updatedAt"]
+ // Both snake_case and camelCase are supported for fields.
+ string order_by = 102;
+
+ // Filter expression that filters resources listed in the response.
+ // Expressions are composed of terms connected by logic operators.
+ // Value in quotes: `'` or `"`
+ // Example: "key1='value' AND key2='value'"
+ // Supported operators: ["AND"].
+ // Supported fields: ["title", "lineId", "status"]
+ // Both snake_case and camelCase are supported for fields.
+ string filter = 103;
+}
+
+message ListStreamsResponse {
+ reserved 2 to 99;
+ // List of streams for channel.
+ repeated Stream streams = 1;
+
+ // Token for getting the next page.
+ string next_page_token = 100;
+}
+
+message CreateStreamRequest {
+ reserved 201 to 999;
+ reserved 6 to 199;
+ // ID of the channel.
+ string channel_id = 1;
+
+ // ID of the line.
+ string line_id = 2;
+ // Stream title.
+ string title = 3;
+ // Stream description.
+ string description = 4;
+ // ID of the thumbnail.
+ string thumbnail_id = 5;
+
+ // Custom labels as `` key:value `` pairs. Maximum 64 per resource.
+ map<string, string> labels = 200;
+
+ // Stream type.
+ oneof stream_type {
+ // On demand stream. It starts immediately when a signal appears.
+ OnDemandParams on_demand = 1000;
+ // Schedule stream. Determines when to start receiving the signal or finish time.
+ ScheduleParams schedule = 1001;
+ }
+}
+
+message OnDemandParams {}
+
+message ScheduleParams {
+ google.protobuf.Timestamp start_time = 1;
+ google.protobuf.Timestamp finish_time = 2;
+}
+
+message CreateStreamMetadata {
+ // ID of the stream.
+ string stream_id = 1;
+}
+
+message UpdateStreamRequest {
+ reserved 201 to 999;
+ reserved 7 to 199;
+ // ID of the stream.
+ string stream_id = 1;
+ // Field mask that specifies which fields of the stream are going to be updated.
+ google.protobuf.FieldMask field_mask = 2;
+
+ // ID of the line.
+ string line_id = 3;
+ // Stream title.
+ string title = 4;
+ // Stream description.
+ string description = 5;
+ // ID of the thumbnail.
+ string thumbnail_id = 6;
+
+ // Custom labels as `` key:value `` pairs. Maximum 64 per resource.
+ map<string, string> labels = 200;
+
+ // Stream type.
+ oneof stream_type {
+ // On demand stream. It starts immediately when a signal appears.
+ OnDemandParams on_demand = 1000;
+ // Schedule stream. Determines when to start receiving the signal or finish time.
+ ScheduleParams schedule = 1001;
+ }
+}
+
+message UpdateStreamMetadata {
+ // ID of the stream.
+ string stream_id = 1;
+}
+
+message DeleteStreamRequest {
+ // ID of the stream.
+ string stream_id = 1;
+}
+
+message DeleteStreamMetadata {
+ // ID of the stream.
+ string stream_id = 1;
+}
+
+message PerformStreamActionRequest {
+ reserved 2 to 999;
+ reserved 1001;
+
+ // ID of the stream.
+ string stream_id = 1;
+ oneof action {
+ PublishAction publish = 1000;
+ StopAction stop = 1002;
+ }
+}
+
+message PublishAction {}
+
+message StopAction {}
+
+message PerformStreamActionMetadata {
+ // ID of the stream.
+ string stream_id = 1;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/thumbnail.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/thumbnail.proto
new file mode 100644
index 0000000000..a9ac8ba5e6
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/thumbnail.proto
@@ -0,0 +1,19 @@
+syntax = "proto3";
+
+package yandex.cloud.video.v1;
+
+import "google/protobuf/timestamp.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/video/v1;video";
+option java_package = "yandex.cloud.api.video.v1";
+
+message Thumbnail {
+ reserved 3 to 99;
+ // ID of the thumbnail.
+ string id = 1;
+ // ID of the channel where the thumbnail was created.
+ string channel_id = 2;
+
+ // Time when thumbnail was created.
+ google.protobuf.Timestamp created_at = 100;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/thumbnail_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/thumbnail_service.proto
new file mode 100644
index 0000000000..3b36d1c10b
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/thumbnail_service.proto
@@ -0,0 +1,89 @@
+syntax = "proto3";
+
+package yandex.cloud.video.v1;
+
+import "yandex/cloud/api/operation.proto";
+import "yandex/cloud/operation/operation.proto";
+import "yandex/cloud/video/v1/thumbnail.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/video/v1;video";
+option java_package = "yandex.cloud.api.video.v1";
+
+// Thumbnail management service.
+service ThumbnailService {
+ // List thumbnails for channel.
+ rpc List(ListThumbnailRequest) returns (ListThumbnailResponse) {}
+
+ // Create thumbnail.
+ rpc Create(CreateThumbnailRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "CreateThumbnailMetadata"
+ response: "Thumbnail"
+ };
+ }
+
+ // Generate urls for download images.
+ rpc BatchGenerateDownloadURLs(BatchGenerateDownloadURLsRequest) returns (BatchGenerateDownloadURLsResponse) {}
+
+ // Generate url for upload image.
+ rpc GenerateUploadURL(GenerateThumbnailUploadURLRequest) returns (GenerateThumbnailUploadURLResponse) {}
+}
+
+message ListThumbnailRequest {
+ reserved 2 to 99;
+ // ID of the channel.
+ string channel_id = 1;
+
+ // The maximum number of the results per page to return. Default value: 100.
+ int64 page_size = 100;
+ // Page token for getting the next page of the result.
+ string page_token = 101;
+}
+
+message ListThumbnailResponse {
+ reserved 2 to 99;
+ // List of thumbnails.
+ repeated Thumbnail thumbnails = 1;
+
+ // Token for getting the next page.
+ string next_page_token = 100;
+}
+
+message CreateThumbnailRequest {
+ // ID of the channel.
+ string channel_id = 1;
+}
+
+message CreateThumbnailMetadata {
+ // ID of the thumbnail.
+ string thumbnail_id = 1;
+}
+
+message BatchGenerateDownloadURLsRequest {
+ // ID of the channel.
+ string channel_id = 1;
+ // List of thumbnails IDs.
+ repeated string thumbnail_ids = 2;
+}
+
+message BatchGenerateDownloadURLsResponse {
+ // List of download urls.
+ repeated ThumbnailDownloadURL download_urls = 1;
+}
+
+message ThumbnailDownloadURL {
+ // ID of the thumbnail.
+ string thumbnail_id = 1;
+ // Download url.
+ string download_url = 2;
+}
+
+message GenerateThumbnailUploadURLRequest {
+ // ID of the thumbnail.
+ string thumbnail_id = 1;
+}
+
+message GenerateThumbnailUploadURLResponse {
+ // Upload url.
+ string upload_url = 1;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/video.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/video.proto
new file mode 100644
index 0000000000..ac18d4ded3
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/video.proto
@@ -0,0 +1,91 @@
+syntax = "proto3";
+
+package yandex.cloud.video.v1;
+
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/video/v1;video";
+option java_package = "yandex.cloud.api.video.v1";
+
+message Video {
+ reserved 102 to 199;
+ reserved 201 to 999;
+ reserved 1001 to 1999;
+ reserved 10 to 99;
+ reserved 7, 2001;
+
+ // ID of the video.
+ string id = 1;
+ // ID of the channel where the video was created.
+ string channel_id = 2;
+
+ // Video title.
+ string title = 3;
+ // Video description.
+ string description = 4;
+ // ID of the thumbnail.
+ string thumbnail_id = 5;
+
+ // Video status.
+ VideoStatus status = 6;
+
+ // Video duration. Optional, may be empty until the transcoding result is ready.
+ google.protobuf.Duration duration = 8;
+
+ // Video visibility status.
+ VisibilityStatus visibility_status = 9;
+
+ // Source type.
+ oneof source {
+ // Upload video using the tus protocol.
+ VideoTUSDSource tusd = 1000;
+ }
+
+ // Video access rights.
+ oneof access_rights {
+ // Video is available to everyone.
+ VideoPublicAccessRights public_access = 2000;
+ // Checking access rights using the authorization system.
+ VideoAuthSystemAccessRights auth_system_access = 2002;
+ }
+
+ // Time when video was created.
+ google.protobuf.Timestamp created_at = 100;
+ // Time of last video update.
+ google.protobuf.Timestamp updated_at = 101;
+
+ // Custom labels as `` key:value `` pairs. Maximum 64 per resource.
+ map<string, string> labels = 200;
+
+ enum VideoStatus {
+ // Video status unspecified.
+ VIDEO_STATUS_UNSPECIFIED = 0;
+ // Waiting for the whole number of bytes to be loaded.
+ WAIT_UPLOADING = 1;
+ // Video processing.
+ PROCESSING = 4;
+ // Video is ready, processing is completed.
+ READY = 5;
+ // An error occurred during video processing.
+ ERROR = 7;
+ }
+
+ enum VisibilityStatus {
+ // Visibility status unspecified.
+ VISIBILITY_STATUS_UNSPECIFIED = 0;
+ // Video is published and available for viewing.
+ PUBLISHED = 1;
+ // Video is unpublished, only admin can watch.
+ UNPUBLISHED = 2;
+ }
+}
+
+message VideoTUSDSource {
+ // URL for uploading video via the tus protocol.
+ string url = 1;
+}
+
+message VideoPublicAccessRights {}
+
+message VideoAuthSystemAccessRights {}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/video_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/video_service.proto
new file mode 100644
index 0000000000..84784c0c6b
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/video/v1/video_service.proto
@@ -0,0 +1,225 @@
+syntax = "proto3";
+
+package yandex.cloud.video.v1;
+
+import "google/protobuf/field_mask.proto";
+import "yandex/cloud/api/operation.proto";
+import "yandex/cloud/operation/operation.proto";
+import "yandex/cloud/video/v1/video.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/video/v1;video";
+option java_package = "yandex.cloud.api.video.v1";
+
+// Video management service.
+service VideoService {
+ // Returns the specific video.
+ rpc Get(GetVideoRequest) returns (Video) {}
+
+ // List videos for channel.
+ rpc List(ListVideoRequest) returns (ListVideoResponse) {}
+
+ // Create video.
+ rpc Create(CreateVideoRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "CreateVideoMetadata"
+ response: "Video"
+ };
+ }
+
+ // Update video.
+ rpc Update(UpdateVideoRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "UpdateVideoMetadata"
+ response: "Video"
+ };
+ }
+
+ // Delete video.
+ rpc Delete(DeleteVideoRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "DeleteVideoMetadata"
+ response: "google.protobuf.Empty"
+ };
+ }
+
+ // Perform an action on the episode.
+ rpc PerformAction(PerformVideoActionRequest) returns (operation.Operation) {
+ option (yandex.cloud.api.operation) = {
+ metadata: "PerformVideoActionMetadata"
+ response: "Video"
+ };
+ }
+
+ // Returns url to the player.
+ rpc GetPlayerURL(GetVideoPlayerURLRequest) returns (GetVideoPlayerURLResponse) {}
+}
+
+message GetVideoRequest {
+ // ID of the video.
+ string video_id = 1;
+}
+
+message ListVideoRequest {
+ reserved 2 to 99;
+ // ID of the channel.
+ string channel_id = 1;
+
+ // The maximum number of the results per page to return. Default value: 100.
+ int64 page_size = 100;
+ // Page token for getting the next page of the result.
+ string page_token = 101;
+
+ // By which column the listing should be ordered and in which direction,
+ // format is "createdAt desc". "id asc" if omitted.
+ // Possible fields: ["id", "createdAt", "updatedAt"]
+ // Both snake_case and camelCase are supported for fields.
+ string order_by = 102;
+
+ // Filter expression that filters resources listed in the response.
+ // Expressions are composed of terms connected by logic operators.
+ // Value in quotes: `'` or `"`
+ // Example: "key1='value' AND key2='value'"
+ // Supported operators: ["AND"].
+ // Supported fields: ["title", "status", "visibility_status"]
+ // Both snake_case and camelCase are supported for fields.
+ string filter = 103;
+}
+
+message ListVideoResponse {
+ reserved 2 to 99;
+ repeated Video videos = 1;
+
+ // Token for getting the next page.
+ string next_page_token = 100;
+}
+
+message CreateVideoRequest {
+ reserved 201 to 999;
+ reserved 1001 to 1999;
+ reserved 2001;
+ reserved 5 to 199;
+
+ // ID of the channel.
+ string channel_id = 1;
+
+ // Video title.
+ string title = 2;
+ // Video description.
+ string description = 3;
+ // ID of the thumbnail.
+ string thumbnail_id = 4;
+
+ // Custom labels as `` key:value `` pairs. Maximum 64 per resource.
+ map<string, string> labels = 200;
+
+ // Source type.
+ oneof source {
+ // Upload video using the tus protocol.
+ VideoTUSDParams tusd = 1000;
+ }
+
+ // Video access rights.
+ oneof access_rights {
+ // Video is available to everyone.
+ VideoPublicAccessParams public_access = 2000;
+ // Checking access rights using the authorization system.
+ VideoAuthSystemAccessParams auth_system_access = 2002;
+ }
+}
+
+message VideoTUSDParams {
+ // File size.
+ int64 file_size = 1;
+ // File name.
+ string file_name = 2;
+}
+
+message VideoPublicAccessParams {}
+
+message VideoAuthSystemAccessParams {}
+
+message CreateVideoMetadata {
+ // ID of the video.
+ string video_id = 1;
+}
+
+message UpdateVideoRequest {
+ reserved 201 to 1999;
+ reserved 2001;
+ reserved 6 to 199;
+
+ // ID of the video.
+ string video_id = 1;
+ // Field mask that specifies which fields of the video are going to be updated.
+ google.protobuf.FieldMask field_mask = 2;
+
+ // Video title.
+ string title = 3;
+ // Video description.
+ string description = 4;
+ // ID of the thumbnail.
+ string thumbnail_id = 5;
+ // Custom labels as `` key:value `` pairs. Maximum 64 per resource.
+ map<string, string> labels = 200;
+
+ oneof access_rights {
+ VideoPublicAccessParams public_access = 2000;
+ VideoAuthSystemAccessParams auth_system_access = 2002;
+ }
+}
+
+message UpdateVideoMetadata {
+ // ID of the video.
+ string video_id = 1;
+}
+
+message DeleteVideoRequest {
+ // ID of the video.
+ string video_id = 1;
+}
+
+message DeleteVideoMetadata {
+ // ID of the video.
+ string video_id = 1;
+}
+
+message PerformVideoActionRequest {
+ // ID of the video.
+ string video_id = 1;
+ reserved 2 to 999;
+ oneof action {
+ PublishVideoAction publish = 1000;
+ UnpublishVideoAction unpublish = 1001;
+ }
+}
+
+message PublishVideoAction {}
+
+message UnpublishVideoAction {}
+
+message PerformVideoActionMetadata {
+ // ID of the video.
+ string video_id = 1;
+}
+
+message GetVideoPlayerURLRequest {
+ // ID of the video.
+ string video_id = 1;
+ VideoPlayerParams params = 2;
+}
+
+message VideoPlayerParams {
+ // If true, a player will be muted by default.
+ bool mute = 1;
+ // If true, playback will start automatically.
+ bool autoplay = 2;
+ // If true, a player interface will be hidden by default.
+ bool hidden = 3;
+}
+
+message GetVideoPlayerURLResponse {
+ // Direct link to the video.
+ string player_url = 1;
+ // HTML embed code in Iframe format.
+ string html = 2;
+}