<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.events.html">events</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="#listByPlayer">listByPlayer(language=None, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a list showing the current progress on events in this application for the currently authenticated user.</p>
<p class="toc_element">
  <code><a href="#listByPlayer_next">listByPlayer_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="#listDefinitions">listDefinitions(pageToken=None, maxResults=None, language=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a list of the event definitions in this application.</p>
<p class="toc_element">
  <code><a href="#listDefinitions_next">listDefinitions_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="#record">record(body=None, language=None, x__xgafv=None)</a></code></p>
<p class="firstline">Records a batch of changes to the number of times events have occurred for the currently authenticated user of this application.</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="listByPlayer">listByPlayer(language=None, maxResults=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns a list showing the current progress on events in this application for the currently authenticated user.

Args:
  language: string, The preferred language to use for strings returned by this method.
  maxResults: integer, The maximum number of events to return in the response, used for paging. For any response, the actual number of events to return 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 ListByPlayer response.
    &quot;items&quot;: [ # The player events.
      { # An event status resource.
        &quot;numEvents&quot;: &quot;A String&quot;, # The current number of times this event has occurred.
        &quot;definitionId&quot;: &quot;A String&quot;, # The ID of the event definition.
        &quot;formattedNumEvents&quot;: &quot;A String&quot;, # The current number of times this event has occurred, as a string. The formatting of this string depends on the configuration of your event in the Play Games Developer Console.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#playerEvent`.
        &quot;playerId&quot;: &quot;A String&quot;, # The ID of the player.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#playerEventListResponse`.
    &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="listByPlayer_next">listByPlayer_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="listDefinitions">listDefinitions(pageToken=None, maxResults=None, language=None, x__xgafv=None)</code>
  <pre>Returns a list of the event definitions in this application.

Args:
  pageToken: string, The token returned by the previous request.
  maxResults: integer, The maximum number of event definitions to return in the response, used for paging. For any response, the actual number of event definitions to return may be less than the specified `maxResults`.
  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 ListDefinitions response.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The pagination token for the next page of results.
    &quot;items&quot;: [ # The event definitions.
      { # An event definition resource.
        &quot;id&quot;: &quot;A String&quot;, # The ID of the event.
        &quot;imageUrl&quot;: &quot;A String&quot;, # The base URL for the image that represents the event.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventDefinition`.
        &quot;childEvents&quot;: [ # A list of events that are a child of this event.
          { # An event child relationship resource.
            &quot;childId&quot;: &quot;A String&quot;, # The ID of the child event.
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventChild`.
          },
        ],
        &quot;isDefaultImageUrl&quot;: True or False, # Indicates whether the icon image being returned is a default image, or is game-provided.
        &quot;displayName&quot;: &quot;A String&quot;, # The name to display for the event.
        &quot;description&quot;: &quot;A String&quot;, # Description of what this event represents.
        &quot;visibility&quot;: &quot;A String&quot;, # The visibility of event being tracked in this definition.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventDefinitionListResponse`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="listDefinitions_next">listDefinitions_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="record">record(body=None, language=None, x__xgafv=None)</code>
  <pre>Records a batch of changes to the number of times events have occurred for the currently authenticated user of this application.

Args:
  body: object, The request body.
    The object takes the form of:

{ # An event period update resource.
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventRecordRequest`.
    &quot;currentTimeMillis&quot;: &quot;A String&quot;, # The current time when this update was sent, in milliseconds, since 1970 UTC (Unix Epoch).
    &quot;requestId&quot;: &quot;A String&quot;, # The request ID used to identify this attempt to record events.
    &quot;timePeriods&quot;: [ # A list of the time period updates being made in this request.
      { # An event period update resource.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventPeriodUpdate`.
        &quot;updates&quot;: [ # The updates being made for this time period.
          { # An event period update resource.
            &quot;definitionId&quot;: &quot;A String&quot;, # The ID of the event being modified in this update.
            &quot;updateCount&quot;: &quot;A String&quot;, # The number of times this event occurred in this time period.
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventUpdateRequest`.
          },
        ],
        &quot;timePeriod&quot;: { # An event period time range. # The time period being covered by this update.
          &quot;periodEndMillis&quot;: &quot;A String&quot;, # The time when this update period ends, in millis, since 1970 UTC (Unix Epoch).
          &quot;periodStartMillis&quot;: &quot;A String&quot;, # The time when this update period begins, in millis, since 1970 UTC (Unix Epoch).
          &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventPeriodRange`.
        },
      },
    ],
  }

  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:

    { # An event period update resource.
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventUpdateResponse`.
    &quot;eventFailures&quot;: [ # Any failures updating a particular event.
      { # An event update failure resource.
        &quot;failureCause&quot;: &quot;A String&quot;, # The cause for the update failure.
        &quot;eventId&quot;: &quot;A String&quot;, # The ID of the event that was not updated.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventRecordFailure`.
      },
    ],
    &quot;batchFailures&quot;: [ # Any batch-wide failures which occurred applying updates.
      { # A batch update failure resource.
        &quot;range&quot;: { # An event period time range. # The time range which was rejected; empty for a request-wide failure.
          &quot;periodEndMillis&quot;: &quot;A String&quot;, # The time when this update period ends, in millis, since 1970 UTC (Unix Epoch).
          &quot;periodStartMillis&quot;: &quot;A String&quot;, # The time when this update period begins, in millis, since 1970 UTC (Unix Epoch).
          &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventPeriodRange`.
        },
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventBatchRecordFailure`.
        &quot;failureCause&quot;: &quot;A String&quot;, # The cause for the update failure.
      },
    ],
    &quot;playerEvents&quot;: [ # The current status of any updated events
      { # An event status resource.
        &quot;numEvents&quot;: &quot;A String&quot;, # The current number of times this event has occurred.
        &quot;definitionId&quot;: &quot;A String&quot;, # The ID of the event definition.
        &quot;formattedNumEvents&quot;: &quot;A String&quot;, # The current number of times this event has occurred, as a string. The formatting of this string depends on the configuration of your event in the Play Games Developer Console.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#playerEvent`.
        &quot;playerId&quot;: &quot;A String&quot;, # The ID of the player.
      },
    ],
  }</pre>
</div>

</body></html>