<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="games_v1.html">Google Play Games Services API</a> . <a href="games_v1.achievementDefinitions.html">achievementDefinitions</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="#list">list(language=None, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all the achievement definitions for your application.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</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="list">list(language=None, maxResults=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all the achievement definitions for your application.

Args:
  language: string, The preferred language to use for strings returned by this method.
  maxResults: integer, The maximum number of achievement resources to return in the response, used for paging. For any response, the actual number of achievement resources returned may be less than the specified `maxResults`.
  pageToken: string, The token returned by the previous request.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A list of achievement definition objects.
  &quot;items&quot;: [ # The achievement definitions.
    { # An achievement definition object.
      &quot;achievementType&quot;: &quot;A String&quot;, # The type of the achievement.
      &quot;description&quot;: &quot;A String&quot;, # The description of the achievement.
      &quot;experiencePoints&quot;: &quot;A String&quot;, # Experience points which will be earned when unlocking this achievement.
      &quot;formattedTotalSteps&quot;: &quot;A String&quot;, # The total steps for an incremental achievement as a string.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the achievement.
      &quot;initialState&quot;: &quot;A String&quot;, # The initial state of the achievement.
      &quot;isRevealedIconUrlDefault&quot;: True or False, # Indicates whether the revealed icon image being returned is a default image, or is provided by the game.
      &quot;isUnlockedIconUrlDefault&quot;: True or False, # Indicates whether the unlocked icon image being returned is a default image, or is game-provided.
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#achievementDefinition`.
      &quot;name&quot;: &quot;A String&quot;, # The name of the achievement.
      &quot;revealedIconUrl&quot;: &quot;A String&quot;, # The image URL for the revealed achievement icon.
      &quot;totalSteps&quot;: 42, # The total steps for an incremental achievement.
      &quot;unlockedIconUrl&quot;: &quot;A String&quot;, # The image URL for the unlocked achievement icon.
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#achievementDefinitionsListResponse`.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token corresponding to the next page of results.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</code>
  <pre>Retrieves the next page of results.

        Args:
          previous_request: The request for the previous page. (required)
          previous_response: The response from the request for the previous page. (required)

        Returns:
          A request object that you can call &#x27;execute()&#x27; on to request the next
          page. Returns None if there are no more items in the collection.
        </pre>
</div>

</body></html>