<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="androidpublisher_v3.html">Google Play Android Developer API</a> . <a href="androidpublisher_v3.edits.html">edits</a> . <a href="androidpublisher_v3.edits.bundles.html">bundles</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(packageName, editId, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all current Android App Bundles of the app and edit.</p>
<p class="toc_element">
  <code><a href="#upload">upload(packageName, editId, ackBundleInstallationWarning=None, media_body=None, media_mime_type=None, x__xgafv=None)</a></code></p>
<p class="firstline">Uploads a new Android App Bundle to this edit. If you are using the Google API client libraries, please increase the timeout of the http request before calling this endpoint (a timeout of 2 minutes is recommended). See [Timeouts and Errors](https://developers.google.com/api-client-library/java/google-api-java-client/errors) for an example in java.</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(packageName, editId, x__xgafv=None)</code>
  <pre>Lists all current Android App Bundles of the app and edit.

Args:
  packageName: string, Package name of the app. (required)
  editId: string, Identifier of the edit. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response listing all bundles.
  &quot;bundles&quot;: [ # All bundles.
    { # Information about a bundle. The resource for BundlesService.
      &quot;sha1&quot;: &quot;A String&quot;, # A sha1 hash of the upload payload, encoded as a hex string and matching the output of the sha1sum command.
      &quot;sha256&quot;: &quot;A String&quot;, # A sha256 hash of the upload payload, encoded as a hex string and matching the output of the sha256sum command.
      &quot;versionCode&quot;: 42, # The version code of the Android App Bundle, as specified in the Android App Bundle&#x27;s base module APK manifest file.
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # The kind of this response (&quot;androidpublisher#bundlesListResponse&quot;).
}</pre>
</div>

<div class="method">
    <code class="details" id="upload">upload(packageName, editId, ackBundleInstallationWarning=None, media_body=None, media_mime_type=None, x__xgafv=None)</code>
  <pre>Uploads a new Android App Bundle to this edit. If you are using the Google API client libraries, please increase the timeout of the http request before calling this endpoint (a timeout of 2 minutes is recommended). See [Timeouts and Errors](https://developers.google.com/api-client-library/java/google-api-java-client/errors) for an example in java.

Args:
  packageName: string, Package name of the app. (required)
  editId: string, Identifier of the edit. (required)
  ackBundleInstallationWarning: boolean, Must be set to true if the bundle installation may trigger a warning on user devices (for example, if installation size may be over a threshold, typically 100 MB).
  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Information about a bundle. The resource for BundlesService.
  &quot;sha1&quot;: &quot;A String&quot;, # A sha1 hash of the upload payload, encoded as a hex string and matching the output of the sha1sum command.
  &quot;sha256&quot;: &quot;A String&quot;, # A sha256 hash of the upload payload, encoded as a hex string and matching the output of the sha256sum command.
  &quot;versionCode&quot;: 42, # The version code of the Android App Bundle, as specified in the Android App Bundle&#x27;s base module APK manifest file.
}</pre>
</div>

</body></html>