{
  "schemas": {
    "ElementaryStream": {
      "description": "Encoding of an input element such as an audio, video, or text track. Elementary streams must be packaged before mapping and sharing between different output formats.",
      "id": "ElementaryStream",
      "type": "object",
      "properties": {
        "key": {
          "description": "A unique key for this elementary stream. The key must be 1-63 characters in length. The key must begin and end with a letter (regardless of case) or a number, but can contain dashes or underscores in between.",
          "type": "string"
        },
        "videoStream": {
          "description": "Encoding of a video stream.",
          "$ref": "VideoStream"
        },
        "audioStream": {
          "$ref": "AudioStream",
          "description": "Encoding of an audio stream."
        },
        "textStream": {
          "$ref": "TextStream",
          "description": "Encoding of a text stream. For example, closed captions or subtitles."
        }
      }
    },
    "ClipManifest": {
      "type": "object",
      "properties": {
        "manifestKey": {
          "description": "Required. A unique key that identifies a manifest config in the parent channel. This key is the same as `channel.manifests.key` for the selected manifest.",
          "type": "string"
        },
        "outputUri": {
          "description": "Output only. The output URI of the generated clip manifest. This field will be populated when the CreateClip request is accepted. Current output format is provided below but may change in the future. Please read this field to get the uri to the generated clip manifest. Format: {clip.output_uri}/{channel.manifest.fileName} Example: gs://my-bucket/clip-outputs/main.m3u8",
          "readOnly": true,
          "type": "string"
        }
      },
      "id": "ClipManifest",
      "description": "ClipManifest identifies a source manifest for the generated clip manifest."
    },
    "VideoFormat": {
      "description": "Properties of the video format.",
      "type": "object",
      "properties": {
        "heightPixels": {
          "type": "integer",
          "description": "The height of the video stream in pixels.",
          "format": "int32"
        },
        "frameRate": {
          "format": "double",
          "description": "The frame rate of the input video stream.",
          "type": "number"
        },
        "codec": {
          "type": "string",
          "description": "Video codec used in this video stream."
        },
        "widthPixels": {
          "type": "integer",
          "format": "int32",
          "description": "The width of the video stream in pixels."
        }
      },
      "id": "VideoFormat"
    },
    "DvrWindow": {
      "description": "DvrWindow represents a DVR window.",
      "type": "object",
      "properties": {
        "timeInterval": {
          "$ref": "TimeInterval",
          "description": "A time interval in the form of a tuple of Unix epoch time."
        }
      },
      "id": "DvrWindow"
    },
    "AudioFormat": {
      "id": "AudioFormat",
      "type": "object",
      "properties": {
        "channelLayout": {
          "description": "A list of channel names specifying the layout of the audio channels.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "codec": {
          "description": "Audio codec used in this audio stream.",
          "type": "string"
        },
        "channelCount": {
          "description": "The number of audio channels.",
          "format": "int32",
          "type": "integer"
        }
      },
      "description": "Properties of the audio format."
    },
    "TextStream": {
      "description": "Encoding of a text stream. For example, closed captions or subtitles.",
      "id": "TextStream",
      "type": "object",
      "properties": {
        "outputCeaChannel": {
          "type": "string",
          "description": "Optional. The channel of the closed caption in the output stream. This field should only be set when textstream is used for partner distribution. Must be one of `CC1`, `CC2`, `CC3`, and `CC4`, if the codec is `cea608`; Must be one between `SERVICE1` and `SERVICE63`, if the codec is `cea708`."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. The name for this particular text stream that will be added to the HLS/DASH manifest."
        },
        "codec": {
          "type": "string",
          "description": "Required. The codec for this text stream. Supported text codecs: - `cea608` - `cea708` - `webvtt`"
        },
        "mapping": {
          "description": "Optional. The mapping for the input streams and text tracks.",
          "type": "array",
          "items": {
            "$ref": "TextMapping"
          }
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The BCP-47 language code, such as `en-US` or `sr-Latn`. For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier."
        }
      }
    },
    "Audio": {
      "type": "object",
      "properties": {
        "lufs": {
          "format": "double",
          "description": "Specify audio loudness normalization in loudness units relative to full scale (LUFS). Enter a value between -24 and 0 according to the following: - -24 is the Advanced Television Systems Committee (ATSC A/85) - -23 is the EU R128 broadcast standard - -19 is the prior standard for online mono audio - -18 is the ReplayGain standard - -16 is the prior standard for stereo audio - -14 is the new online audio standard recommended by Spotify, as well as Amazon Echo - 0 disables normalization. The default is 0.",
          "type": "number"
        }
      },
      "id": "Audio",
      "description": "Audio preprocessing configuration."
    },
    "StartChannelRequest": {
      "id": "StartChannelRequest",
      "type": "object",
      "properties": {
        "requestId": {
          "type": "string",
          "description": "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)`."
        }
      },
      "description": "Request message for \"LivestreamService.StartChannel\"."
    },
    "AudioStream": {
      "type": "object",
      "properties": {
        "channelCount": {
          "type": "integer",
          "description": "Number of audio channels. Must be between 1 and 6. The default is 2.",
          "format": "int32"
        },
        "transmux": {
          "type": "boolean",
          "description": "Specifies whether pass through (transmuxing) is enabled or not. If set to `true`, the rest of the settings, other than `mapping`, will be ignored. The default is `false`."
        },
        "channelLayout": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of channel names specifying layout of the audio channels. This only affects the metadata embedded in the container headers, if supported by the specified format. The default is `[fl, fr]`. Supported channel names: - `fl` - Front left channel - `fr` - Front right channel - `sl` - Side left channel - `sr` - Side right channel - `fc` - Front center channel - `lfe` - Low frequency"
        },
        "sampleRateHertz": {
          "description": "The audio sample rate in Hertz. The default is 48000 Hertz.",
          "format": "int32",
          "type": "integer"
        },
        "mapping": {
          "description": "The mapping for the input streams and audio channels.",
          "type": "array",
          "items": {
            "$ref": "AudioMapping"
          }
        },
        "codec": {
          "description": "The codec for this audio stream. The default is `aac`. Supported audio codecs: - `aac`",
          "type": "string"
        },
        "bitrateBps": {
          "format": "int32",
          "description": "Required. Audio bitrate in bits per second. Must be between 1 and 10,000,000.",
          "type": "integer"
        }
      },
      "id": "AudioStream",
      "description": "Audio stream resource."
    },
    "VideoAsset": {
      "id": "VideoAsset",
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "description": "Cloud Storage URI of the video. The format is `gs://my-bucket/my-object`."
        }
      },
      "description": "VideoAsset represents a video. The supported formats are MP4, MPEG-TS, and FLV. The supported video codec is H264. The supported audio codecs are AAC, AC3, MP2, and MP3."
    },
    "MpegCommonEncryption": {
      "type": "object",
      "properties": {
        "scheme": {
          "description": "Required. Specify the encryption scheme, supported schemes: - `cenc` - AES-CTR subsample - `cbcs`- AES-CBC subsample pattern",
          "type": "string"
        }
      },
      "id": "MpegCommonEncryption",
      "description": "Configuration for MPEG-Dash Common Encryption (MPEG-CENC)."
    },
    "AudioMapping": {
      "description": "The mapping for the input streams and audio channels.",
      "id": "AudioMapping",
      "type": "object",
      "properties": {
        "inputTrack": {
          "type": "integer",
          "description": "Required. The zero-based index of the track in the input stream. All mappings in the same AudioStream must have the same input track.",
          "format": "int32"
        },
        "inputChannel": {
          "format": "int32",
          "description": "Required. The zero-based index of the channel in the input stream.",
          "type": "integer"
        },
        "gainDb": {
          "type": "number",
          "format": "double",
          "description": "Audio volume control in dB. Negative values decrease volume, positive values increase. The default is 0."
        },
        "outputChannel": {
          "description": "Required. The zero-based index of the channel in the output audio stream. Must be consistent with the input_channel.",
          "format": "int32",
          "type": "integer"
        },
        "inputKey": {
          "description": "Required. The `Channel` InputAttachment.key that identifies the input that this audio mapping applies to. If an active input doesn't have an audio mapping, the primary audio track in the input stream will be selected.",
          "type": "string"
        }
      }
    },
    "SpriteSheet": {
      "description": "Sprite sheet configuration.",
      "type": "object",
      "properties": {
        "spriteWidthPixels": {
          "type": "integer",
          "description": "Required. The width of the sprite in pixels. Must be an even integer.",
          "format": "int32"
        },
        "format": {
          "type": "string",
          "description": "Format type. The default is `jpeg`. Supported formats: - `jpeg`"
        },
        "interval": {
          "type": "string",
          "format": "google-duration",
          "description": "Create sprites at regular intervals. Valid range is [1 second, 1 hour] and the default value is `10s`."
        },
        "spriteHeightPixels": {
          "description": "Required. The height of the sprite in pixels. Must be an even integer.",
          "format": "int32",
          "type": "integer"
        },
        "filePrefix": {
          "type": "string",
          "description": "Required. File name prefix for the generated sprite sheets. If multiple sprite sheets are added to the channel, each must have a unique file prefix. Each sprite sheet has an incremental 10-digit zero-padded suffix starting from 0 before the extension, such as `sprite_sheet0000000123.jpeg`."
        },
        "columnCount": {
          "description": "The maximum number of sprites per row in a sprite sheet. Valid range is [1, 10] and the default value is 1.",
          "format": "int32",
          "type": "integer"
        },
        "rowCount": {
          "format": "int32",
          "description": "The maximum number of rows per sprite sheet. When the sprite sheet is full, a new sprite sheet is created. Valid range is [1, 10] and the default value is 1.",
          "type": "integer"
        },
        "quality": {
          "type": "integer",
          "format": "int32",
          "description": "The quality of the generated sprite sheet. Enter a value between 1 and 100, where 1 is the lowest quality and 100 is the highest quality. The default is 100. A high quality value corresponds to a low image data compression ratio."
        }
      },
      "id": "SpriteSheet"
    },
    "InputSwitchTask": {
      "type": "object",
      "properties": {
        "inputKey": {
          "description": "The InputAttachment.key of the input to switch to.",
          "type": "string"
        }
      },
      "id": "InputSwitchTask",
      "description": "Switches to another input stream. Automatic failover is then disabled."
    },
    "Fairplay": {
      "id": "Fairplay",
      "type": "object",
      "properties": {},
      "description": "Fairplay configuration."
    },
    "EncryptionUpdate": {
      "description": "Encryption setting when updating encryption.",
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Required. Identifier for the encryption option to be updated."
        },
        "secretManagerKeySource": {
          "$ref": "SecretManagerSource",
          "description": "For keys stored in Google Secret Manager."
        }
      },
      "id": "EncryptionUpdate"
    },
    "ListChannelsResponse": {
      "description": "Response message for \"LivestreamService.ListChannels\".",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
          "type": "string"
        },
        "channels": {
          "description": "A list of channels.",
          "type": "array",
          "items": {
            "$ref": "Channel"
          }
        },
        "unreachable": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Locations that could not be reached."
        }
      },
      "id": "ListChannelsResponse"
    },
    "Slice": {
      "description": "Slice represents a slice of the requested clip.",
      "type": "object",
      "properties": {
        "timeSlice": {
          "$ref": "TimeSlice",
          "description": "A slice in form of a tuple of Unix epoch time."
        }
      },
      "id": "Slice"
    },
    "PreviewInputRequest": {
      "type": "object",
      "properties": {},
      "id": "PreviewInputRequest",
      "description": "Request message for \"LivestreamService.PreviewInput\""
    },
    "TextMapping": {
      "description": "The mapping for the input streams and text tracks.",
      "type": "object",
      "properties": {
        "inputCeaChannel": {
          "description": "Optional. The channel of the closed caption in the input stream. If this field is set, the output codec must be `webvtt`. Must be one of `CC1`, `CC2`, `CC3`, and `CC4`, if the codec of the input closed caption is `cea608`; Must be one between `SERVICE1` and `SERVICE64`, if the codec of the input closed caption is `cea708`.",
          "type": "string"
        },
        "inputKey": {
          "description": "Optional. The `Channel` InputAttachment.key that identifies the input that this text mapping applies to.",
          "type": "string"
        },
        "fromLanguageCode": {
          "description": "Optional. The BCP-47 source language code, such as `en-US` or `sr-Latn`. If differ from the textStream's language code, enable translation. For more information on BCP-47 language codes, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
          "type": "string"
        },
        "inputTrack": {
          "type": "integer",
          "format": "int32",
          "description": "Optional. The zero-based index of the track in the input stream."
        }
      },
      "id": "TextMapping"
    },
    "OperationMetadata": {
      "description": "Represents the metadata of the long-running operation.",
      "id": "OperationMetadata",
      "type": "object",
      "properties": {
        "createTime": {
          "format": "google-datetime",
          "description": "Output only. The time the operation was created.",
          "readOnly": true,
          "type": "string"
        },
        "requestedCancellation": {
          "description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
          "readOnly": true,
          "type": "boolean"
        },
        "verb": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Name of the verb executed by the operation."
        },
        "apiVersion": {
          "description": "Output only. API version used to start the operation.",
          "readOnly": true,
          "type": "string"
        },
        "endTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The time the operation finished running.",
          "format": "google-datetime"
        },
        "target": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Server-defined resource path for the target of the operation."
        }
      }
    },
    "ListOperationsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "The standard List next-page token.",
          "type": "string"
        },
        "unreachable": {
          "description": "Unordered list. Unreachable resources. Populated when the request sets `ListOperationsRequest.return_partial_success` and reads across collections. For example, when attempting to list all resources across all supported locations.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "operations": {
          "description": "A list of operations that matches the specified filter in the request.",
          "type": "array",
          "items": {
            "$ref": "Operation"
          }
        }
      },
      "id": "ListOperationsResponse",
      "description": "The response message for Operations.ListOperations."
    },
    "Location": {
      "type": "object",
      "properties": {
        "displayName": {
          "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
          "type": "string"
        },
        "locationId": {
          "type": "string",
          "description": "The canonical id for this location. For example: `\"us-east1\"`."
        },
        "name": {
          "type": "string",
          "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          },
          "description": "Service-specific metadata. For example the available capacity at the given location."
        }
      },
      "id": "Location",
      "description": "A resource that represents a Google Cloud location."
    },
    "Encryption": {
      "description": "Encryption settings.",
      "type": "object",
      "properties": {
        "secretManagerKeySource": {
          "$ref": "SecretManagerSource",
          "description": "For keys stored in Google Secret Manager."
        },
        "drmSystems": {
          "description": "Required. Configuration for DRM systems.",
          "$ref": "DrmSystems"
        },
        "mpegCenc": {
          "description": "Configuration for MPEG-Dash Common Encryption (MPEG-CENC).",
          "$ref": "MpegCommonEncryption"
        },
        "aes128": {
          "description": "Configuration for HLS AES-128 encryption.",
          "$ref": "Aes128Encryption"
        },
        "sampleAes": {
          "description": "Configuration for HLS SAMPLE-AES encryption.",
          "$ref": "SampleAesEncryption"
        },
        "id": {
          "type": "string",
          "description": "Required. Identifier for this set of encryption options. The ID must be 1-63 characters in length. The ID must begin and end with a letter (regardless of case) or a number, but can contain dashes or underscores in between."
        }
      },
      "id": "Encryption"
    },
    "Output": {
      "description": "Location of output file(s) in a Google Cloud Storage bucket.",
      "id": "Output",
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "description": "URI for the output file(s). For example, `gs://my-bucket/outputs/`."
        }
      }
    },
    "ListEventsResponse": {
      "id": "ListEventsResponse",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "Token to retrieve the next page of results, or empty if there are no more results in the list."
        },
        "events": {
          "type": "array",
          "items": {
            "$ref": "Event"
          },
          "description": "A list of events."
        },
        "unreachable": {
          "description": "Locations that could not be reached.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "Response message for \"LivestreamService.ListEvents\"."
    },
    "DistributionStream": {
      "description": "Multiplexing settings for output streams used in Distribution.",
      "type": "object",
      "properties": {
        "container": {
          "description": "Required. The container format. Supported container formats: - `ts`, must contain exactly one audio stream and up to one video stream. - `flv`, must contain at most one audio stream and at most one video stream.",
          "type": "string"
        },
        "key": {
          "description": "Required. A unique key for this distribution stream. The key must be 1-63 characters in length. The key must begin and end with a letter (regardless of case) or a number, but can contain dashes or underscores in between.",
          "type": "string"
        },
        "elementaryStreams": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required. List of `ElementaryStream` keys multiplexed in this stream. Must contain at least one audio stream and up to one video stream."
        }
      },
      "id": "DistributionStream"
    },
    "StartDistributionRequest": {
      "description": "Request message for \"LivestreamService.StartDistribution\".",
      "type": "object",
      "properties": {
        "distributionKeys": {
          "description": "Optional. A list of keys to identify the distribution configuration in the channel resource. If left empty, all the distributions in the channel specification will be started.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "requestId": {
          "description": "Optional. 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)`.",
          "type": "string"
        }
      },
      "id": "StartDistributionRequest"
    },
    "TimeSlice": {
      "description": "TimeSlice represents a tuple of Unix epoch timestamps that specifies a time range.",
      "type": "object",
      "properties": {
        "markinTime": {
          "description": "The mark-in Unix epoch time in the original live stream manifest.",
          "format": "google-datetime",
          "type": "string"
        },
        "markoutTime": {
          "format": "google-datetime",
          "description": "The mark-out Unix epoch time in the original live stream manifest.",
          "type": "string"
        }
      },
      "id": "TimeSlice"
    },
    "ListInputsResponse": {
      "description": "Response message for \"LivestreamService.ListInputs\".",
      "id": "ListInputsResponse",
      "type": "object",
      "properties": {
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "Input"
          },
          "description": "A list of inputs."
        },
        "nextPageToken": {
          "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
          "type": "string"
        },
        "unreachable": {
          "description": "Locations that could not be reached.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "PreprocessingConfig": {
      "type": "object",
      "properties": {
        "crop": {
          "description": "Specify the video cropping configuration.",
          "$ref": "Crop"
        },
        "pad": {
          "description": "Specify the video pad filter configuration.",
          "$ref": "Pad"
        },
        "audio": {
          "description": "Audio preprocessing configuration.",
          "$ref": "Audio"
        }
      },
      "id": "PreprocessingConfig",
      "description": "Preprocessing configurations."
    },
    "H264CodecSettings": {
      "description": "H264 codec settings.",
      "id": "H264CodecSettings",
      "type": "object",
      "properties": {
        "bPyramid": {
          "description": "Allow B-pyramid for reference frame selection. This may not be supported on all decoders. The default is `false`.",
          "type": "boolean"
        },
        "tune": {
          "type": "string",
          "description": "Enforces the specified codec tune. The available options are [FFmpeg-compatible Encode Options](https://trac.ffmpeg.org/wiki/Encode/H.264#Tune) Note that certain values for this field may cause the transcoder to override other fields you set in the H264CodecSettings message."
        },
        "entropyCoder": {
          "type": "string",
          "description": "The entropy coder to use. The default is `cabac`. Supported entropy coders: - `cavlc` - `cabac`"
        },
        "aqStrength": {
          "description": "Specify the intensity of the adaptive quantizer (AQ). Must be between 0 and 1, where 0 disables the quantizer and 1 maximizes the quantizer. A higher value equals a lower bitrate but smoother image. The default is 0.",
          "format": "double",
          "type": "number"
        },
        "gopDuration": {
          "format": "google-duration",
          "description": "Select the GOP size based on the specified duration. The default is `2s`. Note that `gopDuration` must be less than or equal to segment_duration, and segment_duration must be divisible by `gopDuration`. Valid range is [2s, 20s]. All video streams in the same channel must have the same GOP size.",
          "type": "string"
        },
        "vbvSizeBits": {
          "type": "integer",
          "description": "Size of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to bitrate_bps.",
          "format": "int32"
        },
        "bFrameCount": {
          "type": "integer",
          "format": "int32",
          "description": "The number of consecutive B-frames. Must be greater than or equal to zero. Must be less than gop_frame_count if set. The default is 0."
        },
        "bitrateBps": {
          "type": "integer",
          "description": "Required. The video bitrate in bits per second. Minimum value is 10,000. - For SD resolution (\u003c 720p), must be \u003c= 3,000,000 (3 Mbps). - For HD resolution (\u003c= 1080p), must be \u003c= 15,000,000 (15 Mbps). - For UHD resolution (\u003c= 2160p), must be \u003c= 25,000,000 (25 Mbps).",
          "format": "int32"
        },
        "allowOpenGop": {
          "description": "Specifies whether an open Group of Pictures (GOP) structure should be allowed or not. The default is `false`.",
          "type": "boolean"
        },
        "vbvFullnessBits": {
          "type": "integer",
          "description": "Initial fullness of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to 90% of vbv_size_bits.",
          "format": "int32"
        },
        "frameRate": {
          "format": "double",
          "description": "Required. The target video frame rate in frames per second (FPS). Must be less than or equal to 60. Will default to the input frame rate if larger than the input frame rate. The API will generate an output FPS that is divisible by the input FPS, and smaller or equal to the target FPS. See [Calculating frame rate](https://cloud.google.com/transcoder/docs/concepts/frame-rate) for more information.",
          "type": "number"
        },
        "widthPixels": {
          "type": "integer",
          "format": "int32",
          "description": "Required. The width of the video in pixels. Must be an even integer. Valid range is [320, 4096]."
        },
        "heightPixels": {
          "format": "int32",
          "description": "Required. The height of the video in pixels. Must be an even integer. Valid range is [180, 2160].",
          "type": "integer"
        },
        "profile": {
          "type": "string",
          "description": "Enforces the specified codec profile. The following profiles are supported: * `baseline` * `main` (default) * `high` The available options are [FFmpeg-compatible Profile Options](https://trac.ffmpeg.org/wiki/Encode/H.264#Profile). Note that certain values for this field may cause the transcoder to override other fields you set in the H264CodecSettings message."
        },
        "gopFrameCount": {
          "type": "integer",
          "format": "int32",
          "description": "Select the GOP size based on the specified frame count. If GOP frame count is set instead of GOP duration, GOP duration will be calculated by `gopFrameCount`/`frameRate`. The calculated GOP duration must satisfy the limitations on `gopDuration` as well. Valid range is [60, 600]."
        }
      }
    },
    "InputAttachment": {
      "description": "A group of information for attaching an input resource to this channel.",
      "type": "object",
      "properties": {
        "automaticFailover": {
          "description": "Automatic failover configurations.",
          "$ref": "AutomaticFailover"
        },
        "key": {
          "type": "string",
          "description": "A unique key for this input attachment. The key must be 1-63 characters in length. The key must begin and end with a letter (regardless of case) or a number, but can contain dashes or underscores in between."
        },
        "input": {
          "description": "The resource name of an existing input, in the form of: `projects/{project}/locations/{location}/inputs/{inputId}`.",
          "type": "string"
        }
      },
      "id": "InputAttachment"
    },
    "Empty": {
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "type": "object",
      "properties": {},
      "id": "Empty"
    },
    "TimeInterval": {
      "description": "TimeInterval represents a time interval.",
      "id": "TimeInterval",
      "type": "object",
      "properties": {
        "endTime": {
          "format": "google-datetime",
          "description": "Optional. The end time of the interval.",
          "type": "string"
        },
        "startTime": {
          "description": "Optional. The start time of the interval.",
          "format": "google-datetime",
          "type": "string"
        }
      }
    },
    "RetentionConfig": {
      "description": "Configuration for retention of output files.",
      "id": "RetentionConfig",
      "type": "object",
      "properties": {
        "retentionWindowDuration": {
          "type": "string",
          "format": "google-duration",
          "description": "The minimum duration for which the output files from the channel will remain in the output bucket. After this duration, output files are deleted asynchronously. When the channel is deleted, all output files are deleted from the output bucket asynchronously. If omitted or set to zero, output files will remain in the output bucket based on Manifest.segment_keep_duration, which defaults to 60s. If both retention_window_duration and Manifest.segment_keep_duration are set, retention_window_duration is used and Manifest.segment_keep_duration is ignored."
        }
      }
    },
    "InputStreamProperty": {
      "id": "InputStreamProperty",
      "type": "object",
      "properties": {
        "videoStreams": {
          "type": "array",
          "items": {
            "$ref": "VideoStreamProperty"
          },
          "description": "Properties of the video streams."
        },
        "audioStreams": {
          "description": "Properties of the audio streams.",
          "type": "array",
          "items": {
            "$ref": "AudioStreamProperty"
          }
        },
        "lastEstablishTime": {
          "description": "The time that the current input stream is accepted and the connection is established.",
          "format": "google-datetime",
          "type": "string"
        }
      },
      "description": "Properties of the input stream."
    },
    "NormalizedCoordinate": {
      "type": "object",
      "properties": {
        "x": {
          "format": "double",
          "description": "Optional. Normalized x coordinate. Valid range is [0.0, 1.0]. Default is 0.",
          "type": "number"
        },
        "y": {
          "type": "number",
          "description": "Optional. Normalized y coordinate. Valid range is [0.0, 1.0]. Default is 0.",
          "format": "double"
        }
      },
      "id": "NormalizedCoordinate",
      "description": "2D normalized coordinates."
    },
    "SecurityRule": {
      "description": "Security rules for access control. Each field represents one security rule. Only when the source of the input stream satisfies all the fields, this input stream can be accepted.",
      "id": "SecurityRule",
      "type": "object",
      "properties": {
        "ipRanges": {
          "description": "At least one ip range must match unless none specified. The IP range is defined by CIDR block: for example, `192.0.1.0/24` for a range and `192.0.1.0/32` for a single IP address.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "Asset": {
      "type": "object",
      "properties": {
        "crc32c": {
          "description": "Based64-encoded CRC32c checksum of the asset file. For more information, see the crc32c checksum of the [Cloud Storage Objects resource](https://cloud.google.com/storage/docs/json_api/v1/objects). If crc32c is omitted or left empty when the asset is created, this field is filled by the crc32c checksum of the Cloud Storage object indicated by VideoAsset.uri or ImageAsset.uri. If crc32c is set, the asset can't be created if the crc32c value does not match with the crc32c checksum of the Cloud Storage object indicated by VideoAsset.uri or ImageAsset.uri.",
          "type": "string"
        },
        "image": {
          "$ref": "ImageAsset",
          "description": "ImageAsset represents an image."
        },
        "updateTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The update time."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined key/value metadata."
        },
        "video": {
          "$ref": "VideoAsset",
          "description": "VideoAsset represents a video."
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The creation time.",
          "format": "google-datetime"
        },
        "state": {
          "type": "string",
          "enumDescriptions": [
            "State is not specified.",
            "The asset is being created.",
            "The asset is ready for use.",
            "The asset is being deleted.",
            "The asset has an error."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "ACTIVE",
            "DELETING",
            "ERROR"
          ],
          "readOnly": true,
          "description": "Output only. The state of the asset resource."
        },
        "name": {
          "description": "The resource name of the asset, in the form of: `projects/{project}/locations/{location}/assets/{assetId}`.",
          "type": "string"
        },
        "error": {
          "description": "Output only. Only present when `state` is `ERROR`. The reason for the error state of the asset.",
          "readOnly": true,
          "$ref": "Status"
        }
      },
      "id": "Asset",
      "description": "An asset represents a video or an image."
    },
    "SegmentSettings": {
      "id": "SegmentSettings",
      "type": "object",
      "properties": {
        "segmentDuration": {
          "type": "string",
          "description": "Duration of the segments in seconds. The default is `6s`. Note that `segmentDuration` must be greater than or equal to gop_duration, and `segmentDuration` must be divisible by gop_duration. Valid range is [2s, 20s]. All mux_streams in the same manifest must have the same segment duration.",
          "format": "google-duration"
        }
      },
      "description": "Segment settings for `fmp4` and `ts`."
    },
    "CancelOperationRequest": {
      "description": "The request message for Operations.CancelOperation.",
      "id": "CancelOperationRequest",
      "type": "object",
      "properties": {}
    },
    "SrtPushOutputEndpoint": {
      "description": "Configurations for an output endpoint using SRT_PUSH as the streaming protocol.",
      "type": "object",
      "properties": {
        "passphraseSecretVersion": {
          "description": "The name of the Secret Version containing the SRT encryption passphrase, which is stored in Google Secret Manager. It should be in the format of `projects/{project}/secrets/{secret_id}/versions/{version_number}`.",
          "type": "string"
        },
        "uri": {
          "description": "Required. The full URI of the remote SRT server.",
          "type": "string"
        }
      },
      "id": "SrtPushOutputEndpoint"
    },
    "Widevine": {
      "id": "Widevine",
      "type": "object",
      "properties": {},
      "description": "Widevine configuration."
    },
    "Input": {
      "description": "Input resource represents the endpoint from which the channel ingests the input stream.",
      "id": "Input",
      "type": "object",
      "properties": {
        "updateTime": {
          "description": "Output only. The update time.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "TYPE_UNSPECIFIED",
            "RTMP_PUSH",
            "SRT_PUSH"
          ],
          "description": "Source type.",
          "enumDescriptions": [
            "Input type is not specified.",
            "Input will take an rtmp input stream.",
            "Input will take an srt (Secure Reliable Transport) input stream."
          ]
        },
        "uri": {
          "description": "Output only. URI to push the input stream to. Its format depends on the input type, for example: * `RTMP_PUSH`: `rtmp://1.2.3.4/live/{STREAM-ID}` * `SRT_PUSH`: `srt://1.2.3.4:4201?streamid={STREAM-ID}`",
          "readOnly": true,
          "type": "string"
        },
        "preprocessingConfig": {
          "description": "Preprocessing configurations.",
          "$ref": "PreprocessingConfig"
        },
        "labels": {
          "description": "User-defined key/value metadata.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "inputStreamProperty": {
          "description": "Output only. The information for the input stream. This field will be present only when this input receives the input stream.",
          "readOnly": true,
          "$ref": "InputStreamProperty"
        },
        "securityRules": {
          "$ref": "SecurityRule",
          "description": "Security rule for access control."
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The creation time.",
          "format": "google-datetime"
        },
        "name": {
          "description": "The resource name of the input, in the form of: `projects/{project}/locations/{location}/inputs/{inputId}`.",
          "type": "string"
        },
        "tier": {
          "description": "Tier defines the maximum input specification that is accepted by the video pipeline. The billing is charged based on the tier specified here. See [Pricing](https://cloud.google.com/livestream/pricing) for more detail. The default is `HD`.",
          "enumDescriptions": [
            "Tier is not specified.",
            "Resolution \u003c 1280x720. Bitrate \u003c= 6 Mbps. FPS \u003c= 60.",
            "Resolution \u003c= 1920x1080. Bitrate \u003c= 25 Mbps. FPS \u003c= 60.",
            "Resolution \u003c= 4096x2160. Bitrate \u003c= 50 Mbps. FPS \u003c= 60.",
            "Resolution \u003c= 1280x720. Bitrate \u003c= 6 Mbps. FPS \u003c= 60. H265 codec.",
            "Resolution \u003c= 1920x1080. Bitrate \u003c= 25 Mbps. FPS \u003c= 60. H265 codec.",
            "Resolution \u003c= 4096x2160. Bitrate \u003c= 50 Mbps. FPS \u003c= 60. H265 codec."
          ],
          "enum": [
            "TIER_UNSPECIFIED",
            "SD",
            "HD",
            "UHD",
            "SD_H265",
            "HD_H265",
            "UHD_H265"
          ],
          "type": "string"
        }
      }
    },
    "Clearkey": {
      "id": "Clearkey",
      "type": "object",
      "properties": {},
      "description": "Clearkey configuration."
    },
    "NetworkConfig": {
      "description": "Defines the network configuration for the pool.",
      "id": "NetworkConfig",
      "type": "object",
      "properties": {
        "peeredNetwork": {
          "type": "string",
          "description": "peered_network is the network resource URL of the network that is peered to the service provider network. Must be of the format projects/NETWORK_PROJECT_NUMBER/global/networks/NETWORK_NAME, where NETWORK_PROJECT_NUMBER is the project number of the Cloud project that holds your VPC network and NETWORK_NAME is the name of your VPC network. If peered_network is omitted or empty, the pool will use endpoints that are publicly available."
        }
      }
    },
    "AutomaticFailover": {
      "type": "object",
      "properties": {
        "inputKeys": {
          "description": "The InputAttachment.keys of inputs to failover to when this input is disconnected. Currently, only up to one backup input is supported.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "id": "AutomaticFailover",
      "description": "Configurations to follow when automatic failover happens."
    },
    "AdBreakTask": {
      "id": "AdBreakTask",
      "type": "object",
      "properties": {
        "duration": {
          "format": "google-duration",
          "description": "Duration of an ad opportunity. Must be greater than 0.",
          "type": "string"
        }
      },
      "description": "Inserts a new ad opportunity."
    },
    "Playready": {
      "description": "Playready configuration.",
      "type": "object",
      "properties": {},
      "id": "Playready"
    },
    "StopChannelRequest": {
      "id": "StopChannelRequest",
      "type": "object",
      "properties": {
        "requestId": {
          "type": "string",
          "description": "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)`."
        }
      },
      "description": "Request message for \"LivestreamService.StopChannel\"."
    },
    "Crop": {
      "description": "Video cropping configuration for the input video. The cropped input video is scaled to match the output resolution.",
      "type": "object",
      "properties": {
        "bottomPixels": {
          "description": "The number of pixels to crop from the bottom. The default is 0.",
          "format": "int32",
          "type": "integer"
        },
        "leftPixels": {
          "type": "integer",
          "format": "int32",
          "description": "The number of pixels to crop from the left. The default is 0."
        },
        "topPixels": {
          "description": "The number of pixels to crop from the top. The default is 0.",
          "format": "int32",
          "type": "integer"
        },
        "rightPixels": {
          "description": "The number of pixels to crop from the right. The default is 0.",
          "format": "int32",
          "type": "integer"
        }
      },
      "id": "Crop"
    },
    "NormalizedResolution": {
      "type": "object",
      "properties": {
        "h": {
          "type": "number",
          "format": "double",
          "description": "Optional. Normalized height. Valid range is [0.0, 1.0]. Default is 0."
        },
        "w": {
          "type": "number",
          "description": "Optional. Normalized width. Valid range is [0.0, 1.0]. Default is 0.",
          "format": "double"
        }
      },
      "id": "NormalizedResolution",
      "description": "Normalized resolution."
    },
    "SampleAesEncryption": {
      "type": "object",
      "properties": {},
      "id": "SampleAesEncryption",
      "description": "Configuration for HLS SAMPLE-AES encryption."
    },
    "TimeZone": {
      "type": "object",
      "properties": {
        "id": {
          "description": "IANA Time Zone Database time zone. For example \"America/New_York\".",
          "type": "string"
        },
        "version": {
          "type": "string",
          "description": "Optional. IANA Time Zone Database version number. For example \"2019a\"."
        }
      },
      "id": "TimeZone",
      "description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones)."
    },
    "ReturnToProgramTask": {
      "description": "Stops any events which are currently running. This only applies to events with a duration.",
      "id": "ReturnToProgramTask",
      "type": "object",
      "properties": {}
    },
    "ListDvrSessionsResponse": {
      "id": "ListDvrSessionsResponse",
      "type": "object",
      "properties": {
        "dvrSessions": {
          "type": "array",
          "items": {
            "$ref": "DvrSession"
          },
          "description": "The list of DVR sessions"
        },
        "nextPageToken": {
          "description": "A token identifying a page of results the server should return.",
          "type": "string"
        },
        "unreachable": {
          "description": "Locations that could not be reached.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "Response message for \"LivestreamService.ListDvrSessions\"."
    },
    "H265CodecSettings": {
      "description": "H265 codec settings.",
      "type": "object",
      "properties": {
        "widthPixels": {
          "type": "integer",
          "format": "int32",
          "description": "Optional. The width of the video in pixels. Must be an even integer. When not specified, the width is adjusted to match the specified height and input aspect ratio. If both are omitted, the input width is used. Valid range is [320, 4096]."
        },
        "vbvSizeBits": {
          "type": "integer",
          "description": "Optional. Size of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to bitrate_bps.",
          "format": "int32"
        },
        "bFrameCount": {
          "type": "integer",
          "format": "int32",
          "description": "Optional. The number of consecutive B-frames. Must be greater than or equal to zero. Must be less than gop_frame_count if set. The default is 0."
        },
        "frameRate": {
          "format": "double",
          "description": "Required. The target video frame rate in frames per second (FPS). Must be less than or equal to 120. Will default to the input frame rate if larger than the input frame rate. The API will generate an output FPS that is divisible by the input FPS, and smaller or equal to the target FPS. See [Calculating frame rate](https://cloud.google.com/transcoder/docs/concepts/frame-rate) for more information.",
          "type": "number"
        },
        "gopDuration": {
          "type": "string",
          "format": "google-duration",
          "description": "Optional. Select the GOP size based on the specified duration. The default is `2s`. Note that `gopDuration` must be less than or equal to segment_duration, and segment_duration must be divisible by `gopDuration`. Valid range is [2s, 20s]. All video streams in the same channel must have the same GOP size."
        },
        "aqStrength": {
          "type": "number",
          "description": "Optional. Specify the intensity of the adaptive quantizer (AQ). Must be between 0 and 1, where 0 disables the quantizer and 1 maximizes the quantizer. A higher value equals a lower bitrate but smoother image. The default is 0.",
          "format": "double"
        },
        "bPyramid": {
          "description": "Optional. Allow B-pyramid for reference frame selection. This may not be supported on all decoders. The default is `false`.",
          "type": "boolean"
        },
        "vbvFullnessBits": {
          "type": "integer",
          "description": "Optional. Initial fullness of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to 90% of vbv_size_bits.",
          "format": "int32"
        },
        "gopFrameCount": {
          "description": "Optional. Select the GOP size based on the specified frame count. If GOP frame count is set instead of GOP duration, GOP duration will be calculated by `gopFrameCount`/`frameRate`. The calculated GOP duration must satisfy the limitations on `gopDuration` as well. Valid range is [60, 600].",
          "format": "int32",
          "type": "integer"
        },
        "bitrateBps": {
          "type": "integer",
          "format": "int32",
          "description": "Required. The video bitrate in bits per second. Minimum value is 10,000. - For SD resolution (\u003c 720p), must be \u003c= 3,000,000 (3 Mbps). - For HD resolution (\u003c= 1080p), must be \u003c= 15,000,000 (15 Mbps). - For UHD resolution (\u003c= 2160p), must be \u003c= 25,000,000 (25 Mbps)."
        },
        "heightPixels": {
          "description": "Optional. The height of the video in pixels. Must be an even integer. When not specified, the height is adjusted to match the specified width and input aspect ratio. If both are omitted, the input height is used. Valid range is [180, 2160].",
          "format": "int32",
          "type": "integer"
        }
      },
      "id": "H265CodecSettings"
    },
    "VideoStreamProperty": {
      "type": "object",
      "properties": {
        "index": {
          "format": "int32",
          "description": "Index of this video stream.",
          "type": "integer"
        },
        "videoFormat": {
          "description": "Properties of the video format.",
          "$ref": "VideoFormat"
        }
      },
      "id": "VideoStreamProperty",
      "description": "Properties of the video stream."
    },
    "ListAssetsResponse": {
      "id": "ListAssetsResponse",
      "type": "object",
      "properties": {
        "unreachable": {
          "description": "Locations that could not be reached.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "The next_page_token value returned from a previous List request, if any."
        },
        "assets": {
          "description": "The list of Assets",
          "type": "array",
          "items": {
            "$ref": "Asset"
          }
        }
      },
      "description": "Response message for \"LivestreamService.ListAssets\"."
    },
    "AutoTranscriptionConfig": {
      "id": "AutoTranscriptionConfig",
      "type": "object",
      "properties": {
        "qualityPreset": {
          "enum": [
            "QUALITY_PRESET_UNSPECIFIED",
            "LOW_LATENCY",
            "BALANCED_QUALITY",
            "IMPROVED_QUALITY"
          ],
          "description": "Optional. Tunes the latency and quality of auto-generated captions.",
          "enumDescriptions": [
            "Quality Preset is not specified. By default, BALANCED_QUALITY will be used.",
            "Reduce the latency of auto-generated captions. This may reduce the quality of the captions.",
            "Default behavior when QualityPreset is not specified.",
            "Increases the quality of the auto-generated captions at the cost of higher latency."
          ],
          "type": "string"
        },
        "displayTiming": {
          "description": "Optional. Whether auto-generated text streams are displayed synchronously or asynchronously with the original audio.",
          "enumDescriptions": [
            "Display timing is not specified. Caption display will be asynchronous by default.",
            "Caption will be displayed asynchronous with audio.",
            "Caption will be displayed synchronous with audio. This option increases overall media output latency, and reduces viewing latency between audio and auto-generated captions."
          ],
          "enum": [
            "DISPLAY_TIMING_UNSPECIFIED",
            "ASYNC",
            "SYNC"
          ],
          "type": "string"
        }
      },
      "description": "Advanced configurations for auto-generated text streams."
    },
    "PreviewInputResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "description": "URI to display the preview content."
        },
        "bearerToken": {
          "description": "A bearer token used to authenticate connections that display the preview content. The token expires after one hour. For HTTP connections, this token should be included as a bearer token inside the Authorization header.",
          "type": "string"
        }
      },
      "id": "PreviewInputResponse",
      "description": "Response message for \"LivestreamService.PreviewInput\""
    },
    "UpdateEncryptionsTask": {
      "description": "Update encryption settings.",
      "id": "UpdateEncryptionsTask",
      "type": "object",
      "properties": {
        "encryptions": {
          "description": "Required. A list of EncryptionUpdates that updates the existing encryption settings.",
          "type": "array",
          "items": {
            "$ref": "EncryptionUpdate"
          }
        }
      }
    },
    "StopDistributionRequest": {
      "description": "Request message for \"LivestreamService.StopDistribution\".",
      "type": "object",
      "properties": {
        "distributionKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of key to identify the distribution configuration in the channel resource. If left empty, all the distributions in the channel specification will be stopped."
        },
        "requestId": {
          "description": "Optional. 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)`.",
          "type": "string"
        }
      },
      "id": "StopDistributionRequest"
    },
    "AudioStreamProperty": {
      "description": "Properties of the audio stream.",
      "id": "AudioStreamProperty",
      "type": "object",
      "properties": {
        "index": {
          "type": "integer",
          "description": "Index of this audio stream.",
          "format": "int32"
        },
        "audioFormat": {
          "description": "Properties of the audio format.",
          "$ref": "AudioFormat"
        }
      }
    },
    "DvrManifest": {
      "description": "DvrManifest identifies a source manifest and specifies a file name for the generated DVR manifest.",
      "type": "object",
      "properties": {
        "manifestKey": {
          "description": "Required. A unique key that identifies a manifest config in the parent channel. This key is the same as `channel.manifests.key` for the selected manifest.",
          "type": "string"
        },
        "outputUri": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The output URI of the DVR manifest. The DVR output will be placed in a directory named `dvr/dvrSessionId/` under the parent channel's output uri. Format: {channel.output.uri}/dvr/{dvrSessionId}/{channel.manifests.fileName} Example: gs://my-bucket/outputs/dvr/my-dvr-session/main.m3u8"
        }
      },
      "id": "DvrManifest"
    },
    "SecretManagerSource": {
      "id": "SecretManagerSource",
      "type": "object",
      "properties": {
        "secretVersion": {
          "description": "Required. The name of the Secret Version containing the encryption key. `projects/{project}/secrets/{secret_id}/versions/{version_number}`",
          "type": "string"
        }
      },
      "description": "Configuration for secrets stored in Google Secret Manager."
    },
    "Distribution": {
      "description": "Distribution configuration.",
      "id": "Distribution",
      "type": "object",
      "properties": {
        "error": {
          "description": "Output only. Only present when the `state` is `ERROR`. The reason for the error state of the distribution.",
          "readOnly": true,
          "$ref": "Status"
        },
        "srtPush": {
          "$ref": "SrtPushOutputEndpoint",
          "description": "Output endpoint using SRT_PUSH."
        },
        "distributionStream": {
          "type": "string",
          "description": "Required. `DistributionStream` keys that should appear in this distribution output. - For SRT protocol, only `ts` distribution streams can be specified. - For RTMP protocol, only `flv` distribution streams can be specified."
        },
        "state": {
          "type": "string",
          "enum": [
            "STATE_UNSPECIFIED",
            "ERROR",
            "NOT_READY",
            "READY",
            "AWAITING_INPUT",
            "DISTRIBUTING"
          ],
          "enumDescriptions": [
            "State is not specified.",
            "Distribution has trouble to produce or deliver the output.",
            "Distribution is not ready to be started.",
            "Distribution is ready to be started.",
            "Distribution is already started and is waiting for input.",
            "Distribution is already started and is generating output."
          ],
          "readOnly": true,
          "description": "Output only. State of the distribution."
        },
        "rtmpPush": {
          "description": "Output endpoint using RTMP_PUSH.",
          "$ref": "RtmpPushOutputEndpoint"
        },
        "key": {
          "description": "Required. A unique key for this distribution. The key must be 1-63 characters in length. The key must begin and end with a letter (regardless of case) or a number, but can contain dashes or underscores in between.",
          "type": "string"
        }
      }
    },
    "UnmuteTask": {
      "description": "Unmutes the stream. The task fails if the stream is not currently muted.",
      "type": "object",
      "properties": {},
      "id": "UnmuteTask"
    },
    "RtmpPushOutputEndpoint": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "description": "Required. The full URI of the remote RTMP server. For example: `rtmp://192.168.123.321/live/my-stream` or `rtmp://somedomain.com/someapp`."
        },
        "streamKey": {
          "description": "Required. Stream key for RTMP protocol.",
          "type": "string"
        }
      },
      "id": "RtmpPushOutputEndpoint",
      "description": "Configurations for an output endpoint using RTMP_PUSH as the streaming protocol."
    },
    "StaticOverlay": {
      "type": "object",
      "properties": {
        "position": {
          "$ref": "NormalizedCoordinate",
          "description": "Optional. Position of the image in terms of normalized coordinates of the upper-left corner of the image, based on output video resolution. For example, use the x and y coordinates {0, 0} to position the top-left corner of the overlay animation in the top-left corner of the output video."
        },
        "opacity": {
          "type": "number",
          "format": "double",
          "description": "Optional. Target image opacity. Valid values are from `1.0` (solid, default) to `0.0` (transparent), exclusive. Set this to a value greater than `0.0`."
        },
        "asset": {
          "type": "string",
          "description": "Required. Asset to use for the overlaid image. The asset must be represented in the form of: `projects/{project}/locations/{location}/assets/{assetId}`. The asset's resource type must be image."
        },
        "resolution": {
          "description": "Optional. Normalized image resolution, based on output video resolution. Valid values are [0.0, 1.0]. To respect the original image aspect ratio, set either `w` or `h` to 0. To use the original image resolution, set both `w` and `h` to 0. The default is {0, 0}.",
          "$ref": "NormalizedResolution"
        }
      },
      "id": "StaticOverlay",
      "description": "Configuration for the static overlay."
    },
    "DvrSession": {
      "type": "object",
      "properties": {
        "createTime": {
          "format": "google-datetime",
          "description": "Output only. The creation time.",
          "readOnly": true,
          "type": "string"
        },
        "updateTime": {
          "format": "google-datetime",
          "description": "Output only. The update time.",
          "readOnly": true,
          "type": "string"
        },
        "dvrWindows": {
          "description": "Required. The specified ranges of segments to generate a DVR recording.",
          "type": "array",
          "items": {
            "$ref": "DvrWindow"
          }
        },
        "state": {
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "UPDATING",
            "SCHEDULED",
            "LIVE",
            "FINISHED",
            "FAILED",
            "DELETING",
            "POST_PROCESSING",
            "COOLDOWN",
            "STOPPING"
          ],
          "enumDescriptions": [
            "State is not specified.",
            "The operation is pending to be picked up by the server.",
            "The session is being updated.",
            "The session is scheduled and waiting for the start time.",
            "The session is currently in progress and the outputs are available in the specified Cloud Storage bucket. For additional information, see the `dvr_manifests.output_uri` field.",
            "Outputs are available in the specified Cloud Storage bucket. For additional information, see the `dvr_manifests.output_uri` field.",
            "The operation has failed. For additional information, see the `error` field.",
            "The session is being deleted.",
            "The session is being post processed.",
            "The session is in cooldown. The cooldown period lasts for 60 seconds. When the DVR session is updated by the user to have a new end time that is likely already in the past, the DVR manifest will end as soon as possible and the DVR session will move to this state. This is done to prevent the players to receive a manifest update that removes a segment that has already been played. After the cooldown period ends, a new manifest is generated that honors the new end time.",
            "The session is being stopped. The session will move to STOPPING state, if the parent channel is updated."
          ],
          "type": "string",
          "description": "Output only. The state of the clip.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. The resource name of the DVR session, in the following format: `projects/{project}/locations/{location}/channels/{channelId}/dvrSessions/{dvrSessionId}`. `{dvrSessionId}` is a user-specified resource id that conforms to the following criteria: 1. 1 character minimum, 63 characters maximum 2. Only contains letters, digits, underscores, and hyphens"
        },
        "error": {
          "readOnly": true,
          "$ref": "Status",
          "description": "Output only. An error object that describes the reason for the failure. This property only presents when `state` is `FAILED`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined key/value metadata."
        },
        "dvrManifests": {
          "type": "array",
          "items": {
            "$ref": "DvrManifest"
          },
          "description": "Required. A list of DVR manifests. Currently only one DVR manifest is allowed."
        }
      },
      "id": "DvrSession",
      "description": "DvrSession is a sub-resource under channel. Each DvrSession represents a DVR recording of the live stream for a specific time range."
    },
    "Pool": {
      "type": "object",
      "properties": {
        "labels": {
          "description": "User-defined key/value metadata.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "networkConfig": {
          "description": "Network configuration for the pool.",
          "$ref": "NetworkConfig"
        },
        "name": {
          "description": "The resource name of the pool, in the form of: `projects/{project}/locations/{location}/pools/{poolId}`.",
          "type": "string"
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The creation time."
        },
        "updateTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The update time.",
          "format": "google-datetime"
        }
      },
      "id": "Pool",
      "description": "Pool resource defines the configuration of Live Stream pools for a specific location. Currently we support only one pool resource per project per location. After the creation of the first input, a default pool is created automatically at \"projects/{project}/locations/{location}/pools/default\"."
    },
    "SlateTask": {
      "type": "object",
      "properties": {
        "duration": {
          "type": "string",
          "format": "google-duration",
          "description": "Optional. Duration of the slate. Must be greater than 0 if specified. Omit this field for a long running slate."
        },
        "asset": {
          "description": "Slate asset to use for the duration. If its duration is less than the duration of the SlateTask, then the slate loops. The slate must be represented in the form of: `projects/{project}/locations/{location}/assets/{assetId}`.",
          "type": "string"
        }
      },
      "id": "SlateTask",
      "description": "Inserts a slate."
    },
    "MuteTask": {
      "description": "Mutes the stream.",
      "type": "object",
      "properties": {
        "duration": {
          "type": "string",
          "description": "Duration for which the stream should be muted. If omitted, the stream will be muted until an UnmuteTask event is sent.",
          "format": "google-duration"
        }
      },
      "id": "MuteTask"
    },
    "ListClipsResponse": {
      "id": "ListClipsResponse",
      "type": "object",
      "properties": {
        "unreachable": {
          "description": "Locations that could not be reached.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "clips": {
          "description": "The list of Clip",
          "type": "array",
          "items": {
            "$ref": "Clip"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token identifying a page of results the server should return."
        }
      },
      "description": "Response message for \"LivestreamService.ListClips\"."
    },
    "Event": {
      "id": "Event",
      "type": "object",
      "properties": {
        "error": {
          "readOnly": true,
          "$ref": "Status",
          "description": "Output only. An error object that describes the reason for the failure. This property is always present when `state` is `FAILED`."
        },
        "state": {
          "enumDescriptions": [
            "Event state is not specified.",
            "Event is scheduled but not executed yet.",
            "Event is being executed.",
            "Event has been successfully executed.",
            "Event fails to be executed.",
            "Event has been created but not scheduled yet.",
            "Event was stopped before running for its full duration."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "SCHEDULED",
            "RUNNING",
            "SUCCEEDED",
            "FAILED",
            "PENDING",
            "STOPPED"
          ],
          "type": "string",
          "description": "Output only. The state of the event.",
          "readOnly": true
        },
        "returnToProgram": {
          "description": "Stops any running ad break.",
          "$ref": "ReturnToProgramTask"
        },
        "updateEncryptions": {
          "$ref": "UpdateEncryptionsTask",
          "description": "Updates encryption settings."
        },
        "labels": {
          "description": "User-defined key/value metadata.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "updateTime": {
          "description": "Output only. The update time.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "slate": {
          "$ref": "SlateTask",
          "description": "Inserts a slate."
        },
        "mute": {
          "$ref": "MuteTask",
          "description": "Mutes the stream."
        },
        "executeNow": {
          "type": "boolean",
          "description": "When this field is set to true, the event will be executed at the earliest time that the server can schedule the event and execution_time will be populated with the time that the server actually schedules the event."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the event, in the form of: `projects/{project}/locations/{location}/channels/{channelId}/events/{eventId}`."
        },
        "unmute": {
          "description": "Unmutes the stream.",
          "$ref": "UnmuteTask"
        },
        "createTime": {
          "format": "google-datetime",
          "description": "Output only. The creation time.",
          "readOnly": true,
          "type": "string"
        },
        "executionTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "The time to execute the event. If you set execute_now to `true`, then do not set this field in the `CreateEvent` request. In this case, the server schedules the event and populates this field. If you set execute_now to `false`, then you must set this field to at least 10 seconds in the future or else the event can't be created."
        },
        "inputSwitch": {
          "$ref": "InputSwitchTask",
          "description": "Switches to another input stream."
        },
        "adBreak": {
          "$ref": "AdBreakTask",
          "description": "Inserts a new ad opportunity."
        }
      },
      "description": "Event is a sub-resource of a channel, which can be scheduled by the user to execute operations on a channel resource without having to stop the channel."
    },
    "ImageAsset": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "description": "Cloud Storage URI of the image. The format is `gs://my-bucket/my-object`."
        }
      },
      "id": "ImageAsset",
      "description": "Image represents an image. The supported formats are JPEG, PNG."
    },
    "VideoStream": {
      "description": "Video stream resource.",
      "type": "object",
      "properties": {
        "h264": {
          "description": "H264 codec settings.",
          "$ref": "H264CodecSettings"
        },
        "h265": {
          "description": "H265 codec settings.",
          "$ref": "H265CodecSettings"
        }
      },
      "id": "VideoStream"
    },
    "Pad": {
      "description": "Pad filter configuration for the input video. The padded input video is scaled after padding with black to match the output resolution.",
      "type": "object",
      "properties": {
        "bottomPixels": {
          "format": "int32",
          "description": "The number of pixels to add to the bottom. The default is 0.",
          "type": "integer"
        },
        "topPixels": {
          "type": "integer",
          "format": "int32",
          "description": "The number of pixels to add to the top. The default is 0."
        },
        "rightPixels": {
          "description": "The number of pixels to add to the right. The default is 0.",
          "format": "int32",
          "type": "integer"
        },
        "leftPixels": {
          "type": "integer",
          "description": "The number of pixels to add to the left. The default is 0.",
          "format": "int32"
        }
      },
      "id": "Pad"
    },
    "ListLocationsResponse": {
      "id": "ListLocationsResponse",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "The standard List next-page token."
        },
        "locations": {
          "description": "A list of locations that matches the specified filter in the request.",
          "type": "array",
          "items": {
            "$ref": "Location"
          }
        }
      },
      "description": "The response message for Locations.ListLocations."
    },
    "InputConfig": {
      "type": "object",
      "properties": {
        "inputSwitchMode": {
          "type": "string",
          "description": "Input switch mode. Default mode is `FAILOVER_PREFER_PRIMARY`.",
          "enumDescriptions": [
            "The input switch mode is not specified.",
            "Automatic failover is enabled. The primary input stream is always preferred over its backup input streams configured using the AutomaticFailover field.",
            "Automatic failover is disabled. You must use the inputSwitch event to switch the active input source for the channel to stream from. When this mode is chosen, the AutomaticFailover field is ignored."
          ],
          "enum": [
            "INPUT_SWITCH_MODE_UNSPECIFIED",
            "FAILOVER_PREFER_PRIMARY",
            "MANUAL"
          ]
        }
      },
      "id": "InputConfig",
      "description": "Configuration for the input sources of a channel."
    },
    "Channel": {
      "description": "Channel resource represents the processor that does a user-defined \"streaming\" operation, which includes getting an input stream through an input, transcoding it to multiple renditions, and publishing output live streams in certain formats (for example, HLS or DASH) to the specified location.",
      "id": "Channel",
      "type": "object",
      "properties": {
        "streamingState": {
          "description": "Output only. State of the streaming operation.",
          "readOnly": true,
          "enum": [
            "STREAMING_STATE_UNSPECIFIED",
            "STREAMING",
            "AWAITING_INPUT",
            "STREAMING_ERROR",
            "STREAMING_NO_INPUT",
            "STOPPED",
            "STARTING",
            "STOPPING"
          ],
          "enumDescriptions": [
            "Streaming state is not specified.",
            "Channel is getting the input stream, generating the live streams to the specified output location.",
            "Channel is waiting for the input stream through the input.",
            "Channel is running, but has trouble publishing the live streams onto the specified output location (for example, the specified Cloud Storage bucket is not writable).",
            "Channel is generating live streams with no input stream. Live streams are filled out with black screen, while input stream is missing. Not supported yet.",
            "Channel is stopped, finishing live streams.",
            "Channel is starting.",
            "Channel is stopping."
          ],
          "type": "string"
        },
        "inputConfig": {
          "$ref": "InputConfig",
          "description": "The configuration for input sources defined in input_attachments."
        },
        "staticOverlays": {
          "type": "array",
          "items": {
            "$ref": "StaticOverlay"
          },
          "description": "Optional. List of static overlay images. Those images display over the output content for the whole duration of the live stream."
        },
        "encryptions": {
          "type": "array",
          "items": {
            "$ref": "Encryption"
          },
          "description": "Optional. Encryption configurations for this channel. Each configuration has an ID which is referred to by each MuxStream to indicate which configuration is used for that output."
        },
        "labels": {
          "description": "User-defined key/value metadata.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "streamingError": {
          "description": "Output only. A description of the reason for the streaming error. This property is always present when streaming_state is STREAMING_ERROR.",
          "readOnly": true,
          "$ref": "Status"
        },
        "logConfig": {
          "description": "Configuration of platform logs for this channel.",
          "$ref": "LogConfig"
        },
        "manifests": {
          "description": "List of output manifests.",
          "type": "array",
          "items": {
            "$ref": "Manifest"
          }
        },
        "updateTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The update time.",
          "format": "google-datetime"
        },
        "elementaryStreams": {
          "description": "List of elementary streams.",
          "type": "array",
          "items": {
            "$ref": "ElementaryStream"
          }
        },
        "muxStreams": {
          "type": "array",
          "items": {
            "$ref": "MuxStream"
          },
          "description": "List of multiplexing settings for output streams."
        },
        "retentionConfig": {
          "$ref": "RetentionConfig",
          "description": "Optional. Configuration for retention of output files for this channel."
        },
        "distributionStreams": {
          "type": "array",
          "items": {
            "$ref": "DistributionStream"
          },
          "description": "Optional. List of multiplexing settings of streams for distributions."
        },
        "output": {
          "description": "Required. Information about the output (that is, the Cloud Storage bucket to store the generated live stream).",
          "$ref": "Output"
        },
        "autoTranscriptionConfig": {
          "$ref": "AutoTranscriptionConfig",
          "description": "Optional. Advanced configurations for auto-generated text streams."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the channel, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`."
        },
        "createTime": {
          "description": "Output only. The creation time.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "inputAttachments": {
          "type": "array",
          "items": {
            "$ref": "InputAttachment"
          },
          "description": "A list of input attachments that this channel uses. One channel can have multiple inputs as the input sources. Only one input can be selected as the input source at one time."
        },
        "timecodeConfig": {
          "description": "Configuration of timecode for this channel.",
          "$ref": "TimecodeConfig"
        },
        "activeInput": {
          "description": "Output only. The InputAttachment.key that serves as the current input source. The first input in the input_attachments is the initial input source.",
          "readOnly": true,
          "type": "string"
        },
        "distributions": {
          "description": "Optional. List of distributions.",
          "type": "array",
          "items": {
            "$ref": "Distribution"
          }
        },
        "spriteSheets": {
          "type": "array",
          "items": {
            "$ref": "SpriteSheet"
          },
          "description": "List of output sprite sheets."
        }
      }
    },
    "Manifest": {
      "id": "Manifest",
      "type": "object",
      "properties": {
        "fileName": {
          "type": "string",
          "description": "The name of the generated file. The default is `manifest` with the extension suffix corresponding to the `Manifest` type. If multiple manifests are added to the channel, each must have a unique file name."
        },
        "key": {
          "description": "Optional. A unique key for this manifest.",
          "type": "string"
        },
        "segmentKeepDuration": {
          "type": "string",
          "format": "google-duration",
          "description": "How long to keep a segment on the output Google Cloud Storage bucket after it is removed from the manifest. This field should be large enough to cover the manifest propagation delay. Otherwise, a player could receive 404 errors while accessing segments which are listed in the manifest that the player has, but were already deleted from the output Google Cloud Storage bucket. Default value is `60s`. If both segment_keep_duration and RetentionConfig.retention_window_duration are set, RetentionConfig.retention_window_duration is used and segment_keep_duration is ignored."
        },
        "type": {
          "enum": [
            "MANIFEST_TYPE_UNSPECIFIED",
            "HLS",
            "DASH"
          ],
          "description": "Required. Type of the manifest, can be `HLS` or `DASH`.",
          "enumDescriptions": [
            "The manifest type is not specified.",
            "Create an `HLS` manifest. The corresponding file extension is `.m3u8`.",
            "Create a `DASH` manifest. The corresponding file extension is `.mpd`."
          ],
          "type": "string"
        },
        "muxStreams": {
          "description": "Required. List of `MuxStream` keys that should appear in this manifest. - For HLS, either `fmp4` or `ts` mux streams can be specified but not mixed. - For DASH, only `fmp4` mux streams can be specified.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "maxSegmentCount": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of segments that this manifest holds. Once the manifest reaches this maximum number of segments, whenever a new segment is added to the manifest, the oldest segment will be removed from the manifest. The minimum value is 3 and the default value is 5."
        },
        "useTimecodeAsTimeline": {
          "description": "Whether to use the timecode, as specified in timecode config, when setting: - `availabilityStartTime` attribute in DASH manifests. - `#EXT-X-PROGRAM-DATE-TIME` tag in HLS manifests. If false, ignore the input timecode and use the time from system clock when the manifest is first generated. This is the default behavior.",
          "type": "boolean"
        }
      },
      "description": "Manifest configuration."
    },
    "DrmSystems": {
      "description": "Defines configuration for DRM systems in use. If a field is omitted, that DRM system will be considered to be disabled.",
      "id": "DrmSystems",
      "type": "object",
      "properties": {
        "fairplay": {
          "description": "Optional. Fairplay configuration.",
          "$ref": "Fairplay"
        },
        "playready": {
          "description": "Optional. Playready configuration.",
          "$ref": "Playready"
        },
        "clearkey": {
          "description": "Optional. Clearkey configuration.",
          "$ref": "Clearkey"
        },
        "widevine": {
          "description": "Optional. Widevine configuration.",
          "$ref": "Widevine"
        }
      }
    },
    "Clip": {
      "id": "Clip",
      "type": "object",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this resource. Each label is a key-value pair."
        },
        "outputUri": {
          "description": "Specify the `output_uri` to determine where to place the clip segments and clip manifest files in Cloud Storage. The manifests specified in `clip_manifests` fields will be placed under this URI. The exact URI of the generated manifests will be provided in `clip_manifests.output_uri` for each manifest. Example: \"output_uri\": \"gs://my-bucket/clip-outputs\" \"clip_manifests.output_uri\": \"gs://my-bucket/clip-outputs/main.m3u8\"",
          "type": "string"
        },
        "outputType": {
          "type": "string",
          "enum": [
            "OUTPUT_TYPE_UNSPECIFIED",
            "MANIFEST",
            "MP4"
          ],
          "description": "Optional. OutputType of the clip. If not specified, the default value is MANIFEST.",
          "enumDescriptions": [
            "OutputType is not specified.",
            "OutputType is a VOD manifest. This is the default value.",
            "OutputType is an MP4 file."
          ]
        },
        "updateTime": {
          "format": "google-datetime",
          "description": "Output only. The update timestamp of the clip resource.",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "The resource name of the clip, in the following format: `projects/{project}/locations/{location}/channels/{channelId}/clips/{clipId}`. `{clipId}` is a user-specified resource id that conforms to the following criteria: 1. 1 character minimum, 63 characters maximum 2. Only contains letters, digits, underscores, and hyphens",
          "type": "string"
        },
        "error": {
          "readOnly": true,
          "$ref": "Status",
          "description": "Output only. An error object that describes the reason for the failure. This property only presents when `state` is `FAILED`."
        },
        "clipManifests": {
          "type": "array",
          "items": {
            "$ref": "ClipManifest"
          },
          "description": "Required. A list of clip manifests. Currently only one clip manifest is allowed."
        },
        "state": {
          "enumDescriptions": [
            "State is not specified.",
            "The operation is pending to be picked up by the server.",
            "The server admitted this create clip request, and outputs are under processing.",
            "Outputs are available in the specified Cloud Storage bucket. For additional information, see the `outputs` field.",
            "The operation has failed. For additional information, see the `error` field."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "CREATING",
            "SUCCEEDED",
            "FAILED"
          ],
          "type": "string",
          "description": "Output only. The state of the clip.",
          "readOnly": true
        },
        "startTime": {
          "description": "Output only. The timestamp when the clip request starts to be processed.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "slices": {
          "description": "The specified ranges of segments to generate a clip.",
          "type": "array",
          "items": {
            "$ref": "Slice"
          }
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The creation timestamp of the clip resource."
        }
      },
      "description": "Clip is a sub-resource under channel. Each clip represents a clipping operation that generates a VOD playlist from its channel given a set of timestamp ranges."
    },
    "ChannelOperationResponse": {
      "id": "ChannelOperationResponse",
      "type": "object",
      "properties": {},
      "description": "Response message for Start/Stop Channel long-running operations."
    },
    "MuxStream": {
      "description": "Multiplexing settings for output stream.",
      "id": "MuxStream",
      "type": "object",
      "properties": {
        "container": {
          "description": "The container format. The default is `fmp4`. Supported container formats: - `fmp4` - the corresponding file extension is `.m4s` - `ts` - the corresponding file extension is `.ts`",
          "type": "string"
        },
        "elementaryStreams": {
          "description": "List of `ElementaryStream` keys multiplexed in this stream. - For `fmp4` container, must contain either one video or one audio stream. - For `ts` container, must contain exactly one audio stream and up to one video stream.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "encryptionId": {
          "description": "Identifier of the encryption configuration to use. If omitted, output will be unencrypted.",
          "type": "string"
        },
        "segmentSettings": {
          "description": "Segment settings for `fmp4` and `ts`.",
          "$ref": "SegmentSettings"
        },
        "key": {
          "type": "string",
          "description": "A unique key for this multiplexed stream. The key must be 1-63 characters in length. The key must begin and end with a letter (regardless of case) or a number, but can contain dashes or underscores in between."
        }
      }
    },
    "Aes128Encryption": {
      "description": "Configuration for HLS AES-128 encryption.",
      "id": "Aes128Encryption",
      "type": "object",
      "properties": {}
    },
    "Operation": {
      "description": "This resource represents a long-running operation that is the result of a network API call.",
      "id": "Operation",
      "type": "object",
      "properties": {
        "metadata": {
          "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
          "type": "object",
          "additionalProperties": {
            "description": "Properties of the object. Contains field @type with type URL.",
            "type": "any"
          }
        },
        "name": {
          "type": "string",
          "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`."
        },
        "error": {
          "description": "The error result of the operation in case of failure or cancellation.",
          "$ref": "Status"
        },
        "done": {
          "type": "boolean",
          "description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available."
        },
        "response": {
          "type": "object",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          },
          "description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`."
        }
      }
    },
    "LogConfig": {
      "description": "Configuration of platform logs. See [Using and managing platform logs](https://cloud.google.com/logging/docs/api/platform-logs#managing-logs) for more information about how to view platform logs through Cloud Logging.",
      "type": "object",
      "properties": {
        "logSeverity": {
          "description": "The severity level of platform logging for this resource.",
          "enumDescriptions": [
            "Log severity is not specified. This is the same as log severity is OFF.",
            "Log is turned off.",
            "Log with severity higher than or equal to DEBUG are logged.",
            "Logs with severity higher than or equal to INFO are logged.",
            "Logs with severity higher than or equal to WARNING are logged.",
            "Logs with severity higher than or equal to ERROR are logged."
          ],
          "enum": [
            "LOG_SEVERITY_UNSPECIFIED",
            "OFF",
            "DEBUG",
            "INFO",
            "WARNING",
            "ERROR"
          ],
          "type": "string"
        }
      },
      "id": "LogConfig"
    },
    "Status": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "id": "Status",
      "type": "object",
      "properties": {
        "details": {
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "any",
              "description": "Properties of the object. Contains field @type with type URL."
            }
          }
        },
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code.",
          "format": "int32"
        },
        "message": {
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
          "type": "string"
        }
      }
    },
    "TimecodeConfig": {
      "description": "Timecode configuration.",
      "type": "object",
      "properties": {
        "utcOffset": {
          "type": "string",
          "format": "google-duration",
          "description": "UTC offset. Must be whole seconds, between -18 hours and +18 hours."
        },
        "timeZone": {
          "description": "Time zone e.g. \"America/Los_Angeles\".",
          "$ref": "TimeZone"
        },
        "source": {
          "enum": [
            "TIMECODE_SOURCE_UNSPECIFIED",
            "MEDIA_TIMESTAMP",
            "EMBEDDED_TIMECODE"
          ],
          "description": "The source of the timecode that will later be used in outputs/manifests. It determines the initial timecode/timestamp (first frame) of output streams.",
          "enumDescriptions": [
            "The timecode source is not specified.",
            "Use input media timestamp.",
            "Use input embedded timecode e.g. picture timing SEI message."
          ],
          "type": "string"
        }
      },
      "id": "TimecodeConfig"
    }
  },
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "baseUrl": "https://livestream.googleapis.com/",
  "documentationLink": "https://cloud.google.com/livestream/docs",
  "servicePath": "",
  "version": "v1",
  "id": "livestream:v1",
  "ownerDomain": "google.com",
  "fullyEncodeReservedExpansion": true,
  "revision": "20260403",
  "batchPath": "batch",
  "name": "livestream",
  "basePath": "",
  "resources": {
    "projects": {
      "resources": {
        "locations": {
          "methods": {
            "list": {
              "path": "v1/{+name}/locations",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "ListLocationsResponse"
              },
              "description": "Lists information about the supported locations for this service. This method lists locations based on the resource scope provided in the [ListLocationsRequest.name] field: * **Global locations**: If `name` is empty, the method lists the public locations available to all projects. * **Project-specific locations**: If `name` follows the format `projects/{project}`, the method lists locations visible to that specific project. This includes public, private, or other project-specific locations enabled for the project. For gRPC and client library implementations, the resource name is passed as the `name` field. For direct service calls, the resource name is incorporated into the request path based on the specific service implementation and version.",
              "flatPath": "v1/projects/{projectsId}/locations",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameters": {
                "filter": {
                  "location": "query",
                  "type": "string",
                  "description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160)."
                },
                "pageSize": {
                  "location": "query",
                  "type": "integer",
                  "description": "The maximum number of results to return. If not set, the service selects a default.",
                  "format": "int32"
                },
                "pageToken": {
                  "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
                  "location": "query",
                  "type": "string"
                },
                "name": {
                  "location": "path",
                  "description": "The resource that owns the locations collection, if applicable.",
                  "required": true,
                  "type": "string",
                  "pattern": "^projects/[^/]+$"
                },
                "extraLocationTypes": {
                  "description": "Optional. Do not use this field. It is unsupported and is ignored unless explicitly documented otherwise. This is primarily for internal usage.",
                  "location": "query",
                  "repeated": true,
                  "type": "string"
                }
              },
              "id": "livestream.projects.locations.list",
              "httpMethod": "GET"
            },
            "get": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "description": "Resource name for the location.",
                  "type": "string",
                  "pattern": "^projects/[^/]+/locations/[^/]+$"
                }
              },
              "id": "livestream.projects.locations.get",
              "httpMethod": "GET",
              "description": "Gets information about a location.",
              "flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Location"
              }
            }
          },
          "resources": {
            "operations": {
              "methods": {
                "list": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "format": "int32",
                      "description": "The standard list page size."
                    },
                    "filter": {
                      "location": "query",
                      "type": "string",
                      "description": "The standard list filter."
                    },
                    "returnPartialSuccess": {
                      "location": "query",
                      "type": "boolean",
                      "description": "When set to `true`, operations that are reachable are returned as normal, and those that are unreachable are returned in the ListOperationsResponse.unreachable field. This can only be `true` when reading across collections. For example, when `parent` is set to `\"projects/example/locations/-\"`. This field is not supported by default and will result in an `UNIMPLEMENTED` error if set unless explicitly documented otherwise in service or product specific documentation."
                    },
                    "pageToken": {
                      "location": "query",
                      "type": "string",
                      "description": "The standard list page token."
                    },
                    "name": {
                      "description": "The name of the operation's parent resource.",
                      "required": true,
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string"
                    }
                  },
                  "id": "livestream.projects.locations.operations.list",
                  "httpMethod": "GET",
                  "path": "v1/{+name}/operations",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "ListOperationsResponse"
                  },
                  "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations"
                },
                "get": {
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "location": "path",
                      "description": "The name of the operation resource.",
                      "required": true
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "id": "livestream.projects.locations.operations.get",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  }
                },
                "cancel": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "location": "path",
                      "description": "The name of the operation resource to be cancelled.",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$"
                    }
                  },
                  "id": "livestream.projects.locations.operations.cancel",
                  "httpMethod": "POST",
                  "path": "v1/{+name}:cancel",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
                  "request": {
                    "$ref": "CancelOperationRequest"
                  }
                },
                "delete": {
                  "id": "livestream.projects.locations.operations.delete",
                  "httpMethod": "DELETE",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "required": true,
                      "description": "The name of the operation resource to be deleted.",
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "type": "string"
                    }
                  },
                  "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "path": "v1/{+name}"
                }
              }
            },
            "channels": {
              "resources": {
                "clips": {
                  "methods": {
                    "list": {
                      "path": "v1/{+parent}/clips",
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "ListClipsResponse"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/clips",
                      "description": "Returns a list of all clips in the specified channel.",
                      "parameters": {
                        "pageToken": {
                          "location": "query",
                          "type": "string",
                          "description": "A token identifying a page of results the server should return."
                        },
                        "orderBy": {
                          "description": "Hint for how to order the results",
                          "location": "query",
                          "type": "string"
                        },
                        "parent": {
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                          "type": "string",
                          "description": "Required. Parent value for ListClipsRequest",
                          "required": true,
                          "location": "path"
                        },
                        "pageSize": {
                          "location": "query",
                          "type": "integer",
                          "format": "int32",
                          "description": "Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default."
                        },
                        "filter": {
                          "description": "Filtering results",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "GET",
                      "id": "livestream.projects.locations.channels.clips.list"
                    },
                    "get": {
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "Clip"
                      },
                      "path": "v1/{+name}",
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/clips/{clipsId}",
                      "description": "Returns the specified clip.",
                      "httpMethod": "GET",
                      "id": "livestream.projects.locations.channels.clips.get",
                      "parameters": {
                        "name": {
                          "location": "path",
                          "description": "Required. Name of the resource, in the following form: `projects/{project}/locations/{location}/channels/{channel}/clips/{clip}`.",
                          "required": true,
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/clips/[^/]+$"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "create": {
                      "path": "v1/{+parent}/clips",
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "Operation"
                      },
                      "description": "Creates a clip with the provided clip ID in the specified channel.",
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/clips",
                      "request": {
                        "$ref": "Clip"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameters": {
                        "parent": {
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                          "type": "string",
                          "required": true,
                          "description": "Required. The parent resource name, in the following form: `projects/{project}/locations/{location}/channels/{channel}`.",
                          "location": "path"
                        },
                        "requestId": {
                          "location": "query",
                          "type": "string",
                          "description": "Optional. An optional 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)."
                        },
                        "clipId": {
                          "location": "query",
                          "type": "string",
                          "description": "Required. The ID of the clip resource to be created. This value must be 1-63 characters, begin and end with a lower-case letter or a number, and consist of only lower-case letters, numbers, and hyphens. In other words, it must match the following regex: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`."
                        }
                      },
                      "id": "livestream.projects.locations.channels.clips.create",
                      "httpMethod": "POST"
                    },
                    "delete": {
                      "path": "v1/{+name}",
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "Operation"
                      },
                      "description": "Deletes the specified clip job resource. This method only deletes the clip job and does not delete the VOD clip stored in Cloud Storage.",
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/clips/{clipsId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameters": {
                        "name": {
                          "location": "path",
                          "description": "Required. The name of the clip resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}/clips/{clipId}`.",
                          "required": true,
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/clips/[^/]+$"
                        },
                        "requestId": {
                          "description": "Optional. 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)`.",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "id": "livestream.projects.locations.channels.clips.delete",
                      "httpMethod": "DELETE"
                    }
                  }
                },
                "dvrSessions": {
                  "methods": {
                    "create": {
                      "httpMethod": "POST",
                      "id": "livestream.projects.locations.channels.dvrSessions.create",
                      "parameters": {
                        "dvrSessionId": {
                          "description": "Required. The ID of the DVR session resource to be created. This value must be 1-63 characters, begin and end with a lower-case letter or a number, and consist of only lower-case letters, numbers, and hyphens. In other words, it must match the following regex: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`.",
                          "location": "query",
                          "type": "string"
                        },
                        "parent": {
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                          "location": "path",
                          "required": true,
                          "description": "Required. The parent resource name, in the following form: `projects/{project}/locations/{location}/channels/{channelId}`."
                        },
                        "requestId": {
                          "description": "Optional. An optional 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).",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "request": {
                        "$ref": "DvrSession"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/dvrSessions",
                      "description": "Creates a DVR session with the provided unique ID in the specified channel.",
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "Operation"
                      },
                      "path": "v1/{+parent}/dvrSessions"
                    },
                    "delete": {
                      "httpMethod": "DELETE",
                      "id": "livestream.projects.locations.channels.dvrSessions.delete",
                      "parameters": {
                        "name": {
                          "location": "path",
                          "required": true,
                          "description": "Required. The name of the event resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}/dvrSessions/{dvrSessionId}`.",
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/dvrSessions/[^/]+$"
                        },
                        "requestId": {
                          "description": "Optional. 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)`.",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "Operation"
                      },
                      "path": "v1/{+name}",
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/dvrSessions/{dvrSessionsId}",
                      "description": "Deletes the specified DVR session."
                    },
                    "patch": {
                      "id": "livestream.projects.locations.channels.dvrSessions.patch",
                      "httpMethod": "PATCH",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameters": {
                        "requestId": {
                          "description": "Optional. 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)`.",
                          "location": "query",
                          "type": "string"
                        },
                        "name": {
                          "description": "Identifier. The resource name of the DVR session, in the following format: `projects/{project}/locations/{location}/channels/{channelId}/dvrSessions/{dvrSessionId}`. `{dvrSessionId}` is a user-specified resource id that conforms to the following criteria: 1. 1 character minimum, 63 characters maximum 2. Only contains letters, digits, underscores, and hyphens",
                          "required": true,
                          "location": "path",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/dvrSessions/[^/]+$",
                          "type": "string"
                        },
                        "updateMask": {
                          "location": "query",
                          "type": "string",
                          "description": "Required. Field mask is used to specify the fields to be overwritten in the DvrSession resource by the update. You can only update the following fields: * `dvrWindows` 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.",
                          "format": "google-fieldmask"
                        }
                      },
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "Operation"
                      },
                      "path": "v1/{+name}",
                      "request": {
                        "$ref": "DvrSession"
                      },
                      "description": "Updates the specified DVR session.",
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/dvrSessions/{dvrSessionsId}"
                    },
                    "list": {
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "ListDvrSessionsResponse"
                      },
                      "path": "v1/{+parent}/dvrSessions",
                      "description": "Returns a list of all DVR sessions in the specified channel.",
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/dvrSessions",
                      "id": "livestream.projects.locations.channels.dvrSessions.list",
                      "httpMethod": "GET",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameters": {
                        "pageToken": {
                          "description": "Optional. A token identifying a page of results the server should return.",
                          "location": "query",
                          "type": "string"
                        },
                        "orderBy": {
                          "description": "Optional. Hint for how to order the results",
                          "location": "query",
                          "type": "string"
                        },
                        "filter": {
                          "description": "Optional. Filtering results",
                          "location": "query",
                          "type": "string"
                        },
                        "parent": {
                          "description": "Required. Parent value for ListDvrSessionsRequest",
                          "required": true,
                          "location": "path",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                          "type": "string"
                        },
                        "pageSize": {
                          "description": "Optional. Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default.",
                          "format": "int32",
                          "location": "query",
                          "type": "integer"
                        }
                      }
                    },
                    "get": {
                      "path": "v1/{+name}",
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "DvrSession"
                      },
                      "description": "Returns the specified DVR session.",
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/dvrSessions/{dvrSessionsId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameters": {
                        "name": {
                          "location": "path",
                          "description": "Required. Name of the resource, in the following form: `projects/{project}/locations/{location}/channels/{channelId}/dvrSessions/{dvrSessionId}`.",
                          "required": true,
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/dvrSessions/[^/]+$"
                        }
                      },
                      "id": "livestream.projects.locations.channels.dvrSessions.get",
                      "httpMethod": "GET"
                    }
                  }
                },
                "events": {
                  "methods": {
                    "create": {
                      "path": "v1/{+parent}/events",
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "Event"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/events",
                      "description": "Creates an event with the provided unique ID in the specified channel.",
                      "request": {
                        "$ref": "Event"
                      },
                      "parameters": {
                        "parent": {
                          "location": "path",
                          "description": "Required. The parent channel for the resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                          "required": true,
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$"
                        },
                        "eventId": {
                          "location": "query",
                          "type": "string",
                          "description": "Required. The ID of the event resource to be created. This value must be 1-63 characters, begin and end with a lower-case letter or a number, and consist of only lower-case letters, numbers, and hyphens. In other words, it must match the following regex: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`."
                        },
                        "requestId": {
                          "description": "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)`.",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "POST",
                      "id": "livestream.projects.locations.channels.events.create"
                    },
                    "delete": {
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "Empty"
                      },
                      "path": "v1/{+name}",
                      "description": "Deletes the specified event.",
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/events/{eventsId}",
                      "id": "livestream.projects.locations.channels.events.delete",
                      "httpMethod": "DELETE",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameters": {
                        "name": {
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/events/[^/]+$",
                          "type": "string",
                          "description": "Required. The name of the event resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}/events/{eventId}`.",
                          "required": true,
                          "location": "path"
                        },
                        "requestId": {
                          "location": "query",
                          "type": "string",
                          "description": "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)`."
                        }
                      }
                    },
                    "list": {
                      "httpMethod": "GET",
                      "id": "livestream.projects.locations.channels.events.list",
                      "parameters": {
                        "pageToken": {
                          "location": "query",
                          "type": "string",
                          "description": "The next_page_token value returned from a previous List request, if any."
                        },
                        "orderBy": {
                          "location": "query",
                          "type": "string",
                          "description": "Specifies the ordering of results following syntax at https://cloud.google.com/apis/design/design_patterns#sorting_order."
                        },
                        "pageSize": {
                          "location": "query",
                          "type": "integer",
                          "format": "int32",
                          "description": "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 to determine if there are more items left to be queried."
                        },
                        "parent": {
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                          "type": "string",
                          "required": true,
                          "description": "Required. The parent channel for the resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                          "location": "path"
                        },
                        "filter": {
                          "description": "The filter to apply to list results.",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/events",
                      "description": "Returns a list of all events in the specified channel.",
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "ListEventsResponse"
                      },
                      "path": "v1/{+parent}/events"
                    },
                    "get": {
                      "httpMethod": "GET",
                      "id": "livestream.projects.locations.channels.events.get",
                      "parameters": {
                        "name": {
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/events/[^/]+$",
                          "location": "path",
                          "required": true,
                          "description": "Required. The name of the event resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}/events/{eventId}`."
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/events/{eventsId}",
                      "description": "Returns the specified event.",
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "Event"
                      },
                      "path": "v1/{+name}"
                    }
                  }
                }
              },
              "methods": {
                "create": {
                  "httpMethod": "POST",
                  "id": "livestream.projects.locations.channels.create",
                  "parameters": {
                    "parent": {
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string",
                      "required": true,
                      "description": "Required. The parent location for the resource, in the form of: `projects/{project}/locations/{location}`.",
                      "location": "path"
                    },
                    "requestId": {
                      "description": "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)`.",
                      "location": "query",
                      "type": "string"
                    },
                    "channelId": {
                      "description": "Required. The ID of the channel resource to be created. This value must be 1-63 characters, begin and end with a lower-case letter or a number, and consist of only lower-case letters, numbers, and hyphens. In other words, it must match the following regex: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "Channel"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels",
                  "description": "Creates a channel with the provided unique ID in the specified region.",
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "path": "v1/{+parent}/channels"
                },
                "delete": {
                  "description": "Deletes the specified channel.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "path": "v1/{+name}",
                  "id": "livestream.projects.locations.channels.delete",
                  "httpMethod": "DELETE",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "force": {
                      "description": "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.",
                      "location": "query",
                      "type": "boolean"
                    },
                    "name": {
                      "required": true,
                      "description": "Required. The name of the channel resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "type": "string"
                    },
                    "requestId": {
                      "description": "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)`.",
                      "location": "query",
                      "type": "string"
                    }
                  }
                },
                "start": {
                  "id": "livestream.projects.locations.channels.start",
                  "httpMethod": "POST",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "type": "string",
                      "required": true,
                      "description": "Required. The name of the channel resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                      "location": "path"
                    }
                  },
                  "request": {
                    "$ref": "StartChannelRequest"
                  },
                  "description": "Starts the specified channel. Part of the video pipeline will be created only when the StartChannel request is received by the server.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}:start",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "path": "v1/{+name}:start"
                },
                "stopdistribution": {
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "path": "v1/{+name}:stopdistribution",
                  "request": {
                    "$ref": "StopDistributionRequest"
                  },
                  "description": "Stops the specified distribution.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}:stopdistribution",
                  "id": "livestream.projects.locations.channels.stopdistribution",
                  "httpMethod": "POST",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "location": "path",
                      "description": "Required. The name of the channel resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                      "required": true
                    }
                  }
                },
                "list": {
                  "id": "livestream.projects.locations.channels.list",
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "pageToken": {
                      "location": "query",
                      "type": "string",
                      "description": "The next_page_token value returned from a previous List request, if any."
                    },
                    "orderBy": {
                      "description": "Specifies the ordering of results following syntax at https://cloud.google.com/apis/design/design_patterns#sorting_order.",
                      "location": "query",
                      "type": "string"
                    },
                    "pageSize": {
                      "format": "int32",
                      "description": "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 to determine if there are more items left to be queried.",
                      "location": "query",
                      "type": "integer"
                    },
                    "parent": {
                      "location": "path",
                      "description": "Required. The parent location for the resource, in the form of: `projects/{project}/locations/{location}`.",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$"
                    },
                    "filter": {
                      "description": "The filter to apply to list results.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "description": "Returns a list of all channels in the specified region.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels",
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListChannelsResponse"
                  },
                  "path": "v1/{+parent}/channels"
                },
                "get": {
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Channel"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}",
                  "description": "Returns the specified channel.",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "location": "path",
                      "required": true,
                      "description": "Required. The name of the channel resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`."
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "id": "livestream.projects.locations.channels.get"
                },
                "startdistribution": {
                  "id": "livestream.projects.locations.channels.startdistribution",
                  "httpMethod": "POST",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "type": "string",
                      "description": "Required. The name of the channel resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "request": {
                    "$ref": "StartDistributionRequest"
                  },
                  "description": "Starts distribution which delivers outputs to the destination indicated by the Distribution configuration.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}:startdistribution",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "path": "v1/{+name}:startdistribution"
                },
                "patch": {
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "description": "Updates the specified channel.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}",
                  "request": {
                    "$ref": "Channel"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "type": "string",
                      "required": true,
                      "description": "The resource name of the channel, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                      "location": "path"
                    },
                    "updateMask": {
                      "description": "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.",
                      "format": "google-fieldmask",
                      "location": "query",
                      "type": "string"
                    },
                    "requestId": {
                      "description": "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)`.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "id": "livestream.projects.locations.channels.patch",
                  "httpMethod": "PATCH"
                },
                "stop": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the channel resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                      "required": true,
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "type": "string"
                    }
                  },
                  "id": "livestream.projects.locations.channels.stop",
                  "httpMethod": "POST",
                  "description": "Stops the specified channel. Part of the video pipeline will be released when the StopChannel request is received by the server.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}:stop",
                  "request": {
                    "$ref": "StopChannelRequest"
                  },
                  "path": "v1/{+name}:stop",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  }
                }
              }
            },
            "pools": {
              "methods": {
                "get": {
                  "id": "livestream.projects.locations.pools.get",
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "location": "path",
                      "description": "Required. The name of the pool resource, in the form of: `projects/{project}/locations/{location}/pools/{poolId}`.",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/pools/[^/]+$"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Pool"
                  },
                  "path": "v1/{+name}",
                  "description": "Returns the specified pool.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/pools/{poolsId}"
                },
                "patch": {
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "description": "Updates the specified pool.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/pools/{poolsId}",
                  "request": {
                    "$ref": "Pool"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "description": "The resource name of the pool, in the form of: `projects/{project}/locations/{location}/pools/{poolId}`.",
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/pools/[^/]+$"
                    },
                    "updateMask": {
                      "format": "google-fieldmask",
                      "description": "Field mask is used to specify the fields to be overwritten in the Pool resource by the update. You can only update the following fields: * `networkConfig` 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.",
                      "location": "query",
                      "type": "string"
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "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)`."
                    }
                  },
                  "id": "livestream.projects.locations.pools.patch",
                  "httpMethod": "PATCH"
                }
              }
            },
            "inputs": {
              "methods": {
                "create": {
                  "path": "v1/{+parent}/inputs",
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "description": "Creates an input with the provided unique ID in the specified region.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/inputs",
                  "request": {
                    "$ref": "Input"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "parent": {
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string",
                      "description": "Required. The parent location for the resource, in the form of: `projects/{project}/locations/{location}`.",
                      "required": true,
                      "location": "path"
                    },
                    "inputId": {
                      "location": "query",
                      "type": "string",
                      "description": "Required. The ID of the input resource to be created. This value must be 1-63 characters, begin and end with a lower-case letter or a number, and consist of only lower-case letters, numbers, and hyphens. In other words, it must match the following regex: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`."
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "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)`."
                    }
                  },
                  "id": "livestream.projects.locations.inputs.create",
                  "httpMethod": "POST"
                },
                "delete": {
                  "description": "Deletes the specified input.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/inputs/{inputsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "path": "v1/{+name}",
                  "id": "livestream.projects.locations.inputs.delete",
                  "httpMethod": "DELETE",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "location": "path",
                      "description": "Required. The name of the input resource, in the form of: `projects/{project}/locations/{location}/inputs/{inputId}`.",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/inputs/[^/]+$"
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "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)`."
                    }
                  }
                },
                "patch": {
                  "parameters": {
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "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)`."
                    },
                    "name": {
                      "location": "path",
                      "required": true,
                      "description": "The resource name of the input, in the form of: `projects/{project}/locations/{location}/inputs/{inputId}`.",
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/inputs/[^/]+$"
                    },
                    "updateMask": {
                      "description": "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: * [`tier`](https://cloud.google.com/livestream/docs/reference/rest/v1/projects.locations.inputs#Tier) * [`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.",
                      "format": "google-fieldmask",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "PATCH",
                  "id": "livestream.projects.locations.inputs.patch",
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/inputs/{inputsId}",
                  "description": "Updates the specified input.",
                  "request": {
                    "$ref": "Input"
                  }
                },
                "preview": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the input resource, in the form of: `projects/{project}/locations/{location}/inputs/{inputId}`.",
                      "required": true,
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+/inputs/[^/]+$",
                      "type": "string"
                    }
                  },
                  "id": "livestream.projects.locations.inputs.preview",
                  "httpMethod": "POST",
                  "description": "Preview the streaming content of the specified input.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/inputs/{inputsId}:preview",
                  "request": {
                    "$ref": "PreviewInputRequest"
                  },
                  "path": "v1/{+name}:preview",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "PreviewInputResponse"
                  }
                },
                "list": {
                  "parameters": {
                    "filter": {
                      "location": "query",
                      "type": "string",
                      "description": "The filter to apply to list results."
                    },
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "description": "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 to determine if there are more items left to be queried.",
                      "format": "int32"
                    },
                    "parent": {
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string",
                      "description": "Required. The parent location for the resource, in the form of: `projects/{project}/locations/{location}`.",
                      "required": true,
                      "location": "path"
                    },
                    "pageToken": {
                      "description": "The next_page_token value returned from a previous List request, if any.",
                      "location": "query",
                      "type": "string"
                    },
                    "orderBy": {
                      "description": "Specifies the ordering of results following syntax at [Sorting Order](https://cloud.google.com/apis/design/design_patterns#sorting_order).",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "id": "livestream.projects.locations.inputs.list",
                  "path": "v1/{+parent}/inputs",
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListInputsResponse"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/inputs",
                  "description": "Returns a list of all inputs in the specified region."
                },
                "get": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the input resource, in the form of: `projects/{project}/locations/{location}/inputs/{inputId}`.",
                      "required": true,
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+/inputs/[^/]+$",
                      "type": "string"
                    }
                  },
                  "id": "livestream.projects.locations.inputs.get",
                  "httpMethod": "GET",
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Input"
                  },
                  "description": "Returns the specified input.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/inputs/{inputsId}"
                }
              }
            },
            "assets": {
              "methods": {
                "create": {
                  "path": "v1/{+parent}/assets",
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "description": "Creates a Asset with the provided unique ID in the specified region.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/assets",
                  "request": {
                    "$ref": "Asset"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "parent": {
                      "location": "path",
                      "required": true,
                      "description": "Required. The parent location for the resource, in the form of: `projects/{project}/locations/{location}`.",
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$"
                    },
                    "assetId": {
                      "location": "query",
                      "type": "string",
                      "description": "Required. The ID of the asset resource to be created. This value must be 1-63 characters, begin and end with a lower-case letter or a number, and consist of only lower-case letters, numbers, and hyphens. In other words, it must match the following regex: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`."
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "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)`."
                    }
                  },
                  "id": "livestream.projects.locations.assets.create",
                  "httpMethod": "POST"
                },
                "delete": {
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "path": "v1/{+name}",
                  "description": "Deletes the specified asset if it is not used.",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/assets/{assetsId}",
                  "id": "livestream.projects.locations.assets.delete",
                  "httpMethod": "DELETE",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the asset resource, in the form of: `projects/{project}/locations/{location}/assets/{assetId}`.",
                      "required": true,
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+/assets/[^/]+$",
                      "type": "string"
                    },
                    "requestId": {
                      "description": "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)`.",
                      "location": "query",
                      "type": "string"
                    }
                  }
                },
                "get": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/assets/{assetsId}",
                  "description": "Returns the specified asset.",
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Asset"
                  },
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/assets/[^/]+$",
                      "type": "string",
                      "required": true,
                      "description": "Required. Name of the resource, in the following form: `projects/{project}/locations/{location}/assets/{asset}`.",
                      "location": "path"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "id": "livestream.projects.locations.assets.get"
                },
                "list": {
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListAssetsResponse"
                  },
                  "path": "v1/{+parent}/assets",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/assets",
                  "description": "Returns a list of all assets in the specified region.",
                  "httpMethod": "GET",
                  "id": "livestream.projects.locations.assets.list",
                  "parameters": {
                    "filter": {
                      "description": "Filtering results",
                      "location": "query",
                      "type": "string"
                    },
                    "parent": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "location": "path",
                      "required": true,
                      "description": "Required. The parent location for the resource, in the form of: `projects/{project}/locations/{location}`."
                    },
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "format": "int32",
                      "description": "Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default."
                    },
                    "pageToken": {
                      "description": "A token identifying a page of results the server should return.",
                      "location": "query",
                      "type": "string"
                    },
                    "orderBy": {
                      "description": "Hint for how to order the results",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "version_module": true,
  "canonicalName": "Live Stream",
  "kind": "discovery#restDescription",
  "ownerName": "Google",
  "title": "Live Stream API",
  "protocol": "rest",
  "rootUrl": "https://livestream.googleapis.com/",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        }
      }
    }
  },
  "discoveryVersion": "v1",
  "parameters": {
    "key": {
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "type": "string",
      "location": "query"
    },
    "callback": {
      "type": "string",
      "location": "query",
      "description": "JSONP"
    },
    "oauth_token": {
      "type": "string",
      "location": "query",
      "description": "OAuth 2.0 token for the current user."
    },
    "upload_protocol": {
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "type": "string",
      "location": "query"
    },
    "quotaUser": {
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "type": "string",
      "location": "query"
    },
    "access_token": {
      "type": "string",
      "location": "query",
      "description": "OAuth access token."
    },
    "$.xgafv": {
      "description": "V1 error format.",
      "location": "query",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "type": "string"
    },
    "alt": {
      "type": "string",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "default": "json",
      "location": "query",
      "description": "Data format for response."
    },
    "fields": {
      "description": "Selector specifying which fields to include in a partial response.",
      "type": "string",
      "location": "query"
    },
    "uploadType": {
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "type": "string",
      "location": "query"
    },
    "prettyPrint": {
      "description": "Returns response with indentations and line breaks.",
      "type": "boolean",
      "default": "true",
      "location": "query"
    }
  },
  "description": "",
  "mtlsRootUrl": "https://livestream.mtls.googleapis.com/"
}
