<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="#listByPlayer">listByPlayer(pageToken=None, language=None, maxResults=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a list showing the current progress on events in this application</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(maxResults=None, pageToken=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</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="listByPlayer">listByPlayer(pageToken=None, language=None, maxResults=None, x__xgafv=None)</code>
  <pre>Returns a list showing the current progress on events in this application
for the currently authenticated user.

Args:
  pageToken: string, The token returned by the previous request.
  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.
  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;playerId&quot;: &quot;A String&quot;, # The ID of the player.
        &quot;definitionId&quot;: &quot;A String&quot;, # The ID of the event definition.
        &quot;numEvents&quot;: &quot;A String&quot;, # The current number of times this event has occurred.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
            # string `games#playerEvent`.
        &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;nextPageToken&quot;: &quot;A String&quot;, # The pagination token for the next page of results.
    &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
        # string `games#playerEventListResponse`.
  }</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(maxResults=None, pageToken=None, language=None, x__xgafv=None)</code>
  <pre>Returns a list of the event definitions in this application.

Args:
  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.
  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;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.
    &quot;items&quot;: [ # The event definitions.
      { # An event definition resource.
        &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;description&quot;: &quot;A String&quot;, # Description of what this event represents.
        &quot;id&quot;: &quot;A String&quot;, # The ID of the event.
        &quot;visibility&quot;: &quot;A String&quot;, # The visibility of event being tracked in this definition.
        &quot;childEvents&quot;: [ # A list of events that are a child of this event.
          { # An event child relationship resource.
            &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
                # string `games#eventChild`.
            &quot;childId&quot;: &quot;A String&quot;, # The ID of the child event.
          },
        ],
        &quot;displayName&quot;: &quot;A String&quot;, # The name to display for the event.
      },
    ],
  }</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;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;periodStartMillis&quot;: &quot;A String&quot;, # The time when this update period begins, in millis, since 1970 UTC (Unix
              # Epoch).
          &quot;periodEndMillis&quot;: &quot;A String&quot;, # The time when this update period ends, 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;updates&quot;: [ # The updates being made for this time period.
          { # An event period update resource.
            &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;definitionId&quot;: &quot;A String&quot;, # The ID of the event being modified in this update.
          },
        ],
      },
    ],
    &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`.
  }

  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;eventFailures&quot;: [ # Any failures updating a particular event.
      { # An event update failure resource.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
            # string `games#eventRecordFailure`.
        &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#eventUpdateResponse`.
    &quot;playerEvents&quot;: [ # The current status of any updated events
      { # An event status resource.
        &quot;playerId&quot;: &quot;A String&quot;, # The ID of the player.
        &quot;definitionId&quot;: &quot;A String&quot;, # The ID of the event definition.
        &quot;numEvents&quot;: &quot;A String&quot;, # The current number of times this event has occurred.
        &quot;kind&quot;: &quot;A String&quot;, # Uniquely identifies the type of this resource. Value is always the fixed
            # string `games#playerEvent`.
        &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;batchFailures&quot;: [ # Any batch-wide failures which occurred applying updates.
      { # A batch update failure resource.
        &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;periodStartMillis&quot;: &quot;A String&quot;, # The time when this update period begins, in millis, since 1970 UTC (Unix
              # Epoch).
          &quot;periodEndMillis&quot;: &quot;A String&quot;, # The time when this update period ends, 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;failureCause&quot;: &quot;A String&quot;, # The cause for the update failure.
      },
    ],
  }</pre>
</div>

</body></html>