<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.adclients.html">adclients</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#getAdCode">getAdCode(accountId, adClientId)</a></code></p>
<p class="firstline">Get Auto ad code for a given ad client.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId, maxResults=None, pageToken=None)</a></code></p>
<p class="firstline">List all ad clients in 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="getAdCode">getAdCode(accountId, adClientId)</code>
  <pre>Get Auto ad code for a given ad client.

Args:
  accountId: string, Account which contains the ad client. (required)
  adClientId: string, Ad client to get the code for. (required)

Returns:
  An object of the form:

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

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

Args:
  accountId: string, Account for which to list ad clients. (required)
  maxResults: integer, The maximum number of ad clients to include in the response, used for paging.
  pageToken: string, A continuation token, used to page through ad clients. To retrieve the next page, set this parameter to the value of &quot;nextPageToken&quot; from the previous response.

Returns:
  An object of the form:

    {
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Continuation token used to page through ad clients. To retrieve the next page of results, set the next request&#x27;s &quot;pageToken&quot; value to this.
    &quot;kind&quot;: &quot;adsense#adClients&quot;, # Kind of list this is, in this case adsense#adClients.
    &quot;items&quot;: [ # The ad clients returned in this list response.
      {
        &quot;kind&quot;: &quot;adsense#adClient&quot;, # Kind of resource this is, in this case adsense#adClient.
        &quot;supportsReporting&quot;: True or False, # Whether this ad client supports being reported on.
        &quot;arcOptIn&quot;: True or False, # Whether this ad client is opted in to ARC.
        &quot;id&quot;: &quot;A String&quot;, # Unique identifier of this ad client.
        &quot;productCode&quot;: &quot;A String&quot;, # This ad client&#x27;s product code, which corresponds to the PRODUCT_CODE report dimension.
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # 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 &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>