<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</a> . <a href="youtube_v3.superChatEvents.html">superChatEvents</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(part, hl=None, maxResults=None, pageToken=None)</a></code></p>
<p class="firstline">Lists Super Chat events for a 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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(part, hl=None, maxResults=None, pageToken=None)</code>
  <pre>Lists Super Chat events for a channel.

Args:
  part: string, The part parameter specifies the superChatEvent resource parts that the API response will include. Supported values are id and snippet. (required)
  hl: string, The hl parameter instructs the API to retrieve localized resource metadata for a specific application language that the YouTube website supports. The parameter value must be a language code included in the list returned by the i18nLanguages.list method.

If localized resource details are available in that language, the resource&#x27;s snippet.localized object will contain the localized values. However, if localized details are not available, the snippet.localized object will contain resource details in the resource&#x27;s default language.
  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 and prevPageToken properties identify other pages that could be retrieved.

Returns:
  An object of the form:

    {
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &quot;eventId&quot;: &quot;A String&quot;, # Serialized EventId of the request which produced this response.
    &quot;items&quot;: [ # A list of Super Chat purchases that match the request criteria.
      { # A superChatEvent resource represents a Super Chat purchase on a YouTube channel.
        &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 Super Chat event.
        &quot;kind&quot;: &quot;youtube#superChatEvent&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#superChatEvent&quot;.
        &quot;snippet&quot;: { # The snippet object contains basic details about the Super Chat event.
          &quot;amountMicros&quot;: &quot;A String&quot;, # The purchase amount, in micros of the purchase currency. e.g., 1 is represented as 1000000.
          &quot;channelId&quot;: &quot;A String&quot;, # Channel id where the event occurred.
          &quot;commentText&quot;: &quot;A String&quot;, # The text contents of the comment left by the user.
          &quot;createdAt&quot;: &quot;A String&quot;, # The date and time when the event occurred. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
          &quot;currency&quot;: &quot;A String&quot;, # The currency in which the purchase was made. ISO 4217.
          &quot;displayString&quot;: &quot;A String&quot;, # A rendered string that displays the purchase amount and currency (e.g., &quot;$1.00&quot;). The string is rendered for the given language.
          &quot;isSuperChatForGood&quot;: True or False, # True if this event is a Super Chat for Good purchase.
          &quot;isSuperStickerEvent&quot;: True or False, # True if this event is a Super Sticker event.
          &quot;messageType&quot;: 42, # The tier for the paid message, which is based on the amount of money spent to purchase the message.
          &quot;nonprofit&quot;: { # Nonprofit information. # If this event is a Super Chat for Good purchase, this field will contain information about the charity the purchase is donated to.
            &quot;nonprofitId&quot;: { # Id of the nonprofit.
              &quot;value&quot;: &quot;A String&quot;,
            },
            &quot;nonprofitLegalName&quot;: &quot;A String&quot;, # Legal name of the nonprofit.
          },
          &quot;superStickerMetadata&quot;: { # If this event is a Super Sticker event, this field will contain metadata 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;supporterDetails&quot;: { # Details about the supporter.
            &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#superChatEventListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#superChatEventListResponse&quot;.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
    &quot;pageInfo&quot;: { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page.
      &quot;resultsPerPage&quot;: 42, # The number of results included in the API response.
      &quot;totalResults&quot;: 42, # The total number of results in the result set.
    },
    &quot;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>