<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> . <a href="admob_v1beta.accounts.apps.html">apps</a></h1>
<h2>Instance Methods</h2>
<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="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List the apps under the specified 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="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>List the apps under the specified AdMob account.

Args:
  parent: string, Required. Resource name of the account to list apps for. Example: accounts/pub-9876543210987654 (required)
  pageSize: integer, The maximum number of apps to return. If unspecified or 0, at most 1000 apps will be returned. The maximum value is 10,000; values above 10,000 will be coerced to 10,000.
  pageToken: string, The value returned by the last `ListAppsResponse`; indicates that this is a continuation of a prior `ListApps` 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 apps list request.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # If not empty, indicates that there may be more apps for the request; this value should be passed in a new `ListAppsRequest`.
    &quot;apps&quot;: [ # The resulting apps for the requested account.
      { # Describes an AdMob app for a specific platform (For example: Android or iOS).
        &quot;linkedAppInfo&quot;: { # Information from the app store if the app is linked to an app store. # Immutable. The information for an app that is linked to an app store. This field is present if and only if the app is linked to an app store.
          &quot;displayName&quot;: &quot;A String&quot;, # Output only. Display name of the app as it appears in the app store. This is an output-only field, and may be empty if the app cannot be found in the store.
          &quot;appStoreId&quot;: &quot;A String&quot;, # The app store ID of the app; present if and only if the app is linked to an app store. If the app is added to the Google Play store, it will be the application ID of the app. For example: &quot;com.example.myapp&quot;. See https://developer.android.com/studio/build/application-id. If the app is added to the Apple App Store, it will be app store ID. For example &quot;105169111&quot;. Note that setting the app store id is considered an irreversible action. Once an app is linked, it cannot be unlinked.
        },
        &quot;platform&quot;: &quot;A String&quot;, # Describes the platform of the app. Limited to &quot;IOS&quot; and &quot;ANDROID&quot;.
        &quot;manualAppInfo&quot;: { # Information provided for manual apps which are not linked to an application store (Example: Google Play, App Store). # The information for an app that is not linked to any app store. After an app is linked, this information is still retrivable. If no name is provided for the app upon creation, a placeholder name will be used.
          &quot;displayName&quot;: &quot;A String&quot;, # The display name of the app as shown in the AdMob UI, which is provided by the user. The maximum length allowed is 80 characters.
        },
        &quot;name&quot;: &quot;A String&quot;, # Resource name for this app. Format is accounts/{publisher_id}/apps/{app_id_fragment} Example: accounts/pub-9876543210987654/apps/0123456789
        &quot;appId&quot;: &quot;A String&quot;, # The externally visible ID of the app which can be used to integrate with the AdMob SDK. This is a read only property. Example: ca-app-pub-9876543210987654~0123456789
      },
    ],
  }</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>