<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="games_v1.html">Google Play Game Services</a> . <a href="games_v1.players.html">players</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(playerId, language=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the Player resource with the given ID. To retrieve the player for the currently authenticated user, set `playerId` to `me`.</p>
<p class="toc_element">
  <code><a href="#list">list(collection, language=None, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Get the collection of players for the currently authenticated user.</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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(playerId, language=None, x__xgafv=None)</code>
  <pre>Retrieves the Player resource with the given ID. To retrieve the player for the currently authenticated user, set `playerId` to `me`.

Args:
  playerId: string, A player ID. A value of `me` may be used in place of the authenticated player&#x27;s ID. (required)
  language: string, The preferred language to use for strings returned by this method.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Player resource.
  &quot;avatarImageUrl&quot;: &quot;A String&quot;, # The base URL for the image that represents the player.
  &quot;bannerUrlLandscape&quot;: &quot;A String&quot;, # The url to the landscape mode player banner image.
  &quot;bannerUrlPortrait&quot;: &quot;A String&quot;, # The url to the portrait mode player banner image.
  &quot;displayName&quot;: &quot;A String&quot;, # The name to display for the player.
  &quot;experienceInfo&quot;: { # 1P/3P metadata about the player&#x27;s experience. # An object to represent Play Game experience information for the player.
    &quot;currentExperiencePoints&quot;: &quot;A String&quot;, # The current number of experience points for the player.
    &quot;currentLevel&quot;: { # 1P/3P metadata about a user&#x27;s level. # The current level of the player.
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#playerLevel`.
      &quot;level&quot;: 42, # The level for the user.
      &quot;maxExperiencePoints&quot;: &quot;A String&quot;, # The maximum experience points for this level.
      &quot;minExperiencePoints&quot;: &quot;A String&quot;, # The minimum experience points for this level.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#playerExperienceInfo`.
    &quot;lastLevelUpTimestampMillis&quot;: &quot;A String&quot;, # The timestamp when the player was leveled up, in millis since Unix epoch UTC.
    &quot;nextLevel&quot;: { # 1P/3P metadata about a user&#x27;s level. # The next level of the player. If the current level is the maximum level, this should be same as the current level.
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#playerLevel`.
      &quot;level&quot;: 42, # The level for the user.
      &quot;maxExperiencePoints&quot;: &quot;A String&quot;, # The maximum experience points for this level.
      &quot;minExperiencePoints&quot;: &quot;A String&quot;, # The minimum experience points for this level.
    },
  },
  &quot;friendStatus&quot;: &quot;A String&quot;, # The friend status of the given player, relative to the requester. This is unset if the player is not sharing their friends list with the game.
  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#player`
  &quot;name&quot;: { # A representation of the individual components of the name.
    &quot;familyName&quot;: &quot;A String&quot;, # The family name of this player. In some places, this is known as the last name.
    &quot;givenName&quot;: &quot;A String&quot;, # The given name of this player. In some places, this is known as the first name.
  },
  &quot;originalPlayerId&quot;: &quot;A String&quot;, # The player ID that was used for this player the first time they signed into the game in question. This is only populated for calls to player.get for the requesting player, only if the player ID has subsequently changed, and only to clients that support remapping player IDs.
  &quot;playerId&quot;: &quot;A String&quot;, # The ID of the player.
  &quot;profileSettings&quot;: { # Profile settings # The player&#x27;s profile settings. Controls whether or not the player&#x27;s profile is visible to other players.
    &quot;friendsListVisibility&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 `games#profileSettings`.
    &quot;profileVisible&quot;: True or False, # Whether the player&#x27;s profile is visible to the currently signed in player.
  },
  &quot;title&quot;: &quot;A String&quot;, # The player&#x27;s title rewarded for their game activities.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(collection, language=None, maxResults=None, pageToken=None, x__xgafv=None)</code>
  <pre>Get the collection of players for the currently authenticated user.

Args:
  collection: string, Collection of players being retrieved (required)
    Allowed values
      CONNECTED - Retrieve a list of players that are also playing this game in reverse chronological order.
      VISIBLE - Retrieve a list of players in the user&#x27;s social graph that are visible to this game.
      FRIENDS_ALL - Retrieve a list of players who are friends of the user in alphabetical order.
  language: string, The preferred language to use for strings returned by this method.
  maxResults: integer, The maximum number of player resources to return in the response, used for paging. For any response, the actual number of player 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 third party player list response.
  &quot;items&quot;: [ # The players.
    { # A Player resource.
      &quot;avatarImageUrl&quot;: &quot;A String&quot;, # The base URL for the image that represents the player.
      &quot;bannerUrlLandscape&quot;: &quot;A String&quot;, # The url to the landscape mode player banner image.
      &quot;bannerUrlPortrait&quot;: &quot;A String&quot;, # The url to the portrait mode player banner image.
      &quot;displayName&quot;: &quot;A String&quot;, # The name to display for the player.
      &quot;experienceInfo&quot;: { # 1P/3P metadata about the player&#x27;s experience. # An object to represent Play Game experience information for the player.
        &quot;currentExperiencePoints&quot;: &quot;A String&quot;, # The current number of experience points for the player.
        &quot;currentLevel&quot;: { # 1P/3P metadata about a user&#x27;s level. # The current level of the player.
          &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#playerLevel`.
          &quot;level&quot;: 42, # The level for the user.
          &quot;maxExperiencePoints&quot;: &quot;A String&quot;, # The maximum experience points for this level.
          &quot;minExperiencePoints&quot;: &quot;A String&quot;, # The minimum experience points for this level.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#playerExperienceInfo`.
        &quot;lastLevelUpTimestampMillis&quot;: &quot;A String&quot;, # The timestamp when the player was leveled up, in millis since Unix epoch UTC.
        &quot;nextLevel&quot;: { # 1P/3P metadata about a user&#x27;s level. # The next level of the player. If the current level is the maximum level, this should be same as the current level.
          &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#playerLevel`.
          &quot;level&quot;: 42, # The level for the user.
          &quot;maxExperiencePoints&quot;: &quot;A String&quot;, # The maximum experience points for this level.
          &quot;minExperiencePoints&quot;: &quot;A String&quot;, # The minimum experience points for this level.
        },
      },
      &quot;friendStatus&quot;: &quot;A String&quot;, # The friend status of the given player, relative to the requester. This is unset if the player is not sharing their friends list with the game.
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#player`
      &quot;name&quot;: { # A representation of the individual components of the name.
        &quot;familyName&quot;: &quot;A String&quot;, # The family name of this player. In some places, this is known as the last name.
        &quot;givenName&quot;: &quot;A String&quot;, # The given name of this player. In some places, this is known as the first name.
      },
      &quot;originalPlayerId&quot;: &quot;A String&quot;, # The player ID that was used for this player the first time they signed into the game in question. This is only populated for calls to player.get for the requesting player, only if the player ID has subsequently changed, and only to clients that support remapping player IDs.
      &quot;playerId&quot;: &quot;A String&quot;, # The ID of the player.
      &quot;profileSettings&quot;: { # Profile settings # The player&#x27;s profile settings. Controls whether or not the player&#x27;s profile is visible to other players.
        &quot;friendsListVisibility&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 `games#profileSettings`.
        &quot;profileVisible&quot;: True or False, # Whether the player&#x27;s profile is visible to the currently signed in player.
      },
      &quot;title&quot;: &quot;A String&quot;, # The player&#x27;s title rewarded for their game activities.
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#playerListResponse`.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token corresponding to the next page of results.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(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>

</body></html>