<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.activities.html">activities</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(part, mine=None, pageToken=None, publishedBefore=None, maxResults=None, home=None, channelId=None, regionCode=None, publishedAfter=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="list">list(part, mine=None, pageToken=None, publishedBefore=None, maxResults=None, home=None, channelId=None, regionCode=None, publishedAfter=None, x__xgafv=None)</code>
  <pre>Retrieves a list of resources, possibly filtered.

Args:
  part: string, The &lt;code&gt;&lt;strong&gt;part&lt;/strong&gt;&lt;/code&gt; parameter specifies a
comma-separated list of one or more &lt;code&gt;activity&lt;/code&gt; resource
properties that the API response will include.&lt;br&gt;&lt;br&gt;If the parameter
identifies a property that contains child properties, the child properties
will be included in the response. For example, in an &lt;code&gt;activity&lt;/code&gt;
resource, the &lt;code&gt;snippet&lt;/code&gt; property contains other properties that
identify the type of activity, a display title for the activity, and so
forth. If you set &lt;code&gt;&lt;strong&gt;part=snippet&lt;/strong&gt;&lt;/code&gt;, the API
response will also contain all of those nested properties. (required) (repeated)
  mine: boolean, A parameter
  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; and &lt;code&gt;prevPageToken&lt;/code&gt; properties
identify other pages that could be retrieved.
  publishedBefore: string, A parameter
  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.
  home: boolean, A parameter
  channelId: string, A parameter
  regionCode: string, A parameter
  publishedAfter: string, A parameter
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &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;kind&quot;: &quot;youtube#activityListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string
        # &lt;code&gt;&quot;youtube#activityListResponse&quot;&lt;/code&gt;.
    &quot;visitorId&quot;: &quot;A String&quot;, # The &lt;code&gt;visitorId&lt;/code&gt; identifies the visitor.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The token that can be used as the value of the &lt;code&gt;pageToken&lt;/code&gt;
        # parameter to retrieve the next page in the result set.
    &quot;prevPageToken&quot;: &quot;A String&quot;, # The token that can be used as the value of the &lt;code&gt;pageToken&lt;/code&gt;
        # parameter to retrieve the previous page in the result set.
    &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;: [
      { # An &lt;code&gt;&lt;strong&gt;activity&lt;/strong&gt;&lt;/code&gt; resource contains
          # information about an action that a particular channel, or user, has
          # taken on YouTube.The actions reported in activity feeds include rating
          # a video, sharing a video, marking a video as a favorite, commenting on
          # a video, uploading a video, and so forth. Each &lt;code&gt;activity&lt;/code&gt;
          # resource identifies the type of action, the channel associated with
          # the action, and the resource(s) associated with the action, such as
          # the video that was rated or uploaded.
        &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the activity.
        &quot;kind&quot;: &quot;youtube#activity&quot;, # Identifies what kind of resource this is. Value: the fixed string
            # &lt;code&gt;&quot;youtube#activity&quot;&lt;/code&gt;.
        &quot;contentDetails&quot;: { # Details about the content of an activity: the video that was shared, the # The &lt;code&gt;contentDetails&lt;/code&gt; object contains information about the
            # content associated with the activity. For example, if the
            # &lt;code&gt;snippet.type&lt;/code&gt; value is &lt;code&gt;videoRated&lt;/code&gt;, then the
            # &lt;code&gt;contentDetails&lt;/code&gt; object&#x27;s content identifies the rated video.
            # channel that was subscribed to, etc.
          &quot;like&quot;: { # Information about a resource that received a positive (like) rating. # The &lt;code&gt;like&lt;/code&gt; object contains information about a resource that
              # received a positive (like) rating. This property is only present if
              # the &lt;code&gt;snippet.type&lt;/code&gt; is &lt;code&gt;like&lt;/code&gt;.
            &quot;resourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;resourceId&lt;/code&gt; object contains information that identifies
                # the rated resource.
              &quot;kind&quot;: &quot;A String&quot;, # The type of the API resource.
              &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a video. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#video&lt;/code&gt;.
              &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a channel. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#channel&lt;/code&gt;.
              &quot;playlistId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a playlist. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#playlist&lt;/code&gt;.
            },
          },
          &quot;social&quot;: { # Details about a social network post. # The &lt;code&gt;social&lt;/code&gt; object contains details about a social network
              # post. This property is only present if the &lt;code&gt;snippet.type&lt;/code&gt;
              # is &lt;code&gt;social&lt;/code&gt;.
            &quot;resourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;resourceId&lt;/code&gt; object encapsulates information that
                # identifies the resource associated with a social network post.
              &quot;kind&quot;: &quot;A String&quot;, # The type of the API resource.
              &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a video. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#video&lt;/code&gt;.
              &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a channel. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#channel&lt;/code&gt;.
              &quot;playlistId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a playlist. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#playlist&lt;/code&gt;.
            },
            &quot;author&quot;: &quot;A String&quot;, # The author of the social network post.
            &quot;referenceUrl&quot;: &quot;A String&quot;, # The URL of the social network post.
            &quot;type&quot;: &quot;A String&quot;, # The name of the social network.
            &quot;imageUrl&quot;: &quot;A String&quot;, # An image of the post&#x27;s author.
          },
          &quot;channelItem&quot;: { # Details about a resource which was added to a channel. # The &lt;code&gt;channelItem&lt;/code&gt; object contains details about a resource
              # which was added to a channel. This property is only present if the
              # &lt;code&gt;snippet.type&lt;/code&gt; is &lt;code&gt;channelItem&lt;/code&gt;.
            &quot;resourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;resourceId&lt;/code&gt; object contains information that
                # identifies the resource that was added to the channel.
              &quot;kind&quot;: &quot;A String&quot;, # The type of the API resource.
              &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a video. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#video&lt;/code&gt;.
              &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a channel. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#channel&lt;/code&gt;.
              &quot;playlistId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a playlist. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#playlist&lt;/code&gt;.
            },
          },
          &quot;recommendation&quot;: { # Information that identifies the recommended resource. # The &lt;code&gt;recommendation&lt;/code&gt; object contains information about a
              # recommended resource. This property is only present if the
              # &lt;code&gt;snippet.type&lt;/code&gt; is &lt;code&gt;recommendation&lt;/code&gt;.
            &quot;resourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;resourceId&lt;/code&gt; object contains information that
                # identifies the recommended resource.
              &quot;kind&quot;: &quot;A String&quot;, # The type of the API resource.
              &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a video. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#video&lt;/code&gt;.
              &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a channel. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#channel&lt;/code&gt;.
              &quot;playlistId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a playlist. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#playlist&lt;/code&gt;.
            },
            &quot;reason&quot;: &quot;A String&quot;, # The reason that the resource is recommended to the user.
            &quot;seedResourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;seedResourceId&lt;/code&gt; object contains information about
                # the resource that caused the recommendation.
              &quot;kind&quot;: &quot;A String&quot;, # The type of the API resource.
              &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a video. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#video&lt;/code&gt;.
              &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a channel. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#channel&lt;/code&gt;.
              &quot;playlistId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a playlist. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#playlist&lt;/code&gt;.
            },
          },
          &quot;promotedItem&quot;: { # Details about a resource which is being promoted. # The &lt;code&gt;promotedItem&lt;/code&gt; object contains details about a resource
              # which is being promoted. This property is only present if the
              # &lt;code&gt;snippet.type&lt;/code&gt; is &lt;code&gt;promotedItem&lt;/code&gt;.
            &quot;ctaType&quot;: &quot;A String&quot;, # The type of call-to-action, a message to the user indicating action that
                # can be taken.
            &quot;impressionUrl&quot;: [ # The list of impression URLs. The client should ping all of these URLs to
                # indicate that the user was shown this promoted item.
              &quot;A String&quot;,
            ],
            &quot;adTag&quot;: &quot;A String&quot;, # The URL the client should fetch to request a promoted item.
            &quot;clickTrackingUrl&quot;: &quot;A String&quot;, # The URL the client should ping to indicate that the user clicked through
                # on this promoted item.
            &quot;descriptionText&quot;: &quot;A String&quot;, # The text description to accompany the promoted item.
            &quot;creativeViewUrl&quot;: &quot;A String&quot;, # The URL the client should ping to indicate that the user was shown this
                # promoted item.
            &quot;destinationUrl&quot;: &quot;A String&quot;, # The URL the client should direct the user to, if the user chooses to
                # visit the advertiser&#x27;s website.
            &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the promoted video.
            &quot;customCtaButtonText&quot;: &quot;A String&quot;, # The custom call-to-action button text. If specified, it will override
                # the default button text for the cta_type.
            &quot;forecastingUrl&quot;: [ # The list of forecasting URLs. The client should ping all of these URLs
                # when a promoted item is not available, to indicate that a promoted item
                # could have been shown.
              &quot;A String&quot;,
            ],
          },
          &quot;subscription&quot;: { # Information about a channel that a user subscribed to. # The &lt;code&gt;subscription&lt;/code&gt; object contains information about a
              # channel that a user subscribed to. This property is only
              # present if the &lt;code&gt;snippet.type&lt;/code&gt; is &lt;code&gt;subscription&lt;/code&gt;.
            &quot;resourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;resourceId&lt;/code&gt; object contains information that
                # identifies the resource that the user subscribed to.
              &quot;kind&quot;: &quot;A String&quot;, # The type of the API resource.
              &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a video. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#video&lt;/code&gt;.
              &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a channel. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#channel&lt;/code&gt;.
              &quot;playlistId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a playlist. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#playlist&lt;/code&gt;.
            },
          },
          &quot;favorite&quot;: { # Information about a video that was marked as a favorite video. # The &lt;code&gt;favorite&lt;/code&gt; object contains information about a video that
              # was marked as a favorite video. This property is only present if the
              # &lt;code&gt;snippet.type&lt;/code&gt; is &lt;code&gt;favorite&lt;/code&gt;.
            &quot;resourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;resourceId&lt;/code&gt; object contains information that
                # identifies the resource that was marked as a favorite.
              &quot;kind&quot;: &quot;A String&quot;, # The type of the API resource.
              &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a video. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#video&lt;/code&gt;.
              &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a channel. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#channel&lt;/code&gt;.
              &quot;playlistId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a playlist. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#playlist&lt;/code&gt;.
            },
          },
          &quot;bulletin&quot;: { # Details about a channel bulletin post. # The &lt;code&gt;bulletin&lt;/code&gt; object contains details about a channel
              # bulletin post. This object is only present if the
              # &lt;code&gt;snippet.type&lt;/code&gt; is &lt;code&gt;bulletin&lt;/code&gt;.
            &quot;resourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;resourceId&lt;/code&gt; object contains information that
                # identifies the resource associated with a bulletin post.
                # @mutable youtube.activities.insert
              &quot;kind&quot;: &quot;A String&quot;, # The type of the API resource.
              &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a video. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#video&lt;/code&gt;.
              &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a channel. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#channel&lt;/code&gt;.
              &quot;playlistId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a playlist. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#playlist&lt;/code&gt;.
            },
          },
          &quot;comment&quot;: { # Information about a resource that received a comment. # The &lt;code&gt;comment&lt;/code&gt; object contains information about a resource
              # that received a comment. This property is only present if the
              # &lt;code&gt;snippet.type&lt;/code&gt; is &lt;code&gt;comment&lt;/code&gt;.
            &quot;resourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;resourceId&lt;/code&gt; object contains information that
                # identifies the resource associated with the comment.
              &quot;kind&quot;: &quot;A String&quot;, # The type of the API resource.
              &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a video. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#video&lt;/code&gt;.
              &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a channel. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#channel&lt;/code&gt;.
              &quot;playlistId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a playlist. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#playlist&lt;/code&gt;.
            },
          },
          &quot;upload&quot;: { # Information about the uploaded video. # The &lt;code&gt;upload&lt;/code&gt; object contains information about the uploaded
              # video. This property is only present if the &lt;code&gt;snippet.type&lt;/code&gt;
              # is &lt;code&gt;upload&lt;/code&gt;.
            &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the uploaded video.
          },
          &quot;playlistItem&quot;: { # Information about a new playlist item. # The &lt;code&gt;playlistItem&lt;/code&gt; object contains information about a
              # new playlist item. This property is only present if the
              # &lt;code&gt;snippet.type&lt;/code&gt; is &lt;code&gt;playlistItem&lt;/code&gt;.
            &quot;resourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;resourceId&lt;/code&gt; object contains information about the
                # resource that was added to the playlist.
              &quot;kind&quot;: &quot;A String&quot;, # The type of the API resource.
              &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a video. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#video&lt;/code&gt;.
              &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a channel. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#channel&lt;/code&gt;.
              &quot;playlistId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the referred resource, if
                  # that resource is a playlist. This property is only present if the
                  # &lt;code&gt;resourceId.kind&lt;/code&gt; value is &lt;code&gt;youtube#playlist&lt;/code&gt;.
            },
            &quot;playlistItemId&quot;: &quot;A String&quot;, # ID of the item within the playlist.
            &quot;playlistId&quot;: &quot;A String&quot;, # The value that YouTube uses to uniquely identify the playlist.
          },
        },
        &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource
        &quot;snippet&quot;: { # Basic details about an activity, including title, description, thumbnails, # The &lt;code&gt;snippet&lt;/code&gt; object contains basic details about the
            # activity, including the activity&#x27;s type and group ID.
            # activity type and group.
            # Next ID: 12
          &quot;title&quot;: &quot;A String&quot;, # The title of the resource primarily associated with the activity.
          &quot;type&quot;: &quot;A String&quot;, # The type of activity that the resource describes.
          &quot;groupId&quot;: &quot;A String&quot;, # The group ID associated with the activity. A group ID identifies user
              # events that are associated with the same user and resource. For example,
              # if a user rates a video and marks the same video as a favorite, the
              # entries for those events would have the same group ID in the user&#x27;s
              # activity feed. In your user interface, you can avoid repetition by
              # grouping events with the same &lt;code&gt;groupId&lt;/code&gt; value.
          &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel associated
              # with the activity.
          &quot;channelTitle&quot;: &quot;A String&quot;, # Channel title for the channel responsible for this activity
          &quot;description&quot;: &quot;A String&quot;, # The description of the resource primarily associated with the activity.
              # @mutable youtube.activities.insert
          &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the resource that is primarily
              # associated with the activity. For each object in the map, the key is the
              # name of the thumbnail image, and the value is an object that contains
              # other information about the thumbnail.
            &quot;medium&quot;: { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
              &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
              &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
              &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            },
            &quot;standard&quot;: { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
              &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
              &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
              &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            },
            &quot;default&quot;: { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
              &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
              &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
              &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            },
            &quot;maxres&quot;: { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
              &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
              &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
              &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            },
            &quot;high&quot;: { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
              &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
              &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
              &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            },
          },
          &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the video was uploaded. The value is specified
              # in &lt;a href=&quot;//www.w3.org/TR/NOTE-datetime&quot;&gt;ISO 8601&lt;/a&gt;
              # format.
        },
      },
    ],
    &quot;tokenPagination&quot;: { # Stub token pagination template to suppress results.
    },
  }</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>