<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.customchannels.html">customchannels</a> . <a href="adsense_v1_4.customchannels.adunits.html">adunits</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(adClientId, customChannelId, pageToken=None, includeInactive=None, maxResults=None)</a></code></p>
<p class="firstline">List all ad units in the specified custom channel.</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="list">list(adClientId, customChannelId, pageToken=None, includeInactive=None, maxResults=None)</code>
  <pre>List all ad units in the specified custom channel.

Args:
  adClientId: string, Ad client which contains the custom channel. (required)
  customChannelId: string, Custom channel for which to list ad units. (required)
  pageToken: string, A continuation token, used to page through ad units. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
  includeInactive: boolean, Whether to include inactive ad units. Default: true.
  maxResults: integer, The maximum number of ad units to include in the response, used for paging.

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # Continuation token used to page through ad units. To retrieve the next page of results, set the next request's "pageToken" value to this.
    "items": [ # The ad units returned in this list response.
      {
        "status": "A String", # Status of this ad unit. Possible values are:
            # NEW: Indicates that the ad unit was created within the last seven days and does not yet have any activity associated with it.
            #
            # ACTIVE: Indicates that there has been activity on this ad unit in the last seven days.
            #
            # INACTIVE: Indicates that there has been no activity on this ad unit in the last seven days.
        "kind": "adsense#adUnit", # Kind of resource this is, in this case adsense#adUnit.
        "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
        "name": "A String", # Name of this ad unit.
        "feedAdsSettings": { # Settings specific to feed ads (AFF) - deprecated.
          "minimumWordCount": 42, # The minimum length an entry should be in order to have attached ads.
          "frequency": 42, # The frequency at which ads should appear in the feed (i.e. every N entries).
          "adPosition": "A String", # The position of the ads relative to the feed entries.
          "type": "A String", # The type of ads which should appear.
        },
        "savedStyleId": "A String", # ID of the saved ad style which holds this ad unit's style information.
        "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC - deprecated).
          "type": "A String", # Type of this ad unit.
          "backupOption": { # The backup option to be used in instances where no ad is available.
            "color": "A String", # Color to use when type is set to COLOR.
            "url": "A String", # URL to use when type is set to URL.
            "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
          },
          "size": "A String", # Size of this ad unit.
        },
        "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
        "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC) - deprecated.
          "scriptingLanguage": "A String", # The scripting language to use for this ad unit.
          "type": "A String", # Type of this ad unit.
          "markupLanguage": "A String", # The markup language to use for this ad unit.
          "size": "A String", # Size of this ad unit.
        },
        "customStyle": { # Custom style information specific to this ad unit.
          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
          "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
            "url": "A String", # The color of the ad url.
            "text": "A String", # The color of the ad text.
            "border": "A String", # The color of the ad border.
            "background": "A String", # The color of the ad background.
            "title": "A String", # The color of the ad title.
          },
          "font": { # The font which is included in the style.
            "family": "A String", # The family of the font.
            "size": "A String", # The size of the font.
          },
          "kind": "adsense#adStyle", # Kind this is, in this case adsense#adStyle.
        },
      },
    ],
    "kind": "adsense#adUnits", # Kind of list this is, in this case adsense#adUnits.
    "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>