<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.liveChatMessages.html">liveChatMessages</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(id, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a chat message.</p>
<p class="toc_element">
  <code><a href="#insert">insert(part, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Inserts a new resource into this collection.</p>
<p class="toc_element">
  <code><a href="#list">list(liveChatId, part, pageToken=None, hl=None, maxResults=None, profileImageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a list of resources, possibly filtered.</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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(id, x__xgafv=None)</code>
  <pre>Deletes a chat message.

Args:
  id: string, A parameter (required)
  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, x__xgafv=None)</code>
  <pre>Inserts a new resource into this collection.

Args:
  part: string, The &lt;code&gt;&lt;strong&gt;part&lt;/strong&gt;&lt;/code&gt; parameter serves two purposes. It
identifies the properties that the write operation will set as well as the
properties that the API response will include. Set the parameter value to
&lt;code&gt;snippet&lt;/code&gt;. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{ # A &lt;code&gt;&lt;strong&gt;liveChatMessage&lt;/strong&gt;&lt;/code&gt; resource represents a chat
      # message in a YouTube Live Chat.
    &quot;kind&quot;: &quot;youtube#liveChatMessage&quot;, # Identifies what kind of resource this is. Value: the fixed string
        # &lt;code&gt;&quot;youtube#liveChatMessage&quot;&lt;/code&gt;.
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &quot;snippet&quot;: { # The &lt;code&gt;snippet&lt;/code&gt; object contains basic details about the message.
      &quot;liveChatId&quot;: &quot;A String&quot;,
      &quot;authorChannelId&quot;: &quot;A String&quot;, # The ID of the user that authored this message, this field is not always
          # filled.
          # textMessageEvent - the user that wrote the message
          # fanFundingEvent - the user that funded the broadcast
          # newSponsorEvent - the user that just became a sponsor
          # messageDeletedEvent - the moderator that took the action
          # messageRetractedEvent - the author that retracted their message
          # userBannedEvent - the moderator that took the action
          # superChatEvent - the user that made the purchase
      &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time when the message was orignally published. The value is
          # specified in &lt;a href=&quot;//www.w3.org/TR/NOTE-datetime&quot;&gt;ISO 8601&lt;/a&gt;
          # format.
      &quot;userBannedDetails&quot;: {
        &quot;banDurationSeconds&quot;: &quot;A String&quot;, # The duration of the ban. This property is only present if the
            # &lt;code&gt;banType&lt;/code&gt; is &lt;code&gt;temporary&lt;/code&gt;.
        &quot;bannedUserDetails&quot;: { # The details of the user that was banned.
          &quot;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
          &quot;channelUrl&quot;: &quot;A String&quot;, # The channel&#x27;s URL.
          &quot;displayName&quot;: &quot;A String&quot;, # The channel&#x27;s display name.
          &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
        },
        &quot;banType&quot;: &quot;A String&quot;, # The type of ban.
      },
      &quot;messageRetractedDetails&quot;: {
        &quot;retractedMessageId&quot;: &quot;A String&quot;,
      },
      &quot;superChatDetails&quot;: { # Details about the Super Chat event, this is only set if the type is
          # &#x27;superChatEvent&#x27;.
        &quot;amountMicros&quot;: &quot;A String&quot;, # The amount purchased by the user, in micros (1,750,000 micros = 1.75).
        &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the user to this Super Chat event.
        &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made.
        &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
        &quot;tier&quot;: 42, # The tier in which the amount belongs. Lower amounts belong to lower
            # tiers. The lowest tier is &lt;code&gt;1&lt;/code&gt;.
      },
      &quot;superStickerDetails&quot;: { # Details about the Super Sticker event, this is only set if the type is
          # &#x27;superStickerEvent&#x27;.
        &quot;tier&quot;: 42, # The tier in which the amount belongs. Lower amounts belong to lower
            # tiers. The lowest tier is &lt;code&gt;1&lt;/code&gt;.
        &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
        &quot;superStickerMetadata&quot;: { # Information about the Super Sticker.
          &quot;altTextLanguage&quot;: &quot;A String&quot;, # Specifies the localization language in which the alt text is returned.
          &quot;altText&quot;: &quot;A String&quot;, # Internationalized alt text that describes the sticker image and any
              # animation associated with it.
          &quot;stickerId&quot;: &quot;A String&quot;, # Unique identifier of the Super Sticker. This is a shorter form of the
              # alt_text that includes pack name and a recognizable characteristic of the
              # sticker.
        },
        &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made.
        &quot;amountMicros&quot;: &quot;A String&quot;, # The amount purchased by the user, in micros (1,750,000 micros = 1.75).
      },
      &quot;fanFundingEventDetails&quot;: { # Details about the funding event, this is only set if the type is
          # &#x27;fanFundingEvent&#x27;.
        &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the user to this fan funding event.
        &quot;amountMicros&quot;: &quot;A String&quot;, # The amount of the fund.
        &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
        &quot;currency&quot;: &quot;A String&quot;, # The currency in which the fund was made.
      },
      &quot;textMessageDetails&quot;: { # Details about the text message, this is only set if the type is
          # &#x27;textMessageEvent&#x27;.
        &quot;messageText&quot;: &quot;A String&quot;, # The user&#x27;s message.
      },
      &quot;displayMessage&quot;: &quot;A String&quot;, # Contains a string that can be displayed to the user.
          # If this field is not present the message is silent, at the moment only
          # messages of type TOMBSTONE and CHAT_ENDED_EVENT are silent.
      &quot;messageDeletedDetails&quot;: {
        &quot;deletedMessageId&quot;: &quot;A String&quot;,
      },
      &quot;type&quot;: &quot;A String&quot;, # The type of message, this will always be present, it determines the
          # contents of the message as well as which fields will be present.
      &quot;hasDisplayContent&quot;: True or False, # Whether the message has display content that should be displayed to users.
    },
    &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the message.
    &quot;authorDetails&quot;: { # The &lt;code&gt;authorDetails&lt;/code&gt; object contains basic details about the
        # user that posted this message.
      &quot;isChatModerator&quot;: True or False, # Whether the author is a moderator of the live chat.
      &quot;channelUrl&quot;: &quot;A String&quot;, # The channel&#x27;s URL.
      &quot;isChatSponsor&quot;: True or False, # Whether the author is a sponsor of the live chat.
      &quot;isVerified&quot;: True or False, # Whether the author&#x27;s identity has been verified by YouTube.
      &quot;isChatOwner&quot;: True or False, # Whether the author is the owner of the live chat.
      &quot;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
      &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
      &quot;displayName&quot;: &quot;A String&quot;, # The channel&#x27;s display name.
    },
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A &lt;code&gt;&lt;strong&gt;liveChatMessage&lt;/strong&gt;&lt;/code&gt; resource represents a chat
        # message in a YouTube Live Chat.
      &quot;kind&quot;: &quot;youtube#liveChatMessage&quot;, # Identifies what kind of resource this is. Value: the fixed string
          # &lt;code&gt;&quot;youtube#liveChatMessage&quot;&lt;/code&gt;.
      &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
      &quot;snippet&quot;: { # The &lt;code&gt;snippet&lt;/code&gt; object contains basic details about the message.
        &quot;liveChatId&quot;: &quot;A String&quot;,
        &quot;authorChannelId&quot;: &quot;A String&quot;, # The ID of the user that authored this message, this field is not always
            # filled.
            # textMessageEvent - the user that wrote the message
            # fanFundingEvent - the user that funded the broadcast
            # newSponsorEvent - the user that just became a sponsor
            # messageDeletedEvent - the moderator that took the action
            # messageRetractedEvent - the author that retracted their message
            # userBannedEvent - the moderator that took the action
            # superChatEvent - the user that made the purchase
        &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time when the message was orignally published. The value is
            # specified in &lt;a href=&quot;//www.w3.org/TR/NOTE-datetime&quot;&gt;ISO 8601&lt;/a&gt;
            # format.
        &quot;userBannedDetails&quot;: {
          &quot;banDurationSeconds&quot;: &quot;A String&quot;, # The duration of the ban. This property is only present if the
              # &lt;code&gt;banType&lt;/code&gt; is &lt;code&gt;temporary&lt;/code&gt;.
          &quot;bannedUserDetails&quot;: { # The details of the user that was banned.
            &quot;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
            &quot;channelUrl&quot;: &quot;A String&quot;, # The channel&#x27;s URL.
            &quot;displayName&quot;: &quot;A String&quot;, # The channel&#x27;s display name.
            &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
          },
          &quot;banType&quot;: &quot;A String&quot;, # The type of ban.
        },
        &quot;messageRetractedDetails&quot;: {
          &quot;retractedMessageId&quot;: &quot;A String&quot;,
        },
        &quot;superChatDetails&quot;: { # Details about the Super Chat event, this is only set if the type is
            # &#x27;superChatEvent&#x27;.
          &quot;amountMicros&quot;: &quot;A String&quot;, # The amount purchased by the user, in micros (1,750,000 micros = 1.75).
          &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the user to this Super Chat event.
          &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made.
          &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
          &quot;tier&quot;: 42, # The tier in which the amount belongs. Lower amounts belong to lower
              # tiers. The lowest tier is &lt;code&gt;1&lt;/code&gt;.
        },
        &quot;superStickerDetails&quot;: { # Details about the Super Sticker event, this is only set if the type is
            # &#x27;superStickerEvent&#x27;.
          &quot;tier&quot;: 42, # The tier in which the amount belongs. Lower amounts belong to lower
              # tiers. The lowest tier is &lt;code&gt;1&lt;/code&gt;.
          &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
          &quot;superStickerMetadata&quot;: { # Information about the Super Sticker.
            &quot;altTextLanguage&quot;: &quot;A String&quot;, # Specifies the localization language in which the alt text is returned.
            &quot;altText&quot;: &quot;A String&quot;, # Internationalized alt text that describes the sticker image and any
                # animation associated with it.
            &quot;stickerId&quot;: &quot;A String&quot;, # Unique identifier of the Super Sticker. This is a shorter form of the
                # alt_text that includes pack name and a recognizable characteristic of the
                # sticker.
          },
          &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made.
          &quot;amountMicros&quot;: &quot;A String&quot;, # The amount purchased by the user, in micros (1,750,000 micros = 1.75).
        },
        &quot;fanFundingEventDetails&quot;: { # Details about the funding event, this is only set if the type is
            # &#x27;fanFundingEvent&#x27;.
          &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the user to this fan funding event.
          &quot;amountMicros&quot;: &quot;A String&quot;, # The amount of the fund.
          &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
          &quot;currency&quot;: &quot;A String&quot;, # The currency in which the fund was made.
        },
        &quot;textMessageDetails&quot;: { # Details about the text message, this is only set if the type is
            # &#x27;textMessageEvent&#x27;.
          &quot;messageText&quot;: &quot;A String&quot;, # The user&#x27;s message.
        },
        &quot;displayMessage&quot;: &quot;A String&quot;, # Contains a string that can be displayed to the user.
            # If this field is not present the message is silent, at the moment only
            # messages of type TOMBSTONE and CHAT_ENDED_EVENT are silent.
        &quot;messageDeletedDetails&quot;: {
          &quot;deletedMessageId&quot;: &quot;A String&quot;,
        },
        &quot;type&quot;: &quot;A String&quot;, # The type of message, this will always be present, it determines the
            # contents of the message as well as which fields will be present.
        &quot;hasDisplayContent&quot;: True or False, # Whether the message has display content that should be displayed to users.
      },
      &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the message.
      &quot;authorDetails&quot;: { # The &lt;code&gt;authorDetails&lt;/code&gt; object contains basic details about the
          # user that posted this message.
        &quot;isChatModerator&quot;: True or False, # Whether the author is a moderator of the live chat.
        &quot;channelUrl&quot;: &quot;A String&quot;, # The channel&#x27;s URL.
        &quot;isChatSponsor&quot;: True or False, # Whether the author is a sponsor of the live chat.
        &quot;isVerified&quot;: True or False, # Whether the author&#x27;s identity has been verified by YouTube.
        &quot;isChatOwner&quot;: True or False, # Whether the author is the owner of the live chat.
        &quot;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
        &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
        &quot;displayName&quot;: &quot;A String&quot;, # The channel&#x27;s display name.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(liveChatId, part, pageToken=None, hl=None, maxResults=None, profileImageSize=None, x__xgafv=None)</code>
  <pre>Retrieves a list of resources, possibly filtered.

Args:
  liveChatId: string, The id of the live chat for which comments should be returned. (required)
  part: string, The &lt;code&gt;&lt;strong&gt;part&lt;/strong&gt;&lt;/code&gt; parameter specifies the
&lt;code&gt;liveChatComment&lt;/code&gt; resource parts that the API response will
include. Supported values are &lt;code&gt;id&lt;/code&gt; and &lt;code&gt;snippet&lt;/code&gt;. (required) (repeated)
  pageToken: string, The &lt;code&gt;&lt;strong&gt;pageToken&lt;/strong&gt;&lt;/code&gt; parameter identifies a specific
page in the result set that should be returned. In an API response, the
&lt;code&gt;nextPageToken&lt;/code&gt; property identify other pages that could be
retrieved.
  hl: string, Specifies the localization language in which the system messages
should be returned.
  maxResults: integer, The &lt;code&gt;&lt;strong&gt;maxResults&lt;/strong&gt;&lt;/code&gt; parameter specifies the
maximum number of items that should be returned in the result set.
  profileImageSize: integer, Specifies the size of the profile image that should be
returned for each user.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;pollingIntervalMillis&quot;: 42, # The amount of time the client should wait before polling again.
    &quot;items&quot;: [
      { # A &lt;code&gt;&lt;strong&gt;liveChatMessage&lt;/strong&gt;&lt;/code&gt; resource represents a chat
            # message in a YouTube Live Chat.
          &quot;kind&quot;: &quot;youtube#liveChatMessage&quot;, # Identifies what kind of resource this is. Value: the fixed string
              # &lt;code&gt;&quot;youtube#liveChatMessage&quot;&lt;/code&gt;.
          &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
          &quot;snippet&quot;: { # The &lt;code&gt;snippet&lt;/code&gt; object contains basic details about the message.
            &quot;liveChatId&quot;: &quot;A String&quot;,
            &quot;authorChannelId&quot;: &quot;A String&quot;, # The ID of the user that authored this message, this field is not always
                # filled.
                # textMessageEvent - the user that wrote the message
                # fanFundingEvent - the user that funded the broadcast
                # newSponsorEvent - the user that just became a sponsor
                # messageDeletedEvent - the moderator that took the action
                # messageRetractedEvent - the author that retracted their message
                # userBannedEvent - the moderator that took the action
                # superChatEvent - the user that made the purchase
            &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time when the message was orignally published. The value is
                # specified in &lt;a href=&quot;//www.w3.org/TR/NOTE-datetime&quot;&gt;ISO 8601&lt;/a&gt;
                # format.
            &quot;userBannedDetails&quot;: {
              &quot;banDurationSeconds&quot;: &quot;A String&quot;, # The duration of the ban. This property is only present if the
                  # &lt;code&gt;banType&lt;/code&gt; is &lt;code&gt;temporary&lt;/code&gt;.
              &quot;bannedUserDetails&quot;: { # The details of the user that was banned.
                &quot;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
                &quot;channelUrl&quot;: &quot;A String&quot;, # The channel&#x27;s URL.
                &quot;displayName&quot;: &quot;A String&quot;, # The channel&#x27;s display name.
                &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
              },
              &quot;banType&quot;: &quot;A String&quot;, # The type of ban.
            },
            &quot;messageRetractedDetails&quot;: {
              &quot;retractedMessageId&quot;: &quot;A String&quot;,
            },
            &quot;superChatDetails&quot;: { # Details about the Super Chat event, this is only set if the type is
                # &#x27;superChatEvent&#x27;.
              &quot;amountMicros&quot;: &quot;A String&quot;, # The amount purchased by the user, in micros (1,750,000 micros = 1.75).
              &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the user to this Super Chat event.
              &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made.
              &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
              &quot;tier&quot;: 42, # The tier in which the amount belongs. Lower amounts belong to lower
                  # tiers. The lowest tier is &lt;code&gt;1&lt;/code&gt;.
            },
            &quot;superStickerDetails&quot;: { # Details about the Super Sticker event, this is only set if the type is
                # &#x27;superStickerEvent&#x27;.
              &quot;tier&quot;: 42, # The tier in which the amount belongs. Lower amounts belong to lower
                  # tiers. The lowest tier is &lt;code&gt;1&lt;/code&gt;.
              &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
              &quot;superStickerMetadata&quot;: { # Information about the Super Sticker.
                &quot;altTextLanguage&quot;: &quot;A String&quot;, # Specifies the localization language in which the alt text is returned.
                &quot;altText&quot;: &quot;A String&quot;, # Internationalized alt text that describes the sticker image and any
                    # animation associated with it.
                &quot;stickerId&quot;: &quot;A String&quot;, # Unique identifier of the Super Sticker. This is a shorter form of the
                    # alt_text that includes pack name and a recognizable characteristic of the
                    # sticker.
              },
              &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made.
              &quot;amountMicros&quot;: &quot;A String&quot;, # The amount purchased by the user, in micros (1,750,000 micros = 1.75).
            },
            &quot;fanFundingEventDetails&quot;: { # Details about the funding event, this is only set if the type is
                # &#x27;fanFundingEvent&#x27;.
              &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the user to this fan funding event.
              &quot;amountMicros&quot;: &quot;A String&quot;, # The amount of the fund.
              &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
              &quot;currency&quot;: &quot;A String&quot;, # The currency in which the fund was made.
            },
            &quot;textMessageDetails&quot;: { # Details about the text message, this is only set if the type is
                # &#x27;textMessageEvent&#x27;.
              &quot;messageText&quot;: &quot;A String&quot;, # The user&#x27;s message.
            },
            &quot;displayMessage&quot;: &quot;A String&quot;, # Contains a string that can be displayed to the user.
                # If this field is not present the message is silent, at the moment only
                # messages of type TOMBSTONE and CHAT_ENDED_EVENT are silent.
            &quot;messageDeletedDetails&quot;: {
              &quot;deletedMessageId&quot;: &quot;A String&quot;,
            },
            &quot;type&quot;: &quot;A String&quot;, # The type of message, this will always be present, it determines the
                # contents of the message as well as which fields will be present.
            &quot;hasDisplayContent&quot;: True or False, # Whether the message has display content that should be displayed to users.
          },
          &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the message.
          &quot;authorDetails&quot;: { # The &lt;code&gt;authorDetails&lt;/code&gt; object contains basic details about the
              # user that posted this message.
            &quot;isChatModerator&quot;: True or False, # Whether the author is a moderator of the live chat.
            &quot;channelUrl&quot;: &quot;A String&quot;, # The channel&#x27;s URL.
            &quot;isChatSponsor&quot;: True or False, # Whether the author is a sponsor of the live chat.
            &quot;isVerified&quot;: True or False, # Whether the author&#x27;s identity has been verified by YouTube.
            &quot;isChatOwner&quot;: True or False, # Whether the author is the owner of the live chat.
            &quot;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
            &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
            &quot;displayName&quot;: &quot;A String&quot;, # The channel&#x27;s display name.
          },
        },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &quot;kind&quot;: &quot;youtube#liveChatMessageListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string
        # &lt;code&gt;&quot;youtube#liveChatMessageListResponse&quot;&lt;/code&gt;.
    &quot;pageInfo&quot;: { # Paging details for lists of resources, including total number of items # General pagination information.
        # available and number of resources returned in a single page.
      &quot;resultsPerPage&quot;: 42, # The number of results included in the API response.
      &quot;totalResults&quot;: 42, # The total number of results in the result set.
    },
    &quot;visitorId&quot;: &quot;A String&quot;, # The &lt;code&gt;visitorId&lt;/code&gt; identifies the visitor.
    &quot;eventId&quot;: &quot;A String&quot;, # Serialized EventId of the request which produced this response.
    &quot;tokenPagination&quot;: { # Stub token pagination template to suppress results.
    },
    &quot;offlineAt&quot;: &quot;A String&quot;, # The date and time when the underlying stream went offline. The value is
        # specified in &lt;a href=&quot;//www.w3.org/TR/NOTE-datetime&quot;&gt;ISO 8601&lt;/a&gt;
        # format.
    &quot;nextPageToken&quot;: &quot;A String&quot;,
  }</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>

</body></html>