<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.apks.html">apks</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#addexternallyhosted">addexternallyhosted(packageName, editId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new APK without uploading the APK itself to Google Play, instead</p>
<p class="toc_element">
  <code><a href="#list">list(packageName, editId, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all current APKs of the app and edit.</p>
<p class="toc_element">
  <code><a href="#upload">upload(packageName, editId, x__xgafv=None, media_body=None, media_mime_type=None)</a></code></p>
<p class="firstline">Uploads an APK and adds to the current edit.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="addexternallyhosted">addexternallyhosted(packageName, editId, body=None, x__xgafv=None)</code>
  <pre>Creates a new APK without uploading the APK itself to Google Play, instead
hosting the APK at a specified URL. This function is only available to
organizations using Managed Play whose application is configured to
restrict distribution to the organizations.

Args:
  packageName: string, Package name of the app. (required)
  editId: string, Identifier of the edit. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to create a new externally hosted APK.
    &quot;externallyHostedApk&quot;: { # Defines an APK available for this application that is hosted externally # The definition of the externally-hosted APK and where it is located.
        # and not uploaded to Google Play.
        # This function is only available to organizations using Managed Play whose
        # application is configured to restrict distribution to the organizations.
      &quot;certificateBase64s&quot;: [ # A certificate (or array of certificates if a certificate-chain is used)
          # used to sign this APK, represented as a base64 encoded byte array.
        &quot;A String&quot;,
      ],
      &quot;externallyHostedUrl&quot;: &quot;A String&quot;, # The URL at which the APK is hosted. This must be an https URL.
      &quot;versionName&quot;: &quot;A String&quot;, # The version name of this APK.
      &quot;fileSha256Base64&quot;: &quot;A String&quot;, # The sha256 checksum of this APK, represented as a base64 encoded byte
          # array.
      &quot;iconBase64&quot;: &quot;A String&quot;, # The icon image from the APK, as a base64 encoded byte array.
      &quot;maximumSdk&quot;: 42, # The maximum SDK supported by this APK (optional).
      &quot;usesFeatures&quot;: [ # The features required by this APK (optional).
        &quot;A String&quot;,
      ],
      &quot;usesPermissions&quot;: [ # The permissions requested by this APK.
        { # A permission used by this APK.
          &quot;name&quot;: &quot;A String&quot;, # The name of the permission requested.
          &quot;maxSdkVersion&quot;: 42, # Optionally, the maximum SDK version for which the permission is
              # required.
        },
      ],
      &quot;fileSize&quot;: &quot;A String&quot;, # The file size in bytes of this APK.
      &quot;packageName&quot;: &quot;A String&quot;, # The package name.
      &quot;applicationLabel&quot;: &quot;A String&quot;, # The application label.
      &quot;nativeCodes&quot;: [ # The native code environments supported by this APK (optional).
        &quot;A String&quot;,
      ],
      &quot;versionCode&quot;: 42, # The version code of this APK.
      &quot;fileSha1Base64&quot;: &quot;A String&quot;, # The sha1 checksum of this APK, represented as a base64 encoded byte
          # array.
      &quot;minimumSdk&quot;: 42, # The minimum SDK targeted by this APK.
    },
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for creating a new externally hosted APK.
    &quot;externallyHostedApk&quot;: { # Defines an APK available for this application that is hosted externally # The definition of the externally-hosted APK and where it is located.
        # and not uploaded to Google Play.
        # This function is only available to organizations using Managed Play whose
        # application is configured to restrict distribution to the organizations.
      &quot;certificateBase64s&quot;: [ # A certificate (or array of certificates if a certificate-chain is used)
          # used to sign this APK, represented as a base64 encoded byte array.
        &quot;A String&quot;,
      ],
      &quot;externallyHostedUrl&quot;: &quot;A String&quot;, # The URL at which the APK is hosted. This must be an https URL.
      &quot;versionName&quot;: &quot;A String&quot;, # The version name of this APK.
      &quot;fileSha256Base64&quot;: &quot;A String&quot;, # The sha256 checksum of this APK, represented as a base64 encoded byte
          # array.
      &quot;iconBase64&quot;: &quot;A String&quot;, # The icon image from the APK, as a base64 encoded byte array.
      &quot;maximumSdk&quot;: 42, # The maximum SDK supported by this APK (optional).
      &quot;usesFeatures&quot;: [ # The features required by this APK (optional).
        &quot;A String&quot;,
      ],
      &quot;usesPermissions&quot;: [ # The permissions requested by this APK.
        { # A permission used by this APK.
          &quot;name&quot;: &quot;A String&quot;, # The name of the permission requested.
          &quot;maxSdkVersion&quot;: 42, # Optionally, the maximum SDK version for which the permission is
              # required.
        },
      ],
      &quot;fileSize&quot;: &quot;A String&quot;, # The file size in bytes of this APK.
      &quot;packageName&quot;: &quot;A String&quot;, # The package name.
      &quot;applicationLabel&quot;: &quot;A String&quot;, # The application label.
      &quot;nativeCodes&quot;: [ # The native code environments supported by this APK (optional).
        &quot;A String&quot;,
      ],
      &quot;versionCode&quot;: 42, # The version code of this APK.
      &quot;fileSha1Base64&quot;: &quot;A String&quot;, # The sha1 checksum of this APK, represented as a base64 encoded byte
          # array.
      &quot;minimumSdk&quot;: 42, # The minimum SDK targeted by this APK.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(packageName, editId, x__xgafv=None)</code>
  <pre>Lists all current APKs 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 APKs.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of this response (&quot;androidpublisher#apksListResponse&quot;).
    &quot;apks&quot;: [ # All APKs.
      { # Information about an APK. The resource for ApksService.
        &quot;versionCode&quot;: 42, # The version code of the APK, as specified in the manifest file.
        &quot;binary&quot;: { # Represents the binary payload of an APK. # Information about the binary payload of this APK.
          &quot;sha1&quot;: &quot;A String&quot;, # A sha1 hash of the APK 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 APK payload, encoded as a hex string and matching
              # the output of the sha256sum command.
        },
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="upload">upload(packageName, editId, x__xgafv=None, media_body=None, media_mime_type=None)</code>
  <pre>Uploads an APK and adds to the current 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
  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.

Returns:
  An object of the form:

    { # Information about an APK. The resource for ApksService.
    &quot;versionCode&quot;: 42, # The version code of the APK, as specified in the manifest file.
    &quot;binary&quot;: { # Represents the binary payload of an APK. # Information about the binary payload of this APK.
      &quot;sha1&quot;: &quot;A String&quot;, # A sha1 hash of the APK 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 APK payload, encoded as a hex string and matching
          # the output of the sha256sum command.
    },
  }</pre>
</div>

</body></html>