<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;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;name&quot;: &quot;A String&quot;, # Resource name of this account. Format is accounts/{publisher_id}.
  &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;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;.
}</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;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;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;name&quot;: &quot;A String&quot;, # Resource name of this account. Format is accounts/{publisher_id}.
      &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;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;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`.
}</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>