<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.images.html">images</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="#delete">delete(packageName, editId, language, imageType, imageId, x__xgafv=None)</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, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes all images for the specified language and image type. Returns an empty response if no images are found.</p>
<p class="toc_element">
  <code><a href="#list">list(packageName, editId, language, imageType, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all images. The response may be empty.</p>
<p class="toc_element">
  <code><a href="#upload">upload(packageName, editId, language, imageType, media_body=None, media_mime_type=None, x__xgafv=None)</a></code></p>
<p class="firstline">Uploads an image of the specified language and image type, and adds to the edit.</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="delete">delete(packageName, editId, language, imageType, imageId, x__xgafv=None)</code>
  <pre>Deletes the image (specified by id) from the edit.

Args:
  packageName: string, Package name of the app. (required)
  editId: string, Identifier of the edit. (required)
  language: string, Language localization code (a BCP-47 language tag; for example, &quot;de-AT&quot; for Austrian German). (required)
  imageType: string, Type of the Image. (required)
    Allowed values
      appImageTypeUnspecified - Unspecified type. Do not use.
      phoneScreenshots - Phone screenshot.
      sevenInchScreenshots - Seven inch screenshot.
      tenInchScreenshots - Ten inch screenshot.
      tvScreenshots - TV screenshot.
      wearScreenshots - Wear screenshot.
      icon - Icon.
      featureGraphic - Feature graphic.
      tvBanner - TV banner.
  imageId: string, Unique identifier an image within the set of images attached to this edit. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="deleteall">deleteall(packageName, editId, language, imageType, x__xgafv=None)</code>
  <pre>Deletes all images for the specified language and image type. Returns an empty response if no images are found.

Args:
  packageName: string, Package name of the app. (required)
  editId: string, Identifier of the edit. (required)
  language: string, Language localization code (a BCP-47 language tag; for example, &quot;de-AT&quot; for Austrian German). Providing a language that is not supported by the App is a no-op. (required)
  imageType: string, Type of the Image. Providing an image type that refers to no images is a no-op. (required)
    Allowed values
      appImageTypeUnspecified - Unspecified type. Do not use.
      phoneScreenshots - Phone screenshot.
      sevenInchScreenshots - Seven inch screenshot.
      tenInchScreenshots - Ten inch screenshot.
      tvScreenshots - TV screenshot.
      wearScreenshots - Wear screenshot.
      icon - Icon.
      featureGraphic - Feature graphic.
      tvBanner - TV banner.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for deleting all images.
  &quot;deleted&quot;: [ # The deleted images.
    { # An uploaded image. The resource for ImagesService.
      &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.
      &quot;sha256&quot;: &quot;A String&quot;, # A sha256 hash of the image.
      &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, x__xgafv=None)</code>
  <pre>Lists all images. The response may be empty.

Args:
  packageName: string, Package name of the app. (required)
  editId: string, Identifier of the edit. (required)
  language: string, Language localization code (a BCP-47 language tag; for example, &quot;de-AT&quot; for Austrian German). There must be a store listing for the specified language. (required)
  imageType: string, Type of the Image. Providing an image type that refers to no images will return an empty response. (required)
    Allowed values
      appImageTypeUnspecified - Unspecified type. Do not use.
      phoneScreenshots - Phone screenshot.
      sevenInchScreenshots - Seven inch screenshot.
      tenInchScreenshots - Ten inch screenshot.
      tvScreenshots - TV screenshot.
      wearScreenshots - Wear screenshot.
      icon - Icon.
      featureGraphic - Feature graphic.
      tvBanner - TV banner.
  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 images.
  &quot;images&quot;: [ # All listed Images.
    { # An uploaded image. The resource for ImagesService.
      &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.
      &quot;sha256&quot;: &quot;A String&quot;, # A sha256 hash of the image.
      &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, x__xgafv=None)</code>
  <pre>Uploads an image of the specified language and image type, and adds to the edit.

Args:
  packageName: string, Package name of the app. (required)
  editId: string, Identifier of the edit. (required)
  language: string, Language localization code (a BCP-47 language tag; for example, &quot;de-AT&quot; for Austrian German). Providing a language that is not supported by the App is a no-op. (required)
  imageType: string, Type of the Image. (required)
    Allowed values
      appImageTypeUnspecified - Unspecified type. Do not use.
      phoneScreenshots - Phone screenshot.
      sevenInchScreenshots - Seven inch screenshot.
      tenInchScreenshots - Ten inch screenshot.
      tvScreenshots - TV screenshot.
      wearScreenshots - Wear screenshot.
      icon - Icon.
      featureGraphic - Feature graphic.
      tvBanner - TV banner.
  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:

    { # Response for uploading an image.
  &quot;image&quot;: { # An uploaded image. The resource for ImagesService. # The uploaded image.
    &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.
    &quot;sha256&quot;: &quot;A String&quot;, # A sha256 hash of the image.
    &quot;url&quot;: &quot;A String&quot;, # A URL that will serve a preview of the image.
  },
}</pre>
</div>

</body></html>