<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.snapshotsExtended.html">snapshotsExtended</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="#resolveSnapshotHead">resolveSnapshotHead(snapshotName, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Resolves any potential conflicts according to the resolution policy specified in the request and returns the snapshot head after the resolution.</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="resolveSnapshotHead">resolveSnapshotHead(snapshotName, body=None, x__xgafv=None)</code>
  <pre>Resolves any potential conflicts according to the resolution policy specified in the request and returns the snapshot head after the resolution.

Args:
  snapshotName: string, Required. Name of the snapshot. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for ResolveSnapshotHead RPC.
    &quot;resolutionPolicy&quot;: &quot;A String&quot;, # Required. The automatic resolution policy. All conflicts are resolved in chronological order, starting from the/ least recent. If the comparison metric is equal for the tentative head and the conflict, the head wins.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for ResolveSnapshotHead RPC.
    &quot;snapshot&quot;: { # A snapshot represents a saved game state referred to using the developer-provided snapshot_id (think of it as a file&#x27;s path). The set of attributes and binary data for a specific state is called a revision. Each revision is itself immutable, and referred to by a snapshot_revision_id. At any time, a snapshot has a &quot;head&quot; revision, and updates are made against that revision. If a snapshot update is received that isn&#x27;t against the current head revision, then instead of changing the head revision it will result in a conflicting revision that must be specifically resolved. # The state of the snapshot.
      &quot;conflictingRevisions&quot;: [ # A list of conflicting revisions. Only set if explicitly requested (e.g. using a field mask or a request flag), or if the RPC guarantees that this field is set. The conflicting revisions are sorted chronologically by their server creation time (oldest first). If there are too many conflicting revisions to return all of them in a single request this will only contain the first batch. In such case, the presented conflicting revisions must be resolved first in order to fetch the next batch.
        { # A Snapshot revision resource. Snapshot revisions are immutable.
          &quot;metadata&quot;: { # Metadata about a snapshot revision. Snapshot metadata is immutable - a metadata change corresponds to a new snapshot revision. # Metadata for this snapshot revision.
            &quot;deviceName&quot;: &quot;A String&quot;, # The device that created the current revision.
            &quot;duration&quot;: &quot;A String&quot;, # The duration associated with this snapshot. Values with sub-millisecond precision can be rounded or trimmed to the closest millisecond.
            &quot;title&quot;: &quot;A String&quot;, # The title of this snapshot.
            &quot;progressValue&quot;: &quot;A String&quot;, # The progress value (64-bit integer set by developer) associated with this snapshot.
            &quot;description&quot;: &quot;A String&quot;, # The description of this snapshot.
            &quot;lastModifyTime&quot;: &quot;A String&quot;, # The timestamp of the last modification to this snapshot. Values with sub-millisecond precision can be rounded or trimmed to the closest millisecond.
          },
          &quot;blob&quot;: { # Identifies a snapshot data resource. The data is provided by the game. # Reference to the game provided blob for this revision.
            &quot;resourceId&quot;: &quot;A String&quot;, # The ID of the blob resource. It&#x27;s guaranteed that if two IDs are equal then the contents are equal as well. It&#x27;s not guaranteed that two identical blobs coming from separate uploads have the same resource ID. The resource ID can only be used within the application, user and resource type it was originally returned for. For example, it&#x27;s not possible to use SnapshotDataResource&#x27;s resource ID as the resource_id of a SnapshotCoverImageResource, even if the blob is a valid image file.
            &quot;downloadUrl&quot;: &quot;A String&quot;, # Output only. A URL that the client can use to download the blob. May vary across requests, and only guaranteed to be valid for a short time after it is returned.
            &quot;size&quot;: &quot;A String&quot;, # Size of the saved game blob in bytes.
            &quot;contentHash&quot;: &quot;A String&quot;, # Output only. Hash-like weak identifier of the uploaded blob, consistent per player per application. Within the context of a single player/application, it&#x27;s guaranteed that two identical blobs coming from two different uploads will have the same content hash. It&#x27;s extremely likely, though not guaranteed, that if two content hashes are equal, the blobs are identical.
          },
          &quot;id&quot;: &quot;A String&quot;, # Output only. A server generated identifier of the snapshot revision.
          &quot;coverImage&quot;: { # Identifies a snapshot cover image resource. The image is provided by the game. # Reference to the cover image for this revision.
            &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The MIME type of the image.
            &quot;height&quot;: 42, # Output only. The height of the image in pixels.
            &quot;resourceId&quot;: &quot;A String&quot;, # The ID of the image resource. It&#x27;s guaranteed that if two IDs are equal then the contents are equal as well. It&#x27;s not guaranteed that two identical blobs coming from separate uploads have the same ID. The resource ID can only be used within the application, user and resource type it was originally returned for. For example, it&#x27;s not possible to use SnapshotDataResource&#x27;s resource ID as the resource_id of a SnapshotCoverImageResource, even if the blob is a valid image file.
            &quot;contentHash&quot;: &quot;A String&quot;, # Output only. Hash-like weak identifier of the uploaded image bytes, consistent per player per application. Within the context of a single player/application, it&#x27;s guaranteed that two identical blobs coming from two different uploads will have the same content hash. It&#x27;s extremely likely, though not guaranteed, that if two content hashes are equal, the images are identical.
            &quot;width&quot;: 42, # Output only. The width of the image in pixels.
            &quot;downloadUrl&quot;: &quot;A String&quot;, # Output only. A URL the client can use to download the image. May vary across requests, and only guaranteed to be valid for a short time after it is returned.
          },
        },
      ],
      &quot;hasConflictingRevisions&quot;: True or False, # An indicator whether the snapshot has any conflicting revisions or not. Always set.
      &quot;headRevision&quot;: { # A Snapshot revision resource. Snapshot revisions are immutable. # The current head revision (the canonical revision as understood by the server).
        &quot;metadata&quot;: { # Metadata about a snapshot revision. Snapshot metadata is immutable - a metadata change corresponds to a new snapshot revision. # Metadata for this snapshot revision.
          &quot;deviceName&quot;: &quot;A String&quot;, # The device that created the current revision.
          &quot;duration&quot;: &quot;A String&quot;, # The duration associated with this snapshot. Values with sub-millisecond precision can be rounded or trimmed to the closest millisecond.
          &quot;title&quot;: &quot;A String&quot;, # The title of this snapshot.
          &quot;progressValue&quot;: &quot;A String&quot;, # The progress value (64-bit integer set by developer) associated with this snapshot.
          &quot;description&quot;: &quot;A String&quot;, # The description of this snapshot.
          &quot;lastModifyTime&quot;: &quot;A String&quot;, # The timestamp of the last modification to this snapshot. Values with sub-millisecond precision can be rounded or trimmed to the closest millisecond.
        },
        &quot;blob&quot;: { # Identifies a snapshot data resource. The data is provided by the game. # Reference to the game provided blob for this revision.
          &quot;resourceId&quot;: &quot;A String&quot;, # The ID of the blob resource. It&#x27;s guaranteed that if two IDs are equal then the contents are equal as well. It&#x27;s not guaranteed that two identical blobs coming from separate uploads have the same resource ID. The resource ID can only be used within the application, user and resource type it was originally returned for. For example, it&#x27;s not possible to use SnapshotDataResource&#x27;s resource ID as the resource_id of a SnapshotCoverImageResource, even if the blob is a valid image file.
          &quot;downloadUrl&quot;: &quot;A String&quot;, # Output only. A URL that the client can use to download the blob. May vary across requests, and only guaranteed to be valid for a short time after it is returned.
          &quot;size&quot;: &quot;A String&quot;, # Size of the saved game blob in bytes.
          &quot;contentHash&quot;: &quot;A String&quot;, # Output only. Hash-like weak identifier of the uploaded blob, consistent per player per application. Within the context of a single player/application, it&#x27;s guaranteed that two identical blobs coming from two different uploads will have the same content hash. It&#x27;s extremely likely, though not guaranteed, that if two content hashes are equal, the blobs are identical.
        },
        &quot;id&quot;: &quot;A String&quot;, # Output only. A server generated identifier of the snapshot revision.
        &quot;coverImage&quot;: { # Identifies a snapshot cover image resource. The image is provided by the game. # Reference to the cover image for this revision.
          &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The MIME type of the image.
          &quot;height&quot;: 42, # Output only. The height of the image in pixels.
          &quot;resourceId&quot;: &quot;A String&quot;, # The ID of the image resource. It&#x27;s guaranteed that if two IDs are equal then the contents are equal as well. It&#x27;s not guaranteed that two identical blobs coming from separate uploads have the same ID. The resource ID can only be used within the application, user and resource type it was originally returned for. For example, it&#x27;s not possible to use SnapshotDataResource&#x27;s resource ID as the resource_id of a SnapshotCoverImageResource, even if the blob is a valid image file.
          &quot;contentHash&quot;: &quot;A String&quot;, # Output only. Hash-like weak identifier of the uploaded image bytes, consistent per player per application. Within the context of a single player/application, it&#x27;s guaranteed that two identical blobs coming from two different uploads will have the same content hash. It&#x27;s extremely likely, though not guaranteed, that if two content hashes are equal, the images are identical.
          &quot;width&quot;: 42, # Output only. The width of the image in pixels.
          &quot;downloadUrl&quot;: &quot;A String&quot;, # Output only. A URL the client can use to download the image. May vary across requests, and only guaranteed to be valid for a short time after it is returned.
        },
      },
      &quot;name&quot;: &quot;A String&quot;, # An identifier of the snapshot,developer-specified.
    },
  }</pre>
</div>

</body></html>