<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="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<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, hl=None, maxResults=None, pageToken=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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<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 *part* 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 snippet. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{ # A *liveChatMessage* resource represents a chat message in a YouTube Live Chat.
  &quot;authorDetails&quot;: { # The authorDetails object contains basic details about the user that posted this message.
    &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
    &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;isChatModerator&quot;: True or False, # Whether the author is a moderator of the live chat.
    &quot;isChatOwner&quot;: True or False, # Whether the author is the owner of the live chat.
    &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;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
  },
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the message.
  &quot;kind&quot;: &quot;youtube#liveChatMessage&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveChatMessage&quot;.
  &quot;snippet&quot;: { # Next ID: 31 # The snippet object contains basic details about the message.
    &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 memberMilestoneChatEvent - the member that sent the message 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 superStickerEvent - the user that made the purchase
    &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;fanFundingEventDetails&quot;: { # Details about the funding event, this is only set if the type is &#x27;fanFundingEvent&#x27;.
      &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
      &quot;amountMicros&quot;: &quot;A String&quot;, # The amount of the fund.
      &quot;currency&quot;: &quot;A String&quot;, # The currency in which the fund was made.
      &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the user to this fan funding event.
    },
    &quot;hasDisplayContent&quot;: True or False, # Whether the message has display content that should be displayed to users.
    &quot;liveChatId&quot;: &quot;A String&quot;,
    &quot;memberMilestoneChatDetails&quot;: { # Details about the Member Milestone Chat event, this is only set if the type is &#x27;memberMilestoneChatEvent&#x27;.
      &quot;memberLevelName&quot;: &quot;A String&quot;, # The name of the Level at which the viever is a member. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn&#x27;t filled.
      &quot;memberMonth&quot;: 42, # The total amount of months (rounded up) the viewer has been a member that granted them this Member Milestone Chat. This is the same number of months as is being displayed to YouTube users.
      &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the member to this Member Milestone Chat. This field is empty for messages without a comment from the member.
    },
    &quot;messageDeletedDetails&quot;: {
      &quot;deletedMessageId&quot;: &quot;A String&quot;,
    },
    &quot;messageRetractedDetails&quot;: {
      &quot;retractedMessageId&quot;: &quot;A String&quot;,
    },
    &quot;newSponsorDetails&quot;: { # Details about the New Member Announcement event, this is only set if the type is &#x27;newSponsorEvent&#x27;. Please note that &quot;member&quot; is the new term for &quot;sponsor&quot;.
      &quot;isUpgrade&quot;: True or False, # If the viewer just had upgraded from a lower level. For viewers that were not members at the time of purchase, this field is false.
      &quot;memberLevelName&quot;: &quot;A String&quot;, # The name of the Level that the viewer just had joined. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn&#x27;t filled.
    },
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time when the message was orignally published.
    &quot;superChatDetails&quot;: { # Details about the Super Chat event, this is only set if the type is &#x27;superChatEvent&#x27;.
      &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
      &quot;amountMicros&quot;: &quot;A String&quot;, # The amount purchased by the user, in micros (1,750,000 micros = 1.75).
      &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made.
      &quot;tier&quot;: 42, # The tier in which the amount belongs. Lower amounts belong to lower tiers. The lowest tier is 1.
      &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the user to this Super Chat event.
    },
    &quot;superStickerDetails&quot;: { # Details about the Super Sticker event, this is only set if the type is &#x27;superStickerEvent&#x27;.
      &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
      &quot;amountMicros&quot;: &quot;A String&quot;, # The amount purchased by the user, in micros (1,750,000 micros = 1.75).
      &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made.
      &quot;superStickerMetadata&quot;: { # Information about the Super Sticker.
        &quot;altText&quot;: &quot;A String&quot;, # Internationalized alt text that describes the sticker image and any animation associated with it.
        &quot;altTextLanguage&quot;: &quot;A String&quot;, # Specifies the localization language in which the alt text is returned.
        &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;tier&quot;: 42, # The tier in which the amount belongs. Lower amounts belong to lower tiers. The lowest tier is 1.
    },
    &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;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;userBannedDetails&quot;: {
      &quot;banDurationSeconds&quot;: &quot;A String&quot;, # The duration of the ban. This property is only present if the banType is temporary.
      &quot;banType&quot;: &quot;A String&quot;, # The type of ban.
      &quot;bannedUserDetails&quot;: { # The details of the user that was banned.
        &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
        &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;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
      },
    },
  },
}

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

Returns:
  An object of the form:

    { # A *liveChatMessage* resource represents a chat message in a YouTube Live Chat.
  &quot;authorDetails&quot;: { # The authorDetails object contains basic details about the user that posted this message.
    &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
    &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;isChatModerator&quot;: True or False, # Whether the author is a moderator of the live chat.
    &quot;isChatOwner&quot;: True or False, # Whether the author is the owner of the live chat.
    &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;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
  },
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the message.
  &quot;kind&quot;: &quot;youtube#liveChatMessage&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveChatMessage&quot;.
  &quot;snippet&quot;: { # Next ID: 31 # The snippet object contains basic details about the message.
    &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 memberMilestoneChatEvent - the member that sent the message 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 superStickerEvent - the user that made the purchase
    &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;fanFundingEventDetails&quot;: { # Details about the funding event, this is only set if the type is &#x27;fanFundingEvent&#x27;.
      &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
      &quot;amountMicros&quot;: &quot;A String&quot;, # The amount of the fund.
      &quot;currency&quot;: &quot;A String&quot;, # The currency in which the fund was made.
      &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the user to this fan funding event.
    },
    &quot;hasDisplayContent&quot;: True or False, # Whether the message has display content that should be displayed to users.
    &quot;liveChatId&quot;: &quot;A String&quot;,
    &quot;memberMilestoneChatDetails&quot;: { # Details about the Member Milestone Chat event, this is only set if the type is &#x27;memberMilestoneChatEvent&#x27;.
      &quot;memberLevelName&quot;: &quot;A String&quot;, # The name of the Level at which the viever is a member. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn&#x27;t filled.
      &quot;memberMonth&quot;: 42, # The total amount of months (rounded up) the viewer has been a member that granted them this Member Milestone Chat. This is the same number of months as is being displayed to YouTube users.
      &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the member to this Member Milestone Chat. This field is empty for messages without a comment from the member.
    },
    &quot;messageDeletedDetails&quot;: {
      &quot;deletedMessageId&quot;: &quot;A String&quot;,
    },
    &quot;messageRetractedDetails&quot;: {
      &quot;retractedMessageId&quot;: &quot;A String&quot;,
    },
    &quot;newSponsorDetails&quot;: { # Details about the New Member Announcement event, this is only set if the type is &#x27;newSponsorEvent&#x27;. Please note that &quot;member&quot; is the new term for &quot;sponsor&quot;.
      &quot;isUpgrade&quot;: True or False, # If the viewer just had upgraded from a lower level. For viewers that were not members at the time of purchase, this field is false.
      &quot;memberLevelName&quot;: &quot;A String&quot;, # The name of the Level that the viewer just had joined. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn&#x27;t filled.
    },
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time when the message was orignally published.
    &quot;superChatDetails&quot;: { # Details about the Super Chat event, this is only set if the type is &#x27;superChatEvent&#x27;.
      &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
      &quot;amountMicros&quot;: &quot;A String&quot;, # The amount purchased by the user, in micros (1,750,000 micros = 1.75).
      &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made.
      &quot;tier&quot;: 42, # The tier in which the amount belongs. Lower amounts belong to lower tiers. The lowest tier is 1.
      &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the user to this Super Chat event.
    },
    &quot;superStickerDetails&quot;: { # Details about the Super Sticker event, this is only set if the type is &#x27;superStickerEvent&#x27;.
      &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
      &quot;amountMicros&quot;: &quot;A String&quot;, # The amount purchased by the user, in micros (1,750,000 micros = 1.75).
      &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made.
      &quot;superStickerMetadata&quot;: { # Information about the Super Sticker.
        &quot;altText&quot;: &quot;A String&quot;, # Internationalized alt text that describes the sticker image and any animation associated with it.
        &quot;altTextLanguage&quot;: &quot;A String&quot;, # Specifies the localization language in which the alt text is returned.
        &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;tier&quot;: 42, # The tier in which the amount belongs. Lower amounts belong to lower tiers. The lowest tier is 1.
    },
    &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;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;userBannedDetails&quot;: {
      &quot;banDurationSeconds&quot;: &quot;A String&quot;, # The duration of the ban. This property is only present if the banType is temporary.
      &quot;banType&quot;: &quot;A String&quot;, # The type of ban.
      &quot;bannedUserDetails&quot;: { # The details of the user that was banned.
        &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
        &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;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
      },
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(liveChatId, part, hl=None, maxResults=None, pageToken=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 *part* parameter specifies the liveChatComment resource parts that the API response will include. Supported values are id and snippet. (required) (repeated)
  hl: string, Specifies the localization language in which the system messages should be returned.
  maxResults: integer, The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.
  pageToken: string, The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken property identify other pages that could be retrieved.
  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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;eventId&quot;: &quot;A String&quot;, # Serialized EventId of the request which produced this response.
  &quot;items&quot;: [
    { # A *liveChatMessage* resource represents a chat message in a YouTube Live Chat.
      &quot;authorDetails&quot;: { # The authorDetails object contains basic details about the user that posted this message.
        &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
        &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;isChatModerator&quot;: True or False, # Whether the author is a moderator of the live chat.
        &quot;isChatOwner&quot;: True or False, # Whether the author is the owner of the live chat.
        &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;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
      },
      &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
      &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the message.
      &quot;kind&quot;: &quot;youtube#liveChatMessage&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveChatMessage&quot;.
      &quot;snippet&quot;: { # Next ID: 31 # The snippet object contains basic details about the message.
        &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 memberMilestoneChatEvent - the member that sent the message 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 superStickerEvent - the user that made the purchase
        &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;fanFundingEventDetails&quot;: { # Details about the funding event, this is only set if the type is &#x27;fanFundingEvent&#x27;.
          &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
          &quot;amountMicros&quot;: &quot;A String&quot;, # The amount of the fund.
          &quot;currency&quot;: &quot;A String&quot;, # The currency in which the fund was made.
          &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the user to this fan funding event.
        },
        &quot;hasDisplayContent&quot;: True or False, # Whether the message has display content that should be displayed to users.
        &quot;liveChatId&quot;: &quot;A String&quot;,
        &quot;memberMilestoneChatDetails&quot;: { # Details about the Member Milestone Chat event, this is only set if the type is &#x27;memberMilestoneChatEvent&#x27;.
          &quot;memberLevelName&quot;: &quot;A String&quot;, # The name of the Level at which the viever is a member. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn&#x27;t filled.
          &quot;memberMonth&quot;: 42, # The total amount of months (rounded up) the viewer has been a member that granted them this Member Milestone Chat. This is the same number of months as is being displayed to YouTube users.
          &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the member to this Member Milestone Chat. This field is empty for messages without a comment from the member.
        },
        &quot;messageDeletedDetails&quot;: {
          &quot;deletedMessageId&quot;: &quot;A String&quot;,
        },
        &quot;messageRetractedDetails&quot;: {
          &quot;retractedMessageId&quot;: &quot;A String&quot;,
        },
        &quot;newSponsorDetails&quot;: { # Details about the New Member Announcement event, this is only set if the type is &#x27;newSponsorEvent&#x27;. Please note that &quot;member&quot; is the new term for &quot;sponsor&quot;.
          &quot;isUpgrade&quot;: True or False, # If the viewer just had upgraded from a lower level. For viewers that were not members at the time of purchase, this field is false.
          &quot;memberLevelName&quot;: &quot;A String&quot;, # The name of the Level that the viewer just had joined. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn&#x27;t filled.
        },
        &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time when the message was orignally published.
        &quot;superChatDetails&quot;: { # Details about the Super Chat event, this is only set if the type is &#x27;superChatEvent&#x27;.
          &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
          &quot;amountMicros&quot;: &quot;A String&quot;, # The amount purchased by the user, in micros (1,750,000 micros = 1.75).
          &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made.
          &quot;tier&quot;: 42, # The tier in which the amount belongs. Lower amounts belong to lower tiers. The lowest tier is 1.
          &quot;userComment&quot;: &quot;A String&quot;, # The comment added by the user to this Super Chat event.
        },
        &quot;superStickerDetails&quot;: { # Details about the Super Sticker event, this is only set if the type is &#x27;superStickerEvent&#x27;.
          &quot;amountDisplayString&quot;: &quot;A String&quot;, # A rendered string that displays the fund amount and currency to the user.
          &quot;amountMicros&quot;: &quot;A String&quot;, # The amount purchased by the user, in micros (1,750,000 micros = 1.75).
          &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made.
          &quot;superStickerMetadata&quot;: { # Information about the Super Sticker.
            &quot;altText&quot;: &quot;A String&quot;, # Internationalized alt text that describes the sticker image and any animation associated with it.
            &quot;altTextLanguage&quot;: &quot;A String&quot;, # Specifies the localization language in which the alt text is returned.
            &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;tier&quot;: 42, # The tier in which the amount belongs. Lower amounts belong to lower tiers. The lowest tier is 1.
        },
        &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;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;userBannedDetails&quot;: {
          &quot;banDurationSeconds&quot;: &quot;A String&quot;, # The duration of the ban. This property is only present if the banType is temporary.
          &quot;banType&quot;: &quot;A String&quot;, # The type of ban.
          &quot;bannedUserDetails&quot;: { # The details of the user that was banned.
            &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
            &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;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
          },
        },
      },
    },
  ],
  &quot;kind&quot;: &quot;youtube#liveChatMessageListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveChatMessageListResponse&quot;.
  &quot;nextPageToken&quot;: &quot;A String&quot;,
  &quot;offlineAt&quot;: &quot;A String&quot;, # The date and time when the underlying stream went offline.
  &quot;pageInfo&quot;: { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # General pagination information.
    &quot;resultsPerPage&quot;: 42, # The number of results included in the API response.
    &quot;totalResults&quot;: 42, # The total number of results in the result set.
  },
  &quot;pollingIntervalMillis&quot;: 42, # The amount of time the client should wait before polling again.
  &quot;tokenPagination&quot;: { # Stub token pagination template to suppress results.
  },
  &quot;visitorId&quot;: &quot;A String&quot;, # The visitorId identifies the visitor.
}</pre>
</div>

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

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

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

</body></html>