<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.channelSections.html">channelSections</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(id, onBehalfOfContentOwner=None)</a></code></p>
<p class="firstline">Deletes a channelSection.</p>
<p class="toc_element">
  <code><a href="#insert">insert(part=None, body, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None)</a></code></p>
<p class="firstline">Adds a channelSection for the authenticated user's channel.</p>
<p class="toc_element">
  <code><a href="#list">list(part=None, onBehalfOfContentOwner=None, hl=None, channelId=None, mine=None, id=None)</a></code></p>
<p class="firstline">Returns channelSection resources that match the API request criteria.</p>
<p class="toc_element">
  <code><a href="#update">update(part=None, body, onBehalfOfContentOwner=None)</a></code></p>
<p class="firstline">Update a channelSection.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(id, onBehalfOfContentOwner=None)</code>
  <pre>Deletes a channelSection.

Args:
  id: string, The id parameter specifies the YouTube channelSection ID for the resource that is being deleted. In a channelSection resource, the id property specifies the YouTube channelSection ID. (required)
  onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.

The onBehalfOfContentOwner parameter indicates that the request'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.
</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(part=None, body, onBehalfOfContentOwner=None, onBehalfOfContentOwnerChannel=None)</code>
  <pre>Adds a channelSection for the authenticated user's channel.

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)
  body: object, The request body. (required)
    The object takes the form of:

{
    "kind": "youtube#channelSection", # Identifies what kind of resource this is. Value: the fixed string "youtube#channelSection".
    "targeting": { # ChannelSection targeting setting. # The targeting object contains basic targeting settings about the channel section.
      "languages": [ # The language the channel section is targeting.
        "A String",
      ],
      "regions": [ # The region the channel section is targeting.
        "A String",
      ],
      "countries": [ # The country the channel section is targeting.
        "A String",
      ],
    },
    "contentDetails": { # 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.
      "channels": [ # The channel ids for type multiple_channels.
        "A String",
      ],
      "playlists": [ # The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed.
        "A String",
      ],
    },
    "snippet": { # 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.
      "style": "A String", # The style of the channel section.
      "title": "A String", # The channel section's title for multiple_playlists and multiple_channels.
      "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the channel section.
      "defaultLanguage": "A String", # The language of the channel section's default title and description.
      "position": 42, # The position of the channel section in the channel.
      "type": "A String", # The type of the channel section.
      "localized": { # ChannelSection localization setting # Localized title, read-only.
        "title": "A String", # The localized strings for channel section's title.
      },
    },
    "etag": "A String", # Etag of this resource.
    "id": "A String", # The ID that YouTube uses to uniquely identify the channel section.
    "localizations": { # Localizations for different languages
      "a_key": { # ChannelSection localization setting # The language tag, using string since map_key require simple types.
        "title": "A String", # The localized strings for channel section's title.
      },
    },
  }

  onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.

The onBehalfOfContentOwner parameter indicates that the request'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.

Returns:
  An object of the form:

    {
      "kind": "youtube#channelSection", # Identifies what kind of resource this is. Value: the fixed string "youtube#channelSection".
      "targeting": { # ChannelSection targeting setting. # The targeting object contains basic targeting settings about the channel section.
        "languages": [ # The language the channel section is targeting.
          "A String",
        ],
        "regions": [ # The region the channel section is targeting.
          "A String",
        ],
        "countries": [ # The country the channel section is targeting.
          "A String",
        ],
      },
      "contentDetails": { # 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.
        "channels": [ # The channel ids for type multiple_channels.
          "A String",
        ],
        "playlists": [ # The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed.
          "A String",
        ],
      },
      "snippet": { # 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.
        "style": "A String", # The style of the channel section.
        "title": "A String", # The channel section's title for multiple_playlists and multiple_channels.
        "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the channel section.
        "defaultLanguage": "A String", # The language of the channel section's default title and description.
        "position": 42, # The position of the channel section in the channel.
        "type": "A String", # The type of the channel section.
        "localized": { # ChannelSection localization setting # Localized title, read-only.
          "title": "A String", # The localized strings for channel section's title.
        },
      },
      "etag": "A String", # Etag of this resource.
      "id": "A String", # The ID that YouTube uses to uniquely identify the channel section.
      "localizations": { # Localizations for different languages
        "a_key": { # ChannelSection localization setting # The language tag, using string since map_key require simple types.
          "title": "A String", # The localized strings for channel section's title.
        },
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(part=None, onBehalfOfContentOwner=None, hl=None, channelId=None, mine=None, id=None)</code>
  <pre>Returns channelSection resources that match the API request criteria.

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)
  onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.

The onBehalfOfContentOwner parameter indicates that the request'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.
  hl: string, The hl parameter indicates that the snippet.localized property values in the returned channelSection resources should be in the specified language if localized values for that language are available. For example, if the API request specifies hl=de, the snippet.localized properties in the API response will contain German titles if German titles are available. Channel owners can provide localized channel section titles using either the channelSections.insert or channelSections.update method.
  channelId: string, The channelId parameter specifies a YouTube channel ID. The API will only return that channel's channelSections.
  mine: boolean, Set this parameter's value to true to retrieve a feed of the authenticated user's channelSections.
  id: string, The id parameter specifies a comma-separated list of the YouTube channelSection ID(s) for the resource(s) that are being retrieved. In a channelSection resource, the id property specifies the YouTube channelSection ID.

Returns:
  An object of the form:

    {
    "eventId": "A String", # Serialized EventId of the request which produced this response.
    "items": [ # A list of ChannelSections that match the request criteria.
      {
          "kind": "youtube#channelSection", # Identifies what kind of resource this is. Value: the fixed string "youtube#channelSection".
          "targeting": { # ChannelSection targeting setting. # The targeting object contains basic targeting settings about the channel section.
            "languages": [ # The language the channel section is targeting.
              "A String",
            ],
            "regions": [ # The region the channel section is targeting.
              "A String",
            ],
            "countries": [ # The country the channel section is targeting.
              "A String",
            ],
          },
          "contentDetails": { # 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.
            "channels": [ # The channel ids for type multiple_channels.
              "A String",
            ],
            "playlists": [ # The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed.
              "A String",
            ],
          },
          "snippet": { # 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.
            "style": "A String", # The style of the channel section.
            "title": "A String", # The channel section's title for multiple_playlists and multiple_channels.
            "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the channel section.
            "defaultLanguage": "A String", # The language of the channel section's default title and description.
            "position": 42, # The position of the channel section in the channel.
            "type": "A String", # The type of the channel section.
            "localized": { # ChannelSection localization setting # Localized title, read-only.
              "title": "A String", # The localized strings for channel section's title.
            },
          },
          "etag": "A String", # Etag of this resource.
          "id": "A String", # The ID that YouTube uses to uniquely identify the channel section.
          "localizations": { # Localizations for different languages
            "a_key": { # ChannelSection localization setting # The language tag, using string since map_key require simple types.
              "title": "A String", # The localized strings for channel section's title.
            },
          },
        },
    ],
    "kind": "youtube#channelSectionListResponse", # Identifies what kind of resource this is. Value: the fixed string "youtube#channelSectionListResponse".
    "etag": "A String", # Etag of this resource.
    "visitorId": "A String", # The visitorId identifies the visitor.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(part=None, body, onBehalfOfContentOwner=None)</code>
  <pre>Update a channelSection.

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)
  body: object, The request body. (required)
    The object takes the form of:

{
    "kind": "youtube#channelSection", # Identifies what kind of resource this is. Value: the fixed string "youtube#channelSection".
    "targeting": { # ChannelSection targeting setting. # The targeting object contains basic targeting settings about the channel section.
      "languages": [ # The language the channel section is targeting.
        "A String",
      ],
      "regions": [ # The region the channel section is targeting.
        "A String",
      ],
      "countries": [ # The country the channel section is targeting.
        "A String",
      ],
    },
    "contentDetails": { # 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.
      "channels": [ # The channel ids for type multiple_channels.
        "A String",
      ],
      "playlists": [ # The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed.
        "A String",
      ],
    },
    "snippet": { # 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.
      "style": "A String", # The style of the channel section.
      "title": "A String", # The channel section's title for multiple_playlists and multiple_channels.
      "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the channel section.
      "defaultLanguage": "A String", # The language of the channel section's default title and description.
      "position": 42, # The position of the channel section in the channel.
      "type": "A String", # The type of the channel section.
      "localized": { # ChannelSection localization setting # Localized title, read-only.
        "title": "A String", # The localized strings for channel section's title.
      },
    },
    "etag": "A String", # Etag of this resource.
    "id": "A String", # The ID that YouTube uses to uniquely identify the channel section.
    "localizations": { # Localizations for different languages
      "a_key": { # ChannelSection localization setting # The language tag, using string since map_key require simple types.
        "title": "A String", # The localized strings for channel section's title.
      },
    },
  }

  onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.

The onBehalfOfContentOwner parameter indicates that the request'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.

Returns:
  An object of the form:

    {
      "kind": "youtube#channelSection", # Identifies what kind of resource this is. Value: the fixed string "youtube#channelSection".
      "targeting": { # ChannelSection targeting setting. # The targeting object contains basic targeting settings about the channel section.
        "languages": [ # The language the channel section is targeting.
          "A String",
        ],
        "regions": [ # The region the channel section is targeting.
          "A String",
        ],
        "countries": [ # The country the channel section is targeting.
          "A String",
        ],
      },
      "contentDetails": { # 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.
        "channels": [ # The channel ids for type multiple_channels.
          "A String",
        ],
        "playlists": [ # The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed.
          "A String",
        ],
      },
      "snippet": { # 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.
        "style": "A String", # The style of the channel section.
        "title": "A String", # The channel section's title for multiple_playlists and multiple_channels.
        "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the channel section.
        "defaultLanguage": "A String", # The language of the channel section's default title and description.
        "position": 42, # The position of the channel section in the channel.
        "type": "A String", # The type of the channel section.
        "localized": { # ChannelSection localization setting # Localized title, read-only.
          "title": "A String", # The localized strings for channel section's title.
        },
      },
      "etag": "A String", # Etag of this resource.
      "id": "A String", # The ID that YouTube uses to uniquely identify the channel section.
      "localizations": { # Localizations for different languages
        "a_key": { # ChannelSection localization setting # The language tag, using string since map_key require simple types.
          "title": "A String", # The localized strings for channel section's title.
        },
      },
    }</pre>
</div>

</body></html>