<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.reviews.html">reviews</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="#get">get(packageName, reviewId, translationLanguage=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a single review.</p>
<p class="toc_element">
  <code><a href="#list">list(packageName, maxResults=None, startIndex=None, token=None, translationLanguage=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all reviews.</p>
<p class="toc_element">
  <code><a href="#reply">reply(packageName, reviewId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Replies to a single review, or updates an existing reply.</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="get">get(packageName, reviewId, translationLanguage=None, x__xgafv=None)</code>
  <pre>Gets a single review.

Args:
  packageName: string, Package name of the app. (required)
  reviewId: string, Unique identifier for a review. (required)
  translationLanguage: string, Language localization code.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Android app review.
  &quot;authorName&quot;: &quot;A String&quot;, # The name of the user who wrote the review.
  &quot;comments&quot;: [ # A repeated field containing comments for the review.
    { # An entry of conversation between user and developer.
      &quot;developerComment&quot;: { # Developer entry from conversation between user and developer. # A comment from a developer.
        &quot;lastModified&quot;: { # A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970. # The last time at which this comment was updated.
          &quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Must be from 0 to 999,999,999 inclusive.
          &quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch.
        },
        &quot;text&quot;: &quot;A String&quot;, # The content of the comment, i.e. reply body.
      },
      &quot;userComment&quot;: { # User entry from conversation between user and developer. # A comment from a user.
        &quot;androidOsVersion&quot;: 42, # Integer Android SDK version of the user&#x27;s device at the time the review was written, e.g. 23 is Marshmallow. May be absent.
        &quot;appVersionCode&quot;: 42, # Integer version code of the app as installed at the time the review was written. May be absent.
        &quot;appVersionName&quot;: &quot;A String&quot;, # String version name of the app as installed at the time the review was written. May be absent.
        &quot;device&quot;: &quot;A String&quot;, # Codename for the reviewer&#x27;s device, e.g. klte, flounder. May be absent.
        &quot;deviceMetadata&quot;: { # Characteristics of the user&#x27;s device. # Information about the characteristics of the user&#x27;s device.
          &quot;cpuMake&quot;: &quot;A String&quot;, # Device CPU make, e.g. &quot;Qualcomm&quot;
          &quot;cpuModel&quot;: &quot;A String&quot;, # Device CPU model, e.g. &quot;MSM8974&quot;
          &quot;deviceClass&quot;: &quot;A String&quot;, # Device class (e.g. tablet)
          &quot;glEsVersion&quot;: 42, # OpenGL version
          &quot;manufacturer&quot;: &quot;A String&quot;, # Device manufacturer (e.g. Motorola)
          &quot;nativePlatform&quot;: &quot;A String&quot;, # Comma separated list of native platforms (e.g. &quot;arm&quot;, &quot;arm7&quot;)
          &quot;productName&quot;: &quot;A String&quot;, # Device model name (e.g. Droid)
          &quot;ramMb&quot;: 42, # Device RAM in Megabytes, e.g. &quot;2048&quot;
          &quot;screenDensityDpi&quot;: 42, # Screen density in DPI
          &quot;screenHeightPx&quot;: 42, # Screen height in pixels
          &quot;screenWidthPx&quot;: 42, # Screen width in pixels
        },
        &quot;lastModified&quot;: { # A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970. # The last time at which this comment was updated.
          &quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Must be from 0 to 999,999,999 inclusive.
          &quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch.
        },
        &quot;originalText&quot;: &quot;A String&quot;, # Untranslated text of the review, where the review was translated. If the review was not translated this is left blank.
        &quot;reviewerLanguage&quot;: &quot;A String&quot;, # Language code for the reviewer. This is taken from the device settings so is not guaranteed to match the language the review is written in. May be absent.
        &quot;starRating&quot;: 42, # The star rating associated with the review, from 1 to 5.
        &quot;text&quot;: &quot;A String&quot;, # The content of the comment, i.e. review body. In some cases users have been able to write a review with separate title and body; in those cases the title and body are concatenated and separated by a tab character.
        &quot;thumbsDownCount&quot;: 42, # Number of users who have given this review a thumbs down.
        &quot;thumbsUpCount&quot;: 42, # Number of users who have given this review a thumbs up.
      },
    },
  ],
  &quot;reviewId&quot;: &quot;A String&quot;, # Unique identifier for this review.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(packageName, maxResults=None, startIndex=None, token=None, translationLanguage=None, x__xgafv=None)</code>
  <pre>Lists all reviews.

Args:
  packageName: string, Package name of the app. (required)
  maxResults: integer, How many results the list operation should return.
  startIndex: integer, The index of the first element to return.
  token: string, Pagination token. If empty, list starts at the first review.
  translationLanguage: string, Language localization code.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response listing reviews.
  &quot;pageInfo&quot;: { # Information about the current page. List operations that supports paging return only one &quot;page&quot; of results. This protocol buffer message describes the page that has been returned. # Information about the current page.
    &quot;resultPerPage&quot;: 42, # Maximum number of results returned in one page. ! The number of results included in the API response.
    &quot;startIndex&quot;: 42, # Index of the first result returned in the current page.
    &quot;totalResults&quot;: 42, # Total number of results available on the backend ! The total number of results in the result set.
  },
  &quot;reviews&quot;: [ # List of reviews.
    { # An Android app review.
      &quot;authorName&quot;: &quot;A String&quot;, # The name of the user who wrote the review.
      &quot;comments&quot;: [ # A repeated field containing comments for the review.
        { # An entry of conversation between user and developer.
          &quot;developerComment&quot;: { # Developer entry from conversation between user and developer. # A comment from a developer.
            &quot;lastModified&quot;: { # A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970. # The last time at which this comment was updated.
              &quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Must be from 0 to 999,999,999 inclusive.
              &quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch.
            },
            &quot;text&quot;: &quot;A String&quot;, # The content of the comment, i.e. reply body.
          },
          &quot;userComment&quot;: { # User entry from conversation between user and developer. # A comment from a user.
            &quot;androidOsVersion&quot;: 42, # Integer Android SDK version of the user&#x27;s device at the time the review was written, e.g. 23 is Marshmallow. May be absent.
            &quot;appVersionCode&quot;: 42, # Integer version code of the app as installed at the time the review was written. May be absent.
            &quot;appVersionName&quot;: &quot;A String&quot;, # String version name of the app as installed at the time the review was written. May be absent.
            &quot;device&quot;: &quot;A String&quot;, # Codename for the reviewer&#x27;s device, e.g. klte, flounder. May be absent.
            &quot;deviceMetadata&quot;: { # Characteristics of the user&#x27;s device. # Information about the characteristics of the user&#x27;s device.
              &quot;cpuMake&quot;: &quot;A String&quot;, # Device CPU make, e.g. &quot;Qualcomm&quot;
              &quot;cpuModel&quot;: &quot;A String&quot;, # Device CPU model, e.g. &quot;MSM8974&quot;
              &quot;deviceClass&quot;: &quot;A String&quot;, # Device class (e.g. tablet)
              &quot;glEsVersion&quot;: 42, # OpenGL version
              &quot;manufacturer&quot;: &quot;A String&quot;, # Device manufacturer (e.g. Motorola)
              &quot;nativePlatform&quot;: &quot;A String&quot;, # Comma separated list of native platforms (e.g. &quot;arm&quot;, &quot;arm7&quot;)
              &quot;productName&quot;: &quot;A String&quot;, # Device model name (e.g. Droid)
              &quot;ramMb&quot;: 42, # Device RAM in Megabytes, e.g. &quot;2048&quot;
              &quot;screenDensityDpi&quot;: 42, # Screen density in DPI
              &quot;screenHeightPx&quot;: 42, # Screen height in pixels
              &quot;screenWidthPx&quot;: 42, # Screen width in pixels
            },
            &quot;lastModified&quot;: { # A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970. # The last time at which this comment was updated.
              &quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Must be from 0 to 999,999,999 inclusive.
              &quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch.
            },
            &quot;originalText&quot;: &quot;A String&quot;, # Untranslated text of the review, where the review was translated. If the review was not translated this is left blank.
            &quot;reviewerLanguage&quot;: &quot;A String&quot;, # Language code for the reviewer. This is taken from the device settings so is not guaranteed to match the language the review is written in. May be absent.
            &quot;starRating&quot;: 42, # The star rating associated with the review, from 1 to 5.
            &quot;text&quot;: &quot;A String&quot;, # The content of the comment, i.e. review body. In some cases users have been able to write a review with separate title and body; in those cases the title and body are concatenated and separated by a tab character.
            &quot;thumbsDownCount&quot;: 42, # Number of users who have given this review a thumbs down.
            &quot;thumbsUpCount&quot;: 42, # Number of users who have given this review a thumbs up.
          },
        },
      ],
      &quot;reviewId&quot;: &quot;A String&quot;, # Unique identifier for this review.
    },
  ],
  &quot;tokenPagination&quot;: { # Pagination information returned by a List operation when token pagination is enabled. List operations that supports paging return only one &quot;page&quot; of results. This protocol buffer message describes the page that has been returned. When using token pagination, clients should use the next/previous token to get another page of the result. The presence or absence of next/previous token indicates whether a next/previous page is available and provides a mean of accessing this page. ListRequest.page_token should be set to either next_page_token or previous_page_token to access another page. # Pagination token, to handle a number of products that is over one page.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Tokens to pass to the standard list field &#x27;page_token&#x27;. Whenever available, tokens are preferred over manipulating start_index.
    &quot;previousPageToken&quot;: &quot;A String&quot;,
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="reply">reply(packageName, reviewId, body=None, x__xgafv=None)</code>
  <pre>Replies to a single review, or updates an existing reply.

Args:
  packageName: string, Package name of the app. (required)
  reviewId: string, Unique identifier for a review. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to reply to review or update existing reply.
  &quot;replyText&quot;: &quot;A String&quot;, # The text to set as the reply. Replies of more than approximately 350 characters will be rejected. HTML tags will be stripped.
}

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

Returns:
  An object of the form:

    { # Response on status of replying to a review.
  &quot;result&quot;: { # The result of replying/updating a reply to review. # The result of replying/updating a reply to review.
    &quot;lastEdited&quot;: { # A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970. # The time at which the reply took effect.
      &quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Must be from 0 to 999,999,999 inclusive.
      &quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch.
    },
    &quot;replyText&quot;: &quot;A String&quot;, # The reply text that was applied.
  },
}</pre>
</div>

</body></html>