<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;blob&quot;: { # Identifies a snapshot data resource. The data is provided by the game. # Reference to the game provided blob for this revision.
          &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;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;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;size&quot;: &quot;A String&quot;, # Size of the saved game blob in bytes.
        },
        &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;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;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;height&quot;: 42, # Output only. The height of the image in pixels.
          &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The MIME type of the image.
          &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;width&quot;: 42, # Output only. The width of the image in pixels.
        },
        &quot;id&quot;: &quot;A String&quot;, # Output only. A server generated identifier of the snapshot revision.
        &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;description&quot;: &quot;A String&quot;, # The description of this snapshot.
          &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;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;progressValue&quot;: &quot;A String&quot;, # The progress value (64-bit integer set by developer) associated with this snapshot.
          &quot;title&quot;: &quot;A String&quot;, # The title of this snapshot.
        },
      },
    ],
    &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;blob&quot;: { # Identifies a snapshot data resource. The data is provided by the game. # Reference to the game provided blob for this revision.
        &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;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;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;size&quot;: &quot;A String&quot;, # Size of the saved game blob in bytes.
      },
      &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;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;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;height&quot;: 42, # Output only. The height of the image in pixels.
        &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The MIME type of the image.
        &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;width&quot;: 42, # Output only. The width of the image in pixels.
      },
      &quot;id&quot;: &quot;A String&quot;, # Output only. A server generated identifier of the snapshot revision.
      &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;description&quot;: &quot;A String&quot;, # The description of this snapshot.
        &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;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;progressValue&quot;: &quot;A String&quot;, # The progress value (64-bit integer set by developer) associated with this snapshot.
        &quot;title&quot;: &quot;A String&quot;, # The title of this snapshot.
      },
    },
    &quot;name&quot;: &quot;A String&quot;, # An identifier of the snapshot,developer-specified.
  },
}</pre>
</div>

</body></html>