{
  "parameters": {
    "alt": {
      "type": "string",
      "default": "json",
      "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"
      ],
      "description": "Data format for response.",
      "location": "query"
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "$.xgafv": {
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "description": "V1 error format.",
      "location": "query",
      "type": "string"
    },
    "callback": {
      "type": "string",
      "description": "JSONP",
      "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"
    },
    "uploadType": {
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "type": "string",
      "location": "query"
    },
    "fields": {
      "location": "query",
      "description": "Selector specifying which fields to include in a partial response.",
      "type": "string"
    },
    "access_token": {
      "location": "query",
      "description": "OAuth access token.",
      "type": "string"
    },
    "key": {
      "location": "query",
      "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"
    },
    "prettyPrint": {
      "default": "true",
      "location": "query",
      "type": "boolean",
      "description": "Returns response with indentations and line breaks."
    },
    "upload_protocol": {
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "type": "string",
      "location": "query"
    }
  },
  "id": "livestream:v1",
  "mtlsRootUrl": "https://livestream.mtls.googleapis.com/",
  "resources": {
    "projects": {
      "resources": {
        "locations": {
          "methods": {
            "list": {
              "response": {
                "$ref": "ListLocationsResponse"
              },
              "flatPath": "v1/projects/{projectsId}/locations",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "livestream.projects.locations.list",
              "parameters": {
                "pageToken": {
                  "location": "query",
                  "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
                  "type": "string"
                },
                "filter": {
                  "location": "query",
                  "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).",
                  "type": "string"
                },
                "pageSize": {
                  "description": "The maximum number of results to return. If not set, the service selects a default.",
                  "type": "integer",
                  "location": "query",
                  "format": "int32"
                },
                "name": {
                  "location": "path",
                  "required": true,
                  "description": "The resource that owns the locations collection, if applicable.",
                  "pattern": "^projects/[^/]+$",
                  "type": "string"
                },
                "extraLocationTypes": {
                  "description": "Optional. Do not use this field. It is unsupported and is ignored unless explicitly documented otherwise. This is primarily for internal usage.",
                  "repeated": true,
                  "type": "string",
                  "location": "query"
                }
              },
              "httpMethod": "GET",
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}/locations",
              "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."
            },
            "get": {
              "httpMethod": "GET",
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}",
              "description": "Gets information about a location.",
              "id": "livestream.projects.locations.get",
              "parameters": {
                "name": {
                  "description": "Resource name for the location.",
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "pattern": "^projects/[^/]+/locations/[^/]+$"
                }
              },
              "flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "Location"
              }
            }
          },
          "resources": {
            "operations": {
              "methods": {
                "cancel": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "CancelOperationRequest"
                  },
                  "response": {
                    "$ref": "Empty"
                  },
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}:cancel",
                  "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`.",
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "description": "The name of the operation resource to be cancelled."
                    }
                  },
                  "id": "livestream.projects.locations.operations.cancel"
                },
                "list": {
                  "parameters": {
                    "name": {
                      "description": "The name of the operation's parent resource.",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$"
                    },
                    "filter": {
                      "type": "string",
                      "description": "The standard list filter.",
                      "location": "query"
                    },
                    "pageSize": {
                      "location": "query",
                      "format": "int32",
                      "type": "integer",
                      "description": "The standard list page size."
                    },
                    "returnPartialSuccess": {
                      "location": "query",
                      "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.",
                      "type": "boolean"
                    },
                    "pageToken": {
                      "type": "string",
                      "description": "The standard list page token.",
                      "location": "query"
                    }
                  },
                  "id": "livestream.projects.locations.operations.list",
                  "path": "v1/{+name}/operations",
                  "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
                  "httpMethod": "GET",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "ListOperationsResponse"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "get": {
                  "httpMethod": "GET",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "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.",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "description": "The name of the operation resource.",
                      "location": "path",
                      "required": true
                    }
                  },
                  "id": "livestream.projects.locations.operations.get",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "Operation"
                  }
                },
                "delete": {
                  "id": "livestream.projects.locations.operations.delete",
                  "parameters": {
                    "name": {
                      "description": "The name of the operation resource to be deleted.",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$"
                    }
                  },
                  "path": "v1/{+name}",
                  "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`.",
                  "httpMethod": "DELETE",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                }
              }
            },
            "channels": {
              "methods": {
                "create": {
                  "request": {
                    "$ref": "Channel"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "requestId": {
                      "location": "query",
                      "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)`.",
                      "type": "string"
                    },
                    "parent": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "description": "Required. The parent location for the resource, in the form of: `projects/{project}/locations/{location}`.",
                      "location": "path",
                      "required": true
                    },
                    "channelId": {
                      "type": "string",
                      "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"
                    }
                  },
                  "id": "livestream.projects.locations.channels.create",
                  "path": "v1/{+parent}/channels",
                  "description": "Creates a channel with the provided unique ID in the specified region.",
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "parent"
                  ]
                },
                "list": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "ListChannelsResponse"
                  },
                  "httpMethod": "GET",
                  "parameterOrder": [
                    "parent"
                  ],
                  "path": "v1/{+parent}/channels",
                  "description": "Returns a list of all channels in the specified region.",
                  "id": "livestream.projects.locations.channels.list",
                  "parameters": {
                    "parent": {
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "description": "Required. The parent location for the resource, in the form of: `projects/{project}/locations/{location}`."
                    },
                    "pageToken": {
                      "description": "The next_page_token value returned from a previous List request, if any.",
                      "type": "string",
                      "location": "query"
                    },
                    "pageSize": {
                      "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.",
                      "type": "integer",
                      "location": "query",
                      "format": "int32"
                    },
                    "filter": {
                      "description": "The filter to apply to list results.",
                      "type": "string",
                      "location": "query"
                    },
                    "orderBy": {
                      "description": "Specifies the ordering of results following syntax at https://cloud.google.com/apis/design/design_patterns#sorting_order.",
                      "type": "string",
                      "location": "query"
                    }
                  }
                },
                "stop": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}:stop",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "StopChannelRequest"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}:stop",
                  "description": "Stops the specified channel. Part of the video pipeline will be released when the StopChannel request is received by the server.",
                  "id": "livestream.projects.locations.channels.stop",
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "description": "Required. The name of the channel resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "type": "string"
                    }
                  }
                },
                "delete": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "path": "v1/{+name}",
                  "description": "Deletes the specified channel.",
                  "httpMethod": "DELETE",
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "livestream.projects.locations.channels.delete",
                  "parameters": {
                    "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)`.",
                      "type": "string",
                      "location": "query"
                    },
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "description": "Required. The name of the channel resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                      "required": true,
                      "location": "path"
                    },
                    "force": {
                      "location": "query",
                      "type": "boolean",
                      "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."
                    }
                  }
                },
                "stopdistribution": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}:stopdistribution",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "StopDistributionRequest"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}:stopdistribution",
                  "description": "Stops the specified distribution.",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "description": "Required. The name of the channel resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                      "location": "path",
                      "required": true
                    }
                  },
                  "id": "livestream.projects.locations.channels.stopdistribution"
                },
                "patch": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "Channel"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "path": "v1/{+name}",
                  "description": "Updates the specified channel.",
                  "httpMethod": "PATCH",
                  "parameterOrder": [
                    "name"
                  ],
                  "parameters": {
                    "updateMask": {
                      "type": "string",
                      "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.",
                      "location": "query",
                      "format": "google-fieldmask"
                    },
                    "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 channel, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "type": "string"
                    }
                  },
                  "id": "livestream.projects.locations.channels.patch"
                },
                "start": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}:start",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "StartChannelRequest"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "path": "v1/{+name}:start",
                  "description": "Starts the specified channel. Part of the video pipeline will be created only when the StartChannel request is received by the server.",
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "livestream.projects.locations.channels.start",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the channel resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$"
                    }
                  }
                },
                "get": {
                  "response": {
                    "$ref": "Channel"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "livestream.projects.locations.channels.get",
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "description": "Required. The name of the channel resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`."
                    }
                  },
                  "path": "v1/{+name}",
                  "description": "Returns the specified channel.",
                  "httpMethod": "GET",
                  "parameterOrder": [
                    "name"
                  ]
                },
                "startdistribution": {
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "description": "Required. The name of the channel resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                      "type": "string"
                    }
                  },
                  "id": "livestream.projects.locations.channels.startdistribution",
                  "path": "v1/{+name}:startdistribution",
                  "description": "Starts distribution which delivers outputs to the destination indicated by the Distribution configuration.",
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "StartDistributionRequest"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}:startdistribution",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                }
              },
              "resources": {
                "dvrSessions": {
                  "methods": {
                    "list": {
                      "path": "v1/{+parent}/dvrSessions",
                      "description": "Returns a list of all DVR sessions in the specified channel.",
                      "httpMethod": "GET",
                      "parameterOrder": [
                        "parent"
                      ],
                      "id": "livestream.projects.locations.channels.dvrSessions.list",
                      "parameters": {
                        "pageToken": {
                          "location": "query",
                          "type": "string",
                          "description": "Optional. A token identifying a page of results the server should return."
                        },
                        "pageSize": {
                          "description": "Optional. Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default.",
                          "type": "integer",
                          "location": "query",
                          "format": "int32"
                        },
                        "filter": {
                          "location": "query",
                          "type": "string",
                          "description": "Optional. Filtering results"
                        },
                        "orderBy": {
                          "type": "string",
                          "description": "Optional. Hint for how to order the results",
                          "location": "query"
                        },
                        "parent": {
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                          "description": "Required. Parent value for ListDvrSessionsRequest",
                          "required": true,
                          "location": "path"
                        }
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/dvrSessions",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "ListDvrSessionsResponse"
                      }
                    },
                    "create": {
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/dvrSessions",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "request": {
                        "$ref": "DvrSession"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "path": "v1/{+parent}/dvrSessions",
                      "description": "Creates a DVR session with the provided unique ID in the specified channel.",
                      "httpMethod": "POST",
                      "parameterOrder": [
                        "parent"
                      ],
                      "parameters": {
                        "requestId": {
                          "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).",
                          "location": "query"
                        },
                        "parent": {
                          "location": "path",
                          "required": true,
                          "description": "Required. The parent resource name, in the following form: `projects/{project}/locations/{location}/channels/{channelId}`.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                          "type": "string"
                        },
                        "dvrSessionId": {
                          "location": "query",
                          "type": "string",
                          "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])?$`."
                        }
                      },
                      "id": "livestream.projects.locations.channels.dvrSessions.create"
                    },
                    "patch": {
                      "parameters": {
                        "name": {
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/dvrSessions/[^/]+$",
                          "type": "string",
                          "required": true,
                          "location": "path",
                          "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"
                        },
                        "updateMask": {
                          "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.",
                          "type": "string",
                          "location": "query",
                          "format": "google-fieldmask"
                        },
                        "requestId": {
                          "type": "string",
                          "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"
                        }
                      },
                      "id": "livestream.projects.locations.channels.dvrSessions.patch",
                      "path": "v1/{+name}",
                      "description": "Updates the specified DVR session.",
                      "httpMethod": "PATCH",
                      "parameterOrder": [
                        "name"
                      ],
                      "request": {
                        "$ref": "DvrSession"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/dvrSessions/{dvrSessionsId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "get": {
                      "id": "livestream.projects.locations.channels.dvrSessions.get",
                      "parameters": {
                        "name": {
                          "location": "path",
                          "required": true,
                          "description": "Required. Name of the resource, in the following form: `projects/{project}/locations/{location}/channels/{channelId}/dvrSessions/{dvrSessionId}`.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/dvrSessions/[^/]+$",
                          "type": "string"
                        }
                      },
                      "path": "v1/{+name}",
                      "description": "Returns the specified DVR session.",
                      "httpMethod": "GET",
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "DvrSession"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/dvrSessions/{dvrSessionsId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "delete": {
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/dvrSessions/{dvrSessionsId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "id": "livestream.projects.locations.channels.dvrSessions.delete",
                      "parameters": {
                        "name": {
                          "required": true,
                          "location": "path",
                          "description": "Required. The name of the event resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}/dvrSessions/{dvrSessionId}`.",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/dvrSessions/[^/]+$",
                          "type": "string"
                        },
                        "requestId": {
                          "location": "query",
                          "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"
                        }
                      },
                      "path": "v1/{+name}",
                      "description": "Deletes the specified DVR session.",
                      "httpMethod": "DELETE",
                      "parameterOrder": [
                        "name"
                      ]
                    }
                  }
                },
                "events": {
                  "methods": {
                    "create": {
                      "parameters": {
                        "eventId": {
                          "location": "query",
                          "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])?$`.",
                          "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)`."
                        },
                        "parent": {
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                          "description": "Required. The parent channel for the resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                          "required": true,
                          "location": "path"
                        }
                      },
                      "id": "livestream.projects.locations.channels.events.create",
                      "httpMethod": "POST",
                      "parameterOrder": [
                        "parent"
                      ],
                      "path": "v1/{+parent}/events",
                      "description": "Creates an event with the provided unique ID in the specified channel.",
                      "request": {
                        "$ref": "Event"
                      },
                      "response": {
                        "$ref": "Event"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/events",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "list": {
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/events",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "ListEventsResponse"
                      },
                      "httpMethod": "GET",
                      "parameterOrder": [
                        "parent"
                      ],
                      "path": "v1/{+parent}/events",
                      "description": "Returns a list of all events in the specified channel.",
                      "id": "livestream.projects.locations.channels.events.list",
                      "parameters": {
                        "pageSize": {
                          "location": "query",
                          "format": "int32",
                          "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."
                        },
                        "filter": {
                          "location": "query",
                          "type": "string",
                          "description": "The filter to apply to list results."
                        },
                        "orderBy": {
                          "description": "Specifies the ordering of results following syntax at https://cloud.google.com/apis/design/design_patterns#sorting_order.",
                          "type": "string",
                          "location": "query"
                        },
                        "pageToken": {
                          "type": "string",
                          "description": "The next_page_token value returned from a previous List request, if any.",
                          "location": "query"
                        },
                        "parent": {
                          "description": "Required. The parent channel for the resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
                          "location": "path",
                          "required": true,
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$"
                        }
                      }
                    },
                    "get": {
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/events/{eventsId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "Event"
                      },
                      "path": "v1/{+name}",
                      "description": "Returns the specified event.",
                      "httpMethod": "GET",
                      "parameterOrder": [
                        "name"
                      ],
                      "parameters": {
                        "name": {
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/events/[^/]+$",
                          "type": "string",
                          "required": true,
                          "location": "path",
                          "description": "Required. The name of the event resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}/events/{eventId}`."
                        }
                      },
                      "id": "livestream.projects.locations.channels.events.get"
                    },
                    "delete": {
                      "response": {
                        "$ref": "Empty"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/events/{eventsId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameters": {
                        "name": {
                          "description": "Required. The name of the event resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}/events/{eventId}`.",
                          "location": "path",
                          "required": true,
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/events/[^/]+$"
                        },
                        "requestId": {
                          "location": "query",
                          "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)`.",
                          "type": "string"
                        }
                      },
                      "id": "livestream.projects.locations.channels.events.delete",
                      "httpMethod": "DELETE",
                      "parameterOrder": [
                        "name"
                      ],
                      "path": "v1/{+name}",
                      "description": "Deletes the specified event."
                    }
                  }
                },
                "clips": {
                  "methods": {
                    "create": {
                      "parameters": {
                        "clipId": {
                          "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])?$`.",
                          "location": "query"
                        },
                        "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)."
                        },
                        "parent": {
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                          "description": "Required. The parent resource name, in the following form: `projects/{project}/locations/{location}/channels/{channel}`.",
                          "location": "path",
                          "required": true
                        }
                      },
                      "id": "livestream.projects.locations.channels.clips.create",
                      "httpMethod": "POST",
                      "parameterOrder": [
                        "parent"
                      ],
                      "path": "v1/{+parent}/clips",
                      "description": "Creates a clip with the provided clip ID in the specified channel.",
                      "request": {
                        "$ref": "Clip"
                      },
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/clips",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "list": {
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/clips",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "ListClipsResponse"
                      },
                      "httpMethod": "GET",
                      "parameterOrder": [
                        "parent"
                      ],
                      "path": "v1/{+parent}/clips",
                      "description": "Returns a list of all clips in the specified channel.",
                      "id": "livestream.projects.locations.channels.clips.list",
                      "parameters": {
                        "pageToken": {
                          "description": "A token identifying a page of results the server should return.",
                          "type": "string",
                          "location": "query"
                        },
                        "pageSize": {
                          "location": "query",
                          "format": "int32",
                          "type": "integer",
                          "description": "Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default."
                        },
                        "filter": {
                          "type": "string",
                          "description": "Filtering results",
                          "location": "query"
                        },
                        "orderBy": {
                          "location": "query",
                          "description": "Hint for how to order the results",
                          "type": "string"
                        },
                        "parent": {
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
                          "type": "string",
                          "location": "path",
                          "required": true,
                          "description": "Required. Parent value for ListClipsRequest"
                        }
                      }
                    },
                    "get": {
                      "response": {
                        "$ref": "Clip"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/clips/{clipsId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "id": "livestream.projects.locations.channels.clips.get",
                      "parameters": {
                        "name": {
                          "description": "Required. Name of the resource, in the following form: `projects/{project}/locations/{location}/channels/{channel}/clips/{clip}`.",
                          "location": "path",
                          "required": true,
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/clips/[^/]+$"
                        }
                      },
                      "path": "v1/{+name}",
                      "description": "Returns the specified clip.",
                      "httpMethod": "GET",
                      "parameterOrder": [
                        "name"
                      ]
                    },
                    "delete": {
                      "id": "livestream.projects.locations.channels.clips.delete",
                      "parameters": {
                        "requestId": {
                          "location": "query",
                          "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"
                        },
                        "name": {
                          "type": "string",
                          "pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+/clips/[^/]+$",
                          "description": "Required. The name of the clip resource, in the form of: `projects/{project}/locations/{location}/channels/{channelId}/clips/{clipId}`.",
                          "location": "path",
                          "required": true
                        }
                      },
                      "httpMethod": "DELETE",
                      "parameterOrder": [
                        "name"
                      ],
                      "path": "v1/{+name}",
                      "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.",
                      "response": {
                        "$ref": "Operation"
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}/clips/{clipsId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    }
                  }
                }
              }
            },
            "pools": {
              "methods": {
                "get": {
                  "httpMethod": "GET",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "description": "Returns the specified pool.",
                  "id": "livestream.projects.locations.pools.get",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the pool resource, in the form of: `projects/{project}/locations/{location}/pools/{poolId}`.",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/pools/[^/]+$"
                    }
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/pools/{poolsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "Pool"
                  }
                },
                "patch": {
                  "id": "livestream.projects.locations.pools.patch",
                  "parameters": {
                    "updateMask": {
                      "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.",
                      "type": "string",
                      "location": "query",
                      "format": "google-fieldmask"
                    },
                    "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)`.",
                      "type": "string",
                      "location": "query"
                    },
                    "name": {
                      "location": "path",
                      "required": true,
                      "description": "The resource name of the pool, in the form of: `projects/{project}/locations/{location}/pools/{poolId}`.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/pools/[^/]+$",
                      "type": "string"
                    }
                  },
                  "path": "v1/{+name}",
                  "description": "Updates the specified pool.",
                  "httpMethod": "PATCH",
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "Pool"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/pools/{poolsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                }
              }
            },
            "inputs": {
              "methods": {
                "preview": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/inputs/{inputsId}:preview",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "PreviewInputRequest"
                  },
                  "response": {
                    "$ref": "PreviewInputResponse"
                  },
                  "path": "v1/{+name}:preview",
                  "description": "Preview the streaming content of the specified input.",
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "name"
                  ],
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/inputs/[^/]+$",
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "description": "Required. The name of the input resource, in the form of: `projects/{project}/locations/{location}/inputs/{inputId}`."
                    }
                  },
                  "id": "livestream.projects.locations.inputs.preview"
                },
                "get": {
                  "path": "v1/{+name}",
                  "description": "Returns the specified input.",
                  "httpMethod": "GET",
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "livestream.projects.locations.inputs.get",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/inputs/[^/]+$",
                      "description": "Required. The name of the input resource, in the form of: `projects/{project}/locations/{location}/inputs/{inputId}`.",
                      "location": "path",
                      "required": true
                    }
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/inputs/{inputsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "Input"
                  }
                },
                "delete": {
                  "id": "livestream.projects.locations.inputs.delete",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/inputs/[^/]+$",
                      "description": "Required. The name of the input resource, in the form of: `projects/{project}/locations/{location}/inputs/{inputId}`.",
                      "required": true,
                      "location": "path"
                    },
                    "requestId": {
                      "location": "query",
                      "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)`.",
                      "type": "string"
                    }
                  },
                  "httpMethod": "DELETE",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "description": "Deletes the specified input.",
                  "response": {
                    "$ref": "Operation"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/inputs/{inputsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "patch": {
                  "id": "livestream.projects.locations.inputs.patch",
                  "parameters": {
                    "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.",
                      "type": "string",
                      "location": "query",
                      "format": "google-fieldmask"
                    },
                    "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)`.",
                      "type": "string",
                      "location": "query"
                    },
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/inputs/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "description": "The resource name of the input, in the form of: `projects/{project}/locations/{location}/inputs/{inputId}`."
                    }
                  },
                  "path": "v1/{+name}",
                  "description": "Updates the specified input.",
                  "httpMethod": "PATCH",
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "Input"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/inputs/{inputsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "create": {
                  "path": "v1/{+parent}/inputs",
                  "description": "Creates an input with the provided unique ID in the specified region.",
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "parent"
                  ],
                  "id": "livestream.projects.locations.inputs.create",
                  "parameters": {
                    "parent": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "description": "Required. The parent location for the resource, in the form of: `projects/{project}/locations/{location}`.",
                      "required": true,
                      "location": "path"
                    },
                    "inputId": {
                      "location": "query",
                      "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])?$`.",
                      "type": "string"
                    },
                    "requestId": {
                      "location": "query",
                      "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)`.",
                      "type": "string"
                    }
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/inputs",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "Input"
                  },
                  "response": {
                    "$ref": "Operation"
                  }
                },
                "list": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/inputs",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "ListInputsResponse"
                  },
                  "httpMethod": "GET",
                  "parameterOrder": [
                    "parent"
                  ],
                  "path": "v1/{+parent}/inputs",
                  "description": "Returns a list of all inputs in the specified region.",
                  "id": "livestream.projects.locations.inputs.list",
                  "parameters": {
                    "parent": {
                      "required": true,
                      "location": "path",
                      "description": "Required. The parent location for the resource, in the form of: `projects/{project}/locations/{location}`.",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string"
                    },
                    "pageToken": {
                      "type": "string",
                      "description": "The next_page_token value returned from a previous List request, if any.",
                      "location": "query"
                    },
                    "pageSize": {
                      "location": "query",
                      "format": "int32",
                      "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."
                    },
                    "filter": {
                      "type": "string",
                      "description": "The filter to apply to list results.",
                      "location": "query"
                    },
                    "orderBy": {
                      "description": "Specifies the ordering of results following syntax at [Sorting Order](https://cloud.google.com/apis/design/design_patterns#sorting_order).",
                      "type": "string",
                      "location": "query"
                    }
                  }
                }
              }
            },
            "assets": {
              "methods": {
                "delete": {
                  "path": "v1/{+name}",
                  "description": "Deletes the specified asset if it is not used.",
                  "httpMethod": "DELETE",
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "livestream.projects.locations.assets.delete",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/assets/[^/]+$",
                      "description": "Required. The name of the asset resource, in the form of: `projects/{project}/locations/{location}/assets/{assetId}`.",
                      "required": true,
                      "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 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)`.",
                      "type": "string",
                      "location": "query"
                    }
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/assets/{assetsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "Operation"
                  }
                },
                "get": {
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "description": "Required. Name of the resource, in the following form: `projects/{project}/locations/{location}/assets/{asset}`.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/assets/[^/]+$",
                      "type": "string"
                    }
                  },
                  "id": "livestream.projects.locations.assets.get",
                  "httpMethod": "GET",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "description": "Returns the specified asset.",
                  "response": {
                    "$ref": "Asset"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/assets/{assetsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "list": {
                  "id": "livestream.projects.locations.assets.list",
                  "parameters": {
                    "parent": {
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "description": "Required. The parent location for the resource, in the form of: `projects/{project}/locations/{location}`."
                    },
                    "pageToken": {
                      "location": "query",
                      "type": "string",
                      "description": "A token identifying a page of results the server should return."
                    },
                    "pageSize": {
                      "location": "query",
                      "format": "int32",
                      "description": "Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default.",
                      "type": "integer"
                    },
                    "filter": {
                      "description": "Filtering results",
                      "type": "string",
                      "location": "query"
                    },
                    "orderBy": {
                      "location": "query",
                      "description": "Hint for how to order the results",
                      "type": "string"
                    }
                  },
                  "httpMethod": "GET",
                  "parameterOrder": [
                    "parent"
                  ],
                  "path": "v1/{+parent}/assets",
                  "description": "Returns a list of all assets in the specified region.",
                  "response": {
                    "$ref": "ListAssetsResponse"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/assets",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "create": {
                  "id": "livestream.projects.locations.assets.create",
                  "parameters": {
                    "assetId": {
                      "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])?$`.",
                      "location": "query"
                    },
                    "requestId": {
                      "location": "query",
                      "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)`.",
                      "type": "string"
                    },
                    "parent": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "description": "Required. The parent location for the resource, in the form of: `projects/{project}/locations/{location}`.",
                      "location": "path",
                      "required": true
                    }
                  },
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "parent"
                  ],
                  "path": "v1/{+parent}/assets",
                  "description": "Creates a Asset with the provided unique ID in the specified region.",
                  "request": {
                    "$ref": "Asset"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/assets",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "batchPath": "batch",
  "version": "v1",
  "rootUrl": "https://livestream.googleapis.com/",
  "revision": "20260327",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "schemas": {
    "AutomaticFailover": {
      "description": "Configurations to follow when automatic failover happens.",
      "type": "object",
      "id": "AutomaticFailover",
      "properties": {
        "inputKeys": {
          "items": {
            "type": "string"
          },
          "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"
        }
      }
    },
    "Playready": {
      "id": "Playready",
      "properties": {},
      "type": "object",
      "description": "Playready configuration."
    },
    "Location": {
      "id": "Location",
      "properties": {
        "locationId": {
          "description": "The canonical id for this location. For example: `\"us-east1\"`.",
          "type": "string"
        },
        "displayName": {
          "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
          "type": "string"
        },
        "labels": {
          "type": "object",
          "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
          "additionalProperties": {
            "type": "string"
          }
        },
        "metadata": {
          "description": "Service-specific metadata. For example the available capacity at the given location.",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          },
          "type": "object"
        },
        "name": {
          "type": "string",
          "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`"
        }
      },
      "description": "A resource that represents a Google Cloud location.",
      "type": "object"
    },
    "Asset": {
      "id": "Asset",
      "properties": {
        "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.",
          "$ref": "Status",
          "readOnly": true
        },
        "createTime": {
          "readOnly": true,
          "format": "google-datetime",
          "type": "string",
          "description": "Output only. The creation time."
        },
        "labels": {
          "description": "User-defined key/value metadata.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "updateTime": {
          "description": "Output only. The update time.",
          "type": "string",
          "readOnly": true,
          "format": "google-datetime"
        },
        "state": {
          "readOnly": true,
          "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"
          ],
          "description": "Output only. The state of the asset resource."
        },
        "video": {
          "description": "VideoAsset represents a video.",
          "$ref": "VideoAsset"
        },
        "image": {
          "$ref": "ImageAsset",
          "description": "ImageAsset represents an image."
        },
        "crc32c": {
          "type": "string",
          "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."
        }
      },
      "description": "An asset represents a video or an image.",
      "type": "object"
    },
    "VideoStreamProperty": {
      "type": "object",
      "description": "Properties of the video stream.",
      "id": "VideoStreamProperty",
      "properties": {
        "index": {
          "description": "Index of this video stream.",
          "type": "integer",
          "format": "int32"
        },
        "videoFormat": {
          "description": "Properties of the video format.",
          "$ref": "VideoFormat"
        }
      }
    },
    "Fairplay": {
      "id": "Fairplay",
      "properties": {},
      "type": "object",
      "description": "Fairplay configuration."
    },
    "VideoFormat": {
      "type": "object",
      "description": "Properties of the video format.",
      "id": "VideoFormat",
      "properties": {
        "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": {
          "format": "int32",
          "description": "The width of the video stream in pixels.",
          "type": "integer"
        },
        "heightPixels": {
          "format": "int32",
          "type": "integer",
          "description": "The height of the video stream in pixels."
        }
      }
    },
    "H265CodecSettings": {
      "id": "H265CodecSettings",
      "properties": {
        "frameRate": {
          "type": "number",
          "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.",
          "format": "double"
        },
        "bitrateBps": {
          "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).",
          "type": "integer",
          "format": "int32"
        },
        "gopDuration": {
          "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.",
          "type": "string",
          "format": "google-duration"
        },
        "vbvFullnessBits": {
          "format": "int32",
          "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."
        },
        "bPyramid": {
          "description": "Optional. Allow B-pyramid for reference frame selection. This may not be supported on all decoders. The default is `false`.",
          "type": "boolean"
        },
        "heightPixels": {
          "type": "integer",
          "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"
        },
        "vbvSizeBits": {
          "description": "Optional. Size of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to bitrate_bps.",
          "type": "integer",
          "format": "int32"
        },
        "gopFrameCount": {
          "format": "int32",
          "type": "integer",
          "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]."
        },
        "bFrameCount": {
          "type": "integer",
          "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.",
          "format": "int32"
        },
        "aqStrength": {
          "format": "double",
          "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."
        },
        "widthPixels": {
          "type": "integer",
          "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].",
          "format": "int32"
        }
      },
      "description": "H265 codec settings.",
      "type": "object"
    },
    "AudioMapping": {
      "type": "object",
      "description": "The mapping for the input streams and audio channels.",
      "id": "AudioMapping",
      "properties": {
        "inputKey": {
          "type": "string",
          "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."
        },
        "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"
        },
        "outputChannel": {
          "description": "Required. The zero-based index of the channel in the output audio stream. Must be consistent with the input_channel.",
          "type": "integer",
          "format": "int32"
        },
        "inputChannel": {
          "type": "integer",
          "description": "Required. The zero-based index of the channel in the input stream.",
          "format": "int32"
        },
        "gainDb": {
          "description": "Audio volume control in dB. Negative values decrease volume, positive values increase. The default is 0.",
          "type": "number",
          "format": "double"
        }
      }
    },
    "NormalizedCoordinate": {
      "type": "object",
      "description": "2D normalized coordinates.",
      "id": "NormalizedCoordinate",
      "properties": {
        "y": {
          "format": "double",
          "description": "Optional. Normalized y coordinate. Valid range is [0.0, 1.0]. Default is 0.",
          "type": "number"
        },
        "x": {
          "type": "number",
          "description": "Optional. Normalized x coordinate. Valid range is [0.0, 1.0]. Default is 0.",
          "format": "double"
        }
      }
    },
    "DrmSystems": {
      "id": "DrmSystems",
      "properties": {
        "fairplay": {
          "$ref": "Fairplay",
          "description": "Optional. Fairplay configuration."
        },
        "playready": {
          "description": "Optional. Playready configuration.",
          "$ref": "Playready"
        },
        "widevine": {
          "description": "Optional. Widevine configuration.",
          "$ref": "Widevine"
        },
        "clearkey": {
          "$ref": "Clearkey",
          "description": "Optional. Clearkey configuration."
        }
      },
      "type": "object",
      "description": "Defines configuration for DRM systems in use. If a field is omitted, that DRM system will be considered to be disabled."
    },
    "ChannelOperationResponse": {
      "id": "ChannelOperationResponse",
      "properties": {},
      "type": "object",
      "description": "Response message for Start/Stop Channel long-running operations."
    },
    "MuteTask": {
      "id": "MuteTask",
      "properties": {
        "duration": {
          "description": "Duration for which the stream should be muted. If omitted, the stream will be muted until an UnmuteTask event is sent.",
          "type": "string",
          "format": "google-duration"
        }
      },
      "type": "object",
      "description": "Mutes the stream."
    },
    "Empty": {
      "id": "Empty",
      "properties": {},
      "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"
    },
    "TimeSlice": {
      "description": "TimeSlice represents a tuple of Unix epoch timestamps that specifies a time range.",
      "type": "object",
      "id": "TimeSlice",
      "properties": {
        "markinTime": {
          "description": "The mark-in Unix epoch time in the original live stream manifest.",
          "type": "string",
          "format": "google-datetime"
        },
        "markoutTime": {
          "type": "string",
          "description": "The mark-out Unix epoch time in the original live stream manifest.",
          "format": "google-datetime"
        }
      }
    },
    "OperationMetadata": {
      "id": "OperationMetadata",
      "properties": {
        "createTime": {
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. The time the operation was created.",
          "type": "string"
        },
        "verb": {
          "readOnly": true,
          "description": "Output only. Name of the verb executed by the operation.",
          "type": "string"
        },
        "apiVersion": {
          "description": "Output only. API version used to start the operation.",
          "type": "string",
          "readOnly": true
        },
        "target": {
          "type": "string",
          "description": "Output only. Server-defined resource path for the target of the operation.",
          "readOnly": true
        },
        "requestedCancellation": {
          "readOnly": true,
          "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`.",
          "type": "boolean"
        },
        "endTime": {
          "description": "Output only. The time the operation finished running.",
          "type": "string",
          "readOnly": true,
          "format": "google-datetime"
        }
      },
      "type": "object",
      "description": "Represents the metadata of the long-running operation."
    },
    "InputAttachment": {
      "description": "A group of information for attaching an input resource to this channel.",
      "type": "object",
      "id": "InputAttachment",
      "properties": {
        "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."
        },
        "automaticFailover": {
          "$ref": "AutomaticFailover",
          "description": "Automatic failover configurations."
        },
        "input": {
          "description": "The resource name of an existing input, in the form of: `projects/{project}/locations/{location}/inputs/{inputId}`.",
          "type": "string"
        }
      }
    },
    "SecurityRule": {
      "type": "object",
      "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",
      "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"
          }
        }
      }
    },
    "ImageAsset": {
      "id": "ImageAsset",
      "properties": {
        "uri": {
          "type": "string",
          "description": "Cloud Storage URI of the image. The format is `gs://my-bucket/my-object`."
        }
      },
      "type": "object",
      "description": "Image represents an image. The supported formats are JPEG, PNG."
    },
    "ListDvrSessionsResponse": {
      "id": "ListDvrSessionsResponse",
      "properties": {
        "dvrSessions": {
          "items": {
            "$ref": "DvrSession"
          },
          "description": "The list of DVR sessions",
          "type": "array"
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token identifying a page of results the server should return."
        },
        "unreachable": {
          "description": "Locations that could not be reached.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "Response message for \"LivestreamService.ListDvrSessions\".",
      "type": "object"
    },
    "NormalizedResolution": {
      "id": "NormalizedResolution",
      "properties": {
        "w": {
          "description": "Optional. Normalized width. Valid range is [0.0, 1.0]. Default is 0.",
          "type": "number",
          "format": "double"
        },
        "h": {
          "description": "Optional. Normalized height. Valid range is [0.0, 1.0]. Default is 0.",
          "type": "number",
          "format": "double"
        }
      },
      "type": "object",
      "description": "Normalized resolution."
    },
    "AdBreakTask": {
      "id": "AdBreakTask",
      "properties": {
        "duration": {
          "type": "string",
          "description": "Duration of an ad opportunity. Must be greater than 0.",
          "format": "google-duration"
        }
      },
      "type": "object",
      "description": "Inserts a new ad opportunity."
    },
    "TextStream": {
      "id": "TextStream",
      "properties": {
        "languageCode": {
          "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.",
          "type": "string"
        },
        "mapping": {
          "type": "array",
          "description": "Optional. The mapping for the input streams and text tracks.",
          "items": {
            "$ref": "TextMapping"
          }
        },
        "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`."
        },
        "codec": {
          "description": "Required. The codec for this text stream. Supported text codecs: - `cea608` - `cea708` - `webvtt`",
          "type": "string"
        },
        "displayName": {
          "type": "string",
          "description": "Optional. The name for this particular text stream that will be added to the HLS/DASH manifest."
        }
      },
      "description": "Encoding of a text stream. For example, closed captions or subtitles.",
      "type": "object"
    },
    "DistributionStream": {
      "description": "Multiplexing settings for output streams used in Distribution.",
      "type": "object",
      "id": "DistributionStream",
      "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": {
          "type": "string",
          "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."
        },
        "elementaryStreams": {
          "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.",
          "type": "array"
        }
      }
    },
    "Event": {
      "id": "Event",
      "properties": {
        "executionTime": {
          "type": "string",
          "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.",
          "format": "google-datetime"
        },
        "returnToProgram": {
          "$ref": "ReturnToProgramTask",
          "description": "Stops any running ad break."
        },
        "error": {
          "description": "Output only. An error object that describes the reason for the failure. This property is always present when `state` is `FAILED`.",
          "readOnly": true,
          "$ref": "Status"
        },
        "name": {
          "type": "string",
          "description": "The resource name of the event, in the form of: `projects/{project}/locations/{location}/channels/{channelId}/events/{eventId}`."
        },
        "unmute": {
          "$ref": "UnmuteTask",
          "description": "Unmutes the stream."
        },
        "createTime": {
          "description": "Output only. The creation time.",
          "type": "string",
          "readOnly": true,
          "format": "google-datetime"
        },
        "adBreak": {
          "$ref": "AdBreakTask",
          "description": "Inserts a new ad opportunity."
        },
        "updateEncryptions": {
          "$ref": "UpdateEncryptionsTask",
          "description": "Updates encryption settings."
        },
        "slate": {
          "description": "Inserts a slate.",
          "$ref": "SlateTask"
        },
        "executeNow": {
          "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.",
          "type": "boolean"
        },
        "mute": {
          "description": "Mutes the stream.",
          "$ref": "MuteTask"
        },
        "updateTime": {
          "type": "string",
          "description": "Output only. The update time.",
          "readOnly": true,
          "format": "google-datetime"
        },
        "inputSwitch": {
          "$ref": "InputSwitchTask",
          "description": "Switches to another input stream."
        },
        "state": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The state of the event.",
          "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"
          ]
        },
        "labels": {
          "description": "User-defined key/value metadata.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        }
      },
      "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.",
      "type": "object"
    },
    "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\".",
      "type": "object",
      "id": "Pool",
      "properties": {
        "name": {
          "description": "The resource name of the pool, in the form of: `projects/{project}/locations/{location}/pools/{poolId}`.",
          "type": "string"
        },
        "networkConfig": {
          "$ref": "NetworkConfig",
          "description": "Network configuration for the pool."
        },
        "createTime": {
          "description": "Output only. The creation time.",
          "type": "string",
          "readOnly": true,
          "format": "google-datetime"
        },
        "labels": {
          "type": "object",
          "description": "User-defined key/value metadata.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "updateTime": {
          "description": "Output only. The update time.",
          "type": "string",
          "readOnly": true,
          "format": "google-datetime"
        }
      }
    },
    "Manifest": {
      "id": "Manifest",
      "properties": {
        "type": {
          "description": "Required. Type of the manifest, can be `HLS` or `DASH`.",
          "type": "string",
          "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`."
          ],
          "enum": [
            "MANIFEST_TYPE_UNSPECIFIED",
            "HLS",
            "DASH"
          ]
        },
        "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"
          }
        },
        "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."
        },
        "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"
        },
        "key": {
          "description": "Optional. A unique key for this manifest.",
          "type": "string"
        },
        "segmentKeepDuration": {
          "format": "google-duration",
          "type": "string",
          "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."
        },
        "maxSegmentCount": {
          "type": "integer",
          "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.",
          "format": "int32"
        }
      },
      "type": "object",
      "description": "Manifest configuration."
    },
    "SlateTask": {
      "id": "SlateTask",
      "properties": {
        "duration": {
          "format": "google-duration",
          "type": "string",
          "description": "Optional. Duration of the slate. Must be greater than 0 if specified. Omit this field for a long running slate."
        },
        "asset": {
          "type": "string",
          "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": "object",
      "description": "Inserts a slate."
    },
    "DvrWindow": {
      "type": "object",
      "description": "DvrWindow represents a DVR window.",
      "id": "DvrWindow",
      "properties": {
        "timeInterval": {
          "description": "A time interval in the form of a tuple of Unix epoch time.",
          "$ref": "TimeInterval"
        }
      }
    },
    "TimecodeConfig": {
      "id": "TimecodeConfig",
      "properties": {
        "source": {
          "type": "string",
          "enumDescriptions": [
            "The timecode source is not specified.",
            "Use input media timestamp.",
            "Use input embedded timecode e.g. picture timing SEI message."
          ],
          "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."
        },
        "utcOffset": {
          "description": "UTC offset. Must be whole seconds, between -18 hours and +18 hours.",
          "type": "string",
          "format": "google-duration"
        },
        "timeZone": {
          "$ref": "TimeZone",
          "description": "Time zone e.g. \"America/Los_Angeles\"."
        }
      },
      "type": "object",
      "description": "Timecode configuration."
    },
    "AutoTranscriptionConfig": {
      "id": "AutoTranscriptionConfig",
      "properties": {
        "displayTiming": {
          "type": "string",
          "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"
          ],
          "description": "Optional. Whether auto-generated text streams are displayed synchronously or asynchronously with the original audio."
        },
        "qualityPreset": {
          "type": "string",
          "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."
          ],
          "enum": [
            "QUALITY_PRESET_UNSPECIFIED",
            "LOW_LATENCY",
            "BALANCED_QUALITY",
            "IMPROVED_QUALITY"
          ],
          "description": "Optional. Tunes the latency and quality of auto-generated captions."
        }
      },
      "type": "object",
      "description": "Advanced configurations for auto-generated text streams."
    },
    "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).",
      "type": "object",
      "id": "Status",
      "properties": {
        "code": {
          "description": "The status code, which should be an enum value of google.rpc.Code.",
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "type": "string",
          "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."
        },
        "details": {
          "type": "array",
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
          "items": {
            "additionalProperties": {
              "description": "Properties of the object. Contains field @type with type URL.",
              "type": "any"
            },
            "type": "object"
          }
        }
      }
    },
    "PreviewInputRequest": {
      "type": "object",
      "description": "Request message for \"LivestreamService.PreviewInput\"",
      "id": "PreviewInputRequest",
      "properties": {}
    },
    "TimeZone": {
      "description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones).",
      "type": "object",
      "id": "TimeZone",
      "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\"."
        }
      }
    },
    "InputStreamProperty": {
      "id": "InputStreamProperty",
      "properties": {
        "lastEstablishTime": {
          "format": "google-datetime",
          "type": "string",
          "description": "The time that the current input stream is accepted and the connection is established."
        },
        "audioStreams": {
          "description": "Properties of the audio streams.",
          "type": "array",
          "items": {
            "$ref": "AudioStreamProperty"
          }
        },
        "videoStreams": {
          "description": "Properties of the video streams.",
          "type": "array",
          "items": {
            "$ref": "VideoStreamProperty"
          }
        }
      },
      "type": "object",
      "description": "Properties of the input stream."
    },
    "UpdateEncryptionsTask": {
      "description": "Update encryption settings.",
      "type": "object",
      "id": "UpdateEncryptionsTask",
      "properties": {
        "encryptions": {
          "description": "Required. A list of EncryptionUpdates that updates the existing encryption settings.",
          "type": "array",
          "items": {
            "$ref": "EncryptionUpdate"
          }
        }
      }
    },
    "ListLocationsResponse": {
      "type": "object",
      "description": "The response message for Locations.ListLocations.",
      "id": "ListLocationsResponse",
      "properties": {
        "locations": {
          "description": "A list of locations that matches the specified filter in the request.",
          "type": "array",
          "items": {
            "$ref": "Location"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "The standard List next-page token."
        }
      }
    },
    "TextMapping": {
      "description": "The mapping for the input streams and text tracks.",
      "type": "object",
      "id": "TextMapping",
      "properties": {
        "inputKey": {
          "type": "string",
          "description": "Optional. The `Channel` InputAttachment.key that identifies the input that this text mapping applies to."
        },
        "inputTrack": {
          "type": "integer",
          "description": "Optional. The zero-based index of the track in the input stream.",
          "format": "int32"
        },
        "inputCeaChannel": {
          "type": "string",
          "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`."
        },
        "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"
        }
      }
    },
    "SrtPushOutputEndpoint": {
      "type": "object",
      "description": "Configurations for an output endpoint using SRT_PUSH as the streaming protocol.",
      "id": "SrtPushOutputEndpoint",
      "properties": {
        "uri": {
          "type": "string",
          "description": "Required. The full URI of the remote SRT server."
        },
        "passphraseSecretVersion": {
          "type": "string",
          "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}`."
        }
      }
    },
    "StaticOverlay": {
      "id": "StaticOverlay",
      "properties": {
        "opacity": {
          "format": "double",
          "type": "number",
          "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`."
        },
        "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"
        },
        "position": {
          "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.",
          "$ref": "NormalizedCoordinate"
        },
        "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."
        }
      },
      "type": "object",
      "description": "Configuration for the static overlay."
    },
    "Audio": {
      "id": "Audio",
      "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"
        }
      },
      "type": "object",
      "description": "Audio preprocessing configuration."
    },
    "ClipManifest": {
      "id": "ClipManifest",
      "properties": {
        "manifestKey": {
          "type": "string",
          "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."
        },
        "outputUri": {
          "readOnly": true,
          "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",
          "type": "string"
        }
      },
      "type": "object",
      "description": "ClipManifest identifies a source manifest for the generated clip manifest."
    },
    "TimeInterval": {
      "id": "TimeInterval",
      "properties": {
        "startTime": {
          "format": "google-datetime",
          "description": "Optional. The start time of the interval.",
          "type": "string"
        },
        "endTime": {
          "format": "google-datetime",
          "description": "Optional. The end time of the interval.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "TimeInterval represents a time interval."
    },
    "DvrSession": {
      "id": "DvrSession",
      "properties": {
        "createTime": {
          "readOnly": true,
          "format": "google-datetime",
          "type": "string",
          "description": "Output only. The creation time."
        },
        "labels": {
          "description": "Optional. User-defined key/value metadata.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "updateTime": {
          "type": "string",
          "description": "Output only. The update time.",
          "readOnly": true,
          "format": "google-datetime"
        },
        "state": {
          "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."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "UPDATING",
            "SCHEDULED",
            "LIVE",
            "FINISHED",
            "FAILED",
            "DELETING",
            "POST_PROCESSING",
            "COOLDOWN",
            "STOPPING"
          ],
          "description": "Output only. The state of the clip.",
          "readOnly": true,
          "type": "string"
        },
        "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": {
          "description": "Output only. An error object that describes the reason for the failure. This property only presents when `state` is `FAILED`.",
          "$ref": "Status",
          "readOnly": true
        },
        "dvrManifests": {
          "items": {
            "$ref": "DvrManifest"
          },
          "type": "array",
          "description": "Required. A list of DVR manifests. Currently only one DVR manifest is allowed."
        },
        "dvrWindows": {
          "items": {
            "$ref": "DvrWindow"
          },
          "type": "array",
          "description": "Required. The specified ranges of segments to generate a DVR recording."
        }
      },
      "type": "object",
      "description": "DvrSession is a sub-resource under channel. Each DvrSession represents a DVR recording of the live stream for a specific time range."
    },
    "InputSwitchTask": {
      "type": "object",
      "description": "Switches to another input stream. Automatic failover is then disabled.",
      "id": "InputSwitchTask",
      "properties": {
        "inputKey": {
          "description": "The InputAttachment.key of the input to switch to.",
          "type": "string"
        }
      }
    },
    "StartDistributionRequest": {
      "id": "StartDistributionRequest",
      "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"
        }
      },
      "type": "object",
      "description": "Request message for \"LivestreamService.StartDistribution\"."
    },
    "StopDistributionRequest": {
      "id": "StopDistributionRequest",
      "properties": {
        "distributionKeys": {
          "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.",
          "type": "array"
        },
        "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"
        }
      },
      "type": "object",
      "description": "Request message for \"LivestreamService.StopDistribution\"."
    },
    "UnmuteTask": {
      "id": "UnmuteTask",
      "properties": {},
      "type": "object",
      "description": "Unmutes the stream. The task fails if the stream is not currently muted."
    },
    "Clip": {
      "id": "Clip",
      "properties": {
        "labels": {
          "description": "The labels associated with this resource. Each label is a key-value pair.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "updateTime": {
          "type": "string",
          "description": "Output only. The update timestamp of the clip resource.",
          "readOnly": true,
          "format": "google-datetime"
        },
        "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"
          ],
          "description": "Output only. The state of the clip.",
          "type": "string",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "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"
        },
        "error": {
          "description": "Output only. An error object that describes the reason for the failure. This property only presents when `state` is `FAILED`.",
          "$ref": "Status",
          "readOnly": true
        },
        "createTime": {
          "description": "Output only. The creation timestamp of the clip resource.",
          "type": "string",
          "readOnly": true,
          "format": "google-datetime"
        },
        "startTime": {
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. The timestamp when the clip request starts to be processed.",
          "type": "string"
        },
        "slices": {
          "description": "The specified ranges of segments to generate a clip.",
          "type": "array",
          "items": {
            "$ref": "Slice"
          }
        },
        "outputType": {
          "type": "string",
          "enumDescriptions": [
            "OutputType is not specified.",
            "OutputType is a VOD manifest. This is the default value.",
            "OutputType is an MP4 file."
          ],
          "enum": [
            "OUTPUT_TYPE_UNSPECIFIED",
            "MANIFEST",
            "MP4"
          ],
          "description": "Optional. OutputType of the clip. If not specified, the default value is MANIFEST."
        },
        "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"
        },
        "clipManifests": {
          "items": {
            "$ref": "ClipManifest"
          },
          "description": "Required. A list of clip manifests. Currently only one clip manifest is allowed.",
          "type": "array"
        }
      },
      "type": "object",
      "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."
    },
    "Aes128Encryption": {
      "id": "Aes128Encryption",
      "properties": {},
      "type": "object",
      "description": "Configuration for HLS AES-128 encryption."
    },
    "RetentionConfig": {
      "id": "RetentionConfig",
      "properties": {
        "retentionWindowDuration": {
          "format": "google-duration",
          "type": "string",
          "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."
        }
      },
      "type": "object",
      "description": "Configuration for retention of output files."
    },
    "SecretManagerSource": {
      "description": "Configuration for secrets stored in Google Secret Manager.",
      "type": "object",
      "id": "SecretManagerSource",
      "properties": {
        "secretVersion": {
          "type": "string",
          "description": "Required. The name of the Secret Version containing the encryption key. `projects/{project}/secrets/{secret_id}/versions/{version_number}`"
        }
      }
    },
    "AudioFormat": {
      "id": "AudioFormat",
      "properties": {
        "channelLayout": {
          "type": "array",
          "description": "A list of channel names specifying the layout of the audio channels.",
          "items": {
            "type": "string"
          }
        },
        "codec": {
          "type": "string",
          "description": "Audio codec used in this audio stream."
        },
        "channelCount": {
          "format": "int32",
          "description": "The number of audio channels.",
          "type": "integer"
        }
      },
      "description": "Properties of the audio format.",
      "type": "object"
    },
    "AudioStream": {
      "description": "Audio stream resource.",
      "type": "object",
      "id": "AudioStream",
      "properties": {
        "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`."
        },
        "mapping": {
          "type": "array",
          "description": "The mapping for the input streams and audio channels.",
          "items": {
            "$ref": "AudioMapping"
          }
        },
        "channelLayout": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "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"
        },
        "bitrateBps": {
          "format": "int32",
          "type": "integer",
          "description": "Required. Audio bitrate in bits per second. Must be between 1 and 10,000,000."
        },
        "codec": {
          "type": "string",
          "description": "The codec for this audio stream. The default is `aac`. Supported audio codecs: - `aac`"
        },
        "channelCount": {
          "type": "integer",
          "description": "Number of audio channels. Must be between 1 and 6. The default is 2.",
          "format": "int32"
        },
        "sampleRateHertz": {
          "type": "integer",
          "description": "The audio sample rate in Hertz. The default is 48000 Hertz.",
          "format": "int32"
        }
      }
    },
    "Widevine": {
      "description": "Widevine configuration.",
      "type": "object",
      "id": "Widevine",
      "properties": {}
    },
    "ReturnToProgramTask": {
      "id": "ReturnToProgramTask",
      "properties": {},
      "description": "Stops any events which are currently running. This only applies to events with a duration.",
      "type": "object"
    },
    "AudioStreamProperty": {
      "id": "AudioStreamProperty",
      "properties": {
        "index": {
          "description": "Index of this audio stream.",
          "type": "integer",
          "format": "int32"
        },
        "audioFormat": {
          "$ref": "AudioFormat",
          "description": "Properties of the audio format."
        }
      },
      "description": "Properties of the audio stream.",
      "type": "object"
    },
    "ListAssetsResponse": {
      "description": "Response message for \"LivestreamService.ListAssets\".",
      "type": "object",
      "id": "ListAssetsResponse",
      "properties": {
        "unreachable": {
          "description": "Locations that could not be reached.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "assets": {
          "type": "array",
          "description": "The list of Assets",
          "items": {
            "$ref": "Asset"
          }
        },
        "nextPageToken": {
          "description": "The next_page_token value returned from a previous List request, if any.",
          "type": "string"
        }
      }
    },
    "H264CodecSettings": {
      "id": "H264CodecSettings",
      "properties": {
        "heightPixels": {
          "format": "int32",
          "type": "integer",
          "description": "Required. The height of the video in pixels. Must be an even integer. Valid range is [180, 2160]."
        },
        "vbvSizeBits": {
          "description": "Size of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to bitrate_bps.",
          "type": "integer",
          "format": "int32"
        },
        "entropyCoder": {
          "type": "string",
          "description": "The entropy coder to use. The default is `cabac`. Supported entropy coders: - `cavlc` - `cabac`"
        },
        "tune": {
          "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.",
          "type": "string"
        },
        "allowOpenGop": {
          "type": "boolean",
          "description": "Specifies whether an open Group of Pictures (GOP) structure should be allowed or not. The default is `false`."
        },
        "gopDuration": {
          "type": "string",
          "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.",
          "format": "google-duration"
        },
        "frameRate": {
          "type": "number",
          "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.",
          "format": "double"
        },
        "bitrateBps": {
          "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).",
          "type": "integer",
          "format": "int32"
        },
        "vbvFullnessBits": {
          "format": "int32",
          "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.",
          "type": "integer"
        },
        "bPyramid": {
          "type": "boolean",
          "description": "Allow B-pyramid for reference frame selection. This may not be supported on all decoders. The default is `false`."
        },
        "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": {
          "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].",
          "type": "integer",
          "format": "int32"
        },
        "widthPixels": {
          "format": "int32",
          "description": "Required. The width of the video in pixels. Must be an even integer. Valid range is [320, 4096].",
          "type": "integer"
        },
        "bFrameCount": {
          "format": "int32",
          "type": "integer",
          "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."
        },
        "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.",
          "type": "number",
          "format": "double"
        }
      },
      "description": "H264 codec settings.",
      "type": "object"
    },
    "Operation": {
      "id": "Operation",
      "properties": {
        "response": {
          "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`.",
          "additionalProperties": {
            "description": "Properties of the object. Contains field @type with type URL.",
            "type": "any"
          },
          "type": "object"
        },
        "metadata": {
          "type": "object",
          "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.",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          }
        },
        "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}`."
        },
        "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."
        },
        "error": {
          "description": "The error result of the operation in case of failure or cancellation.",
          "$ref": "Status"
        }
      },
      "description": "This resource represents a long-running operation that is the result of a network API call.",
      "type": "object"
    },
    "Clearkey": {
      "id": "Clearkey",
      "properties": {},
      "description": "Clearkey configuration.",
      "type": "object"
    },
    "VideoAsset": {
      "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.",
      "type": "object",
      "id": "VideoAsset",
      "properties": {
        "uri": {
          "type": "string",
          "description": "Cloud Storage URI of the video. The format is `gs://my-bucket/my-object`."
        }
      }
    },
    "Output": {
      "id": "Output",
      "properties": {
        "uri": {
          "type": "string",
          "description": "URI for the output file(s). For example, `gs://my-bucket/outputs/`."
        }
      },
      "description": "Location of output file(s) in a Google Cloud Storage bucket.",
      "type": "object"
    },
    "PreviewInputResponse": {
      "id": "PreviewInputResponse",
      "properties": {
        "bearerToken": {
          "type": "string",
          "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."
        },
        "uri": {
          "type": "string",
          "description": "URI to display the preview content."
        }
      },
      "type": "object",
      "description": "Response message for \"LivestreamService.PreviewInput\""
    },
    "Input": {
      "description": "Input resource represents the endpoint from which the channel ingests the input stream.",
      "type": "object",
      "id": "Input",
      "properties": {
        "type": {
          "type": "string",
          "enumDescriptions": [
            "Input type is not specified.",
            "Input will take an rtmp input stream.",
            "Input will take an srt (Secure Reliable Transport) input stream."
          ],
          "enum": [
            "TYPE_UNSPECIFIED",
            "RTMP_PUSH",
            "SRT_PUSH"
          ],
          "description": "Source type."
        },
        "updateTime": {
          "readOnly": true,
          "format": "google-datetime",
          "type": "string",
          "description": "Output only. The update time."
        },
        "labels": {
          "description": "User-defined key/value metadata.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "uri": {
          "type": "string",
          "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
        },
        "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`.",
          "type": "string",
          "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"
          ]
        },
        "inputStreamProperty": {
          "$ref": "InputStreamProperty",
          "readOnly": true,
          "description": "Output only. The information for the input stream. This field will be present only when this input receives the input stream."
        },
        "preprocessingConfig": {
          "$ref": "PreprocessingConfig",
          "description": "Preprocessing configurations."
        },
        "createTime": {
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. The creation time.",
          "type": "string"
        },
        "securityRules": {
          "description": "Security rule for access control.",
          "$ref": "SecurityRule"
        },
        "name": {
          "description": "The resource name of the input, in the form of: `projects/{project}/locations/{location}/inputs/{inputId}`.",
          "type": "string"
        }
      }
    },
    "MuxStream": {
      "id": "MuxStream",
      "properties": {
        "encryptionId": {
          "description": "Identifier of the encryption configuration to use. If omitted, output will be unencrypted.",
          "type": "string"
        },
        "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"
        },
        "key": {
          "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.",
          "type": "string"
        },
        "elementaryStreams": {
          "items": {
            "type": "string"
          },
          "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"
        },
        "segmentSettings": {
          "description": "Segment settings for `fmp4` and `ts`.",
          "$ref": "SegmentSettings"
        }
      },
      "type": "object",
      "description": "Multiplexing settings for output stream."
    },
    "LogConfig": {
      "id": "LogConfig",
      "properties": {
        "logSeverity": {
          "type": "string",
          "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"
          ],
          "description": "The severity level of platform logging for this resource."
        }
      },
      "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"
    },
    "ListChannelsResponse": {
      "description": "Response message for \"LivestreamService.ListChannels\".",
      "type": "object",
      "id": "ListChannelsResponse",
      "properties": {
        "unreachable": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Locations that could not be reached."
        },
        "channels": {
          "type": "array",
          "description": "A list of channels.",
          "items": {
            "$ref": "Channel"
          }
        },
        "nextPageToken": {
          "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
          "type": "string"
        }
      }
    },
    "Encryption": {
      "id": "Encryption",
      "properties": {
        "drmSystems": {
          "$ref": "DrmSystems",
          "description": "Required. Configuration for DRM systems."
        },
        "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."
        },
        "aes128": {
          "description": "Configuration for HLS AES-128 encryption.",
          "$ref": "Aes128Encryption"
        },
        "sampleAes": {
          "$ref": "SampleAesEncryption",
          "description": "Configuration for HLS SAMPLE-AES encryption."
        },
        "secretManagerKeySource": {
          "description": "For keys stored in Google Secret Manager.",
          "$ref": "SecretManagerSource"
        },
        "mpegCenc": {
          "description": "Configuration for MPEG-Dash Common Encryption (MPEG-CENC).",
          "$ref": "MpegCommonEncryption"
        }
      },
      "description": "Encryption settings.",
      "type": "object"
    },
    "DvrManifest": {
      "description": "DvrManifest identifies a source manifest and specifies a file name for the generated DVR manifest.",
      "type": "object",
      "id": "DvrManifest",
      "properties": {
        "manifestKey": {
          "type": "string",
          "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."
        },
        "outputUri": {
          "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",
          "readOnly": true
        }
      }
    },
    "Crop": {
      "id": "Crop",
      "properties": {
        "rightPixels": {
          "format": "int32",
          "type": "integer",
          "description": "The number of pixels to crop from the right. The default is 0."
        },
        "topPixels": {
          "format": "int32",
          "type": "integer",
          "description": "The number of pixels to crop from the top. The default is 0."
        },
        "bottomPixels": {
          "format": "int32",
          "type": "integer",
          "description": "The number of pixels to crop from the bottom. The default is 0."
        },
        "leftPixels": {
          "format": "int32",
          "type": "integer",
          "description": "The number of pixels to crop from the left. The default is 0."
        }
      },
      "description": "Video cropping configuration for the input video. The cropped input video is scaled to match the output resolution.",
      "type": "object"
    },
    "StopChannelRequest": {
      "id": "StopChannelRequest",
      "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\".",
      "type": "object"
    },
    "EncryptionUpdate": {
      "id": "EncryptionUpdate",
      "properties": {
        "id": {
          "type": "string",
          "description": "Required. Identifier for the encryption option to be updated."
        },
        "secretManagerKeySource": {
          "description": "For keys stored in Google Secret Manager.",
          "$ref": "SecretManagerSource"
        }
      },
      "description": "Encryption setting when updating encryption.",
      "type": "object"
    },
    "StartChannelRequest": {
      "type": "object",
      "description": "Request message for \"LivestreamService.StartChannel\".",
      "id": "StartChannelRequest",
      "properties": {
        "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)`.",
          "type": "string"
        }
      }
    },
    "PreprocessingConfig": {
      "id": "PreprocessingConfig",
      "properties": {
        "audio": {
          "description": "Audio preprocessing configuration.",
          "$ref": "Audio"
        },
        "pad": {
          "$ref": "Pad",
          "description": "Specify the video pad filter configuration."
        },
        "crop": {
          "$ref": "Crop",
          "description": "Specify the video cropping configuration."
        }
      },
      "type": "object",
      "description": "Preprocessing configurations."
    },
    "Pad": {
      "id": "Pad",
      "properties": {
        "topPixels": {
          "format": "int32",
          "description": "The number of pixels to add to the top. The default is 0.",
          "type": "integer"
        },
        "rightPixels": {
          "description": "The number of pixels to add to the right. The default is 0.",
          "type": "integer",
          "format": "int32"
        },
        "leftPixels": {
          "description": "The number of pixels to add to the left. The default is 0.",
          "type": "integer",
          "format": "int32"
        },
        "bottomPixels": {
          "type": "integer",
          "description": "The number of pixels to add to the bottom. The default is 0.",
          "format": "int32"
        }
      },
      "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"
    },
    "RtmpPushOutputEndpoint": {
      "description": "Configurations for an output endpoint using RTMP_PUSH as the streaming protocol.",
      "type": "object",
      "id": "RtmpPushOutputEndpoint",
      "properties": {
        "uri": {
          "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`.",
          "type": "string"
        },
        "streamKey": {
          "description": "Required. Stream key for RTMP protocol.",
          "type": "string"
        }
      }
    },
    "CancelOperationRequest": {
      "type": "object",
      "description": "The request message for Operations.CancelOperation.",
      "id": "CancelOperationRequest",
      "properties": {}
    },
    "VideoStream": {
      "type": "object",
      "description": "Video stream resource.",
      "id": "VideoStream",
      "properties": {
        "h264": {
          "$ref": "H264CodecSettings",
          "description": "H264 codec settings."
        },
        "h265": {
          "description": "H265 codec settings.",
          "$ref": "H265CodecSettings"
        }
      }
    },
    "ListInputsResponse": {
      "id": "ListInputsResponse",
      "properties": {
        "unreachable": {
          "type": "array",
          "description": "Locations that could not be reached.",
          "items": {
            "type": "string"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "Token to retrieve the next page of results, or empty if there are no more results in the list."
        },
        "inputs": {
          "type": "array",
          "description": "A list of inputs.",
          "items": {
            "$ref": "Input"
          }
        }
      },
      "description": "Response message for \"LivestreamService.ListInputs\".",
      "type": "object"
    },
    "MpegCommonEncryption": {
      "id": "MpegCommonEncryption",
      "properties": {
        "scheme": {
          "type": "string",
          "description": "Required. Specify the encryption scheme, supported schemes: - `cenc` - AES-CTR subsample - `cbcs`- AES-CBC subsample pattern"
        }
      },
      "description": "Configuration for MPEG-Dash Common Encryption (MPEG-CENC).",
      "type": "object"
    },
    "Channel": {
      "type": "object",
      "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",
      "properties": {
        "createTime": {
          "readOnly": true,
          "format": "google-datetime",
          "type": "string",
          "description": "Output only. The creation time."
        },
        "name": {
          "description": "The resource name of the channel, in the form of: `projects/{project}/locations/{location}/channels/{channelId}`.",
          "type": "string"
        },
        "manifests": {
          "type": "array",
          "description": "List of output manifests.",
          "items": {
            "$ref": "Manifest"
          }
        },
        "distributionStreams": {
          "description": "Optional. List of multiplexing settings of streams for distributions.",
          "type": "array",
          "items": {
            "$ref": "DistributionStream"
          }
        },
        "inputAttachments": {
          "type": "array",
          "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.",
          "items": {
            "$ref": "InputAttachment"
          }
        },
        "inputConfig": {
          "description": "The configuration for input sources defined in input_attachments.",
          "$ref": "InputConfig"
        },
        "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"
        },
        "retentionConfig": {
          "$ref": "RetentionConfig",
          "description": "Optional. Configuration for retention of output files for this channel."
        },
        "elementaryStreams": {
          "description": "List of elementary streams.",
          "type": "array",
          "items": {
            "$ref": "ElementaryStream"
          }
        },
        "distributions": {
          "items": {
            "$ref": "Distribution"
          },
          "description": "Optional. List of distributions.",
          "type": "array"
        },
        "timecodeConfig": {
          "description": "Configuration of timecode for this channel.",
          "$ref": "TimecodeConfig"
        },
        "streamingState": {
          "description": "Output only. State of the streaming operation.",
          "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."
          ],
          "enum": [
            "STREAMING_STATE_UNSPECIFIED",
            "STREAMING",
            "AWAITING_INPUT",
            "STREAMING_ERROR",
            "STREAMING_NO_INPUT",
            "STOPPED",
            "STARTING",
            "STOPPING"
          ],
          "type": "string",
          "readOnly": true
        },
        "activeInput": {
          "type": "string",
          "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
        },
        "spriteSheets": {
          "items": {
            "$ref": "SpriteSheet"
          },
          "type": "array",
          "description": "List of output sprite sheets."
        },
        "staticOverlays": {
          "items": {
            "$ref": "StaticOverlay"
          },
          "type": "array",
          "description": "Optional. List of static overlay images. Those images display over the output content for the whole duration of the live stream."
        },
        "output": {
          "$ref": "Output",
          "description": "Required. Information about the output (that is, the Cloud Storage bucket to store the generated live stream)."
        },
        "labels": {
          "description": "User-defined key/value metadata.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "updateTime": {
          "readOnly": true,
          "format": "google-datetime",
          "type": "string",
          "description": "Output only. The update time."
        },
        "muxStreams": {
          "type": "array",
          "description": "List of multiplexing settings for output streams.",
          "items": {
            "$ref": "MuxStream"
          }
        },
        "encryptions": {
          "items": {
            "$ref": "Encryption"
          },
          "type": "array",
          "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."
        },
        "autoTranscriptionConfig": {
          "description": "Optional. Advanced configurations for auto-generated text streams.",
          "$ref": "AutoTranscriptionConfig"
        },
        "logConfig": {
          "$ref": "LogConfig",
          "description": "Configuration of platform logs for this channel."
        }
      }
    },
    "ListEventsResponse": {
      "type": "object",
      "description": "Response message for \"LivestreamService.ListEvents\".",
      "id": "ListEventsResponse",
      "properties": {
        "unreachable": {
          "type": "array",
          "description": "Locations that could not be reached.",
          "items": {
            "type": "string"
          }
        },
        "events": {
          "description": "A list of events.",
          "type": "array",
          "items": {
            "$ref": "Event"
          }
        },
        "nextPageToken": {
          "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
          "type": "string"
        }
      }
    },
    "SampleAesEncryption": {
      "type": "object",
      "description": "Configuration for HLS SAMPLE-AES encryption.",
      "id": "SampleAesEncryption",
      "properties": {}
    },
    "ListOperationsResponse": {
      "id": "ListOperationsResponse",
      "properties": {
        "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": {
          "items": {
            "$ref": "Operation"
          },
          "type": "array",
          "description": "A list of operations that matches the specified filter in the request."
        },
        "nextPageToken": {
          "type": "string",
          "description": "The standard List next-page token."
        }
      },
      "type": "object",
      "description": "The response message for Operations.ListOperations."
    },
    "SpriteSheet": {
      "description": "Sprite sheet configuration.",
      "type": "object",
      "id": "SpriteSheet",
      "properties": {
        "quality": {
          "type": "integer",
          "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.",
          "format": "int32"
        },
        "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`."
        },
        "spriteWidthPixels": {
          "format": "int32",
          "type": "integer",
          "description": "Required. The width of the sprite in pixels. Must be an even integer."
        },
        "format": {
          "type": "string",
          "description": "Format type. The default is `jpeg`. Supported formats: - `jpeg`"
        },
        "columnCount": {
          "format": "int32",
          "description": "The maximum number of sprites per row in a sprite sheet. Valid range is [1, 10] and the default value is 1.",
          "type": "integer"
        },
        "interval": {
          "format": "google-duration",
          "type": "string",
          "description": "Create sprites at regular intervals. Valid range is [1 second, 1 hour] and the default value is `10s`."
        },
        "spriteHeightPixels": {
          "type": "integer",
          "description": "Required. The height of the sprite in pixels. Must be an even integer.",
          "format": "int32"
        },
        "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"
        }
      }
    },
    "ListClipsResponse": {
      "description": "Response message for \"LivestreamService.ListClips\".",
      "type": "object",
      "id": "ListClipsResponse",
      "properties": {
        "unreachable": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Locations that could not be reached."
        },
        "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."
        }
      }
    },
    "NetworkConfig": {
      "id": "NetworkConfig",
      "properties": {
        "peeredNetwork": {
          "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.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Defines the network configuration for the pool."
    },
    "ElementaryStream": {
      "type": "object",
      "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",
      "properties": {
        "textStream": {
          "description": "Encoding of a text stream. For example, closed captions or subtitles.",
          "$ref": "TextStream"
        },
        "key": {
          "type": "string",
          "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."
        },
        "videoStream": {
          "$ref": "VideoStream",
          "description": "Encoding of a video stream."
        },
        "audioStream": {
          "description": "Encoding of an audio stream.",
          "$ref": "AudioStream"
        }
      }
    },
    "InputConfig": {
      "description": "Configuration for the input sources of a channel.",
      "type": "object",
      "id": "InputConfig",
      "properties": {
        "inputSwitchMode": {
          "type": "string",
          "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"
          ],
          "description": "Input switch mode. Default mode is `FAILOVER_PREFER_PRIMARY`."
        }
      }
    },
    "Slice": {
      "description": "Slice represents a slice of the requested clip.",
      "type": "object",
      "id": "Slice",
      "properties": {
        "timeSlice": {
          "$ref": "TimeSlice",
          "description": "A slice in form of a tuple of Unix epoch time."
        }
      }
    },
    "SegmentSettings": {
      "id": "SegmentSettings",
      "properties": {
        "segmentDuration": {
          "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.",
          "type": "string",
          "format": "google-duration"
        }
      },
      "description": "Segment settings for `fmp4` and `ts`.",
      "type": "object"
    },
    "Distribution": {
      "id": "Distribution",
      "properties": {
        "distributionStream": {
          "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.",
          "type": "string"
        },
        "error": {
          "description": "Output only. Only present when the `state` is `ERROR`. The reason for the error state of the distribution.",
          "$ref": "Status",
          "readOnly": true
        },
        "srtPush": {
          "description": "Output endpoint using SRT_PUSH.",
          "$ref": "SrtPushOutputEndpoint"
        },
        "rtmpPush": {
          "$ref": "RtmpPushOutputEndpoint",
          "description": "Output endpoint using RTMP_PUSH."
        },
        "state": {
          "readOnly": true,
          "type": "string",
          "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."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "ERROR",
            "NOT_READY",
            "READY",
            "AWAITING_INPUT",
            "DISTRIBUTING"
          ],
          "description": "Output only. State of the distribution."
        },
        "key": {
          "type": "string",
          "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."
        }
      },
      "description": "Distribution configuration.",
      "type": "object"
    }
  },
  "ownerName": "Google",
  "fullyEncodeReservedExpansion": true,
  "documentationLink": "https://cloud.google.com/livestream/docs",
  "canonicalName": "Live Stream",
  "name": "livestream",
  "baseUrl": "https://livestream.googleapis.com/",
  "protocol": "rest",
  "kind": "discovery#restDescription",
  "servicePath": "",
  "basePath": "",
  "version_module": true,
  "description": "",
  "discoveryVersion": "v1",
  "ownerDomain": "google.com",
  "title": "Live Stream API",
  "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."
        }
      }
    }
  }
}
