<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.leaderboardConfigurations.html">leaderboardConfigurations</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="#delete">delete(leaderboardId, x__xgafv=None)</a></code></p>
<p class="firstline">Delete the leaderboard configuration with the given ID.</p>
<p class="toc_element">
  <code><a href="#get">get(leaderboardId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the metadata of the leaderboard 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 leaderboard 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 leaderboard 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(leaderboardId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update the metadata of the leaderboard configuration with the given ID.</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="delete">delete(leaderboardId, x__xgafv=None)</code>
  <pre>Delete the leaderboard configuration with the given ID.

Args:
  leaderboardId: string, The ID of the leaderboard. (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(leaderboardId, x__xgafv=None)</code>
  <pre>Retrieves the metadata of the leaderboard configuration with the given ID.

Args:
  leaderboardId: string, The ID of the leaderboard. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An leaderboard configuration resource.
      &quot;scoreMin&quot;: &quot;A String&quot;, # Minimum score that can be posted to this leaderboard.
      &quot;token&quot;: &quot;A String&quot;, # The token for this resource.
      &quot;draft&quot;: { # A leaderboard configuration detail. # The draft data of the leaderboard.
        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
        &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
          &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type. These strings follow the same plural rules as all Android string resources.
            &quot;many&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;large&quot; numbers (as with numbers ending 11-99 in Maltese).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;two&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in Arabic).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;one&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;few&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;small&quot; numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;other&quot;: { # A localized string bundle resource. # When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
          },
          &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
          &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
          &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationDetail`.
        &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
          &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
          &quot;translations&quot;: [ # The locale strings.
            { # A localized string resource.
              &quot;locale&quot;: &quot;A String&quot;, # The locale string.
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
              &quot;value&quot;: &quot;A String&quot;, # The string value.
            },
          ],
        },
        &quot;sortRank&quot;: 42, # The sort rank of this leaderboard. Writes to this field are ignored.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfiguration`.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the leaderboard.
      &quot;scoreOrder&quot;: &quot;A String&quot;,
      &quot;scoreMax&quot;: &quot;A String&quot;, # Maximum score that can be posted to this leaderboard.
      &quot;published&quot;: { # A leaderboard configuration detail. # The read-only published data of the leaderboard.
        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
        &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
          &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type. These strings follow the same plural rules as all Android string resources.
            &quot;many&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;large&quot; numbers (as with numbers ending 11-99 in Maltese).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;two&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in Arabic).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;one&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;few&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;small&quot; numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;other&quot;: { # A localized string bundle resource. # When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
          },
          &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
          &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
          &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationDetail`.
        &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
          &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
          &quot;translations&quot;: [ # The locale strings.
            { # A localized string resource.
              &quot;locale&quot;: &quot;A String&quot;, # The locale string.
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
              &quot;value&quot;: &quot;A String&quot;, # The string value.
            },
          ],
        },
        &quot;sortRank&quot;: 42, # The sort rank of this leaderboard. Writes to this field are ignored.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(applicationId, body=None, x__xgafv=None)</code>
  <pre>Insert a new leaderboard 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 leaderboard configuration resource.
    &quot;scoreMin&quot;: &quot;A String&quot;, # Minimum score that can be posted to this leaderboard.
    &quot;token&quot;: &quot;A String&quot;, # The token for this resource.
    &quot;draft&quot;: { # A leaderboard configuration detail. # The draft data of the leaderboard.
      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
      &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
        &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type. These strings follow the same plural rules as all Android string resources.
          &quot;many&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;large&quot; numbers (as with numbers ending 11-99 in Maltese).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;two&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in Arabic).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;one&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;few&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;small&quot; numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;other&quot;: { # A localized string bundle resource. # When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
        },
        &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
        &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
        &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationDetail`.
      &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
        &quot;translations&quot;: [ # The locale strings.
          { # A localized string resource.
            &quot;locale&quot;: &quot;A String&quot;, # The locale string.
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
            &quot;value&quot;: &quot;A String&quot;, # The string value.
          },
        ],
      },
      &quot;sortRank&quot;: 42, # The sort rank of this leaderboard. Writes to this field are ignored.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfiguration`.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the leaderboard.
    &quot;scoreOrder&quot;: &quot;A String&quot;,
    &quot;scoreMax&quot;: &quot;A String&quot;, # Maximum score that can be posted to this leaderboard.
    &quot;published&quot;: { # A leaderboard configuration detail. # The read-only published data of the leaderboard.
      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
      &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
        &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type. These strings follow the same plural rules as all Android string resources.
          &quot;many&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;large&quot; numbers (as with numbers ending 11-99 in Maltese).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;two&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in Arabic).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;one&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;few&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;small&quot; numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;other&quot;: { # A localized string bundle resource. # When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
        },
        &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
        &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
        &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationDetail`.
      &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
        &quot;translations&quot;: [ # The locale strings.
          { # A localized string resource.
            &quot;locale&quot;: &quot;A String&quot;, # The locale string.
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
            &quot;value&quot;: &quot;A String&quot;, # The string value.
          },
        ],
      },
      &quot;sortRank&quot;: 42, # The sort rank of this leaderboard. Writes to this field are ignored.
    },
  }

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

Returns:
  An object of the form:

    { # An leaderboard configuration resource.
      &quot;scoreMin&quot;: &quot;A String&quot;, # Minimum score that can be posted to this leaderboard.
      &quot;token&quot;: &quot;A String&quot;, # The token for this resource.
      &quot;draft&quot;: { # A leaderboard configuration detail. # The draft data of the leaderboard.
        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
        &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
          &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type. These strings follow the same plural rules as all Android string resources.
            &quot;many&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;large&quot; numbers (as with numbers ending 11-99 in Maltese).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;two&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in Arabic).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;one&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;few&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;small&quot; numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;other&quot;: { # A localized string bundle resource. # When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
          },
          &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
          &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
          &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationDetail`.
        &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
          &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
          &quot;translations&quot;: [ # The locale strings.
            { # A localized string resource.
              &quot;locale&quot;: &quot;A String&quot;, # The locale string.
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
              &quot;value&quot;: &quot;A String&quot;, # The string value.
            },
          ],
        },
        &quot;sortRank&quot;: 42, # The sort rank of this leaderboard. Writes to this field are ignored.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfiguration`.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the leaderboard.
      &quot;scoreOrder&quot;: &quot;A String&quot;,
      &quot;scoreMax&quot;: &quot;A String&quot;, # Maximum score that can be posted to this leaderboard.
      &quot;published&quot;: { # A leaderboard configuration detail. # The read-only published data of the leaderboard.
        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
        &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
          &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type. These strings follow the same plural rules as all Android string resources.
            &quot;many&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;large&quot; numbers (as with numbers ending 11-99 in Maltese).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;two&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in Arabic).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;one&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;few&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;small&quot; numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;other&quot;: { # A localized string bundle resource. # When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
          },
          &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
          &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
          &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationDetail`.
        &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
          &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
          &quot;translations&quot;: [ # The locale strings.
            { # A localized string resource.
              &quot;locale&quot;: &quot;A String&quot;, # The locale string.
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
              &quot;value&quot;: &quot;A String&quot;, # The string value.
            },
          ],
        },
        &quot;sortRank&quot;: 42, # The sort rank of this leaderboard. Writes to this field are ignored.
      },
    }</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 leaderboard 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.
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationListResponse`.
    &quot;items&quot;: [ # The leaderboard configurations.
      { # An leaderboard configuration resource.
          &quot;scoreMin&quot;: &quot;A String&quot;, # Minimum score that can be posted to this leaderboard.
          &quot;token&quot;: &quot;A String&quot;, # The token for this resource.
          &quot;draft&quot;: { # A leaderboard configuration detail. # The draft data of the leaderboard.
            &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
            &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
              &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type. These strings follow the same plural rules as all Android string resources.
                &quot;many&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;large&quot; numbers (as with numbers ending 11-99 in Maltese).
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
                  &quot;translations&quot;: [ # The locale strings.
                    { # A localized string resource.
                      &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                      &quot;value&quot;: &quot;A String&quot;, # The string value.
                    },
                  ],
                },
                &quot;two&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
                  &quot;translations&quot;: [ # The locale strings.
                    { # A localized string resource.
                      &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                      &quot;value&quot;: &quot;A String&quot;, # The string value.
                    },
                  ],
                },
                &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in Arabic).
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
                  &quot;translations&quot;: [ # The locale strings.
                    { # A localized string resource.
                      &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                      &quot;value&quot;: &quot;A String&quot;, # The string value.
                    },
                  ],
                },
                &quot;one&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
                  &quot;translations&quot;: [ # The locale strings.
                    { # A localized string resource.
                      &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                      &quot;value&quot;: &quot;A String&quot;, # The string value.
                    },
                  ],
                },
                &quot;few&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;small&quot; numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
                  &quot;translations&quot;: [ # The locale strings.
                    { # A localized string resource.
                      &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                      &quot;value&quot;: &quot;A String&quot;, # The string value.
                    },
                  ],
                },
                &quot;other&quot;: { # A localized string bundle resource. # When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
                  &quot;translations&quot;: [ # The locale strings.
                    { # A localized string resource.
                      &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                      &quot;value&quot;: &quot;A String&quot;, # The string value.
                    },
                  ],
                },
              },
              &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
              &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
              &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationDetail`.
            &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;sortRank&quot;: 42, # The sort rank of this leaderboard. Writes to this field are ignored.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfiguration`.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the leaderboard.
          &quot;scoreOrder&quot;: &quot;A String&quot;,
          &quot;scoreMax&quot;: &quot;A String&quot;, # Maximum score that can be posted to this leaderboard.
          &quot;published&quot;: { # A leaderboard configuration detail. # The read-only published data of the leaderboard.
            &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
            &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
              &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type. These strings follow the same plural rules as all Android string resources.
                &quot;many&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;large&quot; numbers (as with numbers ending 11-99 in Maltese).
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
                  &quot;translations&quot;: [ # The locale strings.
                    { # A localized string resource.
                      &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                      &quot;value&quot;: &quot;A String&quot;, # The string value.
                    },
                  ],
                },
                &quot;two&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
                  &quot;translations&quot;: [ # The locale strings.
                    { # A localized string resource.
                      &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                      &quot;value&quot;: &quot;A String&quot;, # The string value.
                    },
                  ],
                },
                &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in Arabic).
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
                  &quot;translations&quot;: [ # The locale strings.
                    { # A localized string resource.
                      &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                      &quot;value&quot;: &quot;A String&quot;, # The string value.
                    },
                  ],
                },
                &quot;one&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
                  &quot;translations&quot;: [ # The locale strings.
                    { # A localized string resource.
                      &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                      &quot;value&quot;: &quot;A String&quot;, # The string value.
                    },
                  ],
                },
                &quot;few&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;small&quot; numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
                  &quot;translations&quot;: [ # The locale strings.
                    { # A localized string resource.
                      &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                      &quot;value&quot;: &quot;A String&quot;, # The string value.
                    },
                  ],
                },
                &quot;other&quot;: { # A localized string bundle resource. # When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
                  &quot;translations&quot;: [ # The locale strings.
                    { # A localized string resource.
                      &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                      &quot;value&quot;: &quot;A String&quot;, # The string value.
                    },
                  ],
                },
              },
              &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
              &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
              &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
            },
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationDetail`.
            &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;sortRank&quot;: 42, # The sort rank of this leaderboard. Writes to this field are ignored.
          },
        },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The pagination token for the next page of results.
  }</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 &#x27;execute()&#x27; 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(leaderboardId, body=None, x__xgafv=None)</code>
  <pre>Update the metadata of the leaderboard configuration with the given ID.

Args:
  leaderboardId: string, The ID of the leaderboard. (required)
  body: object, The request body.
    The object takes the form of:

{ # An leaderboard configuration resource.
    &quot;scoreMin&quot;: &quot;A String&quot;, # Minimum score that can be posted to this leaderboard.
    &quot;token&quot;: &quot;A String&quot;, # The token for this resource.
    &quot;draft&quot;: { # A leaderboard configuration detail. # The draft data of the leaderboard.
      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
      &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
        &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type. These strings follow the same plural rules as all Android string resources.
          &quot;many&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;large&quot; numbers (as with numbers ending 11-99 in Maltese).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;two&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in Arabic).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;one&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;few&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;small&quot; numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;other&quot;: { # A localized string bundle resource. # When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
        },
        &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
        &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
        &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationDetail`.
      &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
        &quot;translations&quot;: [ # The locale strings.
          { # A localized string resource.
            &quot;locale&quot;: &quot;A String&quot;, # The locale string.
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
            &quot;value&quot;: &quot;A String&quot;, # The string value.
          },
        ],
      },
      &quot;sortRank&quot;: 42, # The sort rank of this leaderboard. Writes to this field are ignored.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfiguration`.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the leaderboard.
    &quot;scoreOrder&quot;: &quot;A String&quot;,
    &quot;scoreMax&quot;: &quot;A String&quot;, # Maximum score that can be posted to this leaderboard.
    &quot;published&quot;: { # A leaderboard configuration detail. # The read-only published data of the leaderboard.
      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
      &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
        &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type. These strings follow the same plural rules as all Android string resources.
          &quot;many&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;large&quot; numbers (as with numbers ending 11-99 in Maltese).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;two&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in Arabic).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;one&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;few&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;small&quot; numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
          &quot;other&quot;: { # A localized string bundle resource. # When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
            &quot;translations&quot;: [ # The locale strings.
              { # A localized string resource.
                &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                &quot;value&quot;: &quot;A String&quot;, # The string value.
              },
            ],
          },
        },
        &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
        &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
        &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationDetail`.
      &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
        &quot;translations&quot;: [ # The locale strings.
          { # A localized string resource.
            &quot;locale&quot;: &quot;A String&quot;, # The locale string.
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
            &quot;value&quot;: &quot;A String&quot;, # The string value.
          },
        ],
      },
      &quot;sortRank&quot;: 42, # The sort rank of this leaderboard. Writes to this field are ignored.
    },
  }

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

Returns:
  An object of the form:

    { # An leaderboard configuration resource.
      &quot;scoreMin&quot;: &quot;A String&quot;, # Minimum score that can be posted to this leaderboard.
      &quot;token&quot;: &quot;A String&quot;, # The token for this resource.
      &quot;draft&quot;: { # A leaderboard configuration detail. # The draft data of the leaderboard.
        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
        &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
          &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type. These strings follow the same plural rules as all Android string resources.
            &quot;many&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;large&quot; numbers (as with numbers ending 11-99 in Maltese).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;two&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in Arabic).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;one&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;few&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;small&quot; numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;other&quot;: { # A localized string bundle resource. # When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
          },
          &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
          &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
          &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationDetail`.
        &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
          &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
          &quot;translations&quot;: [ # The locale strings.
            { # A localized string resource.
              &quot;locale&quot;: &quot;A String&quot;, # The locale string.
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
              &quot;value&quot;: &quot;A String&quot;, # The string value.
            },
          ],
        },
        &quot;sortRank&quot;: 42, # The sort rank of this leaderboard. Writes to this field are ignored.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfiguration`.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the leaderboard.
      &quot;scoreOrder&quot;: &quot;A String&quot;,
      &quot;scoreMax&quot;: &quot;A String&quot;, # Maximum score that can be posted to this leaderboard.
      &quot;published&quot;: { # A leaderboard configuration detail. # The read-only published data of the leaderboard.
        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
        &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
          &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type. These strings follow the same plural rules as all Android string resources.
            &quot;many&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;large&quot; numbers (as with numbers ending 11-99 in Maltese).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;two&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like two (as with 2 in Welsh, or 102 in Slovenian).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in Arabic).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;one&quot;: { # A localized string bundle resource. # When the language requires special treatment of numbers like one (as with the number 1 in English and most other languages; in Russian, any number ending in 1 but not ending in 11 is in this class).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;few&quot;: { # A localized string bundle resource. # When the language requires special treatment of &quot;small&quot; numbers (as with 2, 3, and 4 in Czech; or numbers ending 2, 3, or 4 but not 12, 13, or 14 in Polish).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
            &quot;other&quot;: { # A localized string bundle resource. # When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
              &quot;translations&quot;: [ # The locale strings.
                { # A localized string resource.
                  &quot;locale&quot;: &quot;A String&quot;, # The locale string.
                  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
                  &quot;value&quot;: &quot;A String&quot;, # The string value.
                },
              ],
            },
          },
          &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
          &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
          &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#leaderboardConfigurationDetail`.
        &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
          &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedStringBundle`.
          &quot;translations&quot;: [ # The locale strings.
            { # A localized string resource.
              &quot;locale&quot;: &quot;A String&quot;, # The locale string.
              &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `gamesConfiguration#localizedString`.
              &quot;value&quot;: &quot;A String&quot;, # The string value.
            },
          ],
        },
        &quot;sortRank&quot;: 42, # The sort rank of this leaderboard. Writes to this field are ignored.
      },
    }</pre>
</div>

</body></html>