<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="admob_v1beta.html">AdMob API</a> . <a href="admob_v1beta.accounts.html">accounts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="admob_v1beta.accounts.adUnits.html">adUnits()</a></code>
</p>
<p class="firstline">Returns the adUnits Resource.</p>

<p class="toc_element">
  <code><a href="admob_v1beta.accounts.apps.html">apps()</a></code>
</p>
<p class="firstline">Returns the apps Resource.</p>

<p class="toc_element">
  <code><a href="admob_v1beta.accounts.mediationReport.html">mediationReport()</a></code>
</p>
<p class="firstline">Returns the mediationReport Resource.</p>

<p class="toc_element">
  <code><a href="admob_v1beta.accounts.networkReport.html">networkReport()</a></code>
</p>
<p class="firstline">Returns the networkReport Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets information about the specified AdMob publisher account.</p>
<p class="toc_element">
  <code><a href="#list">list(pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the AdMob publisher account accessible with the client credential. Currently, all credentials have access to at most one AdMob 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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets information about the specified AdMob publisher account.

Args:
  name: string, Resource name of the publisher account to retrieve. Example: accounts/pub-9876543210987654 (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A publisher account contains information relevant to the use of this API, such as the time zone used for the reports.
    &quot;publisherId&quot;: &quot;A String&quot;, # The unique ID by which this publisher account can be identified in the API requests (for example, pub-1234567890).
    &quot;currencyCode&quot;: &quot;A String&quot;, # Currency code of the earning-related metrics, which is the 3-letter code defined in ISO 4217. The daily average rate is used for the currency conversion.
    &quot;reportingTimeZone&quot;: &quot;A String&quot;, # The time zone that is used in reports that are generated for this account. The value is a time-zone ID as specified by the CLDR project, for example, &quot;America/Los_Angeles&quot;.
    &quot;name&quot;: &quot;A String&quot;, # Resource name of this account. Format is accounts/{publisher_id}.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the AdMob publisher account accessible with the client credential. Currently, all credentials have access to at most one AdMob account.

Args:
  pageSize: integer, Maximum number of accounts to return.
  pageToken: string, The value returned by the last `ListPublisherAccountsResponse`; indicates that this is a continuation of a prior `ListPublisherAccounts` call, and that the system should return the next page of data.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for the publisher account list request.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # If not empty, indicates that there might be more accounts for the request; you must pass this value in a new `ListPublisherAccountsRequest`.
    &quot;account&quot;: [ # Publisher that the client credentials can access.
      { # A publisher account contains information relevant to the use of this API, such as the time zone used for the reports.
        &quot;publisherId&quot;: &quot;A String&quot;, # The unique ID by which this publisher account can be identified in the API requests (for example, pub-1234567890).
        &quot;currencyCode&quot;: &quot;A String&quot;, # Currency code of the earning-related metrics, which is the 3-letter code defined in ISO 4217. The daily average rate is used for the currency conversion.
        &quot;reportingTimeZone&quot;: &quot;A String&quot;, # The time zone that is used in reports that are generated for this account. The value is a time-zone ID as specified by the CLDR project, for example, &quot;America/Los_Angeles&quot;.
        &quot;name&quot;: &quot;A String&quot;, # Resource name of this account. Format is accounts/{publisher_id}.
      },
    ],
  }</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>