<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_v1.html">AdMob API</a> . <a href="admob_v1.accounts.html">accounts</a> . <a href="admob_v1.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;apps&quot;: [ # The resulting apps for the requested account.
    { # Describes an AdMob app for a specific platform (For example: Android or iOS).
      &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
      &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;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;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;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;platform&quot;: &quot;A String&quot;, # Describes the platform of the app. Limited to &quot;IOS&quot; and &quot;ANDROID&quot;.
    },
  ],
  &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`.
}</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>