<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_v2.html">Google Play Developer API</a> . <a href="androidpublisher_v2.edits.html">edits</a> . <a href="androidpublisher_v2.edits.details.html">details</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(packageName, editId)</a></code></p>
<p class="firstline">Fetches app details for this edit. This includes the default language and developer support contact information.</p>
<p class="toc_element">
  <code><a href="#patch">patch(packageName, editId, body)</a></code></p>
<p class="firstline">Updates app details for this edit. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(packageName, editId, body)</a></code></p>
<p class="firstline">Updates app details for this edit.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(packageName, editId)</code>
  <pre>Fetches app details for this edit. This includes the default language and developer support contact information.

Args:
  packageName: string, Unique identifier for the Android app that is being updated; for example, "com.spiffygame". (required)
  editId: string, Unique identifier for this edit. (required)

Returns:
  An object of the form:

    {
      "contactEmail": "A String", # The user-visible support email for this app.
      "contactPhone": "A String", # The user-visible support telephone number for this app.
      "contactWebsite": "A String", # The user-visible website for this app.
      "defaultLanguage": "A String", # Default language code, in BCP 47 format (eg "en-US").
    }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(packageName, editId, body)</code>
  <pre>Updates app details for this edit. This method supports patch semantics.

Args:
  packageName: string, Unique identifier for the Android app that is being updated; for example, "com.spiffygame". (required)
  editId: string, Unique identifier for this edit. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "contactEmail": "A String", # The user-visible support email for this app.
    "contactPhone": "A String", # The user-visible support telephone number for this app.
    "contactWebsite": "A String", # The user-visible website for this app.
    "defaultLanguage": "A String", # Default language code, in BCP 47 format (eg "en-US").
  }


Returns:
  An object of the form:

    {
      "contactEmail": "A String", # The user-visible support email for this app.
      "contactPhone": "A String", # The user-visible support telephone number for this app.
      "contactWebsite": "A String", # The user-visible website for this app.
      "defaultLanguage": "A String", # Default language code, in BCP 47 format (eg "en-US").
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(packageName, editId, body)</code>
  <pre>Updates app details for this edit.

Args:
  packageName: string, Unique identifier for the Android app that is being updated; for example, "com.spiffygame". (required)
  editId: string, Unique identifier for this edit. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "contactEmail": "A String", # The user-visible support email for this app.
    "contactPhone": "A String", # The user-visible support telephone number for this app.
    "contactWebsite": "A String", # The user-visible website for this app.
    "defaultLanguage": "A String", # Default language code, in BCP 47 format (eg "en-US").
  }


Returns:
  An object of the form:

    {
      "contactEmail": "A String", # The user-visible support email for this app.
      "contactPhone": "A String", # The user-visible support telephone number for this app.
      "contactWebsite": "A String", # The user-visible website for this app.
      "defaultLanguage": "A String", # Default language code, in BCP 47 format (eg "en-US").
    }</pre>
</div>

</body></html>