// 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.livestream.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/livestream/v1/resources.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.Video.LiveStream.V1"; option go_package = "cloud.google.com/go/video/livestream/apiv1/livestreampb;livestreampb"; option java_multiple_files = true; option java_outer_classname = "ServiceProto"; option java_package = "com.google.cloud.video.livestream.v1"; option php_namespace = "Google\\Cloud\\Video\\LiveStream\\V1"; option ruby_package = "Google::Cloud::Video::LiveStream::V1"; option (google.api.resource_definition) = { type: "secretmanager.googleapis.com/SecretVersion" pattern: "projects/{project}/secrets/{secret}/versions/{version}" }; // Using Live Stream API, you can generate live streams in the various // renditions and streaming formats. The streaming format include HTTP Live // Streaming (HLS) and Dynamic Adaptive Streaming over HTTP (DASH). You can send // a source stream in the various ways, including Real-Time Messaging // Protocol (RTMP) and Secure Reliable Transport (SRT). service LivestreamService { option (google.api.default_host) = "livestream.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; // Creates a channel with the provided unique ID in the specified // region. rpc CreateChannel(CreateChannelRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/channels" body: "channel" }; option (google.api.method_signature) = "parent,channel,channel_id"; option (google.longrunning.operation_info) = { response_type: "Channel" metadata_type: "OperationMetadata" }; } // Returns a list of all channels in the specified region. rpc ListChannels(ListChannelsRequest) returns (ListChannelsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/channels" }; option (google.api.method_signature) = "parent"; } // Returns the specified channel. rpc GetChannel(GetChannelRequest) returns (Channel) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/channels/*}" }; option (google.api.method_signature) = "name"; } // Deletes the specified channel. rpc DeleteChannel(DeleteChannelRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/channels/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } // Updates the specified channel. rpc UpdateChannel(UpdateChannelRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1/{channel.name=projects/*/locations/*/channels/*}" body: "channel" }; option (google.api.method_signature) = "channel,update_mask"; option (google.longrunning.operation_info) = { response_type: "Channel" metadata_type: "OperationMetadata" }; } // Starts the specified channel. Part of the video pipeline will be created // only when the StartChannel request is received by the server. rpc StartChannel(StartChannelRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=projects/*/locations/*/channels/*}:start" body: "*" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "ChannelOperationResponse" metadata_type: "OperationMetadata" }; } // Stops the specified channel. Part of the video pipeline will be released // when the StopChannel request is received by the server. rpc StopChannel(StopChannelRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=projects/*/locations/*/channels/*}:stop" body: "*" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "ChannelOperationResponse" metadata_type: "OperationMetadata" }; } // Creates an input with the provided unique ID in the specified region. rpc CreateInput(CreateInputRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/inputs" body: "input" }; option (google.api.method_signature) = "parent,input,input_id"; option (google.longrunning.operation_info) = { response_type: "Input" metadata_type: "OperationMetadata" }; } // Returns a list of all inputs in the specified region. rpc ListInputs(ListInputsRequest) returns (ListInputsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/inputs" }; option (google.api.method_signature) = "parent"; } // Returns the specified input. rpc GetInput(GetInputRequest) returns (Input) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/inputs/*}" }; option (google.api.method_signature) = "name"; } // Deletes the specified input. rpc DeleteInput(DeleteInputRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/inputs/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } // Updates the specified input. rpc UpdateInput(UpdateInputRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1/{input.name=projects/*/locations/*/inputs/*}" body: "input" }; option (google.api.method_signature) = "input,update_mask"; option (google.longrunning.operation_info) = { response_type: "Input" metadata_type: "OperationMetadata" }; } // Creates an event with the provided unique ID in the specified channel. rpc CreateEvent(CreateEventRequest) returns (Event) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*/channels/*}/events" body: "event" }; option (google.api.method_signature) = "parent,event,event_id"; } // Returns a list of all events in the specified channel. rpc ListEvents(ListEventsRequest) returns (ListEventsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*/channels/*}/events" }; option (google.api.method_signature) = "parent"; } // Returns the specified event. rpc GetEvent(GetEventRequest) returns (Event) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/channels/*/events/*}" }; option (google.api.method_signature) = "name"; } // Deletes the specified event. rpc DeleteEvent(DeleteEventRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/channels/*/events/*}" }; option (google.api.method_signature) = "name"; } } // Request message for "LivestreamService.CreateChannel". message CreateChannelRequest { // Required. The parent location for the resource, in the form of: // `projects/{project}/locations/{location}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "livestream.googleapis.com/Channel" } ]; // Required. The channel resource to be created. Channel channel = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The ID of the channel resource to be created. // This value must be 1-63 characters, begin and end with `[a-z0-9]`, // could contain dashes (-) in between. string channel_id = 3 [(google.api.field_behavior) = REQUIRED]; // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore // the request if it has already been completed. The server will guarantee // that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and the // request times out. If you make the request again with the same request ID, // the server can check if original operation with the same request ID was // received, and if so, will ignore the second request. This prevents clients // from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported `(00000000-0000-0000-0000-000000000000)`. string request_id = 4; } // Request message for "LivestreamService.ListChannels". message ListChannelsRequest { // Required. The parent location for the resource, in the form of: // `projects/{project}/locations/{location}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "livestream.googleapis.com/Channel" } ]; // The maximum number of items to return. If unspecified, server // will pick an appropriate default. Server may return fewer items than // requested. A caller should only rely on response's // [next_page_token][google.cloud.video.livestream.v1.ListChannelsResponse.next_page_token] // to determine if there are more items left to be queried. int32 page_size = 2; // The next_page_token value returned from a previous List request, if any. string page_token = 3; // The filter to apply to list results. string filter = 4; // Specifies the ordering of results following syntax at // https://cloud.google.com/apis/design/design_patterns#sorting_order. string order_by = 5; } // Response message for "LivestreamService.ListChannels". message ListChannelsResponse { // A list of channels. repeated Channel channels = 1; // Token to retrieve the next page of results, or empty if there are no more // results in the list. string next_page_token = 2; // Locations that could not be reached. repeated string unreachable = 3; } // Request message for "LivestreamService.GetChannel". message GetChannelRequest { // Required. The name of the channel resource, in the form of: // `projects/{project}/locations/{location}/channels/{channelId}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "livestream.googleapis.com/Channel" } ]; } // Request message for "LivestreamService.DeleteChannel". message DeleteChannelRequest { // Required. The name of the channel resource, in the form of: // `projects/{project}/locations/{location}/channels/{channelId}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "livestream.googleapis.com/Channel" } ]; // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore // the request if it has already been completed. The server will guarantee // that for at least 60 minutes after the first request. // // For example, consider a situation where you make an initial request and the // request times out. If you make the request again with the same request ID, // the server can check if original operation with the same request ID was // received, and if so, will ignore the second request. This prevents clients // from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported `(00000000-0000-0000-0000-000000000000)`. string request_id = 2; // If the `force` field is set to the default value of `false`, you must // delete all of a channel's events before you can delete the channel itself. // If the field is set to `true`, requests to delete a channel also delete // associated channel events. bool force = 3; } // Request message for "LivestreamService.UpdateChannel". message UpdateChannelRequest { // Field mask is used to specify the fields to be overwritten in the Channel // resource by the update. You can only update the following fields: // // * [`inputAttachments`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.channels#inputattachment) // * [`inputConfig`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.channels#inputconfig) // * [`output`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.channels#output) // * [`elementaryStreams`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.channels#elementarystream) // * [`muxStreams`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.channels#muxstream) // * [`manifests`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.channels#manifest) // * [`spriteSheets`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.channels#spritesheet) // * [`logConfig`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.channels#logconfig) // * [`timecodeConfig`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.channels#timecodeconfig) // * [`encryptions`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.channels#encryption) // // The fields specified in the update_mask are relative to the resource, not // the full request. A field will be overwritten if it is in the mask. // // If the mask is not present, then each field from the list above is updated // if the field appears in the request payload. To unset a field, add the // field to the update mask and remove it from the request payload. google.protobuf.FieldMask update_mask = 1; // Required. The channel resource to be updated. Channel channel = 2 [(google.api.field_behavior) = REQUIRED]; // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore // the request if it has already been completed. The server will guarantee // that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and the // request times out. If you make the request again with the same request ID, // the server can check if original operation with the same request ID was // received, and if so, will ignore the second request. This prevents clients // from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported `(00000000-0000-0000-0000-000000000000)`. string request_id = 3; } // Request message for "LivestreamService.StartChannel". message StartChannelRequest { // Required. The name of the channel resource, in the form of: // `projects/{project}/locations/{location}/channels/{channelId}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "livestream.googleapis.com/Channel" } ]; // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore // the request if it has already been completed. The server will guarantee // that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and the // request times out. If you make the request again with the same request ID, // the server can check if original operation with the same request ID was // received, and if so, will ignore the second request. This prevents clients // from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported `(00000000-0000-0000-0000-000000000000)`. string request_id = 2; } // Request message for "LivestreamService.StopChannel". message StopChannelRequest { // Required. The name of the channel resource, in the form of: // `projects/{project}/locations/{location}/channels/{channelId}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "livestream.googleapis.com/Channel" } ]; // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore // the request if it has already been completed. The server will guarantee // that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and the // request times out. If you make the request again with the same request ID, // the server can check if original operation with the same request ID was // received, and if so, will ignore the second request. This prevents clients // from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported `(00000000-0000-0000-0000-000000000000)`. string request_id = 2; } // Request message for "LivestreamService.CreateInput". message CreateInputRequest { // Required. The parent location for the resource, in the form of: // `projects/{project}/locations/{location}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "livestream.googleapis.com/Input" } ]; // Required. The input resource to be created. Input input = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The ID of the input resource to be created. // This value must be 1-63 characters, begin and end with `[a-z0-9]`, // could contain dashes (-) in between. string input_id = 3 [(google.api.field_behavior) = REQUIRED]; // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore // the request if it has already been completed. The server will guarantee // that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and the // request times out. If you make the request again with the same request ID, // the server can check if original operation with the same request ID was // received, and if so, will ignore the second request. This prevents clients // from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported `(00000000-0000-0000-0000-000000000000)`. string request_id = 4; } // Request message for "LivestreamService.ListInputs". message ListInputsRequest { // Required. The parent location for the resource, in the form of: // `projects/{project}/locations/{location}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "livestream.googleapis.com/Input" } ]; // The maximum number of items to return. If unspecified, server // will pick an appropriate default. Server may return fewer items than // requested. A caller should only rely on response's // [next_page_token][google.cloud.video.livestream.v1.ListInputsResponse.next_page_token] // to determine if there are more items left to be queried. int32 page_size = 2; // The next_page_token value returned from a previous List request, if any. string page_token = 3; // The filter to apply to list results. string filter = 4; // Specifies the ordering of results following syntax at [Sorting // Order](https://cloud.google.com/apis/design/design_patterns#sorting_order). string order_by = 5; } // Response message for "LivestreamService.ListInputs". message ListInputsResponse { // A list of inputs. repeated Input inputs = 1; // Token to retrieve the next page of results, or empty if there are no more // results in the list. string next_page_token = 2; // Locations that could not be reached. repeated string unreachable = 3; } // Request message for "LivestreamService.GetInput". message GetInputRequest { // Required. The name of the input resource, in the form of: // `projects/{project}/locations/{location}/inputs/{inputId}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "livestream.googleapis.com/Input" } ]; } // Request message for "LivestreamService.DeleteInput". message DeleteInputRequest { // Required. The name of the input resource, in the form of: // `projects/{project}/locations/{location}/inputs/{inputId}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "livestream.googleapis.com/Input" } ]; // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore // the request if it has already been completed. The server will guarantee // that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and the // request times out. If you make the request again with the same request ID, // the server can check if original operation with the same request ID was // received, and if so, will ignore the second request. This prevents clients // from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported `(00000000-0000-0000-0000-000000000000)`. string request_id = 2; } // Request message for "LivestreamService.UpdateInput". message UpdateInputRequest { // Field mask is used to specify the fields to be overwritten in the Input // resource by the update. You can only update the following fields: // // * [`preprocessingConfig`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.inputs#PreprocessingConfig) // * [`securityRules`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.inputs#SecurityRule) // // The fields specified in the update_mask are relative to the resource, not // the full request. A field will be overwritten if it is in the mask. // // If the mask is not present, then each field from the list above is updated // if the field appears in the request payload. To unset a field, add the // field to the update mask and remove it from the request payload. google.protobuf.FieldMask update_mask = 1; // Required. The input resource to be updated. Input input = 2 [(google.api.field_behavior) = REQUIRED]; // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore // the request if it has already been completed. The server will guarantee // that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and the // request times out. If you make the request again with the same request ID, // the server can check if original operation with the same request ID was // received, and if so, will ignore the second request. This prevents clients // from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported `(00000000-0000-0000-0000-000000000000)`. string request_id = 3; } // Request message for "LivestreamService.CreateEvent". message CreateEventRequest { // Required. The parent channel for the resource, in the form of: // `projects/{project}/locations/{location}/channels/{channelId}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "livestream.googleapis.com/Event" } ]; // Required. The event resource to be created. Event event = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The ID of the event resource to be created. // This value must be 1-63 characters, begin and end with `[a-z0-9]`, // could contain dashes (-) in between. string event_id = 3 [(google.api.field_behavior) = REQUIRED]; // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore // the request if it has already been completed. The server will guarantee // that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and the // request times out. If you make the request again with the same request ID, // the server can check if original operation with the same request ID was // received, and if so, will ignore the second request. This prevents clients // from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported `(00000000-0000-0000-0000-000000000000)`. string request_id = 4; } // Request message for "LivestreamService.ListEvents". message ListEventsRequest { // Required. The parent channel for the resource, in the form of: // `projects/{project}/locations/{location}/channels/{channelId}`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "livestream.googleapis.com/Event" } ]; // The maximum number of items to return. If unspecified, server // will pick an appropriate default. Server may return fewer items than // requested. A caller should only rely on response's // [next_page_token][google.cloud.video.livestream.v1.ListEventsResponse.next_page_token] // to determine if there are more items left to be queried. int32 page_size = 2; // The next_page_token value returned from a previous List request, if any. string page_token = 3; // The filter to apply to list results. string filter = 4; // Specifies the ordering of results following syntax at // https://cloud.google.com/apis/design/design_patterns#sorting_order. string order_by = 5; } // Response message for "LivestreamService.ListEvents". message ListEventsResponse { // A list of events. repeated Event events = 1; // Token to retrieve the next page of results, or empty if there are no more // results in the list. string next_page_token = 2; // Locations that could not be reached. repeated string unreachable = 3; } // Request message for "LivestreamService.GetEvent". message GetEventRequest { // Required. The name of the event resource, in the form of: // `projects/{project}/locations/{location}/channels/{channelId}/events/{eventId}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "livestream.googleapis.com/Event" } ]; } // Request message for "LivestreamService.DeleteEvent". message DeleteEventRequest { // Required. The name of the event resource, in the form of: // `projects/{project}/locations/{location}/channels/{channelId}/events/{eventId}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "livestream.googleapis.com/Event" } ]; // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore // the request if it has already been completed. The server will guarantee // that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and the // request times out. If you make the request again with the same request ID, // the server can check if original operation with the same request ID was // received, and if so, will ignore the second request. This prevents clients // from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported `(00000000-0000-0000-0000-000000000000)`. string request_id = 2; } // Response message for Start/Stop Channel long-running operations. message ChannelOperationResponse {} // Represents the metadata of the long-running operation. message OperationMetadata { // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Server-defined resource path for the target of the operation. string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Name of the verb executed by the operation. string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Identifies whether the user has requested cancellation // of the operation. Operations that have successfully been cancelled // have [Operation.error][] value with a // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to // `Code.CANCELLED`. bool requested_cancellation = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. API version used to start the operation. string api_version = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; }