<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.quests.html">quests</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#accept">accept(questId, language=None)</a></code></p>
<p class="firstline">Indicates that the currently authorized user will participate in the quest.</p>
<p class="toc_element">
  <code><a href="#list">list(playerId, language=None, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Get a list of quests for your application and the currently authenticated player.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="accept">accept(questId, language=None)</code>
  <pre>Indicates that the currently authorized user will participate in the quest.

Args:
  questId: string, The ID of the quest. (required)
  language: string, The preferred language to use for strings returned by this method.

Returns:
  An object of the form:

    { # This is a JSON template for a Quest resource.
    "kind": "games#quest", # Uniquely identifies the type of this resource. Value is always the fixed string games#quest.
    "milestones": [ # The quest milestones.
      { # This is a JSON template for a Quest Milestone resource.
        "state": "A String", # The current state of the milestone.
            # Possible values are:
            # - "COMPLETED_NOT_CLAIMED" - The milestone is complete, but has not yet been claimed.
            # - "CLAIMED" - The milestone is complete and has been claimed.
            # - "NOT_COMPLETED" - The milestone has not yet been completed.
            # - "NOT_STARTED" - The milestone is for a quest that has not yet been accepted.
        "kind": "games#questMilestone", # Uniquely identifies the type of this resource. Value is always the fixed string games#questMilestone.
        "criteria": [ # The criteria of the milestone.
          { # This is a JSON template for a Quest Criterion resource.
            "eventId": "A String", # The ID of the event the criterion corresponds to.
            "completionContribution": { # This is a JSON template for a Quest Criterion Contribution resource. # The total number of times the associated event must be incremented for the player to complete this quest.
              "formattedValue": "A String", # The formatted value of the contribution as a string. Format depends on the configuration for the associated event definition in the Play Games Developer Console.
              "kind": "games#questContribution", # Uniquely identifies the type of this resource. Value is always the fixed string games#questContribution.
              "value": "A String", # The value of the contribution.
            },
            "initialPlayerProgress": { # This is a JSON template for a Quest Criterion Contribution resource. # The value of the event associated with this quest at the time that the quest was accepted. This value may change if event increments that took place before the start of quest are uploaded after the quest starts.
                # There will be no initialPlayerProgress until the player has accepted the quest.
              "formattedValue": "A String", # The formatted value of the contribution as a string. Format depends on the configuration for the associated event definition in the Play Games Developer Console.
              "kind": "games#questContribution", # Uniquely identifies the type of this resource. Value is always the fixed string games#questContribution.
              "value": "A String", # The value of the contribution.
            },
            "kind": "games#questCriterion", # Uniquely identifies the type of this resource. Value is always the fixed string games#questCriterion.
            "currentContribution": { # This is a JSON template for a Quest Criterion Contribution resource. # The number of increments the player has made toward the completion count event increments required to complete the quest. This value will not exceed the completion contribution.
                # There will be no currentContribution until the player has accepted the quest.
              "formattedValue": "A String", # The formatted value of the contribution as a string. Format depends on the configuration for the associated event definition in the Play Games Developer Console.
              "kind": "games#questContribution", # Uniquely identifies the type of this resource. Value is always the fixed string games#questContribution.
              "value": "A String", # The value of the contribution.
            },
          },
        ],
        "id": "A String", # The milestone ID.
        "completionRewardData": "A String", # The completion reward data of the milestone, represented as a Base64-encoded string. This is a developer-specified binary blob with size between 0 and 2 KB before encoding.
      },
    ],
    "description": "A String", # The description of the quest.
    "endTimestampMillis": "A String", # The timestamp at which the quest ceases to be active in milliseconds since the epoch in UTC.
    "bannerUrl": "A String", # The banner image URL for the quest.
    "startTimestampMillis": "A String", # The timestamp at which the quest becomes active in milliseconds since the epoch in UTC.
    "lastUpdatedTimestampMillis": "A String", # The timestamp at which the quest was last updated by the user in milliseconds since the epoch in UTC. Only present if the player has accepted the quest.
    "acceptedTimestampMillis": "A String", # The timestamp at which the user accepted the quest in milliseconds since the epoch in UTC. Only present if the player has accepted the quest.
    "iconUrl": "A String", # The icon image URL for the quest.
    "notifyTimestampMillis": "A String", # The timestamp at which the user should be notified that the quest will end soon in milliseconds since the epoch in UTC.
    "state": "A String", # The state of the quest.
        # Possible values are:
        # - "UPCOMING": The quest is upcoming. The user can see the quest, but cannot accept it until it is open.
        # - "OPEN": The quest is currently open and may be accepted at this time.
        # - "ACCEPTED": The user is currently participating in this quest.
        # - "COMPLETED": The user has completed the quest.
        # - "FAILED": The quest was attempted but was not completed before the deadline expired.
        # - "EXPIRED": The quest has expired and was not accepted.
        # - "DELETED": The quest should be deleted from the local database.
    "isDefaultBannerUrl": True or False, # Indicates whether the banner image being returned is a default image, or is game-provided.
    "isDefaultIconUrl": True or False, # Indicates whether the icon image being returned is a default image, or is game-provided.
    "applicationId": "A String", # The ID of the application this quest is part of.
    "id": "A String", # The ID of the quest.
    "name": "A String", # The name of the quest.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(playerId, language=None, pageToken=None, maxResults=None)</code>
  <pre>Get a list of quests for your application and the currently authenticated player.

Args:
  playerId: string, A player ID. A value of me may be used in place of the authenticated player's ID. (required)
  language: string, The preferred language to use for strings returned by this method.
  pageToken: string, The token returned by the previous request.
  maxResults: integer, The maximum number of quest resources to return in the response, used for paging. For any response, the actual number of quest resources returned may be less than the specified maxResults. Acceptable values are 1 to 50, inclusive. (Default: 50).

Returns:
  An object of the form:

    { # This is a JSON template for a list of quest objects.
    "nextPageToken": "A String", # Token corresponding to the next page of results.
    "items": [ # The quests.
      { # This is a JSON template for a Quest resource.
        "kind": "games#quest", # Uniquely identifies the type of this resource. Value is always the fixed string games#quest.
        "milestones": [ # The quest milestones.
          { # This is a JSON template for a Quest Milestone resource.
            "state": "A String", # The current state of the milestone.
                # Possible values are:
                # - "COMPLETED_NOT_CLAIMED" - The milestone is complete, but has not yet been claimed.
                # - "CLAIMED" - The milestone is complete and has been claimed.
                # - "NOT_COMPLETED" - The milestone has not yet been completed.
                # - "NOT_STARTED" - The milestone is for a quest that has not yet been accepted.
            "kind": "games#questMilestone", # Uniquely identifies the type of this resource. Value is always the fixed string games#questMilestone.
            "criteria": [ # The criteria of the milestone.
              { # This is a JSON template for a Quest Criterion resource.
                "eventId": "A String", # The ID of the event the criterion corresponds to.
                "completionContribution": { # This is a JSON template for a Quest Criterion Contribution resource. # The total number of times the associated event must be incremented for the player to complete this quest.
                  "formattedValue": "A String", # The formatted value of the contribution as a string. Format depends on the configuration for the associated event definition in the Play Games Developer Console.
                  "kind": "games#questContribution", # Uniquely identifies the type of this resource. Value is always the fixed string games#questContribution.
                  "value": "A String", # The value of the contribution.
                },
                "initialPlayerProgress": { # This is a JSON template for a Quest Criterion Contribution resource. # The value of the event associated with this quest at the time that the quest was accepted. This value may change if event increments that took place before the start of quest are uploaded after the quest starts.
                    # There will be no initialPlayerProgress until the player has accepted the quest.
                  "formattedValue": "A String", # The formatted value of the contribution as a string. Format depends on the configuration for the associated event definition in the Play Games Developer Console.
                  "kind": "games#questContribution", # Uniquely identifies the type of this resource. Value is always the fixed string games#questContribution.
                  "value": "A String", # The value of the contribution.
                },
                "kind": "games#questCriterion", # Uniquely identifies the type of this resource. Value is always the fixed string games#questCriterion.
                "currentContribution": { # This is a JSON template for a Quest Criterion Contribution resource. # The number of increments the player has made toward the completion count event increments required to complete the quest. This value will not exceed the completion contribution.
                    # There will be no currentContribution until the player has accepted the quest.
                  "formattedValue": "A String", # The formatted value of the contribution as a string. Format depends on the configuration for the associated event definition in the Play Games Developer Console.
                  "kind": "games#questContribution", # Uniquely identifies the type of this resource. Value is always the fixed string games#questContribution.
                  "value": "A String", # The value of the contribution.
                },
              },
            ],
            "id": "A String", # The milestone ID.
            "completionRewardData": "A String", # The completion reward data of the milestone, represented as a Base64-encoded string. This is a developer-specified binary blob with size between 0 and 2 KB before encoding.
          },
        ],
        "description": "A String", # The description of the quest.
        "endTimestampMillis": "A String", # The timestamp at which the quest ceases to be active in milliseconds since the epoch in UTC.
        "bannerUrl": "A String", # The banner image URL for the quest.
        "startTimestampMillis": "A String", # The timestamp at which the quest becomes active in milliseconds since the epoch in UTC.
        "lastUpdatedTimestampMillis": "A String", # The timestamp at which the quest was last updated by the user in milliseconds since the epoch in UTC. Only present if the player has accepted the quest.
        "acceptedTimestampMillis": "A String", # The timestamp at which the user accepted the quest in milliseconds since the epoch in UTC. Only present if the player has accepted the quest.
        "iconUrl": "A String", # The icon image URL for the quest.
        "notifyTimestampMillis": "A String", # The timestamp at which the user should be notified that the quest will end soon in milliseconds since the epoch in UTC.
        "state": "A String", # The state of the quest.
            # Possible values are:
            # - "UPCOMING": The quest is upcoming. The user can see the quest, but cannot accept it until it is open.
            # - "OPEN": The quest is currently open and may be accepted at this time.
            # - "ACCEPTED": The user is currently participating in this quest.
            # - "COMPLETED": The user has completed the quest.
            # - "FAILED": The quest was attempted but was not completed before the deadline expired.
            # - "EXPIRED": The quest has expired and was not accepted.
            # - "DELETED": The quest should be deleted from the local database.
        "isDefaultBannerUrl": True or False, # Indicates whether the banner image being returned is a default image, or is game-provided.
        "isDefaultIconUrl": True or False, # Indicates whether the icon image being returned is a default image, or is game-provided.
        "applicationId": "A String", # The ID of the application this quest is part of.
        "id": "A String", # The ID of the quest.
        "name": "A String", # The name of the quest.
      },
    ],
    "kind": "games#questListResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#questListResponse.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>