<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, streamId=None, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=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="#control">control(id, part, onBehalfOfContentOwnerChannel=None, displaySlate=None, onBehalfOfContentOwner=None, offsetTimeMs=None, walltime=None, x__xgafv=None)</a></code></p>
<p class="firstline">Slate and recording control of the live broadcast. Support actions: slate on/off, recording start/stop/pause/resume. Design doc: goto/yt-api-liveBroadcast-control</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, onBehalfOfContentOwnerChannel=None, onBehalfOfContentOwner=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, onBehalfOfContentOwner=None, pageToken=None, onBehalfOfContentOwnerChannel=None, maxResults=None, id=None, broadcastStatus=None, mine=None, broadcastType=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, onBehalfOfContentOwnerChannel=None, onBehalfOfContentOwner=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, streamId=None, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=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)
  streamId: string, Stream to bind, if not set unbind the current one.
  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;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
    &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;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;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
      &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;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;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
        &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;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
      &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
      &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;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;closedCaptionsType&quot;: &quot;A String&quot;,
      &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
      &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;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;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
      &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;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;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
      &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;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. The value is specified in ISO 8601 format.
      &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule. The value is specified in ISO 8601 format.
      &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. The value is specified in ISO 8601 format.
      &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;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 format.
      &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
      &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;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;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;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;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;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;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
      &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
      &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 format.
    },
    &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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &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;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;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
      &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;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the broadcast.
  }</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="control">control(id, part, onBehalfOfContentOwnerChannel=None, displaySlate=None, onBehalfOfContentOwner=None, offsetTimeMs=None, walltime=None, x__xgafv=None)</code>
  <pre>Slate and recording control of the live broadcast. Support actions: slate on/off, recording start/stop/pause/resume. Design doc: goto/yt-api-liveBroadcast-control

Args:
  id: string, Broadcast to operate. (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)
  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.
  displaySlate: boolean, Whether display or hide slate.
  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.
  offsetTimeMs: string, The exact time when the actions (e.g. slate on) are executed. It is an offset from the first frame of the monitor stream. If not set, it means &quot;now&quot; or ASAP. This field should not be set if the monitor stream is disabled, otherwise an error will be returned.
  walltime: string, The wall clock time at which the action should be executed. Only one of offset_time_ms and walltime may be set at a time.
  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;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
    &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;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;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
      &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;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;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
        &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;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
      &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
      &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;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;closedCaptionsType&quot;: &quot;A String&quot;,
      &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
      &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;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;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
      &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;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;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
      &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;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. The value is specified in ISO 8601 format.
      &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule. The value is specified in ISO 8601 format.
      &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. The value is specified in ISO 8601 format.
      &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;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 format.
      &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
      &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;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;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;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;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;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;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
      &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
      &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 format.
    },
    &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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &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;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;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
      &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;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the broadcast.
  }</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, onBehalfOfContentOwnerChannel=None, onBehalfOfContentOwner=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;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
  &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;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;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
    &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;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;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
      &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;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
    &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
    &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;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;closedCaptionsType&quot;: &quot;A String&quot;,
    &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
    &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;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;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
    &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;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;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
    &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;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. The value is specified in ISO 8601 format.
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule. The value is specified in ISO 8601 format.
    &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. The value is specified in ISO 8601 format.
    &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;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 format.
    &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
    &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;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;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;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;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;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;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
    &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
    &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 format.
  },
  &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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &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;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;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
    &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;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the broadcast.
}

  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.
  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.
  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;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
    &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;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;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
      &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;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;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
        &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;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
      &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
      &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;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;closedCaptionsType&quot;: &quot;A String&quot;,
      &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
      &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;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;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
      &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;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;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
      &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;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. The value is specified in ISO 8601 format.
      &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule. The value is specified in ISO 8601 format.
      &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. The value is specified in ISO 8601 format.
      &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;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 format.
      &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
      &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;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;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;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;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;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;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
      &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
      &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 format.
    },
    &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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &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;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;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
      &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;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the broadcast.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(part, onBehalfOfContentOwner=None, pageToken=None, onBehalfOfContentOwnerChannel=None, maxResults=None, id=None, broadcastStatus=None, mine=None, broadcastType=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)
  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.
  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.
  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.
  maxResults: integer, The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.
  id: string, Return broadcasts with the given ids from Stubby or Apiary. (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.
  mine: boolean, A parameter
  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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;visitorId&quot;: &quot;A String&quot;, # The visitorId identifies the visitor.
    &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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &quot;tokenPagination&quot;: { # Stub token pagination template to suppress results.
    },
    &quot;eventId&quot;: &quot;A String&quot;, # Serialized EventId of the request which produced this response.
    &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;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;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
        &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;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;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
          &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;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;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
            &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;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
          &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
          &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;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;closedCaptionsType&quot;: &quot;A String&quot;,
          &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
          &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;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;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
          &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;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;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
          &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;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. The value is specified in ISO 8601 format.
          &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule. The value is specified in ISO 8601 format.
          &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. The value is specified in ISO 8601 format.
          &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;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 format.
          &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
          &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;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;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;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;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;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;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
          &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
          &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 format.
        },
        &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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
        &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;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;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
          &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;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the broadcast.
      },
    ],
    &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;totalResults&quot;: 42, # The total number of results in the result set.
      &quot;resultsPerPage&quot;: 42, # The number of results included in the API response.
    },
  }</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, onBehalfOfContentOwnerChannel=None, onBehalfOfContentOwner=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)
  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.
  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.
  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;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
    &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;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;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
      &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;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;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
        &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;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
      &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
      &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;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;closedCaptionsType&quot;: &quot;A String&quot;,
      &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
      &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;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;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
      &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;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;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
      &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;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. The value is specified in ISO 8601 format.
      &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule. The value is specified in ISO 8601 format.
      &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. The value is specified in ISO 8601 format.
      &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;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 format.
      &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
      &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;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;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;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;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;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;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
      &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
      &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 format.
    },
    &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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &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;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;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
      &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;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the broadcast.
  }</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;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
  &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;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;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
    &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;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;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
      &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;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
    &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
    &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;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;closedCaptionsType&quot;: &quot;A String&quot;,
    &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
    &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;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;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
    &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;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;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
    &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;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. The value is specified in ISO 8601 format.
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule. The value is specified in ISO 8601 format.
    &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. The value is specified in ISO 8601 format.
    &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;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 format.
    &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
    &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;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;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;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;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;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;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
    &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
    &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 format.
  },
  &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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &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;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;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
    &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;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the broadcast.
}

  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;kind&quot;: &quot;youtube#liveBroadcast&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveBroadcast&quot;.
    &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;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;boundStreamId&quot;: &quot;A String&quot;, # This value uniquely identifies the live stream bound to the broadcast.
      &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;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;embedHtml&quot;: &quot;A String&quot;, # HTML code that embeds a player that plays the monitor stream.
        &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;enableContentEncryption&quot;: True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
      &quot;enableLowLatency&quot;: True or False, # Indicates whether this broadcast has low latency enabled.
      &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;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;closedCaptionsType&quot;: &quot;A String&quot;,
      &quot;boundStreamLastUpdateTimeMs&quot;: &quot;A String&quot;, # The date and time that the live stream referenced by boundStreamId was last updated.
      &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;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;projection&quot;: &quot;A String&quot;, # The projection format of this broadcast. This defaults to rectangular.
      &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;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;snippet&quot;: { # Basic broadcast information. # The snippet object contains basic details about the event, including its title, description, start time, and end time.
      &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;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. The value is specified in ISO 8601 format.
      &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the broadcast was added to YouTube&#x27;s live broadcast schedule. The value is specified in ISO 8601 format.
      &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. The value is specified in ISO 8601 format.
      &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;scheduledEndTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 format.
      &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
      &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;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;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;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;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;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;liveChatId&quot;: &quot;A String&quot;, # The id of the live chat for this broadcast.
      &quot;isDefaultBroadcast&quot;: True or False, # Indicates whether this broadcast is the default broadcast. Internal only.
      &quot;scheduledStartTime&quot;: &quot;A String&quot;, # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 format.
    },
    &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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &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;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;recordingStatus&quot;: &quot;A String&quot;, # The broadcast&#x27;s recording status.
      &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;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the broadcast.
  }</pre>
</div>

</body></html>