<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.applications.html">applications</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(applicationId, language=None, platformType=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the metadata of the application with the given ID. If the requested application is not available for the specified `platformType`, the returned response will not include any instance data.</p>
<p class="toc_element">
  <code><a href="#getEndPoint">getEndPoint(applicationId=None, endPointType=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a URL for the requested end point type.</p>
<p class="toc_element">
  <code><a href="#played">played(x__xgafv=None)</a></code></p>
<p class="firstline">Indicate that the currently authenticated user is playing your application.</p>
<p class="toc_element">
  <code><a href="#verify">verify(applicationId, x__xgafv=None)</a></code></p>
<p class="firstline">Verifies the auth token provided with this request is for the application with the specified ID, and returns the ID of the player it was granted for.</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(applicationId, language=None, platformType=None, x__xgafv=None)</code>
  <pre>Retrieves the metadata of the application with the given ID. If the requested application is not available for the specified `platformType`, the returned response will not include any instance data.

Args:
  applicationId: string, The application ID from the Google Play developer console. (required)
  language: string, The preferred language to use for strings returned by this method.
  platformType: string, Restrict application details returned to the specific platform.
    Allowed values
      PLATFORM_TYPE_UNSPECIFIED - Default value, don&#x27;t use.
      ANDROID - Retrieve applications that can be played on Android.
      IOS - Retrieve applications that can be played on iOS.
      WEB_APP - Retrieve applications that can be played on desktop web.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The Application resource.
  &quot;achievement_count&quot;: 42, # The number of achievements visible to the currently authenticated player.
  &quot;assets&quot;: [ # The assets of the application.
    { # An image asset object.
      &quot;height&quot;: 42, # The height of the asset.
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#imageAsset`.
      &quot;name&quot;: &quot;A String&quot;, # The name of the asset.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the asset.
      &quot;width&quot;: 42, # The width of the asset.
    },
  ],
  &quot;author&quot;: &quot;A String&quot;, # The author of the application.
  &quot;category&quot;: { # An application category object. # The category of the application.
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#applicationCategory`.
    &quot;primary&quot;: &quot;A String&quot;, # The primary category.
    &quot;secondary&quot;: &quot;A String&quot;, # The secondary category.
  },
  &quot;description&quot;: &quot;A String&quot;, # The description of the application.
  &quot;enabledFeatures&quot;: [ # A list of features that have been enabled for the application.
    &quot;A String&quot;,
  ],
  &quot;id&quot;: &quot;A String&quot;, # The ID of the application.
  &quot;instances&quot;: [ # The instances of the application.
    { # The Instance resource.
      &quot;acquisitionUri&quot;: &quot;A String&quot;, # URI which shows where a user can acquire this instance.
      &quot;androidInstance&quot;: { # The Android instance details resource. # Platform dependent details for Android.
        &quot;enablePiracyCheck&quot;: True or False, # Flag indicating whether the anti-piracy check is enabled.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#instanceAndroidDetails`.
        &quot;packageName&quot;: &quot;A String&quot;, # Android package name which maps to Google Play URL.
        &quot;preferred&quot;: True or False, # Indicates that this instance is the default for new installations.
      },
      &quot;iosInstance&quot;: { # The iOS details resource. # Platform dependent details for iOS.
        &quot;bundleIdentifier&quot;: &quot;A String&quot;, # Bundle identifier.
        &quot;itunesAppId&quot;: &quot;A String&quot;, # iTunes App ID.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#instanceIosDetails`.
        &quot;preferredForIpad&quot;: True or False, # Indicates that this instance is the default for new installations on iPad devices.
        &quot;preferredForIphone&quot;: True or False, # Indicates that this instance is the default for new installations on iPhone devices.
        &quot;supportIpad&quot;: True or False, # Flag to indicate if this instance supports iPad.
        &quot;supportIphone&quot;: True or False, # Flag to indicate if this instance supports iPhone.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#instance`.
      &quot;name&quot;: &quot;A String&quot;, # Localized display name.
      &quot;platformType&quot;: &quot;A String&quot;, # The platform type.
      &quot;realtimePlay&quot;: True or False, # Flag to show if this game instance supports realtime play.
      &quot;turnBasedPlay&quot;: True or False, # Flag to show if this game instance supports turn based play.
      &quot;webInstance&quot;: { # The Web details resource. # Platform dependent details for Web.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#instanceWebDetails`.
        &quot;launchUrl&quot;: &quot;A String&quot;, # Launch URL for the game.
        &quot;preferred&quot;: True or False, # Indicates that this instance is the default for new installations.
      },
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#application`.
  &quot;lastUpdatedTimestamp&quot;: &quot;A String&quot;, # The last updated timestamp of the application.
  &quot;leaderboard_count&quot;: 42, # The number of leaderboards visible to the currently authenticated player.
  &quot;name&quot;: &quot;A String&quot;, # The name of the application.
  &quot;themeColor&quot;: &quot;A String&quot;, # A hint to the client UI for what color to use as an app-themed color. The color is given as an RGB triplet (e.g. &quot;E0E0E0&quot;).
}</pre>
</div>

<div class="method">
    <code class="details" id="getEndPoint">getEndPoint(applicationId=None, endPointType=None, x__xgafv=None)</code>
  <pre>Returns a URL for the requested end point type.

Args:
  applicationId: string, The application ID from the Google Play developer console.
  endPointType: string, Type of endpoint being requested.
    Allowed values
      END_POINT_TYPE_UNSPECIFIED - Default value. This value is unused.
      PROFILE_CREATION - Request a URL to create a new profile.
      PROFILE_SETTINGS - Request a URL for the Settings view.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Container for a URL end point of the requested type.
  &quot;url&quot;: &quot;A String&quot;, # A URL suitable for loading in a web browser for the requested endpoint.
}</pre>
</div>

<div class="method">
    <code class="details" id="played">played(x__xgafv=None)</code>
  <pre>Indicate that the currently authenticated user is playing your application.

Args:
  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="verify">verify(applicationId, x__xgafv=None)</code>
  <pre>Verifies the auth token provided with this request is for the application with the specified ID, and returns the ID of the player it was granted for.

Args:
  applicationId: string, The application ID from the Google Play developer console. (required)
  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 application verification response resource.
  &quot;alternate_player_id&quot;: &quot;A String&quot;, # An alternate ID that was once used for the player that was issued the auth token used in this request. (This field is not normally populated.)
  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#applicationVerifyResponse`.
  &quot;player_id&quot;: &quot;A String&quot;, # The ID of the player that was issued the auth token used in this request.
}</pre>
</div>

</body></html>