<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 API</a> . <a href="games_v1.applications.html">applications</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(applicationId, language=None, platformType=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="#played">played()</a></code></p>
<p class="firstline">Indicate that the the currently authenticated user is playing your application.</p>
<p class="toc_element">
  <code><a href="#verify">verify(applicationId)</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="get">get(applicationId, language=None, platformType=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
      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.

Returns:
  An object of the form:

    { # This is a JSON template for 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.
      { # This is a JSON template for an image asset object.
        &quot;height&quot;: 42, # The height of the asset.
        &quot;kind&quot;: &quot;games#imageAsset&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;: { # This is a JSON template for an application category object. # The category of the application.
      &quot;kind&quot;: &quot;games#applicationCategory&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.
        # Possible values are:
        # - &quot;SNAPSHOTS&quot; - Snapshots has been enabled
      &quot;A String&quot;,
    ],
    &quot;id&quot;: &quot;A String&quot;, # The ID of the application.
    &quot;instances&quot;: [ # The instances of the application.
      { # This is a JSON template for the Instance resource.
        &quot;acquisitionUri&quot;: &quot;A String&quot;, # URI which shows where a user can acquire this instance.
        &quot;androidInstance&quot;: { # This is a JSON template for 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;games#instanceAndroidDetails&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;: { # This is a JSON template for 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;games#instanceIosDetails&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;games#instance&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.
            # Possible values are:
            # - &quot;ANDROID&quot; - Instance is for Android.
            # - &quot;IOS&quot; - Instance is for iOS
            # - &quot;WEB_APP&quot; - Instance is for Web App.
        &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;: { # This is a JSON template for the Web details resource. # Platform dependent details for Web.
          &quot;kind&quot;: &quot;games#instanceWebDetails&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;games#application&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="played">played()</code>
  <pre>Indicate that the the currently authenticated user is playing your application.

Args:
</pre>
</div>

<div class="method">
    <code class="details" id="verify">verify(applicationId)</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)

Returns:
  An object of the form:

    { # This is a JSON template for 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;games#applicationVerifyResponse&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>