<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, x__xgafv=None)</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, x__xgafv=None)</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=None, x__xgafv=None)</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, maxResults=None, pageToken=None, x__xgafv=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="#update">update(achievementId, body=None, x__xgafv=None)</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, x__xgafv=None)</code>
  <pre>Delete the achievement configuration with the given ID.

Args:
  achievementId: string, The ID of the achievement used by this method. (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="get">get(achievementId, x__xgafv=None)</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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An achievement configuration resource.
      "achievementType": "A String", # The type of the achievement.
      "stepsToUnlock": 42, # Steps to unlock.  Only applicable to incremental achievements.
      "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
          # string `gamesConfiguration#achievementConfiguration`.
      "initialState": "A String", # The initial state of the achievement.
      "token": "A String", # The token for this resource.
      "draft": { # An achievement configuration detail. # The draft data of the achievement.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#achievementConfigurationDetail`.
        "name": { # A localized string bundle resource. # Localized strings for the achievement name.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
          "translations": [ # The locale strings.
            { # A localized string resource.
              "locale": "A String", # The locale string.
              "kind": "A String", # 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.
        "description": { # A localized string bundle resource. # Localized strings for the achievement description.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
          "translations": [ # The locale strings.
            { # A localized string resource.
              "locale": "A String", # The locale string.
              "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
                  # string `gamesConfiguration#localizedString`.
              "value": "A String", # The string value.
            },
          ],
        },
      },
      "published": { # An achievement configuration detail. # The read-only published data of the achievement.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#achievementConfigurationDetail`.
        "name": { # A localized string bundle resource. # Localized strings for the achievement name.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
          "translations": [ # The locale strings.
            { # A localized string resource.
              "locale": "A String", # The locale string.
              "kind": "A String", # 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.
        "description": { # A localized string bundle resource. # Localized strings for the achievement description.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
          "translations": [ # The locale strings.
            { # A localized string resource.
              "locale": "A String", # The locale string.
              "kind": "A String", # 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=None, x__xgafv=None)</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.
    The object takes the form of:

{ # An achievement configuration resource.
    "achievementType": "A String", # The type of the achievement.
    "stepsToUnlock": 42, # Steps to unlock.  Only applicable to incremental achievements.
    "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
        # string `gamesConfiguration#achievementConfiguration`.
    "initialState": "A String", # The initial state of the achievement.
    "token": "A String", # The token for this resource.
    "draft": { # An achievement configuration detail. # The draft data of the achievement.
      "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
          # string `gamesConfiguration#achievementConfigurationDetail`.
      "name": { # A localized string bundle resource. # Localized strings for the achievement name.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
        "translations": [ # The locale strings.
          { # A localized string resource.
            "locale": "A String", # The locale string.
            "kind": "A String", # 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.
      "description": { # A localized string bundle resource. # Localized strings for the achievement description.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
        "translations": [ # The locale strings.
          { # A localized string resource.
            "locale": "A String", # The locale string.
            "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedString`.
            "value": "A String", # The string value.
          },
        ],
      },
    },
    "published": { # An achievement configuration detail. # The read-only published data of the achievement.
      "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
          # string `gamesConfiguration#achievementConfigurationDetail`.
      "name": { # A localized string bundle resource. # Localized strings for the achievement name.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
        "translations": [ # The locale strings.
          { # A localized string resource.
            "locale": "A String", # The locale string.
            "kind": "A String", # 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.
      "description": { # A localized string bundle resource. # Localized strings for the achievement description.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
        "translations": [ # The locale strings.
          { # A localized string resource.
            "locale": "A String", # The locale string.
            "kind": "A String", # 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.
  }

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

Returns:
  An object of the form:

    { # An achievement configuration resource.
      "achievementType": "A String", # The type of the achievement.
      "stepsToUnlock": 42, # Steps to unlock.  Only applicable to incremental achievements.
      "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
          # string `gamesConfiguration#achievementConfiguration`.
      "initialState": "A String", # The initial state of the achievement.
      "token": "A String", # The token for this resource.
      "draft": { # An achievement configuration detail. # The draft data of the achievement.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#achievementConfigurationDetail`.
        "name": { # A localized string bundle resource. # Localized strings for the achievement name.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
          "translations": [ # The locale strings.
            { # A localized string resource.
              "locale": "A String", # The locale string.
              "kind": "A String", # 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.
        "description": { # A localized string bundle resource. # Localized strings for the achievement description.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
          "translations": [ # The locale strings.
            { # A localized string resource.
              "locale": "A String", # The locale string.
              "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
                  # string `gamesConfiguration#localizedString`.
              "value": "A String", # The string value.
            },
          ],
        },
      },
      "published": { # An achievement configuration detail. # The read-only published data of the achievement.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#achievementConfigurationDetail`.
        "name": { # A localized string bundle resource. # Localized strings for the achievement name.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
          "translations": [ # The locale strings.
            { # A localized string resource.
              "locale": "A String", # The locale string.
              "kind": "A String", # 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.
        "description": { # A localized string bundle resource. # Localized strings for the achievement description.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
          "translations": [ # The locale strings.
            { # A localized string resource.
              "locale": "A String", # The locale string.
              "kind": "A String", # 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, maxResults=None, pageToken=None, x__xgafv=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)
  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`.
  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 ListConfigurations response.
    "nextPageToken": "A String", # The pagination token for the next page of results.
    "items": [ # The achievement configurations.
      { # An achievement configuration resource.
          "achievementType": "A String", # The type of the achievement.
          "stepsToUnlock": 42, # Steps to unlock.  Only applicable to incremental achievements.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#achievementConfiguration`.
          "initialState": "A String", # The initial state of the achievement.
          "token": "A String", # The token for this resource.
          "draft": { # An achievement configuration detail. # The draft data of the achievement.
            "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#achievementConfigurationDetail`.
            "name": { # A localized string bundle resource. # Localized strings for the achievement name.
              "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
                  # string `gamesConfiguration#localizedStringBundle`.
              "translations": [ # The locale strings.
                { # A localized string resource.
                  "locale": "A String", # The locale string.
                  "kind": "A String", # 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.
            "description": { # A localized string bundle resource. # Localized strings for the achievement description.
              "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
                  # string `gamesConfiguration#localizedStringBundle`.
              "translations": [ # The locale strings.
                { # A localized string resource.
                  "locale": "A String", # The locale string.
                  "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
                      # string `gamesConfiguration#localizedString`.
                  "value": "A String", # The string value.
                },
              ],
            },
          },
          "published": { # An achievement configuration detail. # The read-only published data of the achievement.
            "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#achievementConfigurationDetail`.
            "name": { # A localized string bundle resource. # Localized strings for the achievement name.
              "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
                  # string `gamesConfiguration#localizedStringBundle`.
              "translations": [ # The locale strings.
                { # A localized string resource.
                  "locale": "A String", # The locale string.
                  "kind": "A String", # 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.
            "description": { # A localized string bundle resource. # Localized strings for the achievement description.
              "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
                  # string `gamesConfiguration#localizedStringBundle`.
              "translations": [ # The locale strings.
                { # A localized string resource.
                  "locale": "A String", # The locale string.
                  "kind": "A String", # 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": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
        # string `gamesConfiguration#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="update">update(achievementId, body=None, x__xgafv=None)</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.
    The object takes the form of:

{ # An achievement configuration resource.
    "achievementType": "A String", # The type of the achievement.
    "stepsToUnlock": 42, # Steps to unlock.  Only applicable to incremental achievements.
    "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
        # string `gamesConfiguration#achievementConfiguration`.
    "initialState": "A String", # The initial state of the achievement.
    "token": "A String", # The token for this resource.
    "draft": { # An achievement configuration detail. # The draft data of the achievement.
      "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
          # string `gamesConfiguration#achievementConfigurationDetail`.
      "name": { # A localized string bundle resource. # Localized strings for the achievement name.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
        "translations": [ # The locale strings.
          { # A localized string resource.
            "locale": "A String", # The locale string.
            "kind": "A String", # 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.
      "description": { # A localized string bundle resource. # Localized strings for the achievement description.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
        "translations": [ # The locale strings.
          { # A localized string resource.
            "locale": "A String", # The locale string.
            "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedString`.
            "value": "A String", # The string value.
          },
        ],
      },
    },
    "published": { # An achievement configuration detail. # The read-only published data of the achievement.
      "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
          # string `gamesConfiguration#achievementConfigurationDetail`.
      "name": { # A localized string bundle resource. # Localized strings for the achievement name.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
        "translations": [ # The locale strings.
          { # A localized string resource.
            "locale": "A String", # The locale string.
            "kind": "A String", # 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.
      "description": { # A localized string bundle resource. # Localized strings for the achievement description.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
        "translations": [ # The locale strings.
          { # A localized string resource.
            "locale": "A String", # The locale string.
            "kind": "A String", # 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.
  }

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

Returns:
  An object of the form:

    { # An achievement configuration resource.
      "achievementType": "A String", # The type of the achievement.
      "stepsToUnlock": 42, # Steps to unlock.  Only applicable to incremental achievements.
      "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
          # string `gamesConfiguration#achievementConfiguration`.
      "initialState": "A String", # The initial state of the achievement.
      "token": "A String", # The token for this resource.
      "draft": { # An achievement configuration detail. # The draft data of the achievement.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#achievementConfigurationDetail`.
        "name": { # A localized string bundle resource. # Localized strings for the achievement name.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
          "translations": [ # The locale strings.
            { # A localized string resource.
              "locale": "A String", # The locale string.
              "kind": "A String", # 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.
        "description": { # A localized string bundle resource. # Localized strings for the achievement description.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
          "translations": [ # The locale strings.
            { # A localized string resource.
              "locale": "A String", # The locale string.
              "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
                  # string `gamesConfiguration#localizedString`.
              "value": "A String", # The string value.
            },
          ],
        },
      },
      "published": { # An achievement configuration detail. # The read-only published data of the achievement.
        "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#achievementConfigurationDetail`.
        "name": { # A localized string bundle resource. # Localized strings for the achievement name.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
          "translations": [ # The locale strings.
            { # A localized string resource.
              "locale": "A String", # The locale string.
              "kind": "A String", # 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.
        "description": { # A localized string bundle resource. # Localized strings for the achievement description.
          "kind": "A String", # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
          "translations": [ # The locale strings.
            { # A localized string resource.
              "locale": "A String", # The locale string.
              "kind": "A String", # 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>