<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="adsense_v1_4.html">AdSense Management API</a> . <a href="adsense_v1_4.accounts.html">accounts</a> . <a href="adsense_v1_4.accounts.customchannels.html">customchannels</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="adsense_v1_4.accounts.customchannels.adunits.html">adunits()</a></code>
</p>
<p class="firstline">Returns the adunits Resource.</p>

<p class="toc_element">
  <code><a href="#get">get(accountId, adClientId, customChannelId)</a></code></p>
<p class="firstline">Get the specified custom channel from the specified ad client for the specified account.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId, adClientId, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">List all custom channels in the specified ad client for the specified account.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(accountId, adClientId, customChannelId)</code>
  <pre>Get the specified custom channel from the specified ad client for the specified account.

Args:
  accountId: string, Account to which the ad client belongs. (required)
  adClientId: string, Ad client which contains the custom channel. (required)
  customChannelId: string, Custom channel to retrieve. (required)

Returns:
  An object of the form:

    {
    "kind": "adsense#customChannel", # Kind of resource this is, in this case adsense#customChannel.
    "code": "A String", # Code of this custom channel, not necessarily unique across ad clients.
    "targetingInfo": { # The targeting information of this custom channel, if activated.
      "location": "A String", # The locations in which ads appear. (Only valid for content and mobile content ads (deprecated)). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads (deprecated) are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
      "adsAppearOn": "A String", # The name used to describe this channel externally.
      "siteLanguage": "A String", # The language of the sites ads will be displayed on.
      "description": "A String", # The external description of the channel.
    },
    "id": "A String", # Unique identifier of this custom channel. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
    "name": "A String", # Name of this custom channel.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(accountId, adClientId, pageToken=None, maxResults=None)</code>
  <pre>List all custom channels in the specified ad client for the specified account.

Args:
  accountId: string, Account to which the ad client belongs. (required)
  adClientId: string, Ad client for which to list custom channels. (required)
  pageToken: string, A continuation token, used to page through custom channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
  maxResults: integer, The maximum number of custom channels to include in the response, used for paging.

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # Continuation token used to page through custom channels. To retrieve the next page of results, set the next request's "pageToken" value to this.
    "items": [ # The custom channels returned in this list response.
      {
        "kind": "adsense#customChannel", # Kind of resource this is, in this case adsense#customChannel.
        "code": "A String", # Code of this custom channel, not necessarily unique across ad clients.
        "targetingInfo": { # The targeting information of this custom channel, if activated.
          "location": "A String", # The locations in which ads appear. (Only valid for content and mobile content ads (deprecated)). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads (deprecated) are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
          "adsAppearOn": "A String", # The name used to describe this channel externally.
          "siteLanguage": "A String", # The language of the sites ads will be displayed on.
          "description": "A String", # The external description of the channel.
        },
        "id": "A String", # Unique identifier of this custom channel. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
        "name": "A String", # Name of this custom channel.
      },
    ],
    "kind": "adsense#customChannels", # Kind of list this is, in this case adsense#customChannels.
    "etag": "A String", # ETag of this response for caching purposes.
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>