<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.liveBroadcasts.html">liveBroadcasts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#bind">bind(id, part, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, streamId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Bind a broadcast to a stream.</p>
<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">Delete a given broadcast.</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, broadcastStatus=None, broadcastType=None, 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 broadcasts 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="#transition">transition(broadcastStatus, id, part, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, x__xgafv=None)</a></code></p>
<p class="firstline">Transition a broadcast to a given status.</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 broadcast for the authenticated user.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="bind">bind(id, part, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, streamId=None, x__xgafv=None)</code>
  <pre>Bind a broadcast to a stream.

Args:
  id: string, Broadcast to bind to the stream (required)
  part: string, The *part* parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, and status. (required) (repeated)
  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.
  streamId: string, Stream to bind, if not set unbind the current one.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A *liveBroadcast* resource represents an event that will be streamed, via live video, on YouTube.
  &quot;contentDetails&quot;: { # Detailed settings of a broadcast. # The contentDetails object contains information about the event&#x27;s video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
    &quot;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
    &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
    &quot;closedCaptionsType&quot;: &quot;A String&quot;,
    &quot;enableAutoStart&quot;: True or False, # This setting indicates whether auto start is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
    &quot;enableAutoStop&quot;: True or False, # This setting indicates whether auto stop is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
    &quot;enableClosedCaptions&quot;: True or False, # This setting indicates whether HTTP POST closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API. This is mutually exclusive with using the closed_captions_type property, and is equivalent to setting closed_captions_type to CLOSED_CAPTIONS_HTTP_POST.
    &quot;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
    &quot;enableDvr&quot;: True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true. *Important:* You must set the value to true and also set the enableArchive property&#x27;s value to true if you want to make playback available immediately after the broadcast ends.
    &quot;enableEmbed&quot;: True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
    &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
    &quot;latencyPreference&quot;: &quot;A String&quot;, # If both this and enable_low_latency are set, they must match. LATENCY_NORMAL should match enable_low_latency=false LATENCY_LOW should match enable_low_latency=true LATENCY_ULTRA_LOW should have enable_low_latency omitted.
    &quot;mesh&quot;: &quot;A String&quot;, # The mesh for projecting the video if projection is mesh. The mesh value must be a UTF-8 string containing the base-64 encoding of 3D mesh data that follows the Spherical Video V2 RFC specification for an mshp box, excluding the box size and type but including the following four reserved zero bytes for the version and flags.
    &quot;monitorStream&quot;: { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
      &quot;broadcastStreamDelayMs&quot;: 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
      &quot;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
      &quot;enableMonitorStream&quot;: True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster&#x27;s consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints. You need to set this value to true if you intend to have a broadcast delay for your event. *Note:* This property cannot be updated once the broadcast is in the testing or live state.
    },
    &quot;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
    &quot;recordFromStart&quot;: True or False, # Automatically start recording after the event goes live. The default value for this property is true. *Important:* You must also set the enableDvr property&#x27;s value to true if you want the playback to be available immediately after the broadcast ends. If you set this property&#x27;s value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
    &quot;startWithSlate&quot;: True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast&#x27;s status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint&#x27;s eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
    &quot;stereoLayout&quot;: &quot;A String&quot;, # The 3D stereo layout of this broadcast. This defaults to mono.
  },
  &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 broadcast.
  &quot;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
  &quot;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
    &quot;actualEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually ended. This information is only available once the broadcast&#x27;s state is complete.
    &quot;actualStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually started. This information is only available once the broadcast&#x27;s state is live.
    &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
    &quot;description&quot;: &quot;A String&quot;, # The broadcast&#x27;s description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
    &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
    &quot;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule.
    &quot;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end.
    &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start.
    &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
      &quot;default&quot;: { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;high&quot;: { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;maxres&quot;: { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;medium&quot;: { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;standard&quot;: { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
    },
    &quot;title&quot;: &quot;A String&quot;, # The broadcast&#x27;s title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
  },
  &quot;statistics&quot;: { # Statistics about the live broadcast. These represent a snapshot of the values at the time of the request. Statistics are only returned for live broadcasts. # The statistics object contains info about the event&#x27;s current stats. These include concurrent viewers and total chat count. Statistics can change (in either direction) during the lifetime of an event. Statistics are only returned while the event is live.
    &quot;totalChatCount&quot;: &quot;A String&quot;, # The total number of live chat messages currently on the broadcast. The property and its value will be present if the broadcast is public, has the live chat feature enabled, and has at least one message. Note that this field will not be filled after the broadcast ends. So this property would not identify the number of chat messages for an archived video of a completed live broadcast.
  },
  &quot;status&quot;: { # Live broadcast state. # The status object contains information about the event&#x27;s status.
    &quot;lifeCycleStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s status. The status can be updated using the API&#x27;s liveBroadcasts.transition method.
    &quot;liveBroadcastPriority&quot;: &quot;A String&quot;, # Priority of the live broadcast event (internal state).
    &quot;madeForKids&quot;: True or False, # Whether the broadcast is made for kids or not, decided by YouTube instead of the creator. This field is read only.
    &quot;privacyStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
    &quot;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
    &quot;selfDeclaredMadeForKids&quot;: True or False, # This field will be set to True if the creator declares the broadcast to be kids only: go/live-cw-work.
  },
}</pre>
</div>

<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>Delete a given broadcast.

Args:
  id: string, Broadcast to delete. (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, contentDetails, and status. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{ # A *liveBroadcast* resource represents an event that will be streamed, via live video, on YouTube.
  &quot;contentDetails&quot;: { # Detailed settings of a broadcast. # The contentDetails object contains information about the event&#x27;s video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
    &quot;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
    &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
    &quot;closedCaptionsType&quot;: &quot;A String&quot;,
    &quot;enableAutoStart&quot;: True or False, # This setting indicates whether auto start is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
    &quot;enableAutoStop&quot;: True or False, # This setting indicates whether auto stop is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
    &quot;enableClosedCaptions&quot;: True or False, # This setting indicates whether HTTP POST closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API. This is mutually exclusive with using the closed_captions_type property, and is equivalent to setting closed_captions_type to CLOSED_CAPTIONS_HTTP_POST.
    &quot;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
    &quot;enableDvr&quot;: True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true. *Important:* You must set the value to true and also set the enableArchive property&#x27;s value to true if you want to make playback available immediately after the broadcast ends.
    &quot;enableEmbed&quot;: True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
    &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
    &quot;latencyPreference&quot;: &quot;A String&quot;, # If both this and enable_low_latency are set, they must match. LATENCY_NORMAL should match enable_low_latency=false LATENCY_LOW should match enable_low_latency=true LATENCY_ULTRA_LOW should have enable_low_latency omitted.
    &quot;mesh&quot;: &quot;A String&quot;, # The mesh for projecting the video if projection is mesh. The mesh value must be a UTF-8 string containing the base-64 encoding of 3D mesh data that follows the Spherical Video V2 RFC specification for an mshp box, excluding the box size and type but including the following four reserved zero bytes for the version and flags.
    &quot;monitorStream&quot;: { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
      &quot;broadcastStreamDelayMs&quot;: 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
      &quot;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
      &quot;enableMonitorStream&quot;: True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster&#x27;s consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints. You need to set this value to true if you intend to have a broadcast delay for your event. *Note:* This property cannot be updated once the broadcast is in the testing or live state.
    },
    &quot;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
    &quot;recordFromStart&quot;: True or False, # Automatically start recording after the event goes live. The default value for this property is true. *Important:* You must also set the enableDvr property&#x27;s value to true if you want the playback to be available immediately after the broadcast ends. If you set this property&#x27;s value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
    &quot;startWithSlate&quot;: True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast&#x27;s status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint&#x27;s eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
    &quot;stereoLayout&quot;: &quot;A String&quot;, # The 3D stereo layout of this broadcast. This defaults to mono.
  },
  &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 broadcast.
  &quot;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
  &quot;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
    &quot;actualEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually ended. This information is only available once the broadcast&#x27;s state is complete.
    &quot;actualStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually started. This information is only available once the broadcast&#x27;s state is live.
    &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
    &quot;description&quot;: &quot;A String&quot;, # The broadcast&#x27;s description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
    &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
    &quot;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule.
    &quot;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end.
    &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start.
    &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
      &quot;default&quot;: { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;high&quot;: { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;maxres&quot;: { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;medium&quot;: { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;standard&quot;: { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
    },
    &quot;title&quot;: &quot;A String&quot;, # The broadcast&#x27;s title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
  },
  &quot;statistics&quot;: { # Statistics about the live broadcast. These represent a snapshot of the values at the time of the request. Statistics are only returned for live broadcasts. # The statistics object contains info about the event&#x27;s current stats. These include concurrent viewers and total chat count. Statistics can change (in either direction) during the lifetime of an event. Statistics are only returned while the event is live.
    &quot;totalChatCount&quot;: &quot;A String&quot;, # The total number of live chat messages currently on the broadcast. The property and its value will be present if the broadcast is public, has the live chat feature enabled, and has at least one message. Note that this field will not be filled after the broadcast ends. So this property would not identify the number of chat messages for an archived video of a completed live broadcast.
  },
  &quot;status&quot;: { # Live broadcast state. # The status object contains information about the event&#x27;s status.
    &quot;lifeCycleStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s status. The status can be updated using the API&#x27;s liveBroadcasts.transition method.
    &quot;liveBroadcastPriority&quot;: &quot;A String&quot;, # Priority of the live broadcast event (internal state).
    &quot;madeForKids&quot;: True or False, # Whether the broadcast is made for kids or not, decided by YouTube instead of the creator. This field is read only.
    &quot;privacyStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
    &quot;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
    &quot;selfDeclaredMadeForKids&quot;: True or False, # This field will be set to True if the creator declares the broadcast to be kids only: go/live-cw-work.
  },
}

  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 *liveBroadcast* resource represents an event that will be streamed, via live video, on YouTube.
  &quot;contentDetails&quot;: { # Detailed settings of a broadcast. # The contentDetails object contains information about the event&#x27;s video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
    &quot;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
    &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
    &quot;closedCaptionsType&quot;: &quot;A String&quot;,
    &quot;enableAutoStart&quot;: True or False, # This setting indicates whether auto start is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
    &quot;enableAutoStop&quot;: True or False, # This setting indicates whether auto stop is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
    &quot;enableClosedCaptions&quot;: True or False, # This setting indicates whether HTTP POST closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API. This is mutually exclusive with using the closed_captions_type property, and is equivalent to setting closed_captions_type to CLOSED_CAPTIONS_HTTP_POST.
    &quot;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
    &quot;enableDvr&quot;: True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true. *Important:* You must set the value to true and also set the enableArchive property&#x27;s value to true if you want to make playback available immediately after the broadcast ends.
    &quot;enableEmbed&quot;: True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
    &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
    &quot;latencyPreference&quot;: &quot;A String&quot;, # If both this and enable_low_latency are set, they must match. LATENCY_NORMAL should match enable_low_latency=false LATENCY_LOW should match enable_low_latency=true LATENCY_ULTRA_LOW should have enable_low_latency omitted.
    &quot;mesh&quot;: &quot;A String&quot;, # The mesh for projecting the video if projection is mesh. The mesh value must be a UTF-8 string containing the base-64 encoding of 3D mesh data that follows the Spherical Video V2 RFC specification for an mshp box, excluding the box size and type but including the following four reserved zero bytes for the version and flags.
    &quot;monitorStream&quot;: { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
      &quot;broadcastStreamDelayMs&quot;: 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
      &quot;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
      &quot;enableMonitorStream&quot;: True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster&#x27;s consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints. You need to set this value to true if you intend to have a broadcast delay for your event. *Note:* This property cannot be updated once the broadcast is in the testing or live state.
    },
    &quot;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
    &quot;recordFromStart&quot;: True or False, # Automatically start recording after the event goes live. The default value for this property is true. *Important:* You must also set the enableDvr property&#x27;s value to true if you want the playback to be available immediately after the broadcast ends. If you set this property&#x27;s value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
    &quot;startWithSlate&quot;: True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast&#x27;s status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint&#x27;s eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
    &quot;stereoLayout&quot;: &quot;A String&quot;, # The 3D stereo layout of this broadcast. This defaults to mono.
  },
  &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 broadcast.
  &quot;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
  &quot;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
    &quot;actualEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually ended. This information is only available once the broadcast&#x27;s state is complete.
    &quot;actualStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually started. This information is only available once the broadcast&#x27;s state is live.
    &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
    &quot;description&quot;: &quot;A String&quot;, # The broadcast&#x27;s description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
    &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
    &quot;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule.
    &quot;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end.
    &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start.
    &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
      &quot;default&quot;: { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;high&quot;: { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;maxres&quot;: { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;medium&quot;: { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;standard&quot;: { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
    },
    &quot;title&quot;: &quot;A String&quot;, # The broadcast&#x27;s title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
  },
  &quot;statistics&quot;: { # Statistics about the live broadcast. These represent a snapshot of the values at the time of the request. Statistics are only returned for live broadcasts. # The statistics object contains info about the event&#x27;s current stats. These include concurrent viewers and total chat count. Statistics can change (in either direction) during the lifetime of an event. Statistics are only returned while the event is live.
    &quot;totalChatCount&quot;: &quot;A String&quot;, # The total number of live chat messages currently on the broadcast. The property and its value will be present if the broadcast is public, has the live chat feature enabled, and has at least one message. Note that this field will not be filled after the broadcast ends. So this property would not identify the number of chat messages for an archived video of a completed live broadcast.
  },
  &quot;status&quot;: { # Live broadcast state. # The status object contains information about the event&#x27;s status.
    &quot;lifeCycleStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s status. The status can be updated using the API&#x27;s liveBroadcasts.transition method.
    &quot;liveBroadcastPriority&quot;: &quot;A String&quot;, # Priority of the live broadcast event (internal state).
    &quot;madeForKids&quot;: True or False, # Whether the broadcast is made for kids or not, decided by YouTube instead of the creator. This field is read only.
    &quot;privacyStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
    &quot;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
    &quot;selfDeclaredMadeForKids&quot;: True or False, # This field will be set to True if the creator declares the broadcast to be kids only: go/live-cw-work.
  },
}</pre>
</div>

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

Args:
  part: string, The *part* parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, status and statistics. (required) (repeated)
  broadcastStatus: string, Return broadcasts with a certain status, e.g. active broadcasts.
    Allowed values
      broadcastStatusFilterUnspecified - 
      all - Return all broadcasts.
      active - Return current live broadcasts.
      upcoming - Return broadcasts that have not yet started.
      completed - Return broadcasts that have already ended.
  broadcastType: string, Return only broadcasts with the selected type.
    Allowed values
      broadcastTypeFilterUnspecified - 
      all - Return all broadcasts.
      event - Return only scheduled event broadcasts.
      persistent - Return only persistent broadcasts.
  id: string, Return broadcasts 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 broadcasts that match the request criteria.
    { # A *liveBroadcast* resource represents an event that will be streamed, via live video, on YouTube.
      &quot;contentDetails&quot;: { # Detailed settings of a broadcast. # The contentDetails object contains information about the event&#x27;s video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
        &quot;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
        &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
        &quot;closedCaptionsType&quot;: &quot;A String&quot;,
        &quot;enableAutoStart&quot;: True or False, # This setting indicates whether auto start is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
        &quot;enableAutoStop&quot;: True or False, # This setting indicates whether auto stop is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
        &quot;enableClosedCaptions&quot;: True or False, # This setting indicates whether HTTP POST closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API. This is mutually exclusive with using the closed_captions_type property, and is equivalent to setting closed_captions_type to CLOSED_CAPTIONS_HTTP_POST.
        &quot;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
        &quot;enableDvr&quot;: True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true. *Important:* You must set the value to true and also set the enableArchive property&#x27;s value to true if you want to make playback available immediately after the broadcast ends.
        &quot;enableEmbed&quot;: True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
        &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
        &quot;latencyPreference&quot;: &quot;A String&quot;, # If both this and enable_low_latency are set, they must match. LATENCY_NORMAL should match enable_low_latency=false LATENCY_LOW should match enable_low_latency=true LATENCY_ULTRA_LOW should have enable_low_latency omitted.
        &quot;mesh&quot;: &quot;A String&quot;, # The mesh for projecting the video if projection is mesh. The mesh value must be a UTF-8 string containing the base-64 encoding of 3D mesh data that follows the Spherical Video V2 RFC specification for an mshp box, excluding the box size and type but including the following four reserved zero bytes for the version and flags.
        &quot;monitorStream&quot;: { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
          &quot;broadcastStreamDelayMs&quot;: 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
          &quot;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
          &quot;enableMonitorStream&quot;: True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster&#x27;s consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints. You need to set this value to true if you intend to have a broadcast delay for your event. *Note:* This property cannot be updated once the broadcast is in the testing or live state.
        },
        &quot;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
        &quot;recordFromStart&quot;: True or False, # Automatically start recording after the event goes live. The default value for this property is true. *Important:* You must also set the enableDvr property&#x27;s value to true if you want the playback to be available immediately after the broadcast ends. If you set this property&#x27;s value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
        &quot;startWithSlate&quot;: True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast&#x27;s status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint&#x27;s eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
        &quot;stereoLayout&quot;: &quot;A String&quot;, # The 3D stereo layout of this broadcast. This defaults to mono.
      },
      &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 broadcast.
      &quot;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
      &quot;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
        &quot;actualEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually ended. This information is only available once the broadcast&#x27;s state is complete.
        &quot;actualStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually started. This information is only available once the broadcast&#x27;s state is live.
        &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
        &quot;description&quot;: &quot;A String&quot;, # The broadcast&#x27;s description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
        &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
        &quot;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
        &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule.
        &quot;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end.
        &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start.
        &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
          &quot;default&quot;: { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
            &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
            &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
          },
          &quot;high&quot;: { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
            &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
            &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
          },
          &quot;maxres&quot;: { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
            &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
            &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
          },
          &quot;medium&quot;: { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
            &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
            &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
          },
          &quot;standard&quot;: { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
            &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
            &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
          },
        },
        &quot;title&quot;: &quot;A String&quot;, # The broadcast&#x27;s title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
      },
      &quot;statistics&quot;: { # Statistics about the live broadcast. These represent a snapshot of the values at the time of the request. Statistics are only returned for live broadcasts. # The statistics object contains info about the event&#x27;s current stats. These include concurrent viewers and total chat count. Statistics can change (in either direction) during the lifetime of an event. Statistics are only returned while the event is live.
        &quot;totalChatCount&quot;: &quot;A String&quot;, # The total number of live chat messages currently on the broadcast. The property and its value will be present if the broadcast is public, has the live chat feature enabled, and has at least one message. Note that this field will not be filled after the broadcast ends. So this property would not identify the number of chat messages for an archived video of a completed live broadcast.
      },
      &quot;status&quot;: { # Live broadcast state. # The status object contains information about the event&#x27;s status.
        &quot;lifeCycleStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s status. The status can be updated using the API&#x27;s liveBroadcasts.transition method.
        &quot;liveBroadcastPriority&quot;: &quot;A String&quot;, # Priority of the live broadcast event (internal state).
        &quot;madeForKids&quot;: True or False, # Whether the broadcast is made for kids or not, decided by YouTube instead of the creator. This field is read only.
        &quot;privacyStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
        &quot;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
        &quot;selfDeclaredMadeForKids&quot;: True or False, # This field will be set to True if the creator declares the broadcast to be kids only: go/live-cw-work.
      },
    },
  ],
  &quot;kind&quot;: &quot;youtube#liveBroadcastListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcastListResponse&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. # General pagination information.
    &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="transition">transition(broadcastStatus, id, part, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, x__xgafv=None)</code>
  <pre>Transition a broadcast to a given status.

Args:
  broadcastStatus: string, The status to which the broadcast is going to transition. (required)
    Allowed values
      statusUnspecified - 
      testing - Start testing the broadcast. YouTube transmits video to the broadcast&#x27;s monitor stream. Note that you can only transition a broadcast to the testing state if its contentDetails.monitorStream.enableMonitorStream property is set to true.&quot;,
      live - Return only persistent broadcasts.
      complete - The broadcast is over. YouTube stops transmitting video.
  id: string, Broadcast to transition. (required)
  part: string, The *part* parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, and status. (required) (repeated)
  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 *liveBroadcast* resource represents an event that will be streamed, via live video, on YouTube.
  &quot;contentDetails&quot;: { # Detailed settings of a broadcast. # The contentDetails object contains information about the event&#x27;s video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
    &quot;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
    &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
    &quot;closedCaptionsType&quot;: &quot;A String&quot;,
    &quot;enableAutoStart&quot;: True or False, # This setting indicates whether auto start is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
    &quot;enableAutoStop&quot;: True or False, # This setting indicates whether auto stop is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
    &quot;enableClosedCaptions&quot;: True or False, # This setting indicates whether HTTP POST closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API. This is mutually exclusive with using the closed_captions_type property, and is equivalent to setting closed_captions_type to CLOSED_CAPTIONS_HTTP_POST.
    &quot;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
    &quot;enableDvr&quot;: True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true. *Important:* You must set the value to true and also set the enableArchive property&#x27;s value to true if you want to make playback available immediately after the broadcast ends.
    &quot;enableEmbed&quot;: True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
    &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
    &quot;latencyPreference&quot;: &quot;A String&quot;, # If both this and enable_low_latency are set, they must match. LATENCY_NORMAL should match enable_low_latency=false LATENCY_LOW should match enable_low_latency=true LATENCY_ULTRA_LOW should have enable_low_latency omitted.
    &quot;mesh&quot;: &quot;A String&quot;, # The mesh for projecting the video if projection is mesh. The mesh value must be a UTF-8 string containing the base-64 encoding of 3D mesh data that follows the Spherical Video V2 RFC specification for an mshp box, excluding the box size and type but including the following four reserved zero bytes for the version and flags.
    &quot;monitorStream&quot;: { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
      &quot;broadcastStreamDelayMs&quot;: 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
      &quot;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
      &quot;enableMonitorStream&quot;: True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster&#x27;s consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints. You need to set this value to true if you intend to have a broadcast delay for your event. *Note:* This property cannot be updated once the broadcast is in the testing or live state.
    },
    &quot;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
    &quot;recordFromStart&quot;: True or False, # Automatically start recording after the event goes live. The default value for this property is true. *Important:* You must also set the enableDvr property&#x27;s value to true if you want the playback to be available immediately after the broadcast ends. If you set this property&#x27;s value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
    &quot;startWithSlate&quot;: True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast&#x27;s status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint&#x27;s eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
    &quot;stereoLayout&quot;: &quot;A String&quot;, # The 3D stereo layout of this broadcast. This defaults to mono.
  },
  &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 broadcast.
  &quot;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
  &quot;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
    &quot;actualEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually ended. This information is only available once the broadcast&#x27;s state is complete.
    &quot;actualStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually started. This information is only available once the broadcast&#x27;s state is live.
    &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
    &quot;description&quot;: &quot;A String&quot;, # The broadcast&#x27;s description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
    &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
    &quot;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule.
    &quot;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end.
    &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start.
    &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
      &quot;default&quot;: { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;high&quot;: { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;maxres&quot;: { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;medium&quot;: { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;standard&quot;: { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
    },
    &quot;title&quot;: &quot;A String&quot;, # The broadcast&#x27;s title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
  },
  &quot;statistics&quot;: { # Statistics about the live broadcast. These represent a snapshot of the values at the time of the request. Statistics are only returned for live broadcasts. # The statistics object contains info about the event&#x27;s current stats. These include concurrent viewers and total chat count. Statistics can change (in either direction) during the lifetime of an event. Statistics are only returned while the event is live.
    &quot;totalChatCount&quot;: &quot;A String&quot;, # The total number of live chat messages currently on the broadcast. The property and its value will be present if the broadcast is public, has the live chat feature enabled, and has at least one message. Note that this field will not be filled after the broadcast ends. So this property would not identify the number of chat messages for an archived video of a completed live broadcast.
  },
  &quot;status&quot;: { # Live broadcast state. # The status object contains information about the event&#x27;s status.
    &quot;lifeCycleStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s status. The status can be updated using the API&#x27;s liveBroadcasts.transition method.
    &quot;liveBroadcastPriority&quot;: &quot;A String&quot;, # Priority of the live broadcast event (internal state).
    &quot;madeForKids&quot;: True or False, # Whether the broadcast is made for kids or not, decided by YouTube instead of the creator. This field is read only.
    &quot;privacyStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
    &quot;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
    &quot;selfDeclaredMadeForKids&quot;: True or False, # This field will be set to True if the creator declares the broadcast to be kids only: go/live-cw-work.
  },
}</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 broadcast 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, contentDetails, 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. For example, a broadcast&#x27;s privacy status is defined in the status part. As such, if your request is updating a private or unlisted broadcast, and the request&#x27;s part parameter value includes the status part, the broadcast&#x27;s privacy setting will be updated to whatever value the request body specifies. If the request body does not specify a value, the existing privacy setting will be removed and the broadcast will revert to the default privacy setting. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{ # A *liveBroadcast* resource represents an event that will be streamed, via live video, on YouTube.
  &quot;contentDetails&quot;: { # Detailed settings of a broadcast. # The contentDetails object contains information about the event&#x27;s video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
    &quot;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
    &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
    &quot;closedCaptionsType&quot;: &quot;A String&quot;,
    &quot;enableAutoStart&quot;: True or False, # This setting indicates whether auto start is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
    &quot;enableAutoStop&quot;: True or False, # This setting indicates whether auto stop is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
    &quot;enableClosedCaptions&quot;: True or False, # This setting indicates whether HTTP POST closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API. This is mutually exclusive with using the closed_captions_type property, and is equivalent to setting closed_captions_type to CLOSED_CAPTIONS_HTTP_POST.
    &quot;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
    &quot;enableDvr&quot;: True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true. *Important:* You must set the value to true and also set the enableArchive property&#x27;s value to true if you want to make playback available immediately after the broadcast ends.
    &quot;enableEmbed&quot;: True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
    &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
    &quot;latencyPreference&quot;: &quot;A String&quot;, # If both this and enable_low_latency are set, they must match. LATENCY_NORMAL should match enable_low_latency=false LATENCY_LOW should match enable_low_latency=true LATENCY_ULTRA_LOW should have enable_low_latency omitted.
    &quot;mesh&quot;: &quot;A String&quot;, # The mesh for projecting the video if projection is mesh. The mesh value must be a UTF-8 string containing the base-64 encoding of 3D mesh data that follows the Spherical Video V2 RFC specification for an mshp box, excluding the box size and type but including the following four reserved zero bytes for the version and flags.
    &quot;monitorStream&quot;: { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
      &quot;broadcastStreamDelayMs&quot;: 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
      &quot;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
      &quot;enableMonitorStream&quot;: True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster&#x27;s consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints. You need to set this value to true if you intend to have a broadcast delay for your event. *Note:* This property cannot be updated once the broadcast is in the testing or live state.
    },
    &quot;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
    &quot;recordFromStart&quot;: True or False, # Automatically start recording after the event goes live. The default value for this property is true. *Important:* You must also set the enableDvr property&#x27;s value to true if you want the playback to be available immediately after the broadcast ends. If you set this property&#x27;s value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
    &quot;startWithSlate&quot;: True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast&#x27;s status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint&#x27;s eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
    &quot;stereoLayout&quot;: &quot;A String&quot;, # The 3D stereo layout of this broadcast. This defaults to mono.
  },
  &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 broadcast.
  &quot;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
  &quot;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
    &quot;actualEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually ended. This information is only available once the broadcast&#x27;s state is complete.
    &quot;actualStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually started. This information is only available once the broadcast&#x27;s state is live.
    &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
    &quot;description&quot;: &quot;A String&quot;, # The broadcast&#x27;s description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
    &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
    &quot;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule.
    &quot;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end.
    &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start.
    &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
      &quot;default&quot;: { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;high&quot;: { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;maxres&quot;: { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;medium&quot;: { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;standard&quot;: { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
    },
    &quot;title&quot;: &quot;A String&quot;, # The broadcast&#x27;s title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
  },
  &quot;statistics&quot;: { # Statistics about the live broadcast. These represent a snapshot of the values at the time of the request. Statistics are only returned for live broadcasts. # The statistics object contains info about the event&#x27;s current stats. These include concurrent viewers and total chat count. Statistics can change (in either direction) during the lifetime of an event. Statistics are only returned while the event is live.
    &quot;totalChatCount&quot;: &quot;A String&quot;, # The total number of live chat messages currently on the broadcast. The property and its value will be present if the broadcast is public, has the live chat feature enabled, and has at least one message. Note that this field will not be filled after the broadcast ends. So this property would not identify the number of chat messages for an archived video of a completed live broadcast.
  },
  &quot;status&quot;: { # Live broadcast state. # The status object contains information about the event&#x27;s status.
    &quot;lifeCycleStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s status. The status can be updated using the API&#x27;s liveBroadcasts.transition method.
    &quot;liveBroadcastPriority&quot;: &quot;A String&quot;, # Priority of the live broadcast event (internal state).
    &quot;madeForKids&quot;: True or False, # Whether the broadcast is made for kids or not, decided by YouTube instead of the creator. This field is read only.
    &quot;privacyStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
    &quot;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
    &quot;selfDeclaredMadeForKids&quot;: True or False, # This field will be set to True if the creator declares the broadcast to be kids only: go/live-cw-work.
  },
}

  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 *liveBroadcast* resource represents an event that will be streamed, via live video, on YouTube.
  &quot;contentDetails&quot;: { # Detailed settings of a broadcast. # The contentDetails object contains information about the event&#x27;s video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
    &quot;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
    &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
    &quot;closedCaptionsType&quot;: &quot;A String&quot;,
    &quot;enableAutoStart&quot;: True or False, # This setting indicates whether auto start is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
    &quot;enableAutoStop&quot;: True or False, # This setting indicates whether auto stop is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.
    &quot;enableClosedCaptions&quot;: True or False, # This setting indicates whether HTTP POST closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API. This is mutually exclusive with using the closed_captions_type property, and is equivalent to setting closed_captions_type to CLOSED_CAPTIONS_HTTP_POST.
    &quot;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
    &quot;enableDvr&quot;: True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true. *Important:* You must set the value to true and also set the enableArchive property&#x27;s value to true if you want to make playback available immediately after the broadcast ends.
    &quot;enableEmbed&quot;: True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
    &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
    &quot;latencyPreference&quot;: &quot;A String&quot;, # If both this and enable_low_latency are set, they must match. LATENCY_NORMAL should match enable_low_latency=false LATENCY_LOW should match enable_low_latency=true LATENCY_ULTRA_LOW should have enable_low_latency omitted.
    &quot;mesh&quot;: &quot;A String&quot;, # The mesh for projecting the video if projection is mesh. The mesh value must be a UTF-8 string containing the base-64 encoding of 3D mesh data that follows the Spherical Video V2 RFC specification for an mshp box, excluding the box size and type but including the following four reserved zero bytes for the version and flags.
    &quot;monitorStream&quot;: { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
      &quot;broadcastStreamDelayMs&quot;: 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
      &quot;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
      &quot;enableMonitorStream&quot;: True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster&#x27;s consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints. You need to set this value to true if you intend to have a broadcast delay for your event. *Note:* This property cannot be updated once the broadcast is in the testing or live state.
    },
    &quot;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
    &quot;recordFromStart&quot;: True or False, # Automatically start recording after the event goes live. The default value for this property is true. *Important:* You must also set the enableDvr property&#x27;s value to true if you want the playback to be available immediately after the broadcast ends. If you set this property&#x27;s value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
    &quot;startWithSlate&quot;: True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast&#x27;s status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint&#x27;s eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
    &quot;stereoLayout&quot;: &quot;A String&quot;, # The 3D stereo layout of this broadcast. This defaults to mono.
  },
  &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 broadcast.
  &quot;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
  &quot;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
    &quot;actualEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually ended. This information is only available once the broadcast&#x27;s state is complete.
    &quot;actualStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast actually started. This information is only available once the broadcast&#x27;s state is live.
    &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
    &quot;description&quot;: &quot;A String&quot;, # The broadcast&#x27;s description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
    &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
    &quot;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule.
    &quot;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end.
    &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start.
    &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
      &quot;default&quot;: { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;high&quot;: { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;maxres&quot;: { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;medium&quot;: { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;standard&quot;: { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
    },
    &quot;title&quot;: &quot;A String&quot;, # The broadcast&#x27;s title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
  },
  &quot;statistics&quot;: { # Statistics about the live broadcast. These represent a snapshot of the values at the time of the request. Statistics are only returned for live broadcasts. # The statistics object contains info about the event&#x27;s current stats. These include concurrent viewers and total chat count. Statistics can change (in either direction) during the lifetime of an event. Statistics are only returned while the event is live.
    &quot;totalChatCount&quot;: &quot;A String&quot;, # The total number of live chat messages currently on the broadcast. The property and its value will be present if the broadcast is public, has the live chat feature enabled, and has at least one message. Note that this field will not be filled after the broadcast ends. So this property would not identify the number of chat messages for an archived video of a completed live broadcast.
  },
  &quot;status&quot;: { # Live broadcast state. # The status object contains information about the event&#x27;s status.
    &quot;lifeCycleStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s status. The status can be updated using the API&#x27;s liveBroadcasts.transition method.
    &quot;liveBroadcastPriority&quot;: &quot;A String&quot;, # Priority of the live broadcast event (internal state).
    &quot;madeForKids&quot;: True or False, # Whether the broadcast is made for kids or not, decided by YouTube instead of the creator. This field is read only.
    &quot;privacyStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
    &quot;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
    &quot;selfDeclaredMadeForKids&quot;: True or False, # This field will be set to True if the creator declares the broadcast to be kids only: go/live-cw-work.
  },
}</pre>
</div>

</body></html>