<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 Developer API</a> . <a href="androidpublisher_v3.edits.html">edits</a> . <a href="androidpublisher_v3.edits.images.html">images</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(packageName, editId, language, imageType, imageId)</a></code></p>
<p class="firstline">Deletes the image (specified by id) from the edit.</p>
<p class="toc_element">
  <code><a href="#deleteall">deleteall(packageName, editId, language, imageType)</a></code></p>
<p class="firstline">Deletes all images for the specified language and image type.</p>
<p class="toc_element">
  <code><a href="#list">list(packageName, editId, language, imageType)</a></code></p>
<p class="firstline">Lists all images for the specified language and image type.</p>
<p class="toc_element">
  <code><a href="#upload">upload(packageName, editId, language, imageType, media_body=None, media_mime_type=None)</a></code></p>
<p class="firstline">Uploads a new image and adds it to the list of images for the specified language and image type.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(packageName, editId, language, imageType, imageId)</code>
  <pre>Deletes the image (specified by id) from the edit.

Args:
  packageName: string, Unique identifier for the Android app that is being updated; for example, &quot;com.spiffygame&quot;. (required)
  editId: string, Unique identifier for this edit. (required)
  language: string, The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass &quot;de-AT&quot;. (required)
  imageType: string, A parameter (required)
    Allowed values
      automotiveScreenshots - 
      daydreamStereoImage - 
      featureGraphic - 
      icon - 
      phoneScreenshots - 
      promoGraphic - 
      sevenInchScreenshots - 
      tenInchScreenshots - 
      tvBanner - 
      tvScreenshots - 
      wearScreenshots - 
  imageId: string, Unique identifier an image within the set of images attached to this edit. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="deleteall">deleteall(packageName, editId, language, imageType)</code>
  <pre>Deletes all images for the specified language and image type.

Args:
  packageName: string, Unique identifier for the Android app that is being updated; for example, &quot;com.spiffygame&quot;. (required)
  editId: string, Unique identifier for this edit. (required)
  language: string, The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass &quot;de-AT&quot;. (required)
  imageType: string, A parameter (required)
    Allowed values
      automotiveScreenshots - 
      daydreamStereoImage - 
      featureGraphic - 
      icon - 
      phoneScreenshots - 
      promoGraphic - 
      sevenInchScreenshots - 
      tenInchScreenshots - 
      tvBanner - 
      tvScreenshots - 
      wearScreenshots - 

Returns:
  An object of the form:

    {
    &quot;deleted&quot;: [
      {
        &quot;id&quot;: &quot;A String&quot;, # A unique id representing this image.
        &quot;sha1&quot;: &quot;A String&quot;, # A sha1 hash of the image that was uploaded.
        &quot;sha256&quot;: &quot;A String&quot;, # A sha256 hash of the image that was uploaded.
        &quot;url&quot;: &quot;A String&quot;, # A URL that will serve a preview of the image.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(packageName, editId, language, imageType)</code>
  <pre>Lists all images for the specified language and image type.

Args:
  packageName: string, Unique identifier for the Android app that is being updated; for example, &quot;com.spiffygame&quot;. (required)
  editId: string, Unique identifier for this edit. (required)
  language: string, The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass &quot;de-AT&quot;. (required)
  imageType: string, A parameter (required)
    Allowed values
      automotiveScreenshots - 
      daydreamStereoImage - 
      featureGraphic - 
      icon - 
      phoneScreenshots - 
      promoGraphic - 
      sevenInchScreenshots - 
      tenInchScreenshots - 
      tvBanner - 
      tvScreenshots - 
      wearScreenshots - 

Returns:
  An object of the form:

    {
    &quot;images&quot;: [
      {
        &quot;id&quot;: &quot;A String&quot;, # A unique id representing this image.
        &quot;sha1&quot;: &quot;A String&quot;, # A sha1 hash of the image that was uploaded.
        &quot;sha256&quot;: &quot;A String&quot;, # A sha256 hash of the image that was uploaded.
        &quot;url&quot;: &quot;A String&quot;, # A URL that will serve a preview of the image.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="upload">upload(packageName, editId, language, imageType, media_body=None, media_mime_type=None)</code>
  <pre>Uploads a new image and adds it to the list of images for the specified language and image type.

Args:
  packageName: string, Unique identifier for the Android app that is being updated; for example, &quot;com.spiffygame&quot;. (required)
  editId: string, Unique identifier for this edit. (required)
  language: string, The language code (a BCP-47 language tag) of the localized listing whose images are to read or modified. For example, to select Austrian German, pass &quot;de-AT&quot;. (required)
  imageType: string, A parameter (required)
    Allowed values
      automotiveScreenshots - 
      daydreamStereoImage - 
      featureGraphic - 
      icon - 
      phoneScreenshots - 
      promoGraphic - 
      sevenInchScreenshots - 
      tenInchScreenshots - 
      tvBanner - 
      tvScreenshots - 
      wearScreenshots - 
  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:

    {
    &quot;image&quot;: {
      &quot;id&quot;: &quot;A String&quot;, # A unique id representing this image.
      &quot;sha1&quot;: &quot;A String&quot;, # A sha1 hash of the image that was uploaded.
      &quot;sha256&quot;: &quot;A String&quot;, # A sha256 hash of the image that was uploaded.
      &quot;url&quot;: &quot;A String&quot;, # A URL that will serve a preview of the image.
    },
  }</pre>
</div>

</body></html>