<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="gamesConfiguration_v1configuration.html">Google Play Game Services Publishing API</a> . <a href="gamesConfiguration_v1configuration.achievementConfigurations.html">achievementConfigurations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(achievementId)</a></code></p>
<p class="firstline">Delete the achievement configuration with the given ID.</p>
<p class="toc_element">
  <code><a href="#get">get(achievementId)</a></code></p>
<p class="firstline">Retrieves the metadata of the achievement configuration with the given ID.</p>
<p class="toc_element">
  <code><a href="#insert">insert(applicationId, body)</a></code></p>
<p class="firstline">Insert a new achievement configuration in this application.</p>
<p class="toc_element">
  <code><a href="#list">list(applicationId, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Returns a list of the achievement configurations in this application.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(achievementId, body)</a></code></p>
<p class="firstline">Update the metadata of the achievement configuration with the given ID. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(achievementId, body)</a></code></p>
<p class="firstline">Update the metadata of the achievement configuration with the given ID.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(achievementId)</code>
  <pre>Delete the achievement configuration with the given ID.

Args:
  achievementId: string, The ID of the achievement used by this method. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(achievementId)</code>
  <pre>Retrieves the metadata of the achievement configuration with the given ID.

Args:
  achievementId: string, The ID of the achievement used by this method. (required)

Returns:
  An object of the form:

    { # This is a JSON template for an achievement configuration resource.
      "achievementType": "A String", # The type of the achievement.
          # Possible values are:
          # - "STANDARD" - Achievement is either locked or unlocked.
          # - "INCREMENTAL" - Achievement is incremental.
      "stepsToUnlock": 42, # Steps to unlock. Only applicable to incremental achievements.
      "kind": "gamesConfiguration#achievementConfiguration", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfiguration.
      "initialState": "A String", # The initial state of the achievement.
          # Possible values are:
          # - "HIDDEN" - Achievement is hidden.
          # - "REVEALED" - Achievement is revealed.
          # - "UNLOCKED" - Achievement is unlocked.
      "token": "A String", # The token for this resource.
      "draft": { # This is a JSON template for an achievement configuration detail. # The draft data of the achievement.
        "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
        "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
        "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
        "pointValue": 42, # Point value for the achievement.
        "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
        "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
      },
      "published": { # This is a JSON template for an achievement configuration detail. # The read-only published data of the achievement.
        "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
        "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
        "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
        "pointValue": 42, # Point value for the achievement.
        "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
        "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
      },
      "id": "A String", # The ID of the achievement.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(applicationId, body)</code>
  <pre>Insert a new achievement configuration in this application.

Args:
  applicationId: string, The application ID from the Google Play developer console. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # This is a JSON template for an achievement configuration resource.
    "achievementType": "A String", # The type of the achievement.
        # Possible values are:
        # - "STANDARD" - Achievement is either locked or unlocked.
        # - "INCREMENTAL" - Achievement is incremental.
    "stepsToUnlock": 42, # Steps to unlock. Only applicable to incremental achievements.
    "kind": "gamesConfiguration#achievementConfiguration", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfiguration.
    "initialState": "A String", # The initial state of the achievement.
        # Possible values are:
        # - "HIDDEN" - Achievement is hidden.
        # - "REVEALED" - Achievement is revealed.
        # - "UNLOCKED" - Achievement is unlocked.
    "token": "A String", # The token for this resource.
    "draft": { # This is a JSON template for an achievement configuration detail. # The draft data of the achievement.
      "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
      "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
        "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
        "translations": [ # The locale strings.
          { # This is a JSON template for a localized string resource.
            "locale": "A String", # The locale string.
            "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
            "value": "A String", # The string value.
          },
        ],
      },
      "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
      "pointValue": 42, # Point value for the achievement.
      "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
      "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
        "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
        "translations": [ # The locale strings.
          { # This is a JSON template for a localized string resource.
            "locale": "A String", # The locale string.
            "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
            "value": "A String", # The string value.
          },
        ],
      },
    },
    "published": { # This is a JSON template for an achievement configuration detail. # The read-only published data of the achievement.
      "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
      "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
        "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
        "translations": [ # The locale strings.
          { # This is a JSON template for a localized string resource.
            "locale": "A String", # The locale string.
            "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
            "value": "A String", # The string value.
          },
        ],
      },
      "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
      "pointValue": 42, # Point value for the achievement.
      "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
      "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
        "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
        "translations": [ # The locale strings.
          { # This is a JSON template for a localized string resource.
            "locale": "A String", # The locale string.
            "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
            "value": "A String", # The string value.
          },
        ],
      },
    },
    "id": "A String", # The ID of the achievement.
  }


Returns:
  An object of the form:

    { # This is a JSON template for an achievement configuration resource.
      "achievementType": "A String", # The type of the achievement.
          # Possible values are:
          # - "STANDARD" - Achievement is either locked or unlocked.
          # - "INCREMENTAL" - Achievement is incremental.
      "stepsToUnlock": 42, # Steps to unlock. Only applicable to incremental achievements.
      "kind": "gamesConfiguration#achievementConfiguration", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfiguration.
      "initialState": "A String", # The initial state of the achievement.
          # Possible values are:
          # - "HIDDEN" - Achievement is hidden.
          # - "REVEALED" - Achievement is revealed.
          # - "UNLOCKED" - Achievement is unlocked.
      "token": "A String", # The token for this resource.
      "draft": { # This is a JSON template for an achievement configuration detail. # The draft data of the achievement.
        "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
        "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
        "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
        "pointValue": 42, # Point value for the achievement.
        "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
        "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
      },
      "published": { # This is a JSON template for an achievement configuration detail. # The read-only published data of the achievement.
        "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
        "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
        "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
        "pointValue": 42, # Point value for the achievement.
        "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
        "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
      },
      "id": "A String", # The ID of the achievement.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(applicationId, pageToken=None, maxResults=None)</code>
  <pre>Returns a list of the achievement configurations in this application.

Args:
  applicationId: string, The application ID from the Google Play developer console. (required)
  pageToken: string, The token returned by the previous request.
  maxResults: integer, The maximum number of resource configurations to return in the response, used for paging. For any response, the actual number of resources returned may be less than the specified maxResults.

Returns:
  An object of the form:

    { # This is a JSON template for a ListConfigurations response.
    "nextPageToken": "A String", # The pagination token for the next page of results.
    "items": [ # The achievement configurations.
      { # This is a JSON template for an achievement configuration resource.
          "achievementType": "A String", # The type of the achievement.
              # Possible values are:
              # - "STANDARD" - Achievement is either locked or unlocked.
              # - "INCREMENTAL" - Achievement is incremental.
          "stepsToUnlock": 42, # Steps to unlock. Only applicable to incremental achievements.
          "kind": "gamesConfiguration#achievementConfiguration", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfiguration.
          "initialState": "A String", # The initial state of the achievement.
              # Possible values are:
              # - "HIDDEN" - Achievement is hidden.
              # - "REVEALED" - Achievement is revealed.
              # - "UNLOCKED" - Achievement is unlocked.
          "token": "A String", # The token for this resource.
          "draft": { # This is a JSON template for an achievement configuration detail. # The draft data of the achievement.
            "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
            "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
              "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
              "translations": [ # The locale strings.
                { # This is a JSON template for a localized string resource.
                  "locale": "A String", # The locale string.
                  "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
                  "value": "A String", # The string value.
                },
              ],
            },
            "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
            "pointValue": 42, # Point value for the achievement.
            "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
            "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
              "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
              "translations": [ # The locale strings.
                { # This is a JSON template for a localized string resource.
                  "locale": "A String", # The locale string.
                  "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
                  "value": "A String", # The string value.
                },
              ],
            },
          },
          "published": { # This is a JSON template for an achievement configuration detail. # The read-only published data of the achievement.
            "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
            "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
              "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
              "translations": [ # The locale strings.
                { # This is a JSON template for a localized string resource.
                  "locale": "A String", # The locale string.
                  "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
                  "value": "A String", # The string value.
                },
              ],
            },
            "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
            "pointValue": 42, # Point value for the achievement.
            "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
            "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
              "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
              "translations": [ # The locale strings.
                { # This is a JSON template for a localized string resource.
                  "locale": "A String", # The locale string.
                  "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
                  "value": "A String", # The string value.
                },
              ],
            },
          },
          "id": "A String", # The ID of the achievement.
        },
    ],
    "kind": "gamesConfiguration#achievementConfigurationListResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#achievementConfigurationListResponse.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(achievementId, body)</code>
  <pre>Update the metadata of the achievement configuration with the given ID. This method supports patch semantics.

Args:
  achievementId: string, The ID of the achievement used by this method. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # This is a JSON template for an achievement configuration resource.
    "achievementType": "A String", # The type of the achievement.
        # Possible values are:
        # - "STANDARD" - Achievement is either locked or unlocked.
        # - "INCREMENTAL" - Achievement is incremental.
    "stepsToUnlock": 42, # Steps to unlock. Only applicable to incremental achievements.
    "kind": "gamesConfiguration#achievementConfiguration", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfiguration.
    "initialState": "A String", # The initial state of the achievement.
        # Possible values are:
        # - "HIDDEN" - Achievement is hidden.
        # - "REVEALED" - Achievement is revealed.
        # - "UNLOCKED" - Achievement is unlocked.
    "token": "A String", # The token for this resource.
    "draft": { # This is a JSON template for an achievement configuration detail. # The draft data of the achievement.
      "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
      "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
        "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
        "translations": [ # The locale strings.
          { # This is a JSON template for a localized string resource.
            "locale": "A String", # The locale string.
            "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
            "value": "A String", # The string value.
          },
        ],
      },
      "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
      "pointValue": 42, # Point value for the achievement.
      "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
      "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
        "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
        "translations": [ # The locale strings.
          { # This is a JSON template for a localized string resource.
            "locale": "A String", # The locale string.
            "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
            "value": "A String", # The string value.
          },
        ],
      },
    },
    "published": { # This is a JSON template for an achievement configuration detail. # The read-only published data of the achievement.
      "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
      "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
        "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
        "translations": [ # The locale strings.
          { # This is a JSON template for a localized string resource.
            "locale": "A String", # The locale string.
            "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
            "value": "A String", # The string value.
          },
        ],
      },
      "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
      "pointValue": 42, # Point value for the achievement.
      "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
      "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
        "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
        "translations": [ # The locale strings.
          { # This is a JSON template for a localized string resource.
            "locale": "A String", # The locale string.
            "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
            "value": "A String", # The string value.
          },
        ],
      },
    },
    "id": "A String", # The ID of the achievement.
  }


Returns:
  An object of the form:

    { # This is a JSON template for an achievement configuration resource.
      "achievementType": "A String", # The type of the achievement.
          # Possible values are:
          # - "STANDARD" - Achievement is either locked or unlocked.
          # - "INCREMENTAL" - Achievement is incremental.
      "stepsToUnlock": 42, # Steps to unlock. Only applicable to incremental achievements.
      "kind": "gamesConfiguration#achievementConfiguration", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfiguration.
      "initialState": "A String", # The initial state of the achievement.
          # Possible values are:
          # - "HIDDEN" - Achievement is hidden.
          # - "REVEALED" - Achievement is revealed.
          # - "UNLOCKED" - Achievement is unlocked.
      "token": "A String", # The token for this resource.
      "draft": { # This is a JSON template for an achievement configuration detail. # The draft data of the achievement.
        "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
        "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
        "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
        "pointValue": 42, # Point value for the achievement.
        "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
        "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
      },
      "published": { # This is a JSON template for an achievement configuration detail. # The read-only published data of the achievement.
        "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
        "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
        "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
        "pointValue": 42, # Point value for the achievement.
        "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
        "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
      },
      "id": "A String", # The ID of the achievement.
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(achievementId, body)</code>
  <pre>Update the metadata of the achievement configuration with the given ID.

Args:
  achievementId: string, The ID of the achievement used by this method. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # This is a JSON template for an achievement configuration resource.
    "achievementType": "A String", # The type of the achievement.
        # Possible values are:
        # - "STANDARD" - Achievement is either locked or unlocked.
        # - "INCREMENTAL" - Achievement is incremental.
    "stepsToUnlock": 42, # Steps to unlock. Only applicable to incremental achievements.
    "kind": "gamesConfiguration#achievementConfiguration", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfiguration.
    "initialState": "A String", # The initial state of the achievement.
        # Possible values are:
        # - "HIDDEN" - Achievement is hidden.
        # - "REVEALED" - Achievement is revealed.
        # - "UNLOCKED" - Achievement is unlocked.
    "token": "A String", # The token for this resource.
    "draft": { # This is a JSON template for an achievement configuration detail. # The draft data of the achievement.
      "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
      "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
        "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
        "translations": [ # The locale strings.
          { # This is a JSON template for a localized string resource.
            "locale": "A String", # The locale string.
            "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
            "value": "A String", # The string value.
          },
        ],
      },
      "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
      "pointValue": 42, # Point value for the achievement.
      "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
      "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
        "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
        "translations": [ # The locale strings.
          { # This is a JSON template for a localized string resource.
            "locale": "A String", # The locale string.
            "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
            "value": "A String", # The string value.
          },
        ],
      },
    },
    "published": { # This is a JSON template for an achievement configuration detail. # The read-only published data of the achievement.
      "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
      "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
        "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
        "translations": [ # The locale strings.
          { # This is a JSON template for a localized string resource.
            "locale": "A String", # The locale string.
            "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
            "value": "A String", # The string value.
          },
        ],
      },
      "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
      "pointValue": 42, # Point value for the achievement.
      "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
      "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
        "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
        "translations": [ # The locale strings.
          { # This is a JSON template for a localized string resource.
            "locale": "A String", # The locale string.
            "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
            "value": "A String", # The string value.
          },
        ],
      },
    },
    "id": "A String", # The ID of the achievement.
  }


Returns:
  An object of the form:

    { # This is a JSON template for an achievement configuration resource.
      "achievementType": "A String", # The type of the achievement.
          # Possible values are:
          # - "STANDARD" - Achievement is either locked or unlocked.
          # - "INCREMENTAL" - Achievement is incremental.
      "stepsToUnlock": 42, # Steps to unlock. Only applicable to incremental achievements.
      "kind": "gamesConfiguration#achievementConfiguration", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfiguration.
      "initialState": "A String", # The initial state of the achievement.
          # Possible values are:
          # - "HIDDEN" - Achievement is hidden.
          # - "REVEALED" - Achievement is revealed.
          # - "UNLOCKED" - Achievement is unlocked.
      "token": "A String", # The token for this resource.
      "draft": { # This is a JSON template for an achievement configuration detail. # The draft data of the achievement.
        "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
        "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
        "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
        "pointValue": 42, # Point value for the achievement.
        "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
        "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
      },
      "published": { # This is a JSON template for an achievement configuration detail. # The read-only published data of the achievement.
        "kind": "gamesConfiguration#achievementConfigurationDetail", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#achievementConfigurationDetail.
        "description": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement description.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
        "iconUrl": "A String", # The icon url of this achievement. Writes to this field are ignored.
        "pointValue": 42, # Point value for the achievement.
        "sortRank": 42, # The sort rank of this achievement. Writes to this field are ignored.
        "name": { # This is a JSON template for a localized string bundle resource. # Localized strings for the achievement name.
          "kind": "gamesConfiguration#localizedStringBundle", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedStringBundle.
          "translations": [ # The locale strings.
            { # This is a JSON template for a localized string resource.
              "locale": "A String", # The locale string.
              "kind": "gamesConfiguration#localizedString", # Uniquely identifies the type of this resource. Value is always the fixed string gamesConfiguration#localizedString.
              "value": "A String", # The string value.
            },
          ],
        },
      },
      "id": "A String", # The ID of the achievement.
    }</pre>
</div>

</body></html>