<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.subscriptions.html">subscriptions</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 resource.</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(part, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, mine=None, channelId=None, forChannelId=None, order=None, id=None, mySubscribers=None, myRecentSubscribers=None, maxResults=None, pageToken=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 resource.

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 in
this operation. It identifies the properties that the write operation will
set as well as the properties that the API response will include. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{ # A &lt;code&gt;&lt;strong&gt;subscription&lt;/strong&gt;&lt;/code&gt; resource contains information
    # about a YouTube user subscription.  A subscription notifies a user when new
    # videos are added to a channel or when another user takes one of several
    # actions on YouTube, such as uploading a video, rating a video, or commenting
    # on a video.
  &quot;snippet&quot;: { # Basic details about a subscription, including title, description and # The &lt;code&gt;snippet&lt;/code&gt; object contains basic details about the
      # subscription, including its title and the channel that the user subscribed
      # to.
      # thumbnails of the subscribed item.
    &quot;title&quot;: &quot;A String&quot;, # The subscription&#x27;s title.
    &quot;channelTitle&quot;: &quot;A String&quot;, # Channel title for the channel that the subscription belongs to.
    &quot;resourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;id&lt;/code&gt; object contains information about the channel 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;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the subscriber&#x27;s channel.
    &quot;description&quot;: &quot;A String&quot;, # The subscription&#x27;s details.
    &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the video. 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 subscription was created. The value is
        # specified in &lt;a href=&quot;//www.w3.org/TR/NOTE-datetime&quot;&gt;ISO 8601&lt;/a&gt;
        # format.
  },
  &quot;kind&quot;: &quot;youtube#subscription&quot;, # Identifies what kind of resource this is. Value: the fixed string
      # &lt;code&gt;&quot;youtube#subscription&quot;&lt;/code&gt;.
  &quot;contentDetails&quot;: { # Details about the content to witch a subscription refers. # The &lt;code&gt;contentDetails&lt;/code&gt; object contains basic statistics about the
      # subscription.
    &quot;newItemCount&quot;: 42, # The number of new items in the subscription since its content was last
        # read.
    &quot;activityType&quot;: &quot;A String&quot;, # The type of activity this subscription is for
        # (only uploads, everything).
    &quot;totalItemCount&quot;: 42, # The approximate number of items that the subscription points to.
  },
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;subscriberSnippet&quot;: { # Basic details about a subscription&#x27;s subscriber including title, # The &lt;code&gt;subscriberSnippet&lt;/code&gt; object contains basic details about the
      # subscriber.
      # description, channel ID and thumbnails.
    &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # Thumbnails for this subscriber.
      &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;title&quot;: &quot;A String&quot;, # The title of the subscriber.
    &quot;description&quot;: &quot;A String&quot;, # The description of the subscriber.
    &quot;channelId&quot;: &quot;A String&quot;, # The channel ID of the subscriber.
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the subscription.
}

  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;subscription&lt;/strong&gt;&lt;/code&gt; resource contains information
      # about a YouTube user subscription.  A subscription notifies a user when new
      # videos are added to a channel or when another user takes one of several
      # actions on YouTube, such as uploading a video, rating a video, or commenting
      # on a video.
    &quot;snippet&quot;: { # Basic details about a subscription, including title, description and # The &lt;code&gt;snippet&lt;/code&gt; object contains basic details about the
        # subscription, including its title and the channel that the user subscribed
        # to.
        # thumbnails of the subscribed item.
      &quot;title&quot;: &quot;A String&quot;, # The subscription&#x27;s title.
      &quot;channelTitle&quot;: &quot;A String&quot;, # Channel title for the channel that the subscription belongs to.
      &quot;resourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;id&lt;/code&gt; object contains information about the channel 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;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the subscriber&#x27;s channel.
      &quot;description&quot;: &quot;A String&quot;, # The subscription&#x27;s details.
      &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the video. 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 subscription was created. The value is
          # specified in &lt;a href=&quot;//www.w3.org/TR/NOTE-datetime&quot;&gt;ISO 8601&lt;/a&gt;
          # format.
    },
    &quot;kind&quot;: &quot;youtube#subscription&quot;, # Identifies what kind of resource this is. Value: the fixed string
        # &lt;code&gt;&quot;youtube#subscription&quot;&lt;/code&gt;.
    &quot;contentDetails&quot;: { # Details about the content to witch a subscription refers. # The &lt;code&gt;contentDetails&lt;/code&gt; object contains basic statistics about the
        # subscription.
      &quot;newItemCount&quot;: 42, # The number of new items in the subscription since its content was last
          # read.
      &quot;activityType&quot;: &quot;A String&quot;, # The type of activity this subscription is for
          # (only uploads, everything).
      &quot;totalItemCount&quot;: 42, # The approximate number of items that the subscription points to.
    },
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &quot;subscriberSnippet&quot;: { # Basic details about a subscription&#x27;s subscriber including title, # The &lt;code&gt;subscriberSnippet&lt;/code&gt; object contains basic details about the
        # subscriber.
        # description, channel ID and thumbnails.
      &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # Thumbnails for this subscriber.
        &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;title&quot;: &quot;A String&quot;, # The title of the subscriber.
      &quot;description&quot;: &quot;A String&quot;, # The description of the subscriber.
      &quot;channelId&quot;: &quot;A String&quot;, # The channel ID of the subscriber.
    },
    &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the subscription.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(part, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, mine=None, channelId=None, forChannelId=None, order=None, id=None, mySubscribers=None, myRecentSubscribers=None, maxResults=None, pageToken=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;subscription&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 a
&lt;code&gt;subscription&lt;/code&gt; resource, the &lt;code&gt;snippet&lt;/code&gt; property
contains other properties, such as a display title for the subscription. 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)
  onBehalfOfContentOwner: string, &lt;strong&gt;Note:&lt;/strong&gt; This parameter is intended exclusively for YouTube
content partners.&lt;br&gt;&lt;br&gt;The
&lt;code&gt;&lt;strong&gt;onBehalfOfContentOwner&lt;/strong&gt;&lt;/code&gt; parameter indicates
that the
request&#x27;s authorization credentials identify a YouTube CMS user who is
acting on behalf of the content owner specified in the parameter value.
This parameter is intended for YouTube content partners that own and manage
many different YouTube channels. It allows content owners to authenticate
once and get access to all their video and channel data, without having to
provide authentication credentials for each individual channel. The CMS
account that the user authenticates with must be linked to the specified
YouTube content owner.
  onBehalfOfContentOwnerChannel: string, This parameter can only be used in a properly &lt;a
href=&quot;/youtube/v3/guides/authentication&quot;&gt;authorized request&lt;/a&gt;.
&lt;strong&gt;Note:&lt;/strong&gt; This parameter is intended exclusively for YouTube
content partners.&lt;br&gt;&lt;br&gt;The
&lt;code&gt;&lt;strong&gt;onBehalfOfContentOwnerChannel&lt;/strong&gt;&lt;/code&gt; parameter
specifies the YouTube channel ID of the channel to which a video is being
added. This parameter is required when a request specifies a value for the
&lt;code&gt;onBehalfOfContentOwner&lt;/code&gt; parameter, and it can only be used in
conjunction with that parameter. In addition, the request must be
authorized using a CMS account that is linked to the content owner that the
&lt;code&gt;onBehalfOfContentOwner&lt;/code&gt; parameter specifies. Finally, the
channel that the &lt;code&gt;onBehalfOfContentOwnerChannel&lt;/code&gt; parameter value
specifies must be linked to the content owner that the
&lt;code&gt;onBehalfOfContentOwner&lt;/code&gt; parameter specifies.&lt;br&gt;&lt;br&gt;This
parameter is intended for YouTube content partners that own and manage many
different YouTube channels. It allows content owners to authenticate once
and perform actions on behalf of the channel specified in the parameter
value, without having to provide authentication credentials for each
separate channel.
  mine: boolean, Flag for returning the subscriptions of the authenticated user.
  channelId: string, Return the subscriptions of the given channel owner.
  forChannelId: string, Return the subscriptions to the subset of these channels that the
authenticated user is subscribed to.
  order: string, The order of the returned subscriptions
  id: string, Return the subscriptions with the given IDs for Stubby or Apiary. (repeated)
  mySubscribers: boolean, Return the subscribers of the given channel owner.
  myRecentSubscribers: boolean, 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.
  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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;tokenPagination&quot;: { # Stub token pagination template to suppress results.
    },
    &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;items&quot;: [ # A list of subscriptions that match the request criteria.
      { # A &lt;code&gt;&lt;strong&gt;subscription&lt;/strong&gt;&lt;/code&gt; resource contains information
          # about a YouTube user subscription.  A subscription notifies a user when new
          # videos are added to a channel or when another user takes one of several
          # actions on YouTube, such as uploading a video, rating a video, or commenting
          # on a video.
        &quot;snippet&quot;: { # Basic details about a subscription, including title, description and # The &lt;code&gt;snippet&lt;/code&gt; object contains basic details about the
            # subscription, including its title and the channel that the user subscribed
            # to.
            # thumbnails of the subscribed item.
          &quot;title&quot;: &quot;A String&quot;, # The subscription&#x27;s title.
          &quot;channelTitle&quot;: &quot;A String&quot;, # Channel title for the channel that the subscription belongs to.
          &quot;resourceId&quot;: { # A resource id is a generic reference that points to another YouTube resource. # The &lt;code&gt;id&lt;/code&gt; object contains information about the channel 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;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the subscriber&#x27;s channel.
          &quot;description&quot;: &quot;A String&quot;, # The subscription&#x27;s details.
          &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the video. 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 subscription was created. The value is
              # specified in &lt;a href=&quot;//www.w3.org/TR/NOTE-datetime&quot;&gt;ISO 8601&lt;/a&gt;
              # format.
        },
        &quot;kind&quot;: &quot;youtube#subscription&quot;, # Identifies what kind of resource this is. Value: the fixed string
            # &lt;code&gt;&quot;youtube#subscription&quot;&lt;/code&gt;.
        &quot;contentDetails&quot;: { # Details about the content to witch a subscription refers. # The &lt;code&gt;contentDetails&lt;/code&gt; object contains basic statistics about the
            # subscription.
          &quot;newItemCount&quot;: 42, # The number of new items in the subscription since its content was last
              # read.
          &quot;activityType&quot;: &quot;A String&quot;, # The type of activity this subscription is for
              # (only uploads, everything).
          &quot;totalItemCount&quot;: 42, # The approximate number of items that the subscription points to.
        },
        &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
        &quot;subscriberSnippet&quot;: { # Basic details about a subscription&#x27;s subscriber including title, # The &lt;code&gt;subscriberSnippet&lt;/code&gt; object contains basic details about the
            # subscriber.
            # description, channel ID and thumbnails.
          &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # Thumbnails for this subscriber.
            &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;title&quot;: &quot;A String&quot;, # The title of the subscriber.
          &quot;description&quot;: &quot;A String&quot;, # The description of the subscriber.
          &quot;channelId&quot;: &quot;A String&quot;, # The channel ID of the subscriber.
        },
        &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the subscription.
      },
    ],
    &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;kind&quot;: &quot;youtube#subscriptionListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string
        # &lt;code&gt;&quot;youtube#subscriptionListResponse&quot;&lt;/code&gt;.
    &quot;visitorId&quot;: &quot;A String&quot;, # The &lt;code&gt;visitorId&lt;/code&gt; identifies the visitor.
    &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;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.
  }</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>