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

<p class="toc_element">
  <code><a href="#get">get(adClientId, adUnitId)</a></code></p>
<p class="firstline">Gets the specified ad unit in the specified ad client.</p>
<p class="toc_element">
  <code><a href="#getAdCode">getAdCode(adClientId, adUnitId)</a></code></p>
<p class="firstline">Get ad code for the specified ad unit.</p>
<p class="toc_element">
  <code><a href="#list">list(adClientId, pageToken=None, includeInactive=None, maxResults=None)</a></code></p>
<p class="firstline">List all ad units in the specified ad client for this AdSense 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(adClientId, adUnitId)</code>
  <pre>Gets the specified ad unit in the specified ad client.

Args:
  adClientId: string, Ad client for which to get the ad unit. (required)
  adUnitId: string, Ad unit to retrieve. (required)

Returns:
  An object of the form:

    {
    "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.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="getAdCode">getAdCode(adClientId, adUnitId)</code>
  <pre>Get ad code for the specified ad unit.

Args:
  adClientId: string, Ad client with contains the ad unit. (required)
  adUnitId: string, Ad unit to get the code for. (required)

Returns:
  An object of the form:

    {
    "ampBody": "A String", # The AMP Auto ad code snippet that goes in the body of an AMP page.
    "adCode": "A String", # The Auto ad code snippet. The ad code snippet.
    "kind": "adsense#adCode", # Kind this is, in this case adsense#adCode.
    "ampHead": "A String", # The AMP Auto ad code snippet that goes in the head of an AMP page.
  }</pre>
</div>

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

Args:
  adClientId: string, Ad client 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>