<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.channels.html">channels</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="#list">list(part, categoryId=None, forUsername=None, hl=None, id=None, managedByMe=None, maxResults=None, mine=None, mySubscribers=None, onBehalfOfContentOwner=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>
<p class="toc_element">
  <code><a href="#update">update(part, body=None, onBehalfOfContentOwner=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing resource.</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="list">list(part, categoryId=None, forUsername=None, hl=None, id=None, managedByMe=None, maxResults=None, mine=None, mySubscribers=None, onBehalfOfContentOwner=None, pageToken=None, x__xgafv=None)</code>
  <pre>Retrieves a list of resources, possibly filtered.

Args:
  part: string, The *part* parameter specifies a comma-separated list of one or more channel resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a channel resource, the contentDetails property contains other properties, such as the uploads properties. As such, if you set *part=contentDetails*, the API response will also contain all of those nested properties. (required) (repeated)
  categoryId: string, Return the channels within the specified guide category ID.
  forUsername: string, Return the channel associated with a YouTube username.
  hl: string, Stands for &quot;host language&quot;. Specifies the localization language of the metadata to be filled into snippet.localized. The field is filled with the default metadata if there is no localization in the specified language. The parameter value must be a language code included in the list returned by the i18nLanguages.list method (e.g. en_US, es_MX).
  id: string, Return the channels with the specified IDs. (repeated)
  managedByMe: boolean, Return the channels managed by the authenticated user.
  maxResults: integer, The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.
  mine: boolean, Return the ids of channels owned by the authenticated user.
  mySubscribers: boolean, Return the channels subscribed to the authenticated user
  onBehalfOfContentOwner: string, *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* 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.
  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.
  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 *channel* resource contains information about a YouTube channel.
      &quot;auditDetails&quot;: { # The auditDetails object encapsulates channel data that is relevant for YouTube Partners during the audit process. # The auditionDetails object encapsulates channel data that is relevant for YouTube Partners during the audition process.
        &quot;communityGuidelinesGoodStanding&quot;: True or False, # Whether or not the channel respects the community guidelines.
        &quot;contentIdClaimsGoodStanding&quot;: True or False, # Whether or not the channel has any unresolved claims.
        &quot;copyrightStrikesGoodStanding&quot;: True or False, # Whether or not the channel has any copyright strikes.
      },
      &quot;brandingSettings&quot;: { # Branding properties of a YouTube channel. # The brandingSettings object encapsulates information about the branding of the channel.
        &quot;channel&quot;: { # Branding properties for the channel view. # Branding properties for the channel view.
          &quot;country&quot;: &quot;A String&quot;, # The country of the channel.
          &quot;defaultLanguage&quot;: &quot;A String&quot;,
          &quot;defaultTab&quot;: &quot;A String&quot;, # Which content tab users should see when viewing the channel.
          &quot;description&quot;: &quot;A String&quot;, # Specifies the channel description.
          &quot;featuredChannelsTitle&quot;: &quot;A String&quot;, # Title for the featured channels tab.
          &quot;featuredChannelsUrls&quot;: [ # The list of featured channels.
            &quot;A String&quot;,
          ],
          &quot;keywords&quot;: &quot;A String&quot;, # Lists keywords associated with the channel, comma-separated.
          &quot;moderateComments&quot;: True or False, # Whether user-submitted comments left on the channel page need to be approved by the channel owner to be publicly visible.
          &quot;profileColor&quot;: &quot;A String&quot;, # A prominent color that can be rendered on this channel page.
          &quot;showBrowseView&quot;: True or False, # Whether the tab to browse the videos should be displayed.
          &quot;showRelatedChannels&quot;: True or False, # Whether related channels should be proposed.
          &quot;title&quot;: &quot;A String&quot;, # Specifies the channel title.
          &quot;trackingAnalyticsAccountId&quot;: &quot;A String&quot;, # The ID for a Google Analytics account to track and measure traffic to the channels.
          &quot;unsubscribedTrailer&quot;: &quot;A String&quot;, # The trailer of the channel, for users that are not subscribers.
        },
        &quot;hints&quot;: [ # Additional experimental branding properties.
          { # A pair Property / Value.
            &quot;property&quot;: &quot;A String&quot;, # A property.
            &quot;value&quot;: &quot;A String&quot;, # The property&#x27;s value.
          },
        ],
        &quot;image&quot;: { # Branding properties for images associated with the channel. # Branding properties for branding images.
          &quot;backgroundImageUrl&quot;: { # The URL for the background image shown on the video watch page. The image should be 1200px by 615px, with a maximum file size of 128k.
            &quot;default&quot;: &quot;A String&quot;,
            &quot;defaultLanguage&quot;: { # The language of the default property.
              &quot;value&quot;: &quot;A String&quot;,
            },
            &quot;localized&quot;: [
              {
                &quot;language&quot;: &quot;A String&quot;,
                &quot;value&quot;: &quot;A String&quot;,
              },
            ],
          },
          &quot;bannerExternalUrl&quot;: &quot;A String&quot;, # This is used only in update requests; if it&#x27;s set, we use this URL to generate all of the above banner URLs.
          &quot;bannerImageUrl&quot;: &quot;A String&quot;, # Banner image. Desktop size (1060x175).
          &quot;bannerMobileExtraHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size high resolution (1440x395).
          &quot;bannerMobileHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size high resolution (1280x360).
          &quot;bannerMobileImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size (640x175).
          &quot;bannerMobileLowImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size low resolution (320x88).
          &quot;bannerMobileMediumHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size medium/high resolution (960x263).
          &quot;bannerTabletExtraHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Tablet size extra high resolution (2560x424).
          &quot;bannerTabletHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Tablet size high resolution (2276x377).
          &quot;bannerTabletImageUrl&quot;: &quot;A String&quot;, # Banner image. Tablet size (1707x283).
          &quot;bannerTabletLowImageUrl&quot;: &quot;A String&quot;, # Banner image. Tablet size low resolution (1138x188).
          &quot;bannerTvHighImageUrl&quot;: &quot;A String&quot;, # Banner image. TV size high resolution (1920x1080).
          &quot;bannerTvImageUrl&quot;: &quot;A String&quot;, # Banner image. TV size extra high resolution (2120x1192).
          &quot;bannerTvLowImageUrl&quot;: &quot;A String&quot;, # Banner image. TV size low resolution (854x480).
          &quot;bannerTvMediumImageUrl&quot;: &quot;A String&quot;, # Banner image. TV size medium resolution (1280x720).
          &quot;largeBrandedBannerImageImapScript&quot;: { # The image map script for the large banner image.
            &quot;default&quot;: &quot;A String&quot;,
            &quot;defaultLanguage&quot;: { # The language of the default property.
              &quot;value&quot;: &quot;A String&quot;,
            },
            &quot;localized&quot;: [
              {
                &quot;language&quot;: &quot;A String&quot;,
                &quot;value&quot;: &quot;A String&quot;,
              },
            ],
          },
          &quot;largeBrandedBannerImageUrl&quot;: { # The URL for the 854px by 70px image that appears below the video player in the expanded video view of the video watch page.
            &quot;default&quot;: &quot;A String&quot;,
            &quot;defaultLanguage&quot;: { # The language of the default property.
              &quot;value&quot;: &quot;A String&quot;,
            },
            &quot;localized&quot;: [
              {
                &quot;language&quot;: &quot;A String&quot;,
                &quot;value&quot;: &quot;A String&quot;,
              },
            ],
          },
          &quot;smallBrandedBannerImageImapScript&quot;: { # The image map script for the small banner image.
            &quot;default&quot;: &quot;A String&quot;,
            &quot;defaultLanguage&quot;: { # The language of the default property.
              &quot;value&quot;: &quot;A String&quot;,
            },
            &quot;localized&quot;: [
              {
                &quot;language&quot;: &quot;A String&quot;,
                &quot;value&quot;: &quot;A String&quot;,
              },
            ],
          },
          &quot;smallBrandedBannerImageUrl&quot;: { # The URL for the 640px by 70px banner image that appears below the video player in the default view of the video watch page. The URL for the image that appears above the top-left corner of the video player. This is a 25-pixel-high image with a flexible width that cannot exceed 170 pixels.
            &quot;default&quot;: &quot;A String&quot;,
            &quot;defaultLanguage&quot;: { # The language of the default property.
              &quot;value&quot;: &quot;A String&quot;,
            },
            &quot;localized&quot;: [
              {
                &quot;language&quot;: &quot;A String&quot;,
                &quot;value&quot;: &quot;A String&quot;,
              },
            ],
          },
          &quot;trackingImageUrl&quot;: &quot;A String&quot;, # The URL for a 1px by 1px tracking pixel that can be used to collect statistics for views of the channel or video pages.
          &quot;watchIconImageUrl&quot;: &quot;A String&quot;,
        },
        &quot;watch&quot;: { # Branding properties for the watch. All deprecated. # Branding properties for the watch page.
          &quot;backgroundColor&quot;: &quot;A String&quot;, # The text color for the video watch page&#x27;s branded area.
          &quot;featuredPlaylistId&quot;: &quot;A String&quot;, # An ID that uniquely identifies a playlist that displays next to the video player.
          &quot;textColor&quot;: &quot;A String&quot;, # The background color for the video watch page&#x27;s branded area.
        },
      },
      &quot;contentDetails&quot;: { # Details about the content of a channel. # The contentDetails object encapsulates information about the channel&#x27;s content.
        &quot;relatedPlaylists&quot;: {
          &quot;favorites&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s favorite videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
          &quot;likes&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s liked videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
          &quot;uploads&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s uploaded videos. Use the videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos.
          &quot;watchHistory&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s watch history. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
          &quot;watchLater&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s watch later playlist. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
        },
      },
      &quot;contentOwnerDetails&quot;: { # The contentOwnerDetails object encapsulates channel data that is relevant for YouTube Partners linked with the channel. # The contentOwnerDetails object encapsulates channel data that is relevant for YouTube Partners linked with the channel.
        &quot;contentOwner&quot;: &quot;A String&quot;, # The ID of the content owner linked to the channel.
        &quot;timeLinked&quot;: &quot;A String&quot;, # The date and time of when the channel was linked to the content owner. The value is specified in ISO 8601 format.
      },
      &quot;conversionPings&quot;: { # The conversionPings object encapsulates information about conversion pings that need to be respected by the channel. # The conversionPings object encapsulates information about conversion pings that need to be respected by the channel.
        &quot;pings&quot;: [ # Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
          { # Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
            &quot;context&quot;: &quot;A String&quot;, # Defines the context of the ping.
            &quot;conversionUrl&quot;: &quot;A String&quot;, # The url (without the schema) that the player shall send the ping to. It&#x27;s at caller&#x27;s descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D cview%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA&amp;labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping.
          },
        ],
      },
      &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
      &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel.
      &quot;kind&quot;: &quot;youtube#channel&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#channel&quot;.
      &quot;localizations&quot;: { # Localizations for different languages
        &quot;a_key&quot;: { # Channel localization setting
          &quot;description&quot;: &quot;A String&quot;, # The localized strings for channel&#x27;s description.
          &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel&#x27;s title.
        },
      },
      &quot;snippet&quot;: { # Basic details about a channel, including title, description and thumbnails. # The snippet object contains basic details about the channel, such as its title, description, and thumbnail images.
        &quot;country&quot;: &quot;A String&quot;, # The country of the channel.
        &quot;customUrl&quot;: &quot;A String&quot;, # The custom url of the channel.
        &quot;defaultLanguage&quot;: &quot;A String&quot;, # The language of the channel&#x27;s default title and description.
        &quot;description&quot;: &quot;A String&quot;, # The description of the channel.
        &quot;localized&quot;: { # Channel localization setting # Localized title and description, read-only.
          &quot;description&quot;: &quot;A String&quot;, # The localized strings for channel&#x27;s description.
          &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel&#x27;s title.
        },
        &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the channel was created. The value is specified in &lt; a href=&quot;//www.w3.org/TR/NOTE-datetime&quot;&gt;ISO 8601 format.
        &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the channel. 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. When displaying thumbnails in your application, make sure that your code uses the image URLs exactly as they are returned in API responses. For example, your application should not use the http domain instead of the https domain in a URL returned in an API response. Beginning in July 2018, channel thumbnail URLs will only be available in the https domain, which is how the URLs appear in API responses. After that time, you might see broken images in your application if it tries to load YouTube images from the http domain. Thumbnail images might be empty for newly created channels and might take up to one day to populate.
          &quot;default&quot;: { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
            &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
            &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
          },
          &quot;high&quot;: { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
            &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
            &quot;width&quot;: 42, # (Optional) Width 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;height&quot;: 42, # (Optional) Height of the thumbnail image.
            &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
            &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
          },
          &quot;medium&quot;: { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
            &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
            &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
          },
          &quot;standard&quot;: { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
            &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
            &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
            &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
          },
        },
        &quot;title&quot;: &quot;A String&quot;, # The channel&#x27;s title.
      },
      &quot;statistics&quot;: { # Statistics about a channel: number of subscribers, number of videos in the channel, etc. # The statistics object encapsulates statistics for the channel.
        &quot;commentCount&quot;: &quot;A String&quot;, # The number of comments for the channel.
        &quot;hiddenSubscriberCount&quot;: True or False, # Whether or not the number of subscribers is shown for this user.
        &quot;subscriberCount&quot;: &quot;A String&quot;, # The number of subscribers that the channel has.
        &quot;videoCount&quot;: &quot;A String&quot;, # The number of videos uploaded to the channel.
        &quot;viewCount&quot;: &quot;A String&quot;, # The number of times the channel has been viewed.
      },
      &quot;status&quot;: { # JSON template for the status part of a channel. # The status object encapsulates information about the privacy status of the channel.
        &quot;isLinked&quot;: True or False, # If true, then the user is linked to either a YouTube username or G+ account. Otherwise, the user doesn&#x27;t have a public YouTube identity.
        &quot;longUploadsStatus&quot;: &quot;A String&quot;, # The long uploads status of this channel. See https://support.google.com/youtube/answer/71673 for more information.
        &quot;madeForKids&quot;: True or False,
        &quot;privacyStatus&quot;: &quot;A String&quot;, # Privacy status of the channel.
        &quot;selfDeclaredMadeForKids&quot;: True or False,
      },
      &quot;topicDetails&quot;: { # Freebase topic information related to the channel. # The topicDetails object encapsulates information about Freebase topics associated with the channel.
        &quot;topicCategories&quot;: [ # A list of Wikipedia URLs that describe the channel&#x27;s content.
          &quot;A String&quot;,
        ],
        &quot;topicIds&quot;: [ # A list of Freebase topic IDs associated with the channel. You can retrieve information about each topic using the Freebase Topic API.
          &quot;A String&quot;,
        ],
      },
    },
  ],
  &quot;kind&quot;: &quot;youtube#channelListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#channelListResponse&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. # 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;prevPageToken&quot;: &quot;A String&quot;, # The token that can be used as the value of the pageToken parameter to retrieve the previous page 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>

<div class="method">
    <code class="details" id="update">update(part, body=None, onBehalfOfContentOwner=None, x__xgafv=None)</code>
  <pre>Updates an existing resource.

Args:
  part: string, The *part* 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. The API currently only allows the parameter value to be set to either brandingSettings or invideoPromotion. (You cannot update both of those parts with a single request.) Note that this method overrides the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{ # A *channel* resource contains information about a YouTube channel.
  &quot;auditDetails&quot;: { # The auditDetails object encapsulates channel data that is relevant for YouTube Partners during the audit process. # The auditionDetails object encapsulates channel data that is relevant for YouTube Partners during the audition process.
    &quot;communityGuidelinesGoodStanding&quot;: True or False, # Whether or not the channel respects the community guidelines.
    &quot;contentIdClaimsGoodStanding&quot;: True or False, # Whether or not the channel has any unresolved claims.
    &quot;copyrightStrikesGoodStanding&quot;: True or False, # Whether or not the channel has any copyright strikes.
  },
  &quot;brandingSettings&quot;: { # Branding properties of a YouTube channel. # The brandingSettings object encapsulates information about the branding of the channel.
    &quot;channel&quot;: { # Branding properties for the channel view. # Branding properties for the channel view.
      &quot;country&quot;: &quot;A String&quot;, # The country of the channel.
      &quot;defaultLanguage&quot;: &quot;A String&quot;,
      &quot;defaultTab&quot;: &quot;A String&quot;, # Which content tab users should see when viewing the channel.
      &quot;description&quot;: &quot;A String&quot;, # Specifies the channel description.
      &quot;featuredChannelsTitle&quot;: &quot;A String&quot;, # Title for the featured channels tab.
      &quot;featuredChannelsUrls&quot;: [ # The list of featured channels.
        &quot;A String&quot;,
      ],
      &quot;keywords&quot;: &quot;A String&quot;, # Lists keywords associated with the channel, comma-separated.
      &quot;moderateComments&quot;: True or False, # Whether user-submitted comments left on the channel page need to be approved by the channel owner to be publicly visible.
      &quot;profileColor&quot;: &quot;A String&quot;, # A prominent color that can be rendered on this channel page.
      &quot;showBrowseView&quot;: True or False, # Whether the tab to browse the videos should be displayed.
      &quot;showRelatedChannels&quot;: True or False, # Whether related channels should be proposed.
      &quot;title&quot;: &quot;A String&quot;, # Specifies the channel title.
      &quot;trackingAnalyticsAccountId&quot;: &quot;A String&quot;, # The ID for a Google Analytics account to track and measure traffic to the channels.
      &quot;unsubscribedTrailer&quot;: &quot;A String&quot;, # The trailer of the channel, for users that are not subscribers.
    },
    &quot;hints&quot;: [ # Additional experimental branding properties.
      { # A pair Property / Value.
        &quot;property&quot;: &quot;A String&quot;, # A property.
        &quot;value&quot;: &quot;A String&quot;, # The property&#x27;s value.
      },
    ],
    &quot;image&quot;: { # Branding properties for images associated with the channel. # Branding properties for branding images.
      &quot;backgroundImageUrl&quot;: { # The URL for the background image shown on the video watch page. The image should be 1200px by 615px, with a maximum file size of 128k.
        &quot;default&quot;: &quot;A String&quot;,
        &quot;defaultLanguage&quot;: { # The language of the default property.
          &quot;value&quot;: &quot;A String&quot;,
        },
        &quot;localized&quot;: [
          {
            &quot;language&quot;: &quot;A String&quot;,
            &quot;value&quot;: &quot;A String&quot;,
          },
        ],
      },
      &quot;bannerExternalUrl&quot;: &quot;A String&quot;, # This is used only in update requests; if it&#x27;s set, we use this URL to generate all of the above banner URLs.
      &quot;bannerImageUrl&quot;: &quot;A String&quot;, # Banner image. Desktop size (1060x175).
      &quot;bannerMobileExtraHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size high resolution (1440x395).
      &quot;bannerMobileHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size high resolution (1280x360).
      &quot;bannerMobileImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size (640x175).
      &quot;bannerMobileLowImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size low resolution (320x88).
      &quot;bannerMobileMediumHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size medium/high resolution (960x263).
      &quot;bannerTabletExtraHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Tablet size extra high resolution (2560x424).
      &quot;bannerTabletHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Tablet size high resolution (2276x377).
      &quot;bannerTabletImageUrl&quot;: &quot;A String&quot;, # Banner image. Tablet size (1707x283).
      &quot;bannerTabletLowImageUrl&quot;: &quot;A String&quot;, # Banner image. Tablet size low resolution (1138x188).
      &quot;bannerTvHighImageUrl&quot;: &quot;A String&quot;, # Banner image. TV size high resolution (1920x1080).
      &quot;bannerTvImageUrl&quot;: &quot;A String&quot;, # Banner image. TV size extra high resolution (2120x1192).
      &quot;bannerTvLowImageUrl&quot;: &quot;A String&quot;, # Banner image. TV size low resolution (854x480).
      &quot;bannerTvMediumImageUrl&quot;: &quot;A String&quot;, # Banner image. TV size medium resolution (1280x720).
      &quot;largeBrandedBannerImageImapScript&quot;: { # The image map script for the large banner image.
        &quot;default&quot;: &quot;A String&quot;,
        &quot;defaultLanguage&quot;: { # The language of the default property.
          &quot;value&quot;: &quot;A String&quot;,
        },
        &quot;localized&quot;: [
          {
            &quot;language&quot;: &quot;A String&quot;,
            &quot;value&quot;: &quot;A String&quot;,
          },
        ],
      },
      &quot;largeBrandedBannerImageUrl&quot;: { # The URL for the 854px by 70px image that appears below the video player in the expanded video view of the video watch page.
        &quot;default&quot;: &quot;A String&quot;,
        &quot;defaultLanguage&quot;: { # The language of the default property.
          &quot;value&quot;: &quot;A String&quot;,
        },
        &quot;localized&quot;: [
          {
            &quot;language&quot;: &quot;A String&quot;,
            &quot;value&quot;: &quot;A String&quot;,
          },
        ],
      },
      &quot;smallBrandedBannerImageImapScript&quot;: { # The image map script for the small banner image.
        &quot;default&quot;: &quot;A String&quot;,
        &quot;defaultLanguage&quot;: { # The language of the default property.
          &quot;value&quot;: &quot;A String&quot;,
        },
        &quot;localized&quot;: [
          {
            &quot;language&quot;: &quot;A String&quot;,
            &quot;value&quot;: &quot;A String&quot;,
          },
        ],
      },
      &quot;smallBrandedBannerImageUrl&quot;: { # The URL for the 640px by 70px banner image that appears below the video player in the default view of the video watch page. The URL for the image that appears above the top-left corner of the video player. This is a 25-pixel-high image with a flexible width that cannot exceed 170 pixels.
        &quot;default&quot;: &quot;A String&quot;,
        &quot;defaultLanguage&quot;: { # The language of the default property.
          &quot;value&quot;: &quot;A String&quot;,
        },
        &quot;localized&quot;: [
          {
            &quot;language&quot;: &quot;A String&quot;,
            &quot;value&quot;: &quot;A String&quot;,
          },
        ],
      },
      &quot;trackingImageUrl&quot;: &quot;A String&quot;, # The URL for a 1px by 1px tracking pixel that can be used to collect statistics for views of the channel or video pages.
      &quot;watchIconImageUrl&quot;: &quot;A String&quot;,
    },
    &quot;watch&quot;: { # Branding properties for the watch. All deprecated. # Branding properties for the watch page.
      &quot;backgroundColor&quot;: &quot;A String&quot;, # The text color for the video watch page&#x27;s branded area.
      &quot;featuredPlaylistId&quot;: &quot;A String&quot;, # An ID that uniquely identifies a playlist that displays next to the video player.
      &quot;textColor&quot;: &quot;A String&quot;, # The background color for the video watch page&#x27;s branded area.
    },
  },
  &quot;contentDetails&quot;: { # Details about the content of a channel. # The contentDetails object encapsulates information about the channel&#x27;s content.
    &quot;relatedPlaylists&quot;: {
      &quot;favorites&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s favorite videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
      &quot;likes&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s liked videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
      &quot;uploads&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s uploaded videos. Use the videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos.
      &quot;watchHistory&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s watch history. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
      &quot;watchLater&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s watch later playlist. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
    },
  },
  &quot;contentOwnerDetails&quot;: { # The contentOwnerDetails object encapsulates channel data that is relevant for YouTube Partners linked with the channel. # The contentOwnerDetails object encapsulates channel data that is relevant for YouTube Partners linked with the channel.
    &quot;contentOwner&quot;: &quot;A String&quot;, # The ID of the content owner linked to the channel.
    &quot;timeLinked&quot;: &quot;A String&quot;, # The date and time of when the channel was linked to the content owner. The value is specified in ISO 8601 format.
  },
  &quot;conversionPings&quot;: { # The conversionPings object encapsulates information about conversion pings that need to be respected by the channel. # The conversionPings object encapsulates information about conversion pings that need to be respected by the channel.
    &quot;pings&quot;: [ # Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
      { # Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
        &quot;context&quot;: &quot;A String&quot;, # Defines the context of the ping.
        &quot;conversionUrl&quot;: &quot;A String&quot;, # The url (without the schema) that the player shall send the ping to. It&#x27;s at caller&#x27;s descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D cview%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA&amp;labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping.
      },
    ],
  },
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel.
  &quot;kind&quot;: &quot;youtube#channel&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#channel&quot;.
  &quot;localizations&quot;: { # Localizations for different languages
    &quot;a_key&quot;: { # Channel localization setting
      &quot;description&quot;: &quot;A String&quot;, # The localized strings for channel&#x27;s description.
      &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel&#x27;s title.
    },
  },
  &quot;snippet&quot;: { # Basic details about a channel, including title, description and thumbnails. # The snippet object contains basic details about the channel, such as its title, description, and thumbnail images.
    &quot;country&quot;: &quot;A String&quot;, # The country of the channel.
    &quot;customUrl&quot;: &quot;A String&quot;, # The custom url of the channel.
    &quot;defaultLanguage&quot;: &quot;A String&quot;, # The language of the channel&#x27;s default title and description.
    &quot;description&quot;: &quot;A String&quot;, # The description of the channel.
    &quot;localized&quot;: { # Channel localization setting # Localized title and description, read-only.
      &quot;description&quot;: &quot;A String&quot;, # The localized strings for channel&#x27;s description.
      &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel&#x27;s title.
    },
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the channel was created. The value is specified in &lt; a href=&quot;//www.w3.org/TR/NOTE-datetime&quot;&gt;ISO 8601 format.
    &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the channel. 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. When displaying thumbnails in your application, make sure that your code uses the image URLs exactly as they are returned in API responses. For example, your application should not use the http domain instead of the https domain in a URL returned in an API response. Beginning in July 2018, channel thumbnail URLs will only be available in the https domain, which is how the URLs appear in API responses. After that time, you might see broken images in your application if it tries to load YouTube images from the http domain. Thumbnail images might be empty for newly created channels and might take up to one day to populate.
      &quot;default&quot;: { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;high&quot;: { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width 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;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;medium&quot;: { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;standard&quot;: { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
    },
    &quot;title&quot;: &quot;A String&quot;, # The channel&#x27;s title.
  },
  &quot;statistics&quot;: { # Statistics about a channel: number of subscribers, number of videos in the channel, etc. # The statistics object encapsulates statistics for the channel.
    &quot;commentCount&quot;: &quot;A String&quot;, # The number of comments for the channel.
    &quot;hiddenSubscriberCount&quot;: True or False, # Whether or not the number of subscribers is shown for this user.
    &quot;subscriberCount&quot;: &quot;A String&quot;, # The number of subscribers that the channel has.
    &quot;videoCount&quot;: &quot;A String&quot;, # The number of videos uploaded to the channel.
    &quot;viewCount&quot;: &quot;A String&quot;, # The number of times the channel has been viewed.
  },
  &quot;status&quot;: { # JSON template for the status part of a channel. # The status object encapsulates information about the privacy status of the channel.
    &quot;isLinked&quot;: True or False, # If true, then the user is linked to either a YouTube username or G+ account. Otherwise, the user doesn&#x27;t have a public YouTube identity.
    &quot;longUploadsStatus&quot;: &quot;A String&quot;, # The long uploads status of this channel. See https://support.google.com/youtube/answer/71673 for more information.
    &quot;madeForKids&quot;: True or False,
    &quot;privacyStatus&quot;: &quot;A String&quot;, # Privacy status of the channel.
    &quot;selfDeclaredMadeForKids&quot;: True or False,
  },
  &quot;topicDetails&quot;: { # Freebase topic information related to the channel. # The topicDetails object encapsulates information about Freebase topics associated with the channel.
    &quot;topicCategories&quot;: [ # A list of Wikipedia URLs that describe the channel&#x27;s content.
      &quot;A String&quot;,
    ],
    &quot;topicIds&quot;: [ # A list of Freebase topic IDs associated with the channel. You can retrieve information about each topic using the Freebase Topic API.
      &quot;A String&quot;,
    ],
  },
}

  onBehalfOfContentOwner: string, The *onBehalfOfContentOwner* parameter indicates that the authenticated user 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 actual CMS account that the user authenticates with needs to be linked to the specified YouTube content owner.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A *channel* resource contains information about a YouTube channel.
  &quot;auditDetails&quot;: { # The auditDetails object encapsulates channel data that is relevant for YouTube Partners during the audit process. # The auditionDetails object encapsulates channel data that is relevant for YouTube Partners during the audition process.
    &quot;communityGuidelinesGoodStanding&quot;: True or False, # Whether or not the channel respects the community guidelines.
    &quot;contentIdClaimsGoodStanding&quot;: True or False, # Whether or not the channel has any unresolved claims.
    &quot;copyrightStrikesGoodStanding&quot;: True or False, # Whether or not the channel has any copyright strikes.
  },
  &quot;brandingSettings&quot;: { # Branding properties of a YouTube channel. # The brandingSettings object encapsulates information about the branding of the channel.
    &quot;channel&quot;: { # Branding properties for the channel view. # Branding properties for the channel view.
      &quot;country&quot;: &quot;A String&quot;, # The country of the channel.
      &quot;defaultLanguage&quot;: &quot;A String&quot;,
      &quot;defaultTab&quot;: &quot;A String&quot;, # Which content tab users should see when viewing the channel.
      &quot;description&quot;: &quot;A String&quot;, # Specifies the channel description.
      &quot;featuredChannelsTitle&quot;: &quot;A String&quot;, # Title for the featured channels tab.
      &quot;featuredChannelsUrls&quot;: [ # The list of featured channels.
        &quot;A String&quot;,
      ],
      &quot;keywords&quot;: &quot;A String&quot;, # Lists keywords associated with the channel, comma-separated.
      &quot;moderateComments&quot;: True or False, # Whether user-submitted comments left on the channel page need to be approved by the channel owner to be publicly visible.
      &quot;profileColor&quot;: &quot;A String&quot;, # A prominent color that can be rendered on this channel page.
      &quot;showBrowseView&quot;: True or False, # Whether the tab to browse the videos should be displayed.
      &quot;showRelatedChannels&quot;: True or False, # Whether related channels should be proposed.
      &quot;title&quot;: &quot;A String&quot;, # Specifies the channel title.
      &quot;trackingAnalyticsAccountId&quot;: &quot;A String&quot;, # The ID for a Google Analytics account to track and measure traffic to the channels.
      &quot;unsubscribedTrailer&quot;: &quot;A String&quot;, # The trailer of the channel, for users that are not subscribers.
    },
    &quot;hints&quot;: [ # Additional experimental branding properties.
      { # A pair Property / Value.
        &quot;property&quot;: &quot;A String&quot;, # A property.
        &quot;value&quot;: &quot;A String&quot;, # The property&#x27;s value.
      },
    ],
    &quot;image&quot;: { # Branding properties for images associated with the channel. # Branding properties for branding images.
      &quot;backgroundImageUrl&quot;: { # The URL for the background image shown on the video watch page. The image should be 1200px by 615px, with a maximum file size of 128k.
        &quot;default&quot;: &quot;A String&quot;,
        &quot;defaultLanguage&quot;: { # The language of the default property.
          &quot;value&quot;: &quot;A String&quot;,
        },
        &quot;localized&quot;: [
          {
            &quot;language&quot;: &quot;A String&quot;,
            &quot;value&quot;: &quot;A String&quot;,
          },
        ],
      },
      &quot;bannerExternalUrl&quot;: &quot;A String&quot;, # This is used only in update requests; if it&#x27;s set, we use this URL to generate all of the above banner URLs.
      &quot;bannerImageUrl&quot;: &quot;A String&quot;, # Banner image. Desktop size (1060x175).
      &quot;bannerMobileExtraHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size high resolution (1440x395).
      &quot;bannerMobileHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size high resolution (1280x360).
      &quot;bannerMobileImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size (640x175).
      &quot;bannerMobileLowImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size low resolution (320x88).
      &quot;bannerMobileMediumHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Mobile size medium/high resolution (960x263).
      &quot;bannerTabletExtraHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Tablet size extra high resolution (2560x424).
      &quot;bannerTabletHdImageUrl&quot;: &quot;A String&quot;, # Banner image. Tablet size high resolution (2276x377).
      &quot;bannerTabletImageUrl&quot;: &quot;A String&quot;, # Banner image. Tablet size (1707x283).
      &quot;bannerTabletLowImageUrl&quot;: &quot;A String&quot;, # Banner image. Tablet size low resolution (1138x188).
      &quot;bannerTvHighImageUrl&quot;: &quot;A String&quot;, # Banner image. TV size high resolution (1920x1080).
      &quot;bannerTvImageUrl&quot;: &quot;A String&quot;, # Banner image. TV size extra high resolution (2120x1192).
      &quot;bannerTvLowImageUrl&quot;: &quot;A String&quot;, # Banner image. TV size low resolution (854x480).
      &quot;bannerTvMediumImageUrl&quot;: &quot;A String&quot;, # Banner image. TV size medium resolution (1280x720).
      &quot;largeBrandedBannerImageImapScript&quot;: { # The image map script for the large banner image.
        &quot;default&quot;: &quot;A String&quot;,
        &quot;defaultLanguage&quot;: { # The language of the default property.
          &quot;value&quot;: &quot;A String&quot;,
        },
        &quot;localized&quot;: [
          {
            &quot;language&quot;: &quot;A String&quot;,
            &quot;value&quot;: &quot;A String&quot;,
          },
        ],
      },
      &quot;largeBrandedBannerImageUrl&quot;: { # The URL for the 854px by 70px image that appears below the video player in the expanded video view of the video watch page.
        &quot;default&quot;: &quot;A String&quot;,
        &quot;defaultLanguage&quot;: { # The language of the default property.
          &quot;value&quot;: &quot;A String&quot;,
        },
        &quot;localized&quot;: [
          {
            &quot;language&quot;: &quot;A String&quot;,
            &quot;value&quot;: &quot;A String&quot;,
          },
        ],
      },
      &quot;smallBrandedBannerImageImapScript&quot;: { # The image map script for the small banner image.
        &quot;default&quot;: &quot;A String&quot;,
        &quot;defaultLanguage&quot;: { # The language of the default property.
          &quot;value&quot;: &quot;A String&quot;,
        },
        &quot;localized&quot;: [
          {
            &quot;language&quot;: &quot;A String&quot;,
            &quot;value&quot;: &quot;A String&quot;,
          },
        ],
      },
      &quot;smallBrandedBannerImageUrl&quot;: { # The URL for the 640px by 70px banner image that appears below the video player in the default view of the video watch page. The URL for the image that appears above the top-left corner of the video player. This is a 25-pixel-high image with a flexible width that cannot exceed 170 pixels.
        &quot;default&quot;: &quot;A String&quot;,
        &quot;defaultLanguage&quot;: { # The language of the default property.
          &quot;value&quot;: &quot;A String&quot;,
        },
        &quot;localized&quot;: [
          {
            &quot;language&quot;: &quot;A String&quot;,
            &quot;value&quot;: &quot;A String&quot;,
          },
        ],
      },
      &quot;trackingImageUrl&quot;: &quot;A String&quot;, # The URL for a 1px by 1px tracking pixel that can be used to collect statistics for views of the channel or video pages.
      &quot;watchIconImageUrl&quot;: &quot;A String&quot;,
    },
    &quot;watch&quot;: { # Branding properties for the watch. All deprecated. # Branding properties for the watch page.
      &quot;backgroundColor&quot;: &quot;A String&quot;, # The text color for the video watch page&#x27;s branded area.
      &quot;featuredPlaylistId&quot;: &quot;A String&quot;, # An ID that uniquely identifies a playlist that displays next to the video player.
      &quot;textColor&quot;: &quot;A String&quot;, # The background color for the video watch page&#x27;s branded area.
    },
  },
  &quot;contentDetails&quot;: { # Details about the content of a channel. # The contentDetails object encapsulates information about the channel&#x27;s content.
    &quot;relatedPlaylists&quot;: {
      &quot;favorites&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s favorite videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
      &quot;likes&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s liked videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
      &quot;uploads&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s uploaded videos. Use the videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos.
      &quot;watchHistory&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s watch history. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
      &quot;watchLater&quot;: &quot;A String&quot;, # The ID of the playlist that contains the channel&quot;s watch later playlist. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
    },
  },
  &quot;contentOwnerDetails&quot;: { # The contentOwnerDetails object encapsulates channel data that is relevant for YouTube Partners linked with the channel. # The contentOwnerDetails object encapsulates channel data that is relevant for YouTube Partners linked with the channel.
    &quot;contentOwner&quot;: &quot;A String&quot;, # The ID of the content owner linked to the channel.
    &quot;timeLinked&quot;: &quot;A String&quot;, # The date and time of when the channel was linked to the content owner. The value is specified in ISO 8601 format.
  },
  &quot;conversionPings&quot;: { # The conversionPings object encapsulates information about conversion pings that need to be respected by the channel. # The conversionPings object encapsulates information about conversion pings that need to be respected by the channel.
    &quot;pings&quot;: [ # Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
      { # Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
        &quot;context&quot;: &quot;A String&quot;, # Defines the context of the ping.
        &quot;conversionUrl&quot;: &quot;A String&quot;, # The url (without the schema) that the player shall send the ping to. It&#x27;s at caller&#x27;s descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D cview%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA&amp;labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping.
      },
    ],
  },
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel.
  &quot;kind&quot;: &quot;youtube#channel&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#channel&quot;.
  &quot;localizations&quot;: { # Localizations for different languages
    &quot;a_key&quot;: { # Channel localization setting
      &quot;description&quot;: &quot;A String&quot;, # The localized strings for channel&#x27;s description.
      &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel&#x27;s title.
    },
  },
  &quot;snippet&quot;: { # Basic details about a channel, including title, description and thumbnails. # The snippet object contains basic details about the channel, such as its title, description, and thumbnail images.
    &quot;country&quot;: &quot;A String&quot;, # The country of the channel.
    &quot;customUrl&quot;: &quot;A String&quot;, # The custom url of the channel.
    &quot;defaultLanguage&quot;: &quot;A String&quot;, # The language of the channel&#x27;s default title and description.
    &quot;description&quot;: &quot;A String&quot;, # The description of the channel.
    &quot;localized&quot;: { # Channel localization setting # Localized title and description, read-only.
      &quot;description&quot;: &quot;A String&quot;, # The localized strings for channel&#x27;s description.
      &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel&#x27;s title.
    },
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time that the channel was created. The value is specified in &lt; a href=&quot;//www.w3.org/TR/NOTE-datetime&quot;&gt;ISO 8601 format.
    &quot;thumbnails&quot;: { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the channel. 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. When displaying thumbnails in your application, make sure that your code uses the image URLs exactly as they are returned in API responses. For example, your application should not use the http domain instead of the https domain in a URL returned in an API response. Beginning in July 2018, channel thumbnail URLs will only be available in the https domain, which is how the URLs appear in API responses. After that time, you might see broken images in your application if it tries to load YouTube images from the http domain. Thumbnail images might be empty for newly created channels and might take up to one day to populate.
      &quot;default&quot;: { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;high&quot;: { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width 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;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;medium&quot;: { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
      &quot;standard&quot;: { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
        &quot;height&quot;: 42, # (Optional) Height of the thumbnail image.
        &quot;url&quot;: &quot;A String&quot;, # The thumbnail image&#x27;s URL.
        &quot;width&quot;: 42, # (Optional) Width of the thumbnail image.
      },
    },
    &quot;title&quot;: &quot;A String&quot;, # The channel&#x27;s title.
  },
  &quot;statistics&quot;: { # Statistics about a channel: number of subscribers, number of videos in the channel, etc. # The statistics object encapsulates statistics for the channel.
    &quot;commentCount&quot;: &quot;A String&quot;, # The number of comments for the channel.
    &quot;hiddenSubscriberCount&quot;: True or False, # Whether or not the number of subscribers is shown for this user.
    &quot;subscriberCount&quot;: &quot;A String&quot;, # The number of subscribers that the channel has.
    &quot;videoCount&quot;: &quot;A String&quot;, # The number of videos uploaded to the channel.
    &quot;viewCount&quot;: &quot;A String&quot;, # The number of times the channel has been viewed.
  },
  &quot;status&quot;: { # JSON template for the status part of a channel. # The status object encapsulates information about the privacy status of the channel.
    &quot;isLinked&quot;: True or False, # If true, then the user is linked to either a YouTube username or G+ account. Otherwise, the user doesn&#x27;t have a public YouTube identity.
    &quot;longUploadsStatus&quot;: &quot;A String&quot;, # The long uploads status of this channel. See https://support.google.com/youtube/answer/71673 for more information.
    &quot;madeForKids&quot;: True or False,
    &quot;privacyStatus&quot;: &quot;A String&quot;, # Privacy status of the channel.
    &quot;selfDeclaredMadeForKids&quot;: True or False,
  },
  &quot;topicDetails&quot;: { # Freebase topic information related to the channel. # The topicDetails object encapsulates information about Freebase topics associated with the channel.
    &quot;topicCategories&quot;: [ # A list of Wikipedia URLs that describe the channel&#x27;s content.
      &quot;A String&quot;,
    ],
    &quot;topicIds&quot;: [ # A list of Freebase topic IDs associated with the channel. You can retrieve information about each topic using the Freebase Topic API.
      &quot;A String&quot;,
    ],
  },
}</pre>
</div>

</body></html>