<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(language=None, maxResults=None, pageToken=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;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;numEvents&quot;: &quot;A String&quot;, # The current number of times this event has occurred.
      &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(language=None, maxResults=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns a list of the event definitions in this application.

Args:
  language: string, The preferred language to use for strings returned by this method.
  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`.
  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 ListDefinitions response.
  &quot;items&quot;: [ # The event definitions.
    { # An event definition resource.
      &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;description&quot;: &quot;A String&quot;, # Description of what this event represents.
      &quot;displayName&quot;: &quot;A String&quot;, # The name to display for the event.
      &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;isDefaultImageUrl&quot;: True or False, # Indicates whether the icon image being returned is a default image, or is game-provided.
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventDefinition`.
      &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`.
  &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="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;currentTimeMillis&quot;: &quot;A String&quot;, # The current time when this update was sent, in milliseconds, 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#eventRecordRequest`.
  &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;timePeriod&quot;: { # An event period time range. # The time period being covered by this update.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventPeriodRange`.
        &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;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;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventUpdateRequest`.
          &quot;updateCount&quot;: &quot;A String&quot;, # The number of times this event occurred in this time period.
        },
      ],
    },
  ],
}

  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;batchFailures&quot;: [ # Any batch-wide failures which occurred applying updates.
    { # A batch update failure resource.
      &quot;failureCause&quot;: &quot;A String&quot;, # The cause for the update failure.
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventBatchRecordFailure`.
      &quot;range&quot;: { # An event period time range. # The time range which was rejected; empty for a request-wide failure.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventPeriodRange`.
        &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;eventFailures&quot;: [ # Any failures updating a particular event.
    { # An event update failure resource.
      &quot;eventId&quot;: &quot;A String&quot;, # The ID of the event that was not updated.
      &quot;failureCause&quot;: &quot;A String&quot;, # The cause for the update failure.
      &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventRecordFailure`.
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed string `games#eventUpdateResponse`.
  &quot;playerEvents&quot;: [ # The current status of any updated events
    { # An event status resource.
      &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;numEvents&quot;: &quot;A String&quot;, # The current number of times this event has occurred.
      &quot;playerId&quot;: &quot;A String&quot;, # The ID of the player.
    },
  ],
}</pre>
</div>

</body></html>