<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="#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="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;draft&quot;: { # A leaderboard configuration detail. # The draft data of the leaderboard.
      &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#leaderboardConfigurationDetail`.
      &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
        &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
        &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type.  These strings follow the
            # same &lt;a
            # href=&quot;http://developer.android.com/guide/topics/resources/string-resource.html#Plurals&quot;&gt;
            # plural rules&lt;/a&gt; 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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in
              # Arabic).
            &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
        },
        &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
      },
      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
      &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
        &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
      },
    },
    &quot;scoreMax&quot;: &quot;A String&quot;, # Maximum score that can be posted to this leaderboard.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the leaderboard.
    &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;scoreOrder&quot;: &quot;A String&quot;,
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
        # string `gamesConfiguration#leaderboardConfiguration`.
    &quot;published&quot;: { # A leaderboard configuration detail. # The read-only published data of the leaderboard.
      &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#leaderboardConfigurationDetail`.
      &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
        &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
        &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type.  These strings follow the
            # same &lt;a
            # href=&quot;http://developer.android.com/guide/topics/resources/string-resource.html#Plurals&quot;&gt;
            # plural rules&lt;/a&gt; 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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in
              # Arabic).
            &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
        },
        &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
      },
      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
      &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
        &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
      },
    },
  }</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;draft&quot;: { # A leaderboard configuration detail. # The draft data of the leaderboard.
    &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#leaderboardConfigurationDetail`.
    &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
      &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
      &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type.  These strings follow the
          # same &lt;a
          # href=&quot;http://developer.android.com/guide/topics/resources/string-resource.html#Plurals&quot;&gt;
          # plural rules&lt;/a&gt; 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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in
            # Arabic).
          &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
      },
      &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
      &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
    },
    &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
    &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
      &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
          # string `gamesConfiguration#localizedStringBundle`.
    },
  },
  &quot;scoreMax&quot;: &quot;A String&quot;, # Maximum score that can be posted to this leaderboard.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the leaderboard.
  &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;scoreOrder&quot;: &quot;A String&quot;,
  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
      # string `gamesConfiguration#leaderboardConfiguration`.
  &quot;published&quot;: { # A leaderboard configuration detail. # The read-only published data of the leaderboard.
    &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#leaderboardConfigurationDetail`.
    &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
      &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
      &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type.  These strings follow the
          # same &lt;a
          # href=&quot;http://developer.android.com/guide/topics/resources/string-resource.html#Plurals&quot;&gt;
          # plural rules&lt;/a&gt; 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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in
            # Arabic).
          &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
      },
      &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
      &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
    },
    &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
    &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
      &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
          # string `gamesConfiguration#localizedStringBundle`.
    },
  },
}

  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;draft&quot;: { # A leaderboard configuration detail. # The draft data of the leaderboard.
      &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#leaderboardConfigurationDetail`.
      &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
        &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
        &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type.  These strings follow the
            # same &lt;a
            # href=&quot;http://developer.android.com/guide/topics/resources/string-resource.html#Plurals&quot;&gt;
            # plural rules&lt;/a&gt; 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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in
              # Arabic).
            &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
        },
        &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
      },
      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
      &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
        &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
      },
    },
    &quot;scoreMax&quot;: &quot;A String&quot;, # Maximum score that can be posted to this leaderboard.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the leaderboard.
    &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;scoreOrder&quot;: &quot;A String&quot;,
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
        # string `gamesConfiguration#leaderboardConfiguration`.
    &quot;published&quot;: { # A leaderboard configuration detail. # The read-only published data of the leaderboard.
      &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#leaderboardConfigurationDetail`.
      &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
        &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
        &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type.  These strings follow the
            # same &lt;a
            # href=&quot;http://developer.android.com/guide/topics/resources/string-resource.html#Plurals&quot;&gt;
            # plural rules&lt;/a&gt; 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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in
              # Arabic).
            &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
        },
        &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
      },
      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
      &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
        &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
      },
    },
  }</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;items&quot;: [ # The leaderboard configurations.
      { # An leaderboard configuration resource.
        &quot;draft&quot;: { # A leaderboard configuration detail. # The draft data of the leaderboard.
          &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#leaderboardConfigurationDetail`.
          &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
            &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
            &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type.  These strings follow the
                # same &lt;a
                # href=&quot;http://developer.android.com/guide/topics/resources/string-resource.html#Plurals&quot;&gt;
                # plural rules&lt;/a&gt; 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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                    # string `gamesConfiguration#localizedStringBundle`.
              },
              &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                    # string `gamesConfiguration#localizedStringBundle`.
              },
              &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in
                  # Arabic).
                &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                    # string `gamesConfiguration#localizedStringBundle`.
              },
              &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                    # string `gamesConfiguration#localizedStringBundle`.
              },
              &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                    # string `gamesConfiguration#localizedStringBundle`.
              },
              &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                    # string `gamesConfiguration#localizedStringBundle`.
              },
            },
            &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
          },
          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
          &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
            &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
        },
        &quot;scoreMax&quot;: &quot;A String&quot;, # Maximum score that can be posted to this leaderboard.
        &quot;id&quot;: &quot;A String&quot;, # The ID of the leaderboard.
        &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;scoreOrder&quot;: &quot;A String&quot;,
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#leaderboardConfiguration`.
        &quot;published&quot;: { # A leaderboard configuration detail. # The read-only published data of the leaderboard.
          &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#leaderboardConfigurationDetail`.
          &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
            &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
            &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type.  These strings follow the
                # same &lt;a
                # href=&quot;http://developer.android.com/guide/topics/resources/string-resource.html#Plurals&quot;&gt;
                # plural rules&lt;/a&gt; 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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                    # string `gamesConfiguration#localizedStringBundle`.
              },
              &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                    # string `gamesConfiguration#localizedStringBundle`.
              },
              &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in
                  # Arabic).
                &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                    # string `gamesConfiguration#localizedStringBundle`.
              },
              &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                    # string `gamesConfiguration#localizedStringBundle`.
              },
              &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                    # string `gamesConfiguration#localizedStringBundle`.
              },
              &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                    # string `gamesConfiguration#localizedStringBundle`.
              },
            },
            &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
          },
          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
          &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
            &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
        },
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
        # string
        # `gamesConfiguration#leaderboardConfigurationListResponse`.
    &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;draft&quot;: { # A leaderboard configuration detail. # The draft data of the leaderboard.
    &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#leaderboardConfigurationDetail`.
    &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
      &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
      &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type.  These strings follow the
          # same &lt;a
          # href=&quot;http://developer.android.com/guide/topics/resources/string-resource.html#Plurals&quot;&gt;
          # plural rules&lt;/a&gt; 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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in
            # Arabic).
          &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
      },
      &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
      &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
    },
    &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
    &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
      &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
          # string `gamesConfiguration#localizedStringBundle`.
    },
  },
  &quot;scoreMax&quot;: &quot;A String&quot;, # Maximum score that can be posted to this leaderboard.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the leaderboard.
  &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;scoreOrder&quot;: &quot;A String&quot;,
  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
      # string `gamesConfiguration#leaderboardConfiguration`.
  &quot;published&quot;: { # A leaderboard configuration detail. # The read-only published data of the leaderboard.
    &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#leaderboardConfigurationDetail`.
    &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
      &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
      &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type.  These strings follow the
          # same &lt;a
          # href=&quot;http://developer.android.com/guide/topics/resources/string-resource.html#Plurals&quot;&gt;
          # plural rules&lt;/a&gt; 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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in
            # Arabic).
          &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
              # string `gamesConfiguration#localizedStringBundle`.
        },
      },
      &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
      &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
    },
    &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
    &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
      &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
          # string `gamesConfiguration#localizedStringBundle`.
    },
  },
}

  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;draft&quot;: { # A leaderboard configuration detail. # The draft data of the leaderboard.
      &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#leaderboardConfigurationDetail`.
      &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
        &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
        &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type.  These strings follow the
            # same &lt;a
            # href=&quot;http://developer.android.com/guide/topics/resources/string-resource.html#Plurals&quot;&gt;
            # plural rules&lt;/a&gt; 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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in
              # Arabic).
            &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
        },
        &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
      },
      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
      &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
        &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
      },
    },
    &quot;scoreMax&quot;: &quot;A String&quot;, # Maximum score that can be posted to this leaderboard.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the leaderboard.
    &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;scoreOrder&quot;: &quot;A String&quot;,
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
        # string `gamesConfiguration#leaderboardConfiguration`.
    &quot;published&quot;: { # A leaderboard configuration detail. # The read-only published data of the leaderboard.
      &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#leaderboardConfigurationDetail`.
      &quot;scoreFormat&quot;: { # A number format resource. # The score formatting for the leaderboard.
        &quot;numberFormatType&quot;: &quot;A String&quot;, # The formatting for the number.
        &quot;suffix&quot;: { # A number affix resource. # An optional suffix for the NUMERIC format type.  These strings follow the
            # same &lt;a
            # href=&quot;http://developer.android.com/guide/topics/resources/string-resource.html#Plurals&quot;&gt;
            # plural rules&lt;/a&gt; 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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &quot;zero&quot;: { # A localized string bundle resource. # When the language requires special treatment of the number 0 (as in
              # Arabic).
            &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
          &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `gamesConfiguration#localizedStringBundle`.
          },
        },
        &quot;numDecimalPlaces&quot;: 42, # The number of decimal places for number. Only used for NUMERIC format type.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The curreny code string. Only used for CURRENCY format type.
      },
      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon url of this leaderboard. Writes to this field are ignored.
      &quot;name&quot;: { # A localized string bundle resource. # Localized strings for the leaderboard name.
        &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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
            # string `gamesConfiguration#localizedStringBundle`.
      },
    },
  }</pre>
</div>

</body></html>