<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.channelSections.html">channelSections</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#delete">delete(id, onBehalfOfContentOwner=None, 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, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=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, id=None, channelId=None, mine=None, hl=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="#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="delete">delete(id, onBehalfOfContentOwner=None, x__xgafv=None)</code>
  <pre>Deletes a resource.

Args:
  id: string, A parameter (required)
  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.
  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, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None, x__xgafv=None)</code>
  <pre>Inserts a new resource into this collection.

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 part names that you can include in the parameter value are snippet and contentDetails. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{
    &quot;kind&quot;: &quot;youtube#channelSection&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#channelSection&quot;.
    &quot;localizations&quot;: { # Localizations for different languages
      &quot;a_key&quot;: { # ChannelSection localization setting
        &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel section&#x27;s title.
      },
    },
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &quot;contentDetails&quot;: { # Details about a channelsection, including playlists and channels. # The contentDetails object contains details about the channel section content, such as a list of playlists or channels featured in the section.
      &quot;playlists&quot;: [ # The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed.
        &quot;A String&quot;,
      ],
      &quot;channels&quot;: [ # The channel ids for type multiple_channels.
        &quot;A String&quot;,
      ],
    },
    &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel section.
    &quot;targeting&quot;: { # ChannelSection targeting setting. # The targeting object contains basic targeting settings about the channel section.
      &quot;regions&quot;: [ # The region the channel section is targeting.
        &quot;A String&quot;,
      ],
      &quot;countries&quot;: [ # The country the channel section is targeting.
        &quot;A String&quot;,
      ],
      &quot;languages&quot;: [ # The language the channel section is targeting.
        &quot;A String&quot;,
      ],
    },
    &quot;snippet&quot;: { # Basic details about a channel section, including title, style and position. # The snippet object contains basic details about the channel section, such as its type, style and title.
      &quot;defaultLanguage&quot;: &quot;A String&quot;, # The language of the channel section&#x27;s default title and description.
      &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that published the channel section.
      &quot;localized&quot;: { # ChannelSection localization setting # Localized title, read-only.
        &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel section&#x27;s title.
      },
      &quot;title&quot;: &quot;A String&quot;, # The channel section&#x27;s title for multiple_playlists and multiple_channels.
      &quot;position&quot;: 42, # The position of the channel section in the channel.
      &quot;style&quot;: &quot;A String&quot;, # The style of the channel section.
      &quot;type&quot;: &quot;A String&quot;, # The type of the channel section.
    },
  }

  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.
  onBehalfOfContentOwnerChannel: string, This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* 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 onBehalfOfContentOwner 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 onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. 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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
      &quot;kind&quot;: &quot;youtube#channelSection&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#channelSection&quot;.
      &quot;localizations&quot;: { # Localizations for different languages
        &quot;a_key&quot;: { # ChannelSection localization setting
          &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel section&#x27;s title.
        },
      },
      &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
      &quot;contentDetails&quot;: { # Details about a channelsection, including playlists and channels. # The contentDetails object contains details about the channel section content, such as a list of playlists or channels featured in the section.
        &quot;playlists&quot;: [ # The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed.
          &quot;A String&quot;,
        ],
        &quot;channels&quot;: [ # The channel ids for type multiple_channels.
          &quot;A String&quot;,
        ],
      },
      &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel section.
      &quot;targeting&quot;: { # ChannelSection targeting setting. # The targeting object contains basic targeting settings about the channel section.
        &quot;regions&quot;: [ # The region the channel section is targeting.
          &quot;A String&quot;,
        ],
        &quot;countries&quot;: [ # The country the channel section is targeting.
          &quot;A String&quot;,
        ],
        &quot;languages&quot;: [ # The language the channel section is targeting.
          &quot;A String&quot;,
        ],
      },
      &quot;snippet&quot;: { # Basic details about a channel section, including title, style and position. # The snippet object contains basic details about the channel section, such as its type, style and title.
        &quot;defaultLanguage&quot;: &quot;A String&quot;, # The language of the channel section&#x27;s default title and description.
        &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that published the channel section.
        &quot;localized&quot;: { # ChannelSection localization setting # Localized title, read-only.
          &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel section&#x27;s title.
        },
        &quot;title&quot;: &quot;A String&quot;, # The channel section&#x27;s title for multiple_playlists and multiple_channels.
        &quot;position&quot;: 42, # The position of the channel section in the channel.
        &quot;style&quot;: &quot;A String&quot;, # The style of the channel section.
        &quot;type&quot;: &quot;A String&quot;, # The type of the channel section.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(part, onBehalfOfContentOwner=None, id=None, channelId=None, mine=None, hl=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 channelSection resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, and contentDetails. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a channelSection resource, the snippet property contains other properties, such as a display title for the channelSection. If you set *part=snippet*, the API response will also contain all of those nested properties. (required) (repeated)
  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.
  id: string, Return the ChannelSections with the given IDs for Stubby or Apiary. (repeated)
  channelId: string, Return the ChannelSections owned by the specified channel ID.
  mine: boolean, Return the ChannelSections owned by the authenticated user.
  hl: string, Return content in specified language
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;visitorId&quot;: &quot;A String&quot;, # The visitorId identifies the visitor.
    &quot;items&quot;: [ # A list of ChannelSections that match the request criteria.
      {
          &quot;kind&quot;: &quot;youtube#channelSection&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#channelSection&quot;.
          &quot;localizations&quot;: { # Localizations for different languages
            &quot;a_key&quot;: { # ChannelSection localization setting
              &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel section&#x27;s title.
            },
          },
          &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
          &quot;contentDetails&quot;: { # Details about a channelsection, including playlists and channels. # The contentDetails object contains details about the channel section content, such as a list of playlists or channels featured in the section.
            &quot;playlists&quot;: [ # The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed.
              &quot;A String&quot;,
            ],
            &quot;channels&quot;: [ # The channel ids for type multiple_channels.
              &quot;A String&quot;,
            ],
          },
          &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel section.
          &quot;targeting&quot;: { # ChannelSection targeting setting. # The targeting object contains basic targeting settings about the channel section.
            &quot;regions&quot;: [ # The region the channel section is targeting.
              &quot;A String&quot;,
            ],
            &quot;countries&quot;: [ # The country the channel section is targeting.
              &quot;A String&quot;,
            ],
            &quot;languages&quot;: [ # The language the channel section is targeting.
              &quot;A String&quot;,
            ],
          },
          &quot;snippet&quot;: { # Basic details about a channel section, including title, style and position. # The snippet object contains basic details about the channel section, such as its type, style and title.
            &quot;defaultLanguage&quot;: &quot;A String&quot;, # The language of the channel section&#x27;s default title and description.
            &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that published the channel section.
            &quot;localized&quot;: { # ChannelSection localization setting # Localized title, read-only.
              &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel section&#x27;s title.
            },
            &quot;title&quot;: &quot;A String&quot;, # The channel section&#x27;s title for multiple_playlists and multiple_channels.
            &quot;position&quot;: 42, # The position of the channel section in the channel.
            &quot;style&quot;: &quot;A String&quot;, # The style of the channel section.
            &quot;type&quot;: &quot;A String&quot;, # The type of the channel section.
          },
        },
    ],
    &quot;kind&quot;: &quot;youtube#channelSectionListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#channelSectionListResponse&quot;.
    &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.
  }</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 part names that you can include in the parameter value are snippet and contentDetails. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{
    &quot;kind&quot;: &quot;youtube#channelSection&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#channelSection&quot;.
    &quot;localizations&quot;: { # Localizations for different languages
      &quot;a_key&quot;: { # ChannelSection localization setting
        &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel section&#x27;s title.
      },
    },
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &quot;contentDetails&quot;: { # Details about a channelsection, including playlists and channels. # The contentDetails object contains details about the channel section content, such as a list of playlists or channels featured in the section.
      &quot;playlists&quot;: [ # The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed.
        &quot;A String&quot;,
      ],
      &quot;channels&quot;: [ # The channel ids for type multiple_channels.
        &quot;A String&quot;,
      ],
    },
    &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel section.
    &quot;targeting&quot;: { # ChannelSection targeting setting. # The targeting object contains basic targeting settings about the channel section.
      &quot;regions&quot;: [ # The region the channel section is targeting.
        &quot;A String&quot;,
      ],
      &quot;countries&quot;: [ # The country the channel section is targeting.
        &quot;A String&quot;,
      ],
      &quot;languages&quot;: [ # The language the channel section is targeting.
        &quot;A String&quot;,
      ],
    },
    &quot;snippet&quot;: { # Basic details about a channel section, including title, style and position. # The snippet object contains basic details about the channel section, such as its type, style and title.
      &quot;defaultLanguage&quot;: &quot;A String&quot;, # The language of the channel section&#x27;s default title and description.
      &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that published the channel section.
      &quot;localized&quot;: { # ChannelSection localization setting # Localized title, read-only.
        &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel section&#x27;s title.
      },
      &quot;title&quot;: &quot;A String&quot;, # The channel section&#x27;s title for multiple_playlists and multiple_channels.
      &quot;position&quot;: 42, # The position of the channel section in the channel.
      &quot;style&quot;: &quot;A String&quot;, # The style of the channel section.
      &quot;type&quot;: &quot;A String&quot;, # The type of the channel section.
    },
  }

  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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
      &quot;kind&quot;: &quot;youtube#channelSection&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#channelSection&quot;.
      &quot;localizations&quot;: { # Localizations for different languages
        &quot;a_key&quot;: { # ChannelSection localization setting
          &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel section&#x27;s title.
        },
      },
      &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
      &quot;contentDetails&quot;: { # Details about a channelsection, including playlists and channels. # The contentDetails object contains details about the channel section content, such as a list of playlists or channels featured in the section.
        &quot;playlists&quot;: [ # The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed.
          &quot;A String&quot;,
        ],
        &quot;channels&quot;: [ # The channel ids for type multiple_channels.
          &quot;A String&quot;,
        ],
      },
      &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel section.
      &quot;targeting&quot;: { # ChannelSection targeting setting. # The targeting object contains basic targeting settings about the channel section.
        &quot;regions&quot;: [ # The region the channel section is targeting.
          &quot;A String&quot;,
        ],
        &quot;countries&quot;: [ # The country the channel section is targeting.
          &quot;A String&quot;,
        ],
        &quot;languages&quot;: [ # The language the channel section is targeting.
          &quot;A String&quot;,
        ],
      },
      &quot;snippet&quot;: { # Basic details about a channel section, including title, style and position. # The snippet object contains basic details about the channel section, such as its type, style and title.
        &quot;defaultLanguage&quot;: &quot;A String&quot;, # The language of the channel section&#x27;s default title and description.
        &quot;channelId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the channel that published the channel section.
        &quot;localized&quot;: { # ChannelSection localization setting # Localized title, read-only.
          &quot;title&quot;: &quot;A String&quot;, # The localized strings for channel section&#x27;s title.
        },
        &quot;title&quot;: &quot;A String&quot;, # The channel section&#x27;s title for multiple_playlists and multiple_channels.
        &quot;position&quot;: 42, # The position of the channel section in the channel.
        &quot;style&quot;: &quot;A String&quot;, # The style of the channel section.
        &quot;type&quot;: &quot;A String&quot;, # The type of the channel section.
      },
    }</pre>
</div>

</body></html>