<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="youtube_v3.html">YouTube Data API v3</a> . <a href="youtube_v3.liveStreams.html">liveStreams</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#delete">delete(id, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an existing stream for the authenticated user.</p>
<p class="toc_element">
  <code><a href="#insert">insert(part, body=None, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, x__xgafv=None)</a></code></p>
<p class="firstline">Inserts a new stream for the authenticated user.</p>
<p class="toc_element">
  <code><a href="#list">list(part, id=None, maxResults=None, mine=None, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieve the list of streams associated with the given channel. --</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#update">update(part, body=None, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing stream for the authenticated user.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(id, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, x__xgafv=None)</code>
  <pre>Deletes an existing stream for the authenticated user.

Args:
  id: string, A parameter (required)
  onBehalfOfContentOwner: string, *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request&#x27;s authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.
  onBehalfOfContentOwnerChannel: string, This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(part, body=None, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, x__xgafv=None)</code>
  <pre>Inserts a new stream for the authenticated user.

Args:
  part: string, The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part properties that you can include in the parameter value are id, snippet, cdn, content_details, and status. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{ # A live stream describes a live ingestion point.
  &quot;cdn&quot;: { # Brief description of the live stream cdn settings. # The cdn object defines the live stream&#x27;s content delivery network (CDN) settings. These settings provide details about the manner in which you stream your content to YouTube.
    &quot;format&quot;: &quot;A String&quot;, # The format of the video stream that you are sending to Youtube.
    &quot;frameRate&quot;: &quot;A String&quot;, # The frame rate of the inbound video data.
    &quot;ingestionInfo&quot;: { # Describes information necessary for ingesting an RTMP, HTTP, or SRT stream. # The ingestionInfo object contains information that YouTube provides that you need to transmit your RTMP or HTTP stream to YouTube.
      &quot;backupIngestionAddress&quot;: &quot;A String&quot;, # The backup ingestion URL that you should use to stream video to YouTube. You have the option of simultaneously streaming the content that you are sending to the ingestionAddress to this URL.
      &quot;ingestionAddress&quot;: &quot;A String&quot;, # The primary ingestion URL that you should use to stream video to YouTube. You must stream video to this URL. Depending on which application or tool you use to encode your video stream, you may need to enter the stream URL and stream name separately or you may need to concatenate them in the following format: *STREAM_URL/STREAM_NAME*
      &quot;rtmpsBackupIngestionAddress&quot;: &quot;A String&quot;, # This ingestion url may be used instead of backupIngestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams.
      &quot;rtmpsIngestionAddress&quot;: &quot;A String&quot;, # This ingestion url may be used instead of ingestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams.
      &quot;streamName&quot;: &quot;A String&quot;, # The stream name that YouTube assigns to the video stream.
    },
    &quot;ingestionType&quot;: &quot;A String&quot;, #  The method or protocol used to transmit the video stream.
    &quot;resolution&quot;: &quot;A String&quot;, # The resolution of the inbound video data.
  },
  &quot;contentDetails&quot;: { # Detailed settings of a stream. # The content_details object contains information about the stream, including the closed captions ingestion URL.
    &quot;closedCaptionsIngestionUrl&quot;: &quot;A String&quot;, # The ingestion URL where the closed captions of this stream are sent.
    &quot;isReusable&quot;: True or False, # Indicates whether the stream is reusable, which means that it can be bound to multiple broadcasts. It is common for broadcasters to reuse the same stream for many different broadcasts if those broadcasts occur at different times. If you set this value to false, then the stream will not be reusable, which means that it can only be bound to one broadcast. Non-reusable streams differ from reusable streams in the following ways: - A non-reusable stream can only be bound to one broadcast. - A non-reusable stream might be deleted by an automated process after the broadcast ends. - The liveStreams.list method does not list non-reusable streams if you call the method and set the mine parameter to true. The only way to use that method to retrieve the resource for a non-reusable stream is to use the id parameter to identify the stream.
  },
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the stream.
  &quot;kind&quot;: &quot;youtube#liveStream&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveStream&quot;.
  &quot;snippet&quot;: { # The snippet object contains basic details about the stream, including its channel, title, and description.
    &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is transmitting the stream.
    &quot;description&quot;: &quot;A String&quot;, # The stream&#x27;s description. The value cannot be longer than 10000 characters.
    &quot;isDefaultStream&quot;: True or False,
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the stream was created.
    &quot;title&quot;: &quot;A String&quot;, # The stream&#x27;s title. The value must be between 1 and 128 characters long.
  },
  &quot;status&quot;: { # Brief description of the live stream status. # The status object contains information about live stream&#x27;s status.
    &quot;healthStatus&quot;: { # The health status of the stream.
      &quot;configurationIssues&quot;: [ # The configurations issues on this stream
        {
          &quot;description&quot;: &quot;A String&quot;, # The long-form description of the issue and how to resolve it.
          &quot;reason&quot;: &quot;A String&quot;, # The short-form reason for this issue.
          &quot;severity&quot;: &quot;A String&quot;, # How severe this issue is to the stream.
          &quot;type&quot;: &quot;A String&quot;, # The kind of error happening.
        },
      ],
      &quot;lastUpdateTimeSeconds&quot;: &quot;A String&quot;, # The last time this status was updated (in seconds)
      &quot;status&quot;: &quot;A String&quot;, # The status code of this stream
    },
    &quot;streamStatus&quot;: &quot;A String&quot;,
  },
}

  onBehalfOfContentOwner: string, *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request&#x27;s authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.
  onBehalfOfContentOwnerChannel: string, This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A live stream describes a live ingestion point.
  &quot;cdn&quot;: { # Brief description of the live stream cdn settings. # The cdn object defines the live stream&#x27;s content delivery network (CDN) settings. These settings provide details about the manner in which you stream your content to YouTube.
    &quot;format&quot;: &quot;A String&quot;, # The format of the video stream that you are sending to Youtube.
    &quot;frameRate&quot;: &quot;A String&quot;, # The frame rate of the inbound video data.
    &quot;ingestionInfo&quot;: { # Describes information necessary for ingesting an RTMP, HTTP, or SRT stream. # The ingestionInfo object contains information that YouTube provides that you need to transmit your RTMP or HTTP stream to YouTube.
      &quot;backupIngestionAddress&quot;: &quot;A String&quot;, # The backup ingestion URL that you should use to stream video to YouTube. You have the option of simultaneously streaming the content that you are sending to the ingestionAddress to this URL.
      &quot;ingestionAddress&quot;: &quot;A String&quot;, # The primary ingestion URL that you should use to stream video to YouTube. You must stream video to this URL. Depending on which application or tool you use to encode your video stream, you may need to enter the stream URL and stream name separately or you may need to concatenate them in the following format: *STREAM_URL/STREAM_NAME*
      &quot;rtmpsBackupIngestionAddress&quot;: &quot;A String&quot;, # This ingestion url may be used instead of backupIngestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams.
      &quot;rtmpsIngestionAddress&quot;: &quot;A String&quot;, # This ingestion url may be used instead of ingestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams.
      &quot;streamName&quot;: &quot;A String&quot;, # The stream name that YouTube assigns to the video stream.
    },
    &quot;ingestionType&quot;: &quot;A String&quot;, #  The method or protocol used to transmit the video stream.
    &quot;resolution&quot;: &quot;A String&quot;, # The resolution of the inbound video data.
  },
  &quot;contentDetails&quot;: { # Detailed settings of a stream. # The content_details object contains information about the stream, including the closed captions ingestion URL.
    &quot;closedCaptionsIngestionUrl&quot;: &quot;A String&quot;, # The ingestion URL where the closed captions of this stream are sent.
    &quot;isReusable&quot;: True or False, # Indicates whether the stream is reusable, which means that it can be bound to multiple broadcasts. It is common for broadcasters to reuse the same stream for many different broadcasts if those broadcasts occur at different times. If you set this value to false, then the stream will not be reusable, which means that it can only be bound to one broadcast. Non-reusable streams differ from reusable streams in the following ways: - A non-reusable stream can only be bound to one broadcast. - A non-reusable stream might be deleted by an automated process after the broadcast ends. - The liveStreams.list method does not list non-reusable streams if you call the method and set the mine parameter to true. The only way to use that method to retrieve the resource for a non-reusable stream is to use the id parameter to identify the stream.
  },
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the stream.
  &quot;kind&quot;: &quot;youtube#liveStream&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveStream&quot;.
  &quot;snippet&quot;: { # The snippet object contains basic details about the stream, including its channel, title, and description.
    &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is transmitting the stream.
    &quot;description&quot;: &quot;A String&quot;, # The stream&#x27;s description. The value cannot be longer than 10000 characters.
    &quot;isDefaultStream&quot;: True or False,
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the stream was created.
    &quot;title&quot;: &quot;A String&quot;, # The stream&#x27;s title. The value must be between 1 and 128 characters long.
  },
  &quot;status&quot;: { # Brief description of the live stream status. # The status object contains information about live stream&#x27;s status.
    &quot;healthStatus&quot;: { # The health status of the stream.
      &quot;configurationIssues&quot;: [ # The configurations issues on this stream
        {
          &quot;description&quot;: &quot;A String&quot;, # The long-form description of the issue and how to resolve it.
          &quot;reason&quot;: &quot;A String&quot;, # The short-form reason for this issue.
          &quot;severity&quot;: &quot;A String&quot;, # How severe this issue is to the stream.
          &quot;type&quot;: &quot;A String&quot;, # The kind of error happening.
        },
      ],
      &quot;lastUpdateTimeSeconds&quot;: &quot;A String&quot;, # The last time this status was updated (in seconds)
      &quot;status&quot;: &quot;A String&quot;, # The status code of this stream
    },
    &quot;streamStatus&quot;: &quot;A String&quot;,
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(part, id=None, maxResults=None, mine=None, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, pageToken=None, x__xgafv=None)</code>
  <pre>Retrieve the list of streams associated with the given channel. --

Args:
  part: string, The *part* parameter specifies a comma-separated list of one or more liveStream resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, cdn, and status. (required) (repeated)
  id: string, Return LiveStreams with the given ids from Stubby or Apiary. (repeated)
  maxResults: integer, The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.
  mine: boolean, A parameter
  onBehalfOfContentOwner: string, *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request&#x27;s authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.
  onBehalfOfContentOwnerChannel: string, This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.
  pageToken: string, The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;eventId&quot;: &quot;A String&quot;, # Serialized EventId of the request which produced this response.
  &quot;items&quot;: [ # A list of live streams that match the request criteria.
    { # A live stream describes a live ingestion point.
      &quot;cdn&quot;: { # Brief description of the live stream cdn settings. # The cdn object defines the live stream&#x27;s content delivery network (CDN) settings. These settings provide details about the manner in which you stream your content to YouTube.
        &quot;format&quot;: &quot;A String&quot;, # The format of the video stream that you are sending to Youtube.
        &quot;frameRate&quot;: &quot;A String&quot;, # The frame rate of the inbound video data.
        &quot;ingestionInfo&quot;: { # Describes information necessary for ingesting an RTMP, HTTP, or SRT stream. # The ingestionInfo object contains information that YouTube provides that you need to transmit your RTMP or HTTP stream to YouTube.
          &quot;backupIngestionAddress&quot;: &quot;A String&quot;, # The backup ingestion URL that you should use to stream video to YouTube. You have the option of simultaneously streaming the content that you are sending to the ingestionAddress to this URL.
          &quot;ingestionAddress&quot;: &quot;A String&quot;, # The primary ingestion URL that you should use to stream video to YouTube. You must stream video to this URL. Depending on which application or tool you use to encode your video stream, you may need to enter the stream URL and stream name separately or you may need to concatenate them in the following format: *STREAM_URL/STREAM_NAME*
          &quot;rtmpsBackupIngestionAddress&quot;: &quot;A String&quot;, # This ingestion url may be used instead of backupIngestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams.
          &quot;rtmpsIngestionAddress&quot;: &quot;A String&quot;, # This ingestion url may be used instead of ingestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams.
          &quot;streamName&quot;: &quot;A String&quot;, # The stream name that YouTube assigns to the video stream.
        },
        &quot;ingestionType&quot;: &quot;A String&quot;, #  The method or protocol used to transmit the video stream.
        &quot;resolution&quot;: &quot;A String&quot;, # The resolution of the inbound video data.
      },
      &quot;contentDetails&quot;: { # Detailed settings of a stream. # The content_details object contains information about the stream, including the closed captions ingestion URL.
        &quot;closedCaptionsIngestionUrl&quot;: &quot;A String&quot;, # The ingestion URL where the closed captions of this stream are sent.
        &quot;isReusable&quot;: True or False, # Indicates whether the stream is reusable, which means that it can be bound to multiple broadcasts. It is common for broadcasters to reuse the same stream for many different broadcasts if those broadcasts occur at different times. If you set this value to false, then the stream will not be reusable, which means that it can only be bound to one broadcast. Non-reusable streams differ from reusable streams in the following ways: - A non-reusable stream can only be bound to one broadcast. - A non-reusable stream might be deleted by an automated process after the broadcast ends. - The liveStreams.list method does not list non-reusable streams if you call the method and set the mine parameter to true. The only way to use that method to retrieve the resource for a non-reusable stream is to use the id parameter to identify the stream.
      },
      &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
      &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the stream.
      &quot;kind&quot;: &quot;youtube#liveStream&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveStream&quot;.
      &quot;snippet&quot;: { # The snippet object contains basic details about the stream, including its channel, title, and description.
        &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is transmitting the stream.
        &quot;description&quot;: &quot;A String&quot;, # The stream&#x27;s description. The value cannot be longer than 10000 characters.
        &quot;isDefaultStream&quot;: True or False,
        &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the stream was created.
        &quot;title&quot;: &quot;A String&quot;, # The stream&#x27;s title. The value must be between 1 and 128 characters long.
      },
      &quot;status&quot;: { # Brief description of the live stream status. # The status object contains information about live stream&#x27;s status.
        &quot;healthStatus&quot;: { # The health status of the stream.
          &quot;configurationIssues&quot;: [ # The configurations issues on this stream
            {
              &quot;description&quot;: &quot;A String&quot;, # The long-form description of the issue and how to resolve it.
              &quot;reason&quot;: &quot;A String&quot;, # The short-form reason for this issue.
              &quot;severity&quot;: &quot;A String&quot;, # How severe this issue is to the stream.
              &quot;type&quot;: &quot;A String&quot;, # The kind of error happening.
            },
          ],
          &quot;lastUpdateTimeSeconds&quot;: &quot;A String&quot;, # The last time this status was updated (in seconds)
          &quot;status&quot;: &quot;A String&quot;, # The status code of this stream
        },
        &quot;streamStatus&quot;: &quot;A String&quot;,
      },
    },
  ],
  &quot;kind&quot;: &quot;youtube#liveStreamListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveStreamListResponse&quot;.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  &quot;pageInfo&quot;: { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page.
    &quot;resultsPerPage&quot;: 42, # The number of results included in the API response.
    &quot;totalResults&quot;: 42, # The total number of results in the result set.
  },
  &quot;prevPageToken&quot;: &quot;A String&quot;, # The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  &quot;tokenPagination&quot;: { # Stub token pagination template to suppress results.
  },
  &quot;visitorId&quot;: &quot;A String&quot;, # The visitorId identifies the visitor.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="update">update(part, body=None, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, x__xgafv=None)</code>
  <pre>Updates an existing stream for the authenticated user.

Args:
  part: string, The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part properties that you can include in the parameter value are id, snippet, cdn, and status. Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. If the request body does not specify a value for a mutable property, the existing value for that property will be removed. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{ # A live stream describes a live ingestion point.
  &quot;cdn&quot;: { # Brief description of the live stream cdn settings. # The cdn object defines the live stream&#x27;s content delivery network (CDN) settings. These settings provide details about the manner in which you stream your content to YouTube.
    &quot;format&quot;: &quot;A String&quot;, # The format of the video stream that you are sending to Youtube.
    &quot;frameRate&quot;: &quot;A String&quot;, # The frame rate of the inbound video data.
    &quot;ingestionInfo&quot;: { # Describes information necessary for ingesting an RTMP, HTTP, or SRT stream. # The ingestionInfo object contains information that YouTube provides that you need to transmit your RTMP or HTTP stream to YouTube.
      &quot;backupIngestionAddress&quot;: &quot;A String&quot;, # The backup ingestion URL that you should use to stream video to YouTube. You have the option of simultaneously streaming the content that you are sending to the ingestionAddress to this URL.
      &quot;ingestionAddress&quot;: &quot;A String&quot;, # The primary ingestion URL that you should use to stream video to YouTube. You must stream video to this URL. Depending on which application or tool you use to encode your video stream, you may need to enter the stream URL and stream name separately or you may need to concatenate them in the following format: *STREAM_URL/STREAM_NAME*
      &quot;rtmpsBackupIngestionAddress&quot;: &quot;A String&quot;, # This ingestion url may be used instead of backupIngestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams.
      &quot;rtmpsIngestionAddress&quot;: &quot;A String&quot;, # This ingestion url may be used instead of ingestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams.
      &quot;streamName&quot;: &quot;A String&quot;, # The stream name that YouTube assigns to the video stream.
    },
    &quot;ingestionType&quot;: &quot;A String&quot;, #  The method or protocol used to transmit the video stream.
    &quot;resolution&quot;: &quot;A String&quot;, # The resolution of the inbound video data.
  },
  &quot;contentDetails&quot;: { # Detailed settings of a stream. # The content_details object contains information about the stream, including the closed captions ingestion URL.
    &quot;closedCaptionsIngestionUrl&quot;: &quot;A String&quot;, # The ingestion URL where the closed captions of this stream are sent.
    &quot;isReusable&quot;: True or False, # Indicates whether the stream is reusable, which means that it can be bound to multiple broadcasts. It is common for broadcasters to reuse the same stream for many different broadcasts if those broadcasts occur at different times. If you set this value to false, then the stream will not be reusable, which means that it can only be bound to one broadcast. Non-reusable streams differ from reusable streams in the following ways: - A non-reusable stream can only be bound to one broadcast. - A non-reusable stream might be deleted by an automated process after the broadcast ends. - The liveStreams.list method does not list non-reusable streams if you call the method and set the mine parameter to true. The only way to use that method to retrieve the resource for a non-reusable stream is to use the id parameter to identify the stream.
  },
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the stream.
  &quot;kind&quot;: &quot;youtube#liveStream&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveStream&quot;.
  &quot;snippet&quot;: { # The snippet object contains basic details about the stream, including its channel, title, and description.
    &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is transmitting the stream.
    &quot;description&quot;: &quot;A String&quot;, # The stream&#x27;s description. The value cannot be longer than 10000 characters.
    &quot;isDefaultStream&quot;: True or False,
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the stream was created.
    &quot;title&quot;: &quot;A String&quot;, # The stream&#x27;s title. The value must be between 1 and 128 characters long.
  },
  &quot;status&quot;: { # Brief description of the live stream status. # The status object contains information about live stream&#x27;s status.
    &quot;healthStatus&quot;: { # The health status of the stream.
      &quot;configurationIssues&quot;: [ # The configurations issues on this stream
        {
          &quot;description&quot;: &quot;A String&quot;, # The long-form description of the issue and how to resolve it.
          &quot;reason&quot;: &quot;A String&quot;, # The short-form reason for this issue.
          &quot;severity&quot;: &quot;A String&quot;, # How severe this issue is to the stream.
          &quot;type&quot;: &quot;A String&quot;, # The kind of error happening.
        },
      ],
      &quot;lastUpdateTimeSeconds&quot;: &quot;A String&quot;, # The last time this status was updated (in seconds)
      &quot;status&quot;: &quot;A String&quot;, # The status code of this stream
    },
    &quot;streamStatus&quot;: &quot;A String&quot;,
  },
}

  onBehalfOfContentOwner: string, *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request&#x27;s authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.
  onBehalfOfContentOwnerChannel: string, This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A live stream describes a live ingestion point.
  &quot;cdn&quot;: { # Brief description of the live stream cdn settings. # The cdn object defines the live stream&#x27;s content delivery network (CDN) settings. These settings provide details about the manner in which you stream your content to YouTube.
    &quot;format&quot;: &quot;A String&quot;, # The format of the video stream that you are sending to Youtube.
    &quot;frameRate&quot;: &quot;A String&quot;, # The frame rate of the inbound video data.
    &quot;ingestionInfo&quot;: { # Describes information necessary for ingesting an RTMP, HTTP, or SRT stream. # The ingestionInfo object contains information that YouTube provides that you need to transmit your RTMP or HTTP stream to YouTube.
      &quot;backupIngestionAddress&quot;: &quot;A String&quot;, # The backup ingestion URL that you should use to stream video to YouTube. You have the option of simultaneously streaming the content that you are sending to the ingestionAddress to this URL.
      &quot;ingestionAddress&quot;: &quot;A String&quot;, # The primary ingestion URL that you should use to stream video to YouTube. You must stream video to this URL. Depending on which application or tool you use to encode your video stream, you may need to enter the stream URL and stream name separately or you may need to concatenate them in the following format: *STREAM_URL/STREAM_NAME*
      &quot;rtmpsBackupIngestionAddress&quot;: &quot;A String&quot;, # This ingestion url may be used instead of backupIngestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams.
      &quot;rtmpsIngestionAddress&quot;: &quot;A String&quot;, # This ingestion url may be used instead of ingestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams.
      &quot;streamName&quot;: &quot;A String&quot;, # The stream name that YouTube assigns to the video stream.
    },
    &quot;ingestionType&quot;: &quot;A String&quot;, #  The method or protocol used to transmit the video stream.
    &quot;resolution&quot;: &quot;A String&quot;, # The resolution of the inbound video data.
  },
  &quot;contentDetails&quot;: { # Detailed settings of a stream. # The content_details object contains information about the stream, including the closed captions ingestion URL.
    &quot;closedCaptionsIngestionUrl&quot;: &quot;A String&quot;, # The ingestion URL where the closed captions of this stream are sent.
    &quot;isReusable&quot;: True or False, # Indicates whether the stream is reusable, which means that it can be bound to multiple broadcasts. It is common for broadcasters to reuse the same stream for many different broadcasts if those broadcasts occur at different times. If you set this value to false, then the stream will not be reusable, which means that it can only be bound to one broadcast. Non-reusable streams differ from reusable streams in the following ways: - A non-reusable stream can only be bound to one broadcast. - A non-reusable stream might be deleted by an automated process after the broadcast ends. - The liveStreams.list method does not list non-reusable streams if you call the method and set the mine parameter to true. The only way to use that method to retrieve the resource for a non-reusable stream is to use the id parameter to identify the stream.
  },
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the stream.
  &quot;kind&quot;: &quot;youtube#liveStream&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveStream&quot;.
  &quot;snippet&quot;: { # The snippet object contains basic details about the stream, including its channel, title, and description.
    &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is transmitting the stream.
    &quot;description&quot;: &quot;A String&quot;, # The stream&#x27;s description. The value cannot be longer than 10000 characters.
    &quot;isDefaultStream&quot;: True or False,
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the stream was created.
    &quot;title&quot;: &quot;A String&quot;, # The stream&#x27;s title. The value must be between 1 and 128 characters long.
  },
  &quot;status&quot;: { # Brief description of the live stream status. # The status object contains information about live stream&#x27;s status.
    &quot;healthStatus&quot;: { # The health status of the stream.
      &quot;configurationIssues&quot;: [ # The configurations issues on this stream
        {
          &quot;description&quot;: &quot;A String&quot;, # The long-form description of the issue and how to resolve it.
          &quot;reason&quot;: &quot;A String&quot;, # The short-form reason for this issue.
          &quot;severity&quot;: &quot;A String&quot;, # How severe this issue is to the stream.
          &quot;type&quot;: &quot;A String&quot;, # The kind of error happening.
        },
      ],
      &quot;lastUpdateTimeSeconds&quot;: &quot;A String&quot;, # The last time this status was updated (in seconds)
      &quot;status&quot;: &quot;A String&quot;, # The status code of this stream
    },
    &quot;streamStatus&quot;: &quot;A String&quot;,
  },
}</pre>
</div>

</body></html>