<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="chromemanagement_v1.html">Chrome Management API</a> . <a href="chromemanagement_v1.customers.html">customers</a> . <a href="chromemanagement_v1.customers.apps.html">apps</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="chromemanagement_v1.customers.apps.android.html">android()</a></code>
</p>
<p class="firstline">Returns the android Resource.</p>

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

<p class="toc_element">
  <code><a href="chromemanagement_v1.customers.apps.web.html">web()</a></code>
</p>
<p class="firstline">Returns the web 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="#countChromeAppRequests">countChromeAppRequests(customer, orderBy=None, orgUnitId=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Generate summary of app installation requests.</p>
<p class="toc_element">
  <code><a href="#countChromeAppRequests_next">countChromeAppRequests_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="countChromeAppRequests">countChromeAppRequests(customer, orderBy=None, orgUnitId=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Generate summary of app installation requests.

Args:
  customer: string, Required. Customer id or &quot;my_customer&quot; to use the customer associated to the account making the request. (required)
  orderBy: string, Field used to order results. Supported fields: * request_count * latest_request_time
  orgUnitId: string, The ID of the organizational unit.
  pageSize: integer, Maximum number of results to return. Maximum and default are 50, anything above will be coerced to 50.
  pageToken: string, Token to specify the page of the request to be returned.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response containing summary of requested app installations.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to specify the next page in the list.
  &quot;requestedApps&quot;: [ # Count of requested apps matching request.
    { # Details of an app installation request.
      &quot;appDetails&quot;: &quot;A String&quot;, # Output only. Format: app_details=customers/{customer_id}/apps/chrome/{app_id}
      &quot;appId&quot;: &quot;A String&quot;, # Output only. Unique store identifier for the app. Example: &quot;gmbmikajjgmnabiglmofipeabaddhgne&quot; for the Save to Google Drive Chrome extension.
      &quot;detailUri&quot;: &quot;A String&quot;, # Output only. The uri for the detail page of the item.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. App&#x27;s display name.
      &quot;iconUri&quot;: &quot;A String&quot;, # Output only. A link to an image that can be used as an icon for the product.
      &quot;latestRequestTime&quot;: &quot;A String&quot;, # Output only. The timestamp of the most recently made request for this app.
      &quot;requestCount&quot;: &quot;A String&quot;, # Output only. Total count of requests for this app.
    },
  ],
  &quot;totalSize&quot;: 42, # Total number of matching app requests.
}</pre>
</div>

<div class="method">
    <code class="details" id="countChromeAppRequests_next">countChromeAppRequests_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>